/** * add object with Model (if not already added) * @param Object $pObject * @param boolean $pThrowException throw exception if object can't be added (no complete id or object already added) * @throws \Exception */ public function addObject(Object $pObject, $pThrowException = true) { if ($pObject->hasCompleteId()) { if ($pObject->getModel()->hasIdProperty()) { $lModelName = $pObject->getModel()->getModelName(); $lId = $pObject->getId(); if (!array_key_exists($lModelName, $this->mMap)) { $this->mMap[$lModelName] = array(); } // if object NOT already added, we can add it and create attached LocalObjectCollection if (!array_key_exists($lId, $this->mMap[$lModelName])) { $this->mMap[$lModelName][$lId] = $pObject; } else { if ($pThrowException) { throw new \Exception('object already added'); } } } } else { if ($pThrowException) { trigger_error(json_encode($pObject->toObject())); trigger_error($pObject->getModel()->getModelName()); trigger_error(json_encode($pObject->getModel()->getIdproperties())); throw new \Exception('object can\'t be added, object has no id or id is incomplete'); } } }
/** * add object with localModel (only if not already added) * @param Object $pObject * @param boolean $pThrowException throw exception if an object with same id already exists * @return boolean true if object is added */ public function addObject(Object $pObject, $pThrowException = true) { if (!$pObject->getModel() instanceof LocalModel) { throw new \Exception('mdodel must be instance of LocalModel'); } $lReturn = false; $lId = $pObject->getId(); if (!$pObject->getModel()->hasIdProperty() || !$pObject->hasCompleteId()) { return $lReturn; } $pModelName = $pObject->getModel()->getModelName(); if (!array_key_exists($pModelName, $this->mMap)) { $this->mMap[$pModelName] = array(); } if (!array_key_exists($lId, $this->mMap[$pModelName])) { $this->mMap[$pModelName][$lId] = $pObject; $lReturn = true; } else { if ($pThrowException) { throw new \Exception('object already added'); } } return $lReturn; }
public function _toId(Object $pObject, $pUseSerializationName = false) { if ($pObject->hasCompleteId()) { return $pObject->getId(); } else { trigger_error("Warning cannot export id of foreign property with model '{$this->mModelName}' because object doesn't have complete id"); return null; } }