При установке и удалении экземпляра существует возможность влиять на
ход процесса путем выполнения произвольного 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.
<?php
if (version_compare(PHP_VERSION, '5.3.0' , '<' )){
throw new AMI_Package_Exception(
'invalid_php_version' ,
AMI_Package_Exception::CUSTOM_ERROR,
null,
array ( 'ver' => PHP_VERSION)
);
}
|
%%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_.
|
Пример добавления и обработки пользовательского поля на форме установки экземпляра модуля.
<?php
$this ->addLocale( $this ->oTpl->parseLocale( $this ->configPath . 'install_form.lng' ));
$this ->addField(
array ( 'name' => 'insert_sample_data' , 'type' => 'checkbox' )
);
|
%%form_field_insert_sample_data%en%%
Insert sample data to DB
%%form_field_insert_sample_data%ru%%
Добавить пример данных в БД
|
Обработка пользовательских полей формы установки
производится в файлах install_before.php или install_after.php в
зависимости от задачи.
<?php
if (AMI::getSingleton( 'env/request' )->get( 'insert_sample_data' , FALSE) !== FALSE){
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();
}
}
|
Добавление обработчиков событий в точку входа системы.
$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,
'pkgId' => $this ->oArgs->pkgId,
'modId' => $this ->oArgs->modId,
'mode' => $this ->oArgs->mode,
'handlerRegistrationSource' => $srcPath . 'frontEventHandlersRegistration.php' ,
'handlerDeclarationSource' => $srcPath . 'front EventHandlersDeclaration.php' ,
'target' => $destPath . $file ,
'oStorage' => $oStorage
)
);
$this ->aTx[ 'storage' ]->addCommand( 'pkg/handlers/install' , $oArgs );
|
Удаление обработчиков событий из точки входа системы.
$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,
'pkgId' => $this ->oArgs->pkgId,
'modId' => $this ->oArgs->modId,
'mode' => $this ->oArgs->mode,
'target' => $targetPath . $file ,
'oStorage' => $oStorage
)
);
$this ->aTx[ 'storage' ]->addCommand( 'pkg/handlers/uninstall' , $oArgs );
|
Пример файла регистрации обработчиков событий.
<?php
AMI_Event::addHandler(...);
|
Пример файла описания обработчиков событий.
<?php
function ...( $name , array $aEvent , $handlerModId , $srcModId ){
...
return $aEvent ;
}
|
Пример удаления добавленных при установке пользовательских файлов.
|