root/trunk/src/includes/editam/models/user.php

Revision 22, 4.8 kB (checked in by bermi, 1 year ago)

FInishing installer implementation and adding a demo site configuration file.

This should allow setting up new Editam sites quickly.

Line 
1 <?php
2
3 // +----------------------------------------------------------------------+
4 // Editam is a content management platform developed by Akelos Media, S.L.|
5 // Copyright (C) 2006 - 2007 Akelos Media, S.L.                           |
6 //                                                                        |
7 // This program is free software; you can redistribute it and/or modify   |
8 // it under the terms of the GNU General Public License version 3 as      |
9 // published by the Free Software Foundation.                             |
10 //                                                                        |
11 // This program is distributed in the hope that it will be useful, but    |
12 // WITHOUT ANY WARRANTY; without even the implied warranty of             |
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                   |
14 // See the GNU General Public License for more details.                   |
15 //                                                                        |
16 // You should have received a copy of the GNU General Public License      |
17 // along with this program; if not, see http://www.gnu.org/licenses or    |
18 // write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth |
19 // Floor, Boston, MA 02110-1301 USA.                                      |
20 //                                                                        |
21 // You can contact Akelos Media, S.L. headquarters at                     |
22 // C/ Pasodoble Amparito Roca, 6, 46240 - Carlet (Valencia) - Spain       |
23 // or at email address contact@akelos.com.                                |
24 //                                                                        |
25 // The interactive user interfaces in modified source and object code     |
26 // versions of this program must display Appropriate Legal Notices, as    |
27 // required under Section 5 of the GNU General Public License version 3.  |
28 //                                                                        |
29 // In accordance with Section 7(b) of the GNU General Public License      |
30 // version 3, these Appropriate Legal Notices must retain the display of  |
31 // the "Powered by Editam" logo. If the display of the logo is not        |
32 // reasonably feasible for technical reasons, the Appropriate Legal       |
33 // Notices must display the words "Powered by Editam".                    |
34 // +----------------------------------------------------------------------+
35
36 class User extends ActiveRecord
37 {
38     var $belongs_to = array(
39         'creator' => array('class_name' => 'User', 'foreign_key' => 'created_by')
40     );
41     
42     var $habtm = array('roles' => array('unique'=>true));
43     
44     var $has_many 'system_messages';
45     
46     var $salt = 'A thing of beauty is a joy forever';
47
48     function validate()
49     {
50         $this->validatesUniquenessOf('login', array('message'=>$this->t('login %login already in use', array('%login'=>$this->get('login')))));
51         $this->needsPasswordConfirmation() ? $this->validatesConfirmationOf('password', $this->t('Must match confirmation')) : null;
52
53         $this->validatesPresenceOf(array('login','name'));
54         $this->isNewRecord() ? $this->validatesPresenceOf(array('password','password_confirmation')) : null;
55         $this->needsEmailValidation() ? $this->validatesFormatOf('email', AK_EMAIL_REGULAR_EXPRESSION, $this->t('Invalid email address')) : null;
56         $this->validatesLengthOf('login', array('in'=>array(3, 40), 'too_long' => $this->t('pick a shorter login'), 'too_short' => $this->t('pick a longer name')));
57         $this->needsPasswordLengthValidation() ? $this->validatesLengthOf('password', array('in'=>array(4, 40), 'too_long' => $this->t('pick a shorter password'), 'too_short' => $this->t('pick a longer password'))) : null;
58     }
59
60     function needsPasswordLengthValidation()
61     {
62         return $this->isNewRecord() || !empty($this->password);
63     }
64
65     function needsPasswordConfirmation()
66     {
67         return $this->isNewRecord();
68     }
69
70     function needsEmailValidation()
71     {
72         return empty($this->_byspass_email_validation);
73     }
74
75     function beforeCreate()
76     {
77         $this->encryptPassword();
78         return true;
79     }
80
81     function beforeUpdate()
82     {
83         $this->_encryptPasswordUnlessEmptyOrUnchanged();
84         return true;
85     }
86
87     function encryptPassword()
88     {
89         $this->set('password', $this->sha1($this->get('password')));
90     }
91
92     function sha1($phrase)
93     {
94         return sha1('--'.$this->salt.'--'.$phrase.'--');
95     }
96
97     function _encryptPasswordUnlessEmptyOrUnchanged()
98     {
99         $User =& $this->find($this->id);
100         switch ($this->get('password')) {
101             case '':
102             $this->password = $User->password;
103             break;
104             case $User->password:
105             break;
106             default:
107             $this->encryptPassword();
108             break;
109         }
110     }
111 }
112
113
114 ?>
115
Note: See TracBrowser for help on using the browser.