/** * Saves a logbook record * * @param Tinebase_Model_ModificationLog _modification * @return string id; * @throws Tinebase_Exception_Record_Validation */ public function setModification(Tinebase_Model_ModificationLog $_modification) { if ($_modification->isValid()) { $id = $_modification->generateUID(); $_modification->setId($id); $_modification->convertDates = true; $modificationArray = $_modification->toArray(); if (is_array($modificationArray['new_value'])) { throw new Tinebase_Exception_Record_Validation("New value is an array! \n" . print_r($modificationArray['new_value'], true)); } $this->_table->insert($modificationArray); } else { throw new Tinebase_Exception_Record_Validation("_modification data is not valid! \n" . print_r($_modification->getValidationErrors(), true)); } return $id; }
/** * Saves a logbook record * * @param Tinebase_Model_ModificationLog $modification * @return string id */ public function setModification(Tinebase_Model_ModificationLog $modification) { $modification->isValid(TRUE); $id = $modification->generateUID(); $modification->setId($id); $modification->convertDates = true; $modificationArray = $modification->toArray(); if (is_array($modificationArray['new_value'])) { throw new Tinebase_Exception_Record_Validation("New value is an array! \n" . print_r($modificationArray['new_value'], true)); } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . " Inserting modlog: " . print_r($modificationArray, TRUE)); } try { $this->_table->insert($modificationArray); } catch (Zend_Db_Statement_Exception $zdse) { if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . $zdse->getMessage() . ' ' . print_r($modification->toArray(), TRUE)); } // check if unique key constraint failed $filter = new Tinebase_Model_ModificationLogFilter(array(array('field' => 'seq', 'operator' => 'equals', 'value' => $modification->seq), array('field' => 'record_type', 'operator' => 'equals', 'value' => $modification->record_type), array('field' => 'record_id', 'operator' => 'equals', 'value' => $modification->record_id), array('field' => 'modified_attribute', 'operator' => 'equals', 'value' => $modification->modified_attribute))); $result = $this->_backend->search($filter); if (count($result) > 0) { throw new Tinebase_Timemachine_Exception_ConcurrencyConflict('Seq ' . $modification->seq . ' for record ' . $modification->record_id . ' already exists'); } else { throw $zdse; } } return $id; }