/**
  * Triggers the internal loading of the mapped assignments.
  * Real work is only done on first access.
  */
 private function lazyLoadArray()
 {
     if ($this->bitInitialized) {
         return;
     }
     $this->bitInitialized = true;
     $objInit = new class_orm_objectinit($this->objTargetObject);
     $objInit->setObjHandleLogicalDeleted($this->objDeletedHandling);
     $objCfg = class_orm_assignment_config::getConfigForProperty($this->objTargetObject, $this->strProperty);
     foreach ($objInit->getAssignmentsFromDatabase($this->strProperty) as $strOneId) {
         $objObject = class_objectfactory::getInstance()->getObject($strOneId);
         if ($objObject !== null && ($objCfg->getArrTypeFilter() == null || count(array_filter($objCfg->getArrTypeFilter(), function ($strSingleClass) use($objObject) {
             return $objObject instanceof $strSingleClass;
         })) > 0)) {
             $this->append($objObject);
         }
     }
 }
 /**
  * Loads the data of the current element
  *
  * @return mixed
  */
 public final function loadElementData()
 {
     $objAnnotations = new class_reflection($this);
     $arrTargetTables = $objAnnotations->getAnnotationValuesFromClass(class_orm_base::STR_ANNOTATION_TARGETTABLE);
     $strTargetTable = "";
     if (count($arrTargetTables) != 0) {
         $arrCachedRow = class_orm_rowcache::getCachedInitRow($this->getSystemid());
         if ($arrCachedRow !== null && !isset($arrCachedRow["content_id"])) {
             class_orm_rowcache::removeSingleRow($this->getSystemid());
         }
         $objORM = new class_orm_objectinit($this);
         $objORM->initObjectFromDb();
         $arrTables = explode(".", $arrTargetTables[0]);
         $strTargetTable = _dbprefix_ . $arrTables[0];
     } else {
         if ($this->getArrModule("table") != "") {
             $strTargetTable = $this->getArrModule("table");
         }
     }
     $objORM = new class_orm_objectlist();
     //Element-Table given?
     if ($strTargetTable != "") {
         $strQuery = "SELECT *\n    \t\t\t\t\t FROM " . $strTargetTable . ",\n    \t\t\t\t\t \t  " . _dbprefix_ . "element,\n    \t\t\t\t\t \t  " . _dbprefix_ . "page_element,\n    \t\t\t\t\t \t  " . _dbprefix_ . "system_right,\n    \t\t\t\t\t \t  " . _dbprefix_ . "system\n    \t\t\t\t\t LEFT JOIN " . _dbprefix_ . "system_date\n    \t\t\t\t\t    ON (system_id = system_date_id)\n    \t\t\t\t\t WHERE element_name = page_element_ph_element\n    \t\t\t\t\t   AND page_element_id = content_id\n    \t\t\t\t\t   AND system_id = right_id\n    \t\t\t\t\t   AND system_id = content_id\n    \t\t\t\t\t   " . $objORM->getDeletedWhereRestriction() . "\n    \t\t\t\t\t   AND system_id = ? ";
     } else {
         $strQuery = "SELECT *\n    \t\t\t\t\t FROM " . _dbprefix_ . "element,\n    \t\t\t\t\t \t  " . _dbprefix_ . "page_element,\n    \t\t\t\t\t \t  " . _dbprefix_ . "system_right,\n    \t\t\t\t\t \t  " . _dbprefix_ . "system\n    \t\t\t\t\t LEFT JOIN " . _dbprefix_ . "system_date\n    \t\t\t\t\t    ON (system_id = system_date_id)\n    \t\t\t\t\t WHERE element_name = page_element_ph_element\n    \t\t\t\t\t   AND page_element_id = system_id\n    \t\t\t\t\t   AND system_id = right_id\n    \t\t\t\t\t   " . $objORM->getDeletedWhereRestriction() . "\n    \t\t\t\t\t   AND system_id = ? ";
     }
     $this->arrElementData = class_carrier::getInstance()->getObjDB()->getPRow($strQuery, array($this->getSystemid()));
     class_orm_rowcache::addSingleInitRow($this->arrElementData);
     return $this->arrElementData;
 }
Exemple #3
0
 /**
  * InitObjectInternal is called during an objects instantiation.
  * The default implementation tries to map all database-fields to the objects fields
  * and sets the values automatically.
  *
  * If you have a different column-property mapping or additional
  * setters to call, overwrite this method.
  * The row loaded from the database is available by calling $this->getArrInitRow().
  * @return void
  */
 protected function initObjectInternal()
 {
     $objORM = new class_orm_objectinit($this);
     $objORM->initObjectFromDb();
 }