2013-04-13 15:17:59 +03:00
|
|
|
|
<?php
|
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Абстрактный класс внешнего обработчика евента.
|
|
|
|
|
*
|
|
|
|
|
* От этого класса наследуются внешние обработчики евентов.
|
|
|
|
|
*
|
|
|
|
|
* @package engine
|
|
|
|
|
* @since 1.1
|
|
|
|
|
*/
|
|
|
|
|
abstract class Event extends LsObject {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Объект текущего экшена
|
|
|
|
|
*
|
|
|
|
|
* @var null|Action
|
|
|
|
|
*/
|
|
|
|
|
protected $oAction=null;
|
|
|
|
|
/**
|
2013-04-14 05:45:47 +03:00
|
|
|
|
* Объект для анализа структуры класса экшена
|
2013-04-13 15:17:59 +03:00
|
|
|
|
*
|
2013-04-14 05:45:47 +03:00
|
|
|
|
* @var null
|
2013-04-13 15:17:59 +03:00
|
|
|
|
*/
|
2013-04-14 05:45:47 +03:00
|
|
|
|
protected $oActionReflection=null;
|
2013-04-13 15:17:59 +03:00
|
|
|
|
|
|
|
|
|
public function __construct() {
|
2013-04-14 05:45:47 +03:00
|
|
|
|
|
2013-04-13 15:17:59 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Устанавливает объект экшена
|
|
|
|
|
*
|
|
|
|
|
* @param Action $oAction Объект текущего экшена
|
|
|
|
|
*/
|
|
|
|
|
public function SetActionObject($oAction) {
|
|
|
|
|
$this->oAction=$oAction;
|
2013-04-14 05:45:47 +03:00
|
|
|
|
$this->oActionReflection=new ReflectionClass($this->oAction);
|
2013-04-13 15:17:59 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Запускается для обработки евента, если у него не указанно имя, например, "User::"
|
|
|
|
|
*/
|
|
|
|
|
public function Exec() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Запускается всегда перед вызовом метода евента
|
|
|
|
|
*/
|
|
|
|
|
public function Init() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function __get($sName) {
|
2013-04-14 05:45:47 +03:00
|
|
|
|
if ($this->oActionReflection->hasProperty($sName)) {
|
2013-04-14 12:49:04 +03:00
|
|
|
|
return call_user_func_array(array($this->oAction,'ActionGet'),array($sName));
|
2013-04-13 15:17:59 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function __set($sName,$mValue) {
|
2013-04-14 05:45:47 +03:00
|
|
|
|
if ($this->oActionReflection->hasProperty($sName)) {
|
2013-04-14 12:49:04 +03:00
|
|
|
|
return call_user_func_array(array($this->oAction,'ActionSet'),array($sName,$mValue));
|
2013-04-13 15:17:59 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function __call($sName,$aArgs) {
|
|
|
|
|
/**
|
2013-04-14 05:45:47 +03:00
|
|
|
|
* Обработка вызова методов экшена
|
2013-04-13 15:17:59 +03:00
|
|
|
|
*/
|
2013-04-14 05:45:47 +03:00
|
|
|
|
if ($this->oAction->ActionCallExists($sName)) {
|
2013-04-13 15:17:59 +03:00
|
|
|
|
array_unshift($aArgs,$sName);
|
|
|
|
|
return call_user_func_array(array($this->oAction,'ActionCall'),$aArgs);
|
|
|
|
|
}
|
2013-04-14 05:45:47 +03:00
|
|
|
|
|
2013-04-13 15:17:59 +03:00
|
|
|
|
return Engine::getInstance()->_CallModule($sName,$aArgs);
|
|
|
|
|
}
|
|
|
|
|
}
|