function __mf_extend_model($modelName, $extensionClass) { Obj_MixinsManager::extend($modelName)->withClass($extensionClass); Events_Manager::triggerEvent('modelExtended', $extensionClass, $modelName); }
public function testCanTriggerMultipleListeners() { $listener = new Test_Event_ListenerObj(); Events_Manager::listensToEvents($listener); Events_Manager::listensToEvents('Test_Event_ListenerStatic'); $obj = new Test_Event_Triggered(); // entry conditions $listeners = Events_Manager::getListeners(); $this->assertEquals(2, count($listeners)); $this->assertEquals(2, count($listeners['testEvent1'])); $this->assertEquals(2, count($listeners['testEvent2'])); // change state $obj->doSomething(); $obj->doSomethingElse(); // retest $this->assertEquals(2, $listener->eventsTriggered); $this->assertEquals(array('e', 'f', 'g'), $listener->data); $this->assertEquals(2, Test_Event_ListenerStatic::$eventsTriggered); $this->assertEquals(array('e', 'f', 'g'), Test_Event_ListenerStatic::$data); }
/** * Automagically called whenether $this->authType is set * * @param int $authType */ protected function setAuthType($authType) { $this->aData['authType'] = $authType; if ($authType != User::AUTHTYPE_ANON) { Events_Manager::triggerEvent('User_Auth', $this, null); } }
public static function registerCache($cache, $modelName) { self::$aCaches[$modelName][] = $cache; } public static function listenToModelExtended($extensionClass, $modelName) { // var_dump('DataModel_Definitions::listenToModelExtended() called'); // a model has just been extended // now, give the extension a chance to add new fields to // the model's definition $oDef = self::get($modelName); call_user_func_array(array($extensionClass, 'extendsModelDefinition'), array($oDef)); } } // tell the Events mechanism that we need to be kept in the loop .. Events_Manager::listensToEvents('DataModel_Definitions'); // ======================================================================== // ------------------------------------------------------------------------ class DataModel_Definition { protected $primaryKeys = null; protected $autoPrimaryKey = true; protected $aForeignKeys = array(); protected $aFields = array(); protected $aMandatoryFields = array(); protected $aFieldsBySource = array(); protected $aoBehaviours = array(); protected $aViews = array(); protected $aRelationships = array(); protected $aIndices = array(); private $modelName = "";