Esempio n. 1
0
 /**
  * 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);
 }
Esempio n. 4
0
 /**
  * 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);
 }
Esempio n. 5
0
 /**
  * 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);
     }
 }
Esempio n. 6
0
 /**
  * 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;
 }
Esempio n. 7
0
 /**
  * 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];
 }
Esempio n. 11
0
 /**
  * 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');
 }