Я создал устанавливаемый пакет, где я создаю несколько пользовательских полей через мой manifest.php:
$installdefs = [
'custom_fields' =>
[...],
[...]
]
Я добавил пост удаления также:
'post_uninstall' => [
[
0 => '<basepath>/post_uninstall.php'
]
]
В моем post_uninstall.php я добавил:
$fieldsByModule = array(
'Users' => array(
'field1_c',
'field2_c',
'field3_c',
'field4_c',
'field5_c',
'field6_c'
),
);
foreach ($fieldsByModule as $moduleName => $fields) {
foreach ($fields as $field) {
$dyField = new DynamicField();
$dyField->bean = BeanFactory::getBean($moduleName);;
$dyField->module = $moduleName;
$dyField->deleteField($field);
}
}
Когда я запускаю скрипт post_uninstall вручную, он работает и удаляет поля из Sugar DB, но когда я пытаюсь удалить пакет из Sugar ModuleLoader, процесс удаления застревает на 76% (Перестройка платформ …), файлы пакета удаляются, но настраиваемые поля остаются в БД.
Мой вопрос — как мне правильно удалить пользовательские поля, используя post_uninstall.php. Кажется, мой путь не работает. Или может есть какой-то другой способ? Суть в том, что пользователь должен иметь возможность удалить пакет (также настраиваемые поля) из панели администратора.
Задача ещё не решена.
Других решений пока нет …