Центр документации
Карта сайта

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


Управление установкой и удалением

При установке и удалении экземпляра существует возможность влиять на ход процесса путем выполнения произвольного PHP кода на разных этапах установки или удаления.

Для этого в каталоге конфигурации  создаются следующие файлы:

install_before.php - будет выполнен перед установкой экземпляра;
install_after.php - будет выполнен по окончанию установки экземпляра;
install.php - будет выполнен в процессе установки экземпляра, не имеющего инстанции;

uninstall_before.php - будет выполнен перед удалением экземпляра;
uninstall_after.php - будет выполнен по окончанию удаления экземпляра;
uninstall.php - будет выполнен в процессе удаления экземпляра, не имеющего инстанции;

install_form.php - предоставляет возможность управлять формой установки экземпляра;
install_form.lng - пользовательские языковые переменные для формы установки;
install_form.tpl - пользовательские сеты элементов формы установки;

frontEventHandlersRegistration.php - шаблон PHP-кода регистрации обработчиков событий;
frontEventHandlersDeclaration.php - шаблон PHP-кода описания обработчиков событий;

errors.lng - пользовательские сообщения об ошибках;
 

Пример добавления проверки окружения перед установкой экземпляра

На примере проверки версии PHP.

install_before.php
<?php
// Если версия PHP ниже 5.3.0
if(version_compare(PHP_VERSION, '5.3.0', '<')){
     // Исключение, содержащее языковую переменную со строкой об ошибке из файла errors.lng
     throw new AMI_Package_Exception(
         'invalid_php_version',
         AMI_Package_Exception::CUSTOM_ERROR,
         null,
         array('ver' => PHP_VERSION)
     );
}
errors.lng
%%invalid_php_version%en%%
This module works with PHP version 5.3.0 or higher. Your version: _ver_.
%%invalid_php_version%ru%%
Этот модуль работает только с PHP версии 5.3.0 или выше. Ваша версия: _ver_.

 

Пример добавления и обработки пользовательского поля на форме установки экземпляра модуля.

install_form.php
<?php
// Подключение языкового файла
$this->addLocale($this->oTpl->parseLocale($this->configPath . 'install_form.lng'));
 
// Подключение шаблона
// $this->oTpl->mergeBlock($this->tplBlockName, $this->configPath . 'install_form.tpl');
 
// Добавление поля
$this->addField(
    array('name' => 'insert_sample_data', 'type' => 'checkbox')
);
install_form.lng
%%form_field_insert_sample_data%en%%
Insert sample data to DB
%%form_field_insert_sample_data%ru%%
Добавить пример данных в БД

Обработка пользовательских полей формы установки производится в файлах install_before.php или install_after.php в зависимости от задачи.

install_after.php
<?php
// Если на форме был отмечен чекбокс...
if(AMI::getSingleton('env/request')->get('insert_sample_data', FALSE) !== FALSE){
    // Добавляем 10 демо-элементов в таблицу экземпляра модуля
    for($i = 0; $i < 10; $i++){
        $oItem = AMI::getResourceModel($modId . '/table')->getItem();
        $oItem->header = 'Sample item ' . $i;
        $oItem->announce = 'Announce of sample item ' . $i;
        $oItem->body = 'Sample item ' . $i . ' body';
        $oItem->public = 1;
        $oItem->save(); 
    }
}

 Добавление обработчиков событий в точку входа системы.

install_after.php
$oStorage = AMI::getResource('storage/fs');
$srcPath = dirname(__FILE__) . '/';
$destPath = AMI_Registry::get('path/root') . '_local/';
 
$file = 'front_functions.php';
 
$oArgs = new AMI_Tx_Cmd_Args(
    array(
        // Гипермодуль
        'hypermod' => $this->oArgs->hypermod,
        // Конфигурация
        'config'   => $this->oArgs->config,
        // Id дистрибутива
        'pkgId'   => $this->oArgs->pkgId,
        // Id экземпляра
        'modId'    => $this->oArgs->modId,
        // Режим установки
        'mode'     => $this->oArgs->mode,
        // Файл с шаблоном PHP-кода регистрации обработчиков событий
        'handlerRegistrationSource' => $srcPath . 'frontEventHandlersRegistration.php',
        // Файл с шаблоном PHP-кода описания обработчиков событий
        'handlerDeclarationSource'  => $srcPath . 'frontEventHandlersDeclaration.php',
        // Модифицируемый файл, в нашем случае "_local/front_functions.php"
        'target'   => $destPath . $file,
        // Драйвер хранения данных, в нашем случае драйвер хранения в файловой системе
        'oStorage' => $oStorage
    )
);
$this->aTx['storage']->addCommand('pkg/handlers/install', $oArgs);

Удаление обработчиков событий из точки входа системы.

uninstall_after.php
$oStorage = AMI::getResource('storage/fs');
$srcPath = dirname(__FILE__) . '/';
$targetPath = AMI_Registry::get('path/root') . '_local/';
 
 
$file = 'common_functions.php';
 
$oArgs = new AMI_Tx_Cmd_Args(
    array(
        // Гипермодуль
        'hypermod' => $this->oArgs->hypermod,
        // Конфигурация
        'config'   => $this->oArgs->config,
        // Id дистрибутива
        'pkgId'   => $this->oArgs->pkgId,
        // Id экземпляра
        'modId'    => $this->oArgs->modId,
        // Режим удаления
        'mode'     => $this->oArgs->mode,
        // Модифицируемый файл, в нашем случае "_local/front_functions.php"
        'target'   => $targetPath . $file,
        // Драйвер хранения данных, в нашем случае драйвер хранения в файловой системе
        'oStorage' => $oStorage
    )
);
$this->aTx['storage']->addCommand('pkg/handlers/uninstall', $oArgs);

Пример файла регистрации обработчиков событий.

 

frontEventHandlersRegistration.php
<?php
 
// {{}}
AMI_Event::addHandler(...);

Пример файла описания обработчиков событий.

frontEventHandlersDeclaration.php
<?php
 
// {{}}
function ...($name, array $aEvent, $handlerModId, $srcModId){
    ...
 
    return $aEvent;
}

Пример удаления добавленных при установке пользовательских файлов.

install_before.php
// Копируем файл
uninstall_after.php
// Удаляем файл
Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API)
 2000 – 2021 © Amiro.CMS Все права защищены.