Example #1
0
function __mf_extend_model($modelName, $extensionClass)
{
    Obj_MixinsManager::extend($modelName)->withClass($extensionClass);
    Events_Manager::triggerEvent('modelExtended', $extensionClass, $modelName);
}
Example #2
0
 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);
 }
Example #3
0
 /**
  * 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);
     }
 }
Example #4
0
    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 = "";