1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-17 07:10:48 +03:00

Проверка наличия плагинов, указанные в xml-плагина как обязательные.

This commit is contained in:
Alexey Kachayev 2010-02-07 18:01:12 +00:00
parent b704c34caa
commit 1fffd3f0a9
3 changed files with 42 additions and 1 deletions

View file

@ -112,6 +112,45 @@ class LsPlugin extends Module {
$oPlugin=new $sClassName;
if($sAction=='Activate') {
/**
* Проверяем совместимость с версией LS
*/
if(defined('LS_VERSION')
and version_compare(LS_VERSION,$aPlugins[$sPlugin]['property']->requires->livestreet,'=<')) {
$this->Message_AddError(
$this->Lang_Get(
'plugins_activation_version_error',
array(
'version'=>$aPlugins[$sPlugin]['property']->requires->livestreet)
),
$this->Lang_Get('error'),
true
);
return;
}
/**
* Проверяем наличие require-плагинов
*/
if($aPlugins[$sPlugin]['property']->requires->plugins) {
$aActivePlugins=$this->GetActivePlugins();
$iConflict=0;
foreach ($aPlugins[$sPlugin]['property']->requires->plugins->children() as $sReqPlugin) {
if(!in_array($sReqPlugin,$aActivePlugins)) {
$iConflict++;
$this->Message_AddError(
$this->Lang_Get('plugins_activation_requires_error',
array(
'plugin'=>ucfirst($sReqPlugin)
)
),
$this->Lang_Get('error'),
true
);
}
}
if($iConflict) { return; }
}
/**
* Проверяем, не вступает ли данный плагин в конфликт с уже активированными
* (по поводу объявленных делегатов)

View file

@ -7,7 +7,7 @@
<requires>
<livestreet>0.4.0</livestreet>
<plugins>
</plugins>
</requires>
<description>

View file

@ -778,6 +778,8 @@ return array(
'plugins_unknown_action' => 'Указано неизвестное действие',
'plugins_action_ok' => 'Успешно выполнено',
'plugins_activation_overlap' => 'Конфликт с активированным плагином. Ресурс %%resource%% переопределен на %%delegate%% плагином %%plugin%%.',
'plugins_activation_version_error' => 'Для работы плагина необходимо ядро LiveStreet версии не ниже %%version%%',
'plugins_activation_requires_error' => 'Для работы плагина необходим активированный плагин <b>%%plugin%%</b>',
'plugins_submit_delete' => 'Удалить плагины',
'plugins_delete_confirm' => 'Вы уверены, что желаете удалить указанные плагины?',