Вспомогательные скрипты inst.php и rm.php загружаются и выполняются автоматически во время операций установки (переустановки, обновления, откатывания) и удаления плагинов соответственно. Загрузка скрипта inst.php происходит при вызове метода Plugins::install, а rm.php при вызове метода Plugins::delInstalled.
Plugins::install с валидными параметрами и при наличии всех необходимых зависимостейПосле проверки корректности структуры устанавливаемого пакета, если производится установка нового плагина, в реестр плагинов производится запись и плагину присваевается идентификатор. Затем из устанавливаемого пакета загружается скрипт inst.php и создается объект Install(\mysqli $dblink, int $id, string $version = '', bool $reset = FALSE).
Принимаемые значения
dblink - это объект mysqli. Значение этого аргумента присваевается приватной переменной dblink созданного объекта.
id - идентификатор плагина. Значение этого аргумента присваевается приватной переменной id созданного объекта.
version - версия плагина. Если производится переустановка, обновление или откат плагина, то аргумент принимает значение версии существующего плагина. В случает установки нового плагина, аргументу в качестве значения присваевается пустая строка. Значение этого аргумента присваевается приватной переменной version созданного объекта.
reset - флаг, который указывает, требуется ли сбросить данные, относящиеся к плагину, на состояние по умолчанию. Если принимает значение TRUE, то требуется. Если FALSE, то не требуется. Значение этого аргумента присваевается приватной переменной reset созданного объекта Install.
Потом производится вызов метода Install::preinst(), который должен произвести предварительные действия для установки плагина, если они необходимы. Если метод Install::preinst() возвращает значение FALSE, то выполнение метода Plugins::install прерывается.
Если же он возвращает значение TRUE, то далее из файлов policy.xml, log.xml, texts.xml и titles.xml производится установка групповых политик доступа, событий журнала, текстов и заголовков соответветственно.
Затем производится копирование содержимого папок documents, php и js по адресам MECCANO_DOCUMENTS_DIR.</имя плагина>, MECCANO_PHP_DIR.</имя плагина> и MECCANO_JS_DIR.</имя_плагина> соответственно. Также производится копирование скрипта rm.php в MECCANO_UNINSTALL.</имя_плагина.php>.
После производится вызов метода Install::postinst(), который должен произвести завершающие действия для установки плагина, если они необходимы. Если метод Install::postinst() возвращает значение FALSE, то выполнение метода Plugins::install прерывается. Если же он возвращает значение TRUE, то выполнение метода Plugins::install успешно завершается.
Загружается скрипт MECCANO_UNINSTALL.</имя_плагина.php> и создается объект Remove(\mysqli $dblink, $id, $keepData = TRUE).
Принимаемые значения
dblink - это объект mysqli. Значение этого аргумента присваевается приватной переменной dblink созданного объекта.
id - идентификатор удаляемого плагина. Значение этого аргумента присваевается приватной переменной id созданного объекта.
keepData - флаг, который указывает на то, что все данные, связанные с плагином, необходимо оставить и не удалять. Если принимает значение TRUE, то необходимо. Если FALSE, то необходимости сохраниять их нет. Значение этого аргумента присваевается приватной переменной keepData созданного объекта Remove.
Потом производится вызов метода Remove::prerm(), который должен произвести предварительные действия для удаления плагина, если они необходимы. Если метод Remove::prerm() возвращает значение FALSE, то выполнение метода Plugins::delInstalled прерывается.
Если же он возвращает значение TRUE, то далее происходит удаление из базы данных групповых политик доступа, записей и событий журнала, а также текстов и заголовков, связанных с плагином.
После производится вызов метода Remove::postrm(), который должен произвести завершающие действия для удаления плагина, если они необходимы. Если метод Remove::postrm() возвращает значение FALSE, то выполнение метода Plugins::delInstalled прерывается.
Если же он возвращает значение TRUE, то далее производится удаление файлов и папок, относящихся к плагину, расположенных по адресам MECCANO_DOCUMENTS_DIR.</имя плагина>, MECCANO_PHP_DIR.</имя плагина>, MECCANO_JS_DIR.</имя_плагина>, MECCANO_DOCUMENTS_DIR.</имя плагина> и MECCANO_UNINSTALL.</имя_плагина.php>. После чего, выполнение Plugins::delInstalled уcпешно завершается.