示例#1
0
 /**
  * @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);
 }
示例#2
0
 /**
  * @return void
  */
 public function update()
 {
     parent::update();
     $this->getResource()->update();
     Pimcore_API_Plugin_Broker::getInstance()->postUpdateObject($this);
 }