/** * This function is used to perform the add new user in database. It's necessary * because the createAdmin function does not need to test if user is allowed * * @return User_Model_User * @throws Exception */ private function _add() { $this->_user->setSalt(Agana_Util_Crypt::calcRndTimeSalt($this->_user->getPwd(), $this->_user->getName())); $this->_user->setPwd(md5($this->_user->getPwd() . $this->_user->getSalt())); $this->_user->setCreated(time()); try { $u = new User_Persist_Dao_User(); $u->beginTransaction(); // save a new person if needed $person = $this->_user->getPerson(); if (!isset($person) || !$person->getId()) { if ($person) { $personName = $person->getName() ? $person->getName() : $this->_user->getName(); } else { $personName = $this->_user->getName(); $this->_user->setPerson(new Persons_Model_Person()); } $personToSave = $this->_user->getPerson(); $personToSave->setName($personName); $personToSave->setGender(' '); $personDomain = new Persons_Domain_Person($personToSave); // do not need to use trasaction so false is passed $personResultId = $personDomain->create(false); $person = $personDomain->getById($personResultId); $this->_user->setPerson($person); } $app = $this->_user->getAppAccount(); if (!isset($app) || !$app->getId()) { throw new Agana_Exception('An App Account must be provided to include a new user'); } $u->setUseTransaction(false); $res = $u->save($this->_user); $u->commit(); return $res; } catch (Exception $e) { $u->rollback(); throw $e; } }
/** * Prepare data for insert * * @param User_Model_User $user * @return Array */ private function _prepareInsertData($user) { $data = array('name' => $user->getName(), 'created' => date('Y-m-d H:m:s', $user->getCreated()), 'status' => $user->getStatus(), 'pwd' => $user->getPwd(), 'rnd_salt' => $user->getSalt(), 'email' => $user->getEmail(), 'person_id' => $user->getPerson()->getId(), 'acl_role_id' => $user->getAcl_role_id(), 'appaccount_id' => $user->getAppAccount()->getId()); return $data; }