/** * adds a new relation * * @param Tinebase_Model_Relation $_relation * @return Tinebase_Model_Relation the new relation * * @todo move check existance and update / modlog to controller? */ public function addRelation($_relation) { if ($_relation->getId()) { throw new Tinebase_Exception_Record_NotAllowed('Could not add existing relation'); } $relId = $_relation->generateUID(); $_relation->setId($relId); // check if relation is already set (with is_deleted=1) if ($deletedRelId = $this->_checkExistance($_relation)) { Tinebase_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Removing existing relation (rel_id): ' . $deletedRelId); $where = array($this->_db->quoteInto($this->_db->quoteIdentifier('rel_id') . ' = ?', $deletedRelId)); $this->_dbTable->delete($where); } $data = $_relation->toArray(); $data['rel_id'] = $data['id']; $data['id'] = $_relation->generateUID(); unset($data['related_record']); if (isset($data['remark']) && is_array($data['remark'])) { $data['remark'] = Zend_Json::encode($data['remark']); } $this->_dbTable->insert($data); $swappedData = $this->_swapRoles($data); $swappedData['id'] = $_relation->generateUID(); $this->_dbTable->insert($swappedData); return $this->getRelation($relId, $_relation['own_model'], $_relation['own_backend'], $_relation['own_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; }
/** * add new note type * * @param Tinebase_Model_NoteType $_noteType */ public function addNoteType(Tinebase_Model_NoteType $_noteType) { if (!$_noteType->getId()) { $id = $_noteType->generateUID(); $_noteType->setId($id); } $data = $_noteType->toArray(); $this->_noteTypesTable->insert($data); }
/** * add new registration * * @param Tinebase_Model_Registration $_registration * @return Tinebase_Model_Registration the new registration object * * @access protected */ protected function addRegistration($_registration) { if (!$_registration->isValid()) { throw new Exception('invalid registration object'); } $registrationData = array("login_name" => $_registration->login_name, "login_hash" => $_registration->login_hash, "email" => $_registration->email, "date" => Tinebase_DateTime::now()->get(Tinebase_Record_Abstract::ISO8601LONG), "status" => "justregistered"); // add new user $this->_registrationsTable->insert($registrationData); return $this->getRegistrationByHash($_registration->login_hash); }
/** * add single role rights * * @param int $_roleId * @param int $_applicationId * @param string $_right */ public function addSingleRight($_roleId, $_applicationId, $_right) { // check if already in $select = $this->_roleRightsTable->select(); $select->where($this->_db->quoteInto($this->_db->quoteIdentifier('role_id') . ' = ?', $_roleId))->where($this->_db->quoteInto($this->_db->quoteIdentifier('right') . ' = ?', $_right))->where($this->_db->quoteInto($this->_db->quoteIdentifier('application_id') . ' = ?', $_applicationId)); if (!($row = $this->_roleRightsTable->fetchRow($select))) { $data = array('role_id' => $_roleId, 'application_id' => $_applicationId, 'right' => $_right); $this->_roleRightsTable->insert($data); } }
/** * 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; }
/** * registers new persistent observer * * @param Tinebase_Model_PersistentObserver $_persistentObserver * @return Tinebase_Model_PersistentObserver the new persistentObserver */ public function addObserver($_persistentObserver) { if ($_persistentObserver->getId()) { throw new Tinebase_Exception_Record_NotAllowed('Could not add existing observer'); } $_persistentObserver->created_by = Tinebase_Core::getUser()->getId(); $_persistentObserver->creation_time = Tinebase_DateTime::now(); if ($_persistentObserver->isValid()) { $data = $_persistentObserver->toArray(); // resolve apps $application = Tinebase_Application::getInstance(); $data['observable_application'] = $application->getApplicationByName($_persistentObserver->observable_application)->id; $data['observer_application'] = $application->getApplicationByName($_persistentObserver->observer_application)->id; $identifier = $this->_db->insert($data); $persistentObserver = $this->_db->fetchRow("identifier = {$identifier}"); return new Tinebase_Model_PersistentObserver($persistentObserver->toArray(), true); } else { throw new Tinebase_Exception_Record_Validation('some fields have invalid content'); } }
/** * create a new group in sql backend * * @param Tinebase_Model_Group $_group * * @return Tinebase_Model_Group * @throws Tinebase_Exception_Record_Validation */ public function addGroupInSqlBackend(Tinebase_Model_Group $_group) { if (!$_group->isValid()) { throw new Tinebase_Exception_Record_Validation('invalid group object'); } if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Creating new group ' . $_group->name); } if (!isset($_group->id)) { $groupId = $_group->generateUID(); $_group->setId($groupId); } if (empty($_group->list_id)) { $_group->visibility = 'hidden'; $_group->list_id = null; } $data = $_group->toArray(); unset($data['members']); unset($data['container_id']); $this->groupsTable->insert($data); return $_group; }
/** * add an user * * @todo fix $contactData['container_id'] = 1; * * @param Tinebase_Model_FullUser $_user * @return Tinebase_Model_FullUser */ public function addUserInSqlBackend(Tinebase_Model_FullUser $_user) { $_user->isValid(TRUE); $accountsTable = new Tinebase_Db_Table(array('name' => SQL_TABLE_PREFIX . 'accounts')); if (!isset($_user->accountId)) { $userId = $_user->generateUID(); $_user->setId($userId); } if (empty($_user->contact_id)) { $_user->visibility = 'hidden'; $_user->contact_id = null; } $accountData = $this->_recordToRawData($_user); if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Adding user to SQL backend: ' . $_user->accountLoginName); } $accountsTable->insert($accountData); return $this->getUserById($_user->getId(), 'Tinebase_Model_FullUser'); }
/** * Returns Status identifier * * @param string $_egw14Status * @return id identifier */ protected static function getStatus($_egw14Status) { static $stati; $oldstatus = strtoupper($_egw14Status); if (!isset($stati[$oldstatus])) { $statusTable = new Tinebase_Db_Table(array('name' => SQL_TABLE_PREFIX . 'tasks_status')); $status = $statusTable->fetchRow($statusTable->getAdapter()->quoteInto('status LIKE ?', $oldstatus)); if (!$status) { $identifier = $statusTable->insert(array('created_by' => Tinebase_Core::getUser()->getId(), 'creation_time' => Tinebase_DateTime::now()->get(Tinebase_Record_Abstract::ISO8601LONG), 'status' => $oldstatus)); $stati[$oldstatus] = $identifier; } else { $stati[$oldstatus] = $status->identifier; } } return $stati[$oldstatus]; }
/** * add an user * * @todo fix $contactData['container_id'] = 1; * * @param Tinebase_Model_FullUser $_user * @return Tinebase_Model_FullUser */ public function addUserInSqlBackend(Tinebase_Model_FullUser $_user) { if (!$_user->isValid()) { throw new Exception('invalid user object'); } $accountsTable = new Tinebase_Db_Table(array('name' => SQL_TABLE_PREFIX . 'accounts')); if (!isset($_user->accountId)) { $userId = $_user->generateUID(); $_user->setId($userId); } if (empty($_user->contact_id)) { $_user->visibility = 'hidden'; $_user->contact_id = null; } $accountData = array('id' => $_user->accountId, 'login_name' => $_user->accountLoginName, 'status' => $_user->accountStatus, 'expires_at' => $_user->accountExpires instanceof DateTime ? $_user->accountExpires->get(Tinebase_Record_Abstract::ISO8601LONG) : NULL, 'primary_group_id' => $_user->accountPrimaryGroup, 'home_dir' => $_user->accountHomeDirectory, 'login_shell' => $_user->accountLoginShell, 'openid' => $_user->openid, 'visibility' => $_user->visibility, 'contact_id' => $_user->contact_id, $this->rowNameMapping['accountDisplayName'] => $_user->accountDisplayName, $this->rowNameMapping['accountFullName'] => $_user->accountFullName, $this->rowNameMapping['accountFirstName'] => $_user->accountFirstName, $this->rowNameMapping['accountLastName'] => $_user->accountLastName, $this->rowNameMapping['accountEmailAddress'] => $_user->accountEmailAddress); if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' Adding user to SQL backend: ' . $_user->accountLoginName); } $accountsTable->insert($accountData); return $this->getUserById($_user->getId(), 'Tinebase_Model_FullUser'); }