Dotclear

source: admin/user.php @ 479:81e222fb09d7

Revision 479:81e222fb09d7, 9.6 KB checked in by Franck <carnet.franck.paul@…>, 14 years ago (diff)

Ajout d'une note sous le champ email sur le formulaire de création d'un nouvel utilisateur indiquant que l'email est obligatoire pour la procédure de récupération de mot de passe. Fixes #1174

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12
13require dirname(__FILE__).'/../inc/admin/prepend.php';
14
15dcPage::checkSuper();
16
17$page_title = __('new user');
18
19$user_id = '';
20$user_super = '';
21$user_pwd = '';
22$user_change_pwd = '';
23$user_name = '';
24$user_firstname = '';
25$user_displayname = '';
26$user_email = '';
27$user_url = '';
28$user_lang = $core->auth->getInfo('user_lang');
29$user_tz = $core->auth->getInfo('user_tz');
30$user_post_status = '';
31
32$user_options = $core->userDefaults();
33
34foreach ($core->getFormaters() as $v) {
35     $formaters_combo[$v] = $v;
36}
37
38foreach ($core->blog->getAllPostStatus() as $k => $v) {
39     $status_combo[$v] = $k;
40}
41
42# Language codes
43$langs = l10n::getISOcodes(1,1);
44foreach ($langs as $k => $v) {
45     $lang_avail = $v == 'en' || is_dir(DC_L10N_ROOT.'/'.$v);
46     $lang_combo[] = new formSelectOption($k,$v,$lang_avail ? 'avail10n' : '');
47}
48
49# Get user if we have an ID
50if (!empty($_REQUEST['id']))
51{
52     try {
53          $rs = $core->getUser($_REQUEST['id']);
54         
55          $user_id = $rs->user_id;
56          $user_super = $rs->user_super;
57          $user_pwd = $rs->user_pwd;
58          $user_change_pwd = $rs->user_change_pwd;
59          $user_name = $rs->user_name;
60          $user_firstname = $rs->user_firstname;
61          $user_displayname = $rs->user_displayname;
62          $user_email = $rs->user_email;
63          $user_url = $rs->user_url;
64          $user_lang = $rs->user_lang;
65          $user_tz = $rs->user_tz;
66          $user_post_status = $rs->user_post_status;
67         
68          $user_options = array_merge($user_options,$rs->options());
69         
70          $page_title = $user_id;
71     } catch (Exception $e) {
72          $core->error->add($e->getMessage());
73     }
74}
75
76# Add or update user
77if (isset($_POST['user_name']))
78{
79     try
80     {
81          if (empty($_POST['your_pwd']) || !$core->auth->checkPassword(crypt::hmac(DC_MASTER_KEY,$_POST['your_pwd']))) {
82               throw new Exception(__('Password verification failed'));
83          }
84         
85          $cur = $core->con->openCursor($core->prefix.'user');
86         
87          $cur->user_id = $_POST['user_id'];
88          $cur->user_super = $user_super = !empty($_POST['user_super']) ? 1 : 0;
89          $cur->user_name = $user_name = $_POST['user_name'];
90          $cur->user_firstname = $user_firstname = $_POST['user_firstname'];
91          $cur->user_displayname = $user_displayname = $_POST['user_displayname'];
92          $cur->user_email = $user_email = $_POST['user_email'];
93          $cur->user_url = $user_url = $_POST['user_url'];
94          $cur->user_lang = $user_lang = $_POST['user_lang'];
95          $cur->user_tz = $user_tz = $_POST['user_tz'];
96          $cur->user_post_status = $user_post_status = $_POST['user_post_status'];
97         
98          if ($cur->user_id == $core->auth->userID() && $core->auth->isSuperAdmin()) {
99               // force super_user to true if current user
100               $cur->user_super = $user_super = true;
101          }
102          if ($core->auth->allowPassChange()) {
103               $cur->user_change_pwd = !empty($_POST['user_change_pwd']) ? 1 : 0;
104          }
105         
106          if (!empty($_POST['new_pwd'])) {
107               if ($_POST['new_pwd'] != $_POST['new_pwd_c']) {
108                    throw new Exception(__("Passwords don't match"));
109               } else {
110                    $cur->user_pwd = $_POST['new_pwd'];
111               }
112          }
113         
114          $user_options['post_format'] = $_POST['user_post_format'];
115          $user_options['edit_size'] = (integer) $_POST['user_edit_size'];
116         
117          if ($user_options['edit_size'] < 1) {
118               $user_options['edit_size'] = 10;
119          }
120         
121          $cur->user_options = new ArrayObject($user_options);
122         
123          # Udate user
124          if ($user_id)
125          {
126               # --BEHAVIOR-- adminBeforeUserUpdate
127               $core->callBehavior('adminBeforeUserUpdate',$cur,$user_id);
128               
129               $new_id = $core->updUser($user_id,$cur);
130               
131               # --BEHAVIOR-- adminAfterUserUpdate
132               $core->callBehavior('adminAfterUserUpdate',$cur,$new_id);
133               
134               if ($user_id == $core->auth->userID() &&
135               $user_id != $new_id) {
136                    $core->session->destroy();
137               }
138               
139               http::redirect('user.php?id='.$new_id.'&upd=1');
140          }
141          # Add user
142          else
143          {
144               if ($core->getUsers(array('user_id' => $cur->user_id),true)->f(0) > 0) {
145                    throw new Exception(sprintf(__('User "%s" already exists.'),html::escapeHTML($cur->user_id)));
146               }
147               
148               # --BEHAVIOR-- adminBeforeUserCreate
149               $core->callBehavior('adminBeforeUserCreate',$cur);
150               
151               $new_id = $core->addUser($cur);
152               
153               # --BEHAVIOR-- adminAfterUserCreate
154               $core->callBehavior('adminAfterUserCreate',$cur,$new_id);
155               
156               http::redirect('user.php?id='.$new_id.'&add=1');
157          }
158     }
159     catch (Exception $e)
160     {
161          $core->error->add($e->getMessage());
162     }
163}
164
165
166/* DISPLAY
167-------------------------------------------------------- */
168dcPage::open($page_title,
169     dcPage::jsConfirmClose('user-form').
170     
171     # --BEHAVIOR-- adminUserHeaders
172     $core->callBehavior('adminUserHeaders')
173);
174
175if (!empty($_GET['upd'])) {
176          echo '<p class="message">'.__('User has been successfully updated.').'</p>';
177}
178
179if (!empty($_GET['add'])) {
180          echo '<p class="message">'.__('User has been successfully created.').'</p>';
181}
182
183echo '<h2><a href="users.php">'.__('Users').'</a> &rsaquo; '.$page_title.'</h2>';
184
185if ($user_id == $core->auth->userID()) {
186     echo
187     '<p class="warning">'.__('Warning:').' '.
188     __('If you change your username, you will have to log in again.').'</p>';
189}
190
191echo
192'<form action="user.php" method="post" id="user-form">'.
193'<fieldset><legend>'.__('User information').'</legend>'.
194'<div class="two-cols">'.
195'<div class="col">'.
196'<p><label for="user_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Username:').' '.
197form::field('user_id',20,255,html::escapeHTML($user_id)).
198'</label></p>'.
199'<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p>'.
200
201'<p><label for="new_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
202($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').
203($user_id != '' ? __('New password:') : __('Password:')).' '.
204form::password('new_pwd',20,255).
205'</label></p>'.
206'<p class="form-note">'.__('Password must contain at least 6 characters.').'</p>'.
207
208'<p><label for="new_pwd_c" '.($user_id != '' ? '' : 'class="required"').'>'.
209($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Confirm password:').' '.
210form::password('new_pwd_c',20,255).
211'</label></p>'.
212
213'<p><label for="user_name">'.__('Last Name:').' '.
214form::field('user_name',20,255,html::escapeHTML($user_name)).
215'</label></p>'.
216
217'<p><label for="user_firstname">'.__('First Name:').' '.
218form::field('user_firstname',20,255,html::escapeHTML($user_firstname)).
219'</label></p>'.
220
221'<p><label for="user_displayname">'.__('Display name:').' '.
222form::field('user_displayname',20,255,html::escapeHTML($user_displayname)).
223'</label></p>'.
224
225'<p><label for="user_email">'.__('Email:').' '.
226form::field('user_email',20,255,html::escapeHTML($user_email)).
227'</label></p>'.
228'<p class="form-note">'.__('Mandatory for password recovering procedure.').'</p>'.
229'</div>'.
230
231'<div class="col">'.
232'<p><label for="user_url">'.__('URL:').' '.
233form::field('user_url',30,255,html::escapeHTML($user_url)).
234'</label></p>'.
235'<p><label for="user_post_format">'.__('Preferred format:').' '.
236form::combo('user_post_format',$formaters_combo,$user_options['post_format']).
237'</label></p>'.
238
239'<p><label for="user_post_status">'.__('Default entry status:').' '.
240form::combo('user_post_status',$status_combo,$user_post_status).
241'</label></p>'.
242
243'<p><label for="user_edit_size">'.__('Entry edit field height:').' '.
244form::field('user_edit_size',5,4,(integer) $user_options['edit_size']).
245'</label></p>'.
246
247'<p><label for="user_lang">'.__('User language:').' '.
248form::combo('user_lang',$lang_combo,$user_lang,'l10n').
249'</label></p>'.
250
251'<p><label for="user_tz">'.__('User timezone:').' '.
252form::combo('user_tz',dt::getZones(true,true),$user_tz).
253'</label></p>';
254
255if ($core->auth->allowPassChange()) {
256     echo
257     '<p><label for="user_change_pwd" class="classic">'.
258     form::checkbox('user_change_pwd','1',$user_change_pwd).' '.
259     __('Password change required to connect').'</label></p>';
260}
261
262$super_disabled = $user_super && $user_id == $core->auth->userID();
263
264echo
265'<p><label for="user_super" class="classic">'.form::checkbox('user_super','1',$user_super,'','',$super_disabled).' '.
266__('Super administrator').'</label></p>'.
267'</div>'.
268'</div>'.
269'</fieldset>';
270
271# --BEHAVIOR-- adminUserForm
272$core->callBehavior('adminUserForm',isset($rs) ? $rs : null);
273
274echo
275'<fieldset>'.
276'<p><label for="your_pwd" '.($user_id != '' ? '' : 'class="required"').'>'.
277($user_id != '' ? '' : '<abbr title="'.__('Required field').'">*</abbr> ').__('Your password:').
278form::password('your_pwd',20,255).'</label></p>'.
279'</fieldset>'.
280'<p class="clear"><input type="submit" accesskey="s" value="'.__('Save').'" />'.
281($user_id != '' ? form::hidden('id',$user_id) : '').
282$core->formNonce().
283'</p>'.
284
285'</form>';
286
287if ($user_id)
288{
289     echo '<fieldset class="clear"><legend>'.__('Permissions').'</legend>';
290     
291     $permissions = $core->getUserPermissions($user_id);
292     $perm_types = $core->auth->getPermissionsTypes();
293     
294     if (count($permissions) == 0)
295     {
296          echo '<p>'.__('No permissions.').'</p>';
297     }
298     else
299     {
300          foreach ($permissions as $k => $v)
301          {
302               if (count($v['p']) > 0)
303               {
304                    echo '<h4><a href="blog.php?id='.html::escapeHTML($k).'">'.
305                    html::escapeHTML($v['name']).'</a> ('.html::escapeHTML($k).') - '.
306                    '<a href="permissions.php?blog_id[]='.$k.'&amp;user_id[]='.$user_id.'">'
307                    .__('change permissions').'</a></h4>';
308                   
309                    echo '<ul>';
310                    foreach ($v['p'] as $p => $V) {
311                         if (isset($perm_types[$p])) {
312                              echo '<li>'.__($perm_types[$p]).'</li>';
313                         }
314                    }
315                    echo '</ul>';
316               }
317          }
318     }
319     
320     echo
321     '<p><a href="permissions_blog.php?user_id[]='.$user_id.'">'.
322     __('Add new permissions').'</a></p>'.
323     '</fieldset>';
324}
325
326dcPage::helpBlock('core_user');
327dcPage::close();
328?>
Note: See TracBrowser for help on using the repository browser.

Sites map