/** * @return void */ protected function update() { $fieldDefintions = $this->getO_class()->getFieldDefinitions(); foreach ($fieldDefintions as $fd) { $getter = "get" . ucfirst($fd->getName()); $setter = "set" . ucfirst($fd->getName()); if (method_exists($this, $getter)) { //To make sure, inherited values are not set again $inheritedValues = Object_Abstract::doGetInheritedValues(); Object_Abstract::setGetInheritedValues(false); $value = $this->{$getter}(); if (is_array($value) and ($fd instanceof Object_Class_Data_Multihref or $fd instanceof Object_Class_Data_Objects)) { //don't save relations twice $this->{$setter}(array_unique($value)); } Object_Abstract::setGetInheritedValues($inheritedValues); $value = $this->{$getter}(); $omitMandatoryCheck = $this->getOmitMandatoryCheck(); /*$timeSinceCreation = (time()-$this->getCreationDate()); if($timeSinceCreation <= 5){ // legacy hack: in previous version there was no check for mandatory fields, // and everybody uses the save method for new object creation - so now let's evict the mandatory check // if the object was created within the last 5 seconds $omitMandatoryCheck=true; Logger::debug("executing mandatory fields check for object [ ".$this->getId()." ]"); } */ //check throws Exception try { $fd->checkValidity($value, $omitMandatoryCheck); } catch (Exception $e) { if ($this->getO_class()->getAllowInherit()) { //try again with parent data when inheritance in activated try { $getInheritedValues = Object_Abstract::doGetInheritedValues(); Object_Abstract::setGetInheritedValues(true); $value = $this->{$getter}(); $fd->checkValidity($value, $omitMandatoryCheck); Object_Abstract::setGetInheritedValues($getInheritedValues); } catch (Exception $e) { throw new Exception($e->getMessage() . " fieldname=" . $fd->getName()); } } else { throw new Exception($e->getMessage() . " fieldname=" . $fd->getName()); } } } } parent::update(); $this->getResource()->update(); $this->saveScheduledTasks(); $this->saveVersion(false, false); $this->saveChilds(); Pimcore_API_Plugin_Broker::getInstance()->postUpdateObject($this); }
/** * @return void */ public function update() { parent::update(); $this->getResource()->update(); Pimcore_API_Plugin_Broker::getInstance()->postUpdateObject($this); }