Решение проблемы с импортом полей типа boolean в формате umiDump 2.0
Описание проблемы: В результате экспорта страниц в формате umiDump 2.0 информация о неотмеченных полях типа кнопка-флажок (boolean) не попадет в итоговый файл. Если при экспорте страницы какое-либо ее поле типа boolean было неотмечено, а на момент импорта этой страницы уже отмечено, то значение данного поля изменено не будет.
Реализация решения данной проблемы: Для решения данной проблемы мы напишем обработчик события для точки вызова exchangeOnUpdateElement, в котором в режиме 'before' для всех полей типа boolean обновляемой страницы будем устанавлявать значение false (неотмечено).
В директорию classes\modules\exchange необходимо добавить файл custom_events.php со следующим содержанием:
<?php
new umiEventListener('exchangeOnUpdateElement', 'exchange', 'boolValueOff');
?>
В файл \classes\modules\exchange\__custom.php нужно добавить код обработчика события:
public function boolValueOff(umiEventPoint $event){
if ($event->getMode()=='before'){
$element = $event->getRef('element');
$obj = $element->getObject();
$type_id = $obj->getTypeId();
$type = umiObjectTypesCollection::getInstance()->getType($type_id);
$fields = $type->getAllFields();
foreach ($fields as $field)
if ($field->getFieldType()->getDataType()=='boolean'){
$fieldname = $field->getName();
$element->setValue($fieldname,false);
}
}
}