1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-05-25 20:28:12 +03:00

fix delegate

This commit is contained in:
Mzhelskiy Maxim 2010-04-25 12:07:11 +00:00
parent 12759e37f8
commit 4718b20ff1

View file

@ -76,21 +76,8 @@ abstract class Plugin extends Object {
/**
* Если не указан параметр FROM, копируем значение всего ITEM
*/
if(!$aDelegate->from) $aDelegate->from=$aDelegate;
/**
* Если не указан делегат TO, считаем, что делегатом является
* одноименный объект текущего плагина
*/
if ($sObjectName=='template') {
if(!$aDelegate->to) {
$aDelegate->to = $this->GetTemplatePath(get_class($this)).$aDelegate->from;
} else {
$aDelegate->to=preg_replace("/^_/",$this->GetTemplatePath(get_class($this)),$aDelegate->to);
}
} else {
if(!$aDelegate->to) $aDelegate->to = get_class($this).'_'.$aDelegate->from;
}
$this->Plugin_Delegate($sObjectName,$aDelegate->from,$aDelegate->to,get_class($this));
if(!$aDelegate->from) $aDelegate->from=$aDelegate;
$this->DelegateWrapper($sObjectName,$aDelegate->from,$aDelegate->to);
}
}
}
@ -100,13 +87,35 @@ abstract class Plugin extends Object {
foreach ($this->aDelegates as $sObjectName=>$aParams) {
if(is_array($aParams) and count($aParams)) {
foreach ($aParams as $sFrom=>$sTo) {
$this->Plugin_Delegate($sObjectName,$sFrom,$sTo,get_class($this));
if (is_int($sFrom)) {
$sFrom=$sTo;
$sTo=null;
}
$this->DelegateWrapper($sObjectName,$sFrom,$sTo);
}
}
}
}
}
public function DelegateWrapper($sObjectName,$sFrom,$sTo=null) {
/**
* Если не указан делегат TO, считаем, что делегатом является
* одноименный объект текущего плагина
*/
if ($sObjectName=='template') {
if(!$sTo) {
$sTo = $this->GetTemplatePath(get_class($this)).$sFrom;
} else {
$sTo=preg_replace("/^_/",$this->GetTemplatePath(get_class($this)),$sTo);
}
} else {
if(!$sTo) $sTo = get_class($this).'_'.$sFrom;
}
$this->Plugin_Delegate($sObjectName,$sFrom,$sTo,get_class($this));
}
/**
* Возвращает массив делегатов
*