Changeset 983
- Timestamp:
- 08/14/10 02:40:01 (18 months ago)
- Location:
- trunk
- Files:
-
- 5 modified
-
classes/modules/user/User.class.php (modified) (1 diff)
-
engine/classes/Engine.class.php (modified) (1 diff)
-
engine/classes/EntityORM.class.php (modified) (1 diff)
-
engine/classes/MapperORM.class.php (modified) (1 diff)
-
engine/classes/ModuleORM.class.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/classes/modules/user/User.class.php
r931 r983 183 183 return $aUsers; 184 184 } 185 186 /** 187 * Алиас для корректной работы ORM 188 * 189 * @param unknown_type $aUserId 190 * @return unknown 191 */ 192 public function GetUserItemsByArrayId($aUserId) { 193 return $this->GetUsersByArrayId($aUserId); 194 } 195 185 196 public function GetUsersByArrayIdSolid($aUserId) { 186 197 if (!is_array($aUserId)) { -
trunk/engine/classes/Engine.class.php
r981 r983 151 151 if($bRunHooks || $sClassName == 'ModuleHook'){ 152 152 $sHookPrefix = 'module_'; 153 if($sPluginName = $this->GetPluginName($sClassName)){153 if($sPluginName = self::GetPluginName($sClassName)) { 154 154 $sHookPrefix .= "plugin{$sPluginName}_"; 155 155 } 156 $sHookPrefix .= $this->GetModuleName($sClassName).'_init_';156 $sHookPrefix .= self::GetModuleName($sClassName).'_init_'; 157 157 } 158 158 -
trunk/engine/classes/EntityORM.class.php
r982 r983 77 77 } 78 78 79 public function _setData($aData) { 80 if(is_array($aData)) { 81 foreach ($aData as $sKey => $val) { 82 if (array_key_exists($sKey,$this->aRelations)) { 83 $this->aRelationsData[$sKey]=$val; 84 } else { 85 $this->_aData[$sKey] = $val; 86 } 87 } 88 } 89 } 90 79 91 public function __call($sName,$aArgs) { 80 92 $sType=strtolower(substr($sName,0,3)); -
trunk/engine/classes/MapperORM.class.php
r982 r983 32 32 $sTableName = self::GetTableName($oEntity); 33 33 $iPrimaryKeyValue=$oEntity->_getDataOne($oEntity->_GetPrimatyKey()); 34 var_dump($iPrimaryKeyValue);34 35 35 $sql = "UPDATE ".$sTableName." SET ?a WHERE ".$oEntity->_GetPrimatyKey()." = ? "; 36 36 -
trunk/engine/classes/ModuleORM.class.php
r982 r983 104 104 $oEntityEmpty=Engine::GetEntity($sEntityFull); 105 105 $aRelations=$oEntityEmpty->_getRelations(); 106 $aEntityKeys=array(); 106 $aEntityKeys=array(); 107 107 foreach ($aFilter['#with'] as $sRelationName) { 108 if (!array_key_exists($sRelationName,$aRelations) or !in_array($aRelations[$sRelationName][0],array(EntityORM::RELATION_TYPE_BELONGS_TO,EntityORM::RELATION_TYPE_HAS_ONE))) { 108 $sRelType=$aRelations[$sRelationName][0]; 109 $sRelEntity=$aRelations[$sRelationName][1]; 110 $sRelKey=$aRelations[$sRelationName][2]; 111 112 if (!array_key_exists($sRelationName,$aRelations) or !in_array($sRelType,array(EntityORM::RELATION_TYPE_BELONGS_TO,EntityORM::RELATION_TYPE_HAS_ONE))) { 109 113 throw new Exception("The entity <{$sEntityFull}> not have relation <{$sRelationName}>"); 110 114 } 111 115 112 116 /** 113 117 * Формируем список ключей 114 118 */ 115 119 foreach ($aEntities as $oEntity) { 116 $aEntityKeys[$ aRelations[$sRelationName][2]][]=$oEntity->_getDataOne($aRelations[$sRelationName][2]);120 $aEntityKeys[$sRelKey][]=$oEntity->_getDataOne($sRelKey); 117 121 } 118 $aEntityKeys[$aRelations[$sRelationName][2]]=array_unique($aEntityKeys[$aRelations[$sRelationName][2]]); 122 $aEntityKeys[$sRelKey]=array_unique($aEntityKeys[$sRelKey]); 123 119 124 /** 120 125 * Делаем общий запрос по всем ключам 121 126 */ 127 $oRelEntityEmpty=Engine::GetEntity($sRelEntity); 122 128 123 $aRelData=$this->GetItemsByArray(array('id'=>$aEntityKeys[$aRelations[$sRelationName][2]]),$aRelations[$sRelationName][1]); 124 var_dump($aRelData); 125 } 126 /** 127 * Собираем набор 128 */ 129 $sRelModuleName=Engine::GetModuleName($oRelEntityEmpty); 130 $sRelEntityName=Engine::GetEntityName($oRelEntityEmpty); 131 $sRelPluginPrefix=Engine::GetPluginPrefix($oRelEntityEmpty); 132 // ItemsByArrayId - id пока идет костылем, т.к. у стандартных сущностей нет метода _GetPrimatyKey() 133 $aRelData=Engine::GetInstance()->_CallModule("{$sRelPluginPrefix}{$sRelModuleName}_get{$sRelEntityName}ItemsByArrayId",array($aEntityKeys[$sRelKey])); 134 /** 135 * Собираем набор 136 */ 137 foreach ($aEntities as $oEntity) { 138 if (isset($aRelData[$oEntity->_getDataOne($sRelKey)])) { 139 $oEntity->_setData(array($sRelationName => $aRelData[$oEntity->_getDataOne($sRelKey)])); 140 } 141 } 142 } 129 143 130 144 }
