/** * Do the process of registration * @todo add a link to a safinstance if the user exists and he wants to register from another safinstance * @return void */ public function registerprocessAction() { $request = $this->getRequest(); // Check if we have a POST request if (!$request->isPost()) { return $this->_helper->redirector('login'); } else { // Get our form and validate it $form = $this->getRegistrationForm(); $this->view->form = $form; $params = $request->getPost(); // check the form is valid if (!$form->isValid($request->getPost())) { return $this->render('register'); } else { if ($params['password'] != $params['password2']) { $this->view->form->setDescription($this->_translate->_('Both password do not match')); return $this->render('register'); } else { // check if the login doen't exist already $users = new Users(); $rows = $users->fetchAll("login LIKE '" . $params['username'] . "'"); // user is not unique if (count($rows) > 0) { $this->view->form->setDescription($this->_translate->_('This user exists already')); return $this->render('register'); } else { // insert the new user in the table $data = array('login' => addslashes($params['username']), 'password' => md5(addslashes($params['password'])), 'usersgroups_id' => 2, 'email' => addslashes($params['username']), 'active' => 1, 'safinstances_id' => $this->_config->db->safinstances_id, 'subscribedate' => date("Y-m-d H:i:s"), 'ip' => $_SERVER['REMOTE_ADDR']); $uid = $users->insert($data); // insert the link to the safinstance $corDB = new SafinstancesUsers(); $row = $corDB->createRow(); $row->safinstances_id = $this->_config->db->safinstances_id; $row->users_id = $uid; $row->save(); // process login with the information provided $adapter = $this->getAuthAdapter($request); $auth = Sydney_Auth::getInstance(); $result = $auth->authenticate($adapter); if ($result->isValid()) { $r = $this->getRequest(); if (isset($r->redirectmodule)) { $this->_helper->redirector('index', 'index', $r->getParam('redirectmodule', 'index')); } elseif ($r->redirectpage) { $this->_helper->redirector('view', 'index', 'publicms', array('page' => $r->redirectpage)); } else { $this->_helper->redirector('index', 'index', $r->getParam('redirectmodule', 'index')); } // $this->logger->log('New user registered', Zend_Log::WARN); // return $this->render('register'); } else { $this->view->form->setDescription($this->_translate->_('An unexpected error occured... please contact the support.')); return $this->render('register'); } } } } } }
private function saveRow($data, $modeEdit, $isPublicModule) { try { $usersDb = new Users(); if ($modeEdit) { $rows = $usersDb->fetchAll(" id = '" . $data['id'] . "' AND login = '******'login']) . "' "); $row = $rows[0]; } else { $row = $usersDb->createRow(); } // Store row $this->set($row); foreach ($data as $k => $v) { if (isset($data[$k]) && isset($row->{$k})) { switch ($k) { case 'password': if (!empty($data[$k])) { if (!$this->isValidPassword($data[$k], $data['id'])) { Sydney_Messages::getInstance()->addMessage(Sydney_Tools::_('Please use another password!')); return false; } $row->lastpwdhistory = $this->getUpdatedHistoryForDb($row->lastpwdhistory, $data[$k]); $row->{$k} = md5($data[$k]); $row->lastpwdchanges = Sydney_Tools::getMySQLFormatedDate(); $row->timeValidityPassword = 0; } break; case 'valid': if ($row->{$k} != $data[$k]) { $row->laststatuschange = Sydney_Tools::getMySQLFormatedDate(); if ($row->{$k} == 1) { $row->unsubscribedate = Sydney_Tools::getMySQLFormatedDate(); } } $row->{$k} = $data[$k]; break; case 'active': if ($row->{$k} != $data[$k]) { $row->laststatuschange = Sydney_Tools::getMySQLFormatedDate(); if ($row->{$k} == 1) { $row->unsubscribedate = Sydney_Tools::getMySQLFormatedDate(); } } $row->{$k} = $data[$k]; break; default: $row->{$k} = $data[$k]; break; } } } $creation = !($row->id > 0); // Store row $this->set($row); if (!$creation) { // in case we are editing $row->modifieddate = Sydney_Tools::getMySQLFormatedDate(); } else { // fixed values if public creation if ($isPublicModule) { $row->usersgroups_id = 2; // User is added to group 'auth' $row->active = 0; // User is not active } // in case we are creating $usersData = Sydney_Tools::getUserdata(); $row->subscribedate = Sydney_Tools::getMySQLFormatedDate(); $row->modifieddate = Sydney_Tools::getMySQLFormatedDate(); $row->safinstances_id = Sydney_Tools::getSafinstancesId(); $row->creatoridentity = $usersData ? $usersData['users_id'] : 0; $row->ip = $_SERVER['REMOTE_ADDR']; } if ($newId = $row->save()) { Sydney_Messages::getInstance()->addMessage('Success! The data is valid.'); $row->id = $newId; // Store row $this->set($row); if ($creation) { // create the link to cor table $corDb = new SafinstancesUsers(); $corRow = $corDb->createRow(); $corRow->safinstances_id = Sydney_Tools::getSafinstancesId(); $corRow->users_id = $row->id; $corRow->save(); } return $row; } else { Sydney_Messages::getInstance()->addMessage('Error...'); return false; } } catch (Exception $e) { Sydney_Messages::getInstance()->addMessage('UsersOp::save::Exception! ' . $e->getMessage()); return false; } }