2 /* This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
3 and is published under the AGPL license. */
5 class UserController extends Zend_Controller_Action
8 public function userAction() {
9 $formData = $this->_helper->SyjPostData->getPostData('Syj_Form_User');
11 // XXX: we validate email server side *only* so we don't want to
12 // validate in SyjPostData. Then, we validate email outside Syj_Form_User
13 $emailValidator = new Syj_Validate_EmailAddress();
14 if (!$emailValidator->isValid($formData['user_email'])) {
15 throw new Syj_Exception_InvalidEmail();
18 $user = new Syj_Model_User();
19 $user->pseudo = $formData["user_pseudo"];
20 $user->password = sha1($formData["user_password"]);
21 $user->email = $formData["user_email"];
22 $user->creationAddr = $this->getRequest()->getClientIp(true);
24 if (Zend_Registry::isRegistered('Zend_Translate')) {
25 $translator = Zend_Registry::get('Zend_Translate');
26 $adapter = $translator->getAdapter();
27 $locale = new Zend_Locale($adapter->getLocale());
28 $user->lang = $locale->getLanguage();
31 $userMapper = new Syj_Model_UserMapper();
34 $userMapper->save ($user);
35 } catch(Zend_Db_Statement_Exception $e) {
36 if ($e->getCode() == 23505) { // 23505: Unique violation throw new Syj_Exception_Request();
37 $message = $e->getMessage();
38 if (strpos($message, 'users_pseudo_key') !== false) {
39 throw new Syj_Exception_Request("uniquepseudo");
40 } else if (strpos($message, 'users_email_key') !== false) {
41 throw new Syj_Exception_Request("uniqueemail");
50 $this->_helper->SyjSession->login($user->id);
51 $this->_helper->SyjApi->setCode(200);