Автоматизация удаления контроллера

+6
114
Автоматизация удаления контроллера

Нередко ошибки, из-за которых сайт падает, связаны с некорректным удалением компонентов. Например, остаются хуки, которые после удаления продолжают жить собственной жизнью. В документации  очень лаконично описано, что
должно быть выполнено при удалении компонента. Боюсь, что эту краткость трактуют как руководство к действию. В результате actionDeleteComponent() в backend.php может иметь такой вид

  1. public function actionDeleteComponent(){
  2. $model = new cmsModel();
  3. $model->deleteController('somecontroller');
  4. cmsUser::addSessionMessage(sprintf(LANG_CP_COMPONENT_IS_DELETED, 'somecontroller'), 'success');
  5. $this->redirectTo('admin', 'controllers');
  6. }

Ни о каких файлах и речи нет. Но нужно это как-то поправить!
Вначале я пошел по легкому пути и решил удалить основные папки, нашел крутой хелпер. Написал, но такое решение меня не устроило по нескольким причинам. Основным было то, что я не охватывал все файлы, которые были в компоненте. 
И тут вспомнил, что при установке компонента появляются голубенькие папочки. (Для многих, я не исключение 😁, это всего лишь справочная информация и вы уже быстро двигаетесь дальше.) 
Посмотрел в таблицу controllers — да, есть поле files. Эврика, вот они исходные данные! 
Вариант, который представлен, удаляет файлы компонента, папки решил не трогать. Замечу, что на исчерпывающее решение не претендую, всегда есть какие-то нюансы, с которыми конкретный разработчик должен справится самостоятельно. Код выложен на gist.github.com. Будут замечания — не стесняйтесь.

Нет комментариев. Ваш будет первым!

Еще от автора

Google Таблицы
Поле призвано упростить работу с таблицами. Можно создавать таблицы во встроенном визуальном редакторе, но это занятие как минимум трудоемкое.
Создание таск-трекера своими(почти) руками
Этот пост появился благодаря теме на форуме. Поразмышлял, пописал код, поставил опыты и. думаю, процентов на 80 решил задачу с форума.
Логгер для проекта
По случаю написал логгер. Конечно, можно было взять готовый, поскольку только ленивые их не писали.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.