Расширение

Выполнение дополнительных указаний при установке, переустановке, удалении или обновлении

Задают в соответствующих разделах .opm сборки:

  • CodeInstall
  • CodeReinstall
  • CodeUninstall
  • CodeUpgrade

Они могут быть расположены там целиком, либо лишь соответствующие вызовы на указания, расположенные в отдельной .pm записи, которую располагают как правило по следующему пути: var/packagesetup/*.pm

Пример подобного вызова:

<CodeInstall Type="post"><![CDATA[
    my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};

    $Kernel::OM->Get($CodeModule)->CodeInstall();
]]></CodeInstall>

В данном случае происходит вызов CodeInstall() после (Type="post") того как расширение будет добавлено на площадку. Это возможно за счёт того, что внутри раздела CodeInstall видна переменная $Param{Structure} с содержимым расширения, благодяря которой можно узнать имя задействованного расширения и по нему вычислить путь к .pm, расположенном в var/packagesetup/*.pm.

Непосредственно вызовы CodeInstall, CodeReinstall, CodeUninstall, CodeUpgrade происходят в Kernel::System::Package внутри:

  • PackageInstall()
  • PackageReinstall()
  • PackageUninstall()
  • PackageUpgrade()

Распространённые действия, выполняемые при обработке расширения

  • Измененение изменяемых полей: создание, удаление и т.п.
  • Изменение состава описей:
    • Создание описи
    • Удаление описи
    • Изменение описи
  • Изменение содержимого описей:
    • Создание записи
    • Удаление записи
    • Изменение записи