/** * add one record * * @param Tinebase_Record_Interface $_record * @param boolean $_duplicateCheck * @return Tinebase_Record_Interface * @throws Tinebase_Exception_AccessDenied */ public function create(Tinebase_Record_Interface $_record, $_duplicateCheck = true) { $this->_checkRight('create'); if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_record->toArray(), true)); } if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Create new ' . $this->_modelName); } $db = method_exists($this->_backend, 'getAdapter') ? $this->_backend->getAdapter() : Tinebase_Core::getDb(); try { $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction($db); // add personal container id if container id is missing in record if ($_record->has('container_id') && empty($_record->container_id)) { $containers = Tinebase_Container::getInstance()->getPersonalContainer(Tinebase_Core::getUser(), $this->_applicationName, Tinebase_Core::getUser(), Tinebase_Model_Grants::GRANT_ADD); $_record->container_id = $containers[0]->getId(); } $_record->isValid(TRUE); $this->_checkGrant($_record, 'create'); // added _doForceModlogInfo behavior if ($_record->has('created_by')) { $origRecord = clone $_record; Tinebase_Timemachine_ModificationLog::setRecordMetaData($_record, 'create'); $this->_forceModlogInfo($_record, $origRecord, 'create'); } $this->_inspectBeforeCreate($_record); if ($_duplicateCheck) { $this->_duplicateCheck($_record); } $this->_setAutoincrementValues($_record); $createdRecord = $this->_backend->create($_record); $this->_inspectAfterCreate($createdRecord, $_record); $this->_setRelatedData($createdRecord, $_record, null, TRUE); $this->_setNotes($createdRecord, $_record); if ($this->sendNotifications()) { $this->doSendNotifications($createdRecord, Tinebase_Core::getUser(), 'created'); } $this->_increaseContainerContentSequence($createdRecord, Tinebase_Model_ContainerContent::ACTION_CREATE); Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId); } catch (Exception $e) { $this->_handleRecordCreateOrUpdateException($e); } if ($this->_clearCustomFieldsCache) { Tinebase_Core::getCache()->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('customfields')); } /** @noinspection PhpUndefinedVariableInspection */ return $this->get($createdRecord); }
/** * add one record * * @param Tinebase_Record_Interface $_record * @param boolean $_duplicateCheck * @return Tinebase_Record_Interface * @throws Tinebase_Exception_AccessDenied */ public function create(Tinebase_Record_Interface $_record, $_duplicateCheck = TRUE) { $this->_checkRight('create'); if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_record->toArray(), true)); } if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Create new ' . $this->_modelName); } try { $db = $this->_backend->getAdapter(); $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction($db); // add personal container id if container id is missing in record if ($_record->has('container_id') && empty($_record->container_id)) { $containers = Tinebase_Container::getInstance()->getPersonalContainer($this->_currentAccount, $this->_applicationName, $this->_currentAccount, Tinebase_Model_Grants::GRANT_ADD); $_record->container_id = $containers[0]->getId(); } $_record->isValid(TRUE); $this->_checkGrant($_record, 'create'); if ($_record->has('created_by')) { Tinebase_Timemachine_ModificationLog::setRecordMetaData($_record, 'create'); } $this->_inspectBeforeCreate($_record); if ($_duplicateCheck) { $this->_duplicateCheck($_record); } $createdRecord = $this->_backend->create($_record); $this->_inspectAfterCreate($createdRecord, $_record); $this->_setRelatedData($createdRecord, $_record); $this->_setNotes($createdRecord, $_record); if ($this->sendNotifications()) { $this->doSendNotifications($createdRecord, $this->_currentAccount, 'created'); } $this->_increaseContainerContentSequence($createdRecord, Tinebase_Model_ContainerContent::ACTION_CREATE); Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId); } catch (Exception $e) { $this->_handleRecordCreateOrUpdateException($e); } return $this->get($createdRecord); }