source: extensions/LCAS/trunk/admin/LCAS_admin.php @ 10270

Last change on this file since 10270 was 10270, checked in by LucMorizur, 13 years ago

Bug correction on user update

File size: 7.6 KB
Line 
1<?php
2
3global $user, $lang, $conf, $errors;
4
5if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
6// +-----------------------------------------------------------------------+
7// | Check Access and exit when user status is not ok                      |
8// +-----------------------------------------------------------------------+
9check_status(ACCESS_ADMINISTRATOR);
10
11if (!defined('LCAS_PATH')) define('LCAS_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
12if (!defined('LCAS_PATH_ABS')) define('LCAS_PATH_ABS' ,  dirname(__FILE__).'/');
13
14//ini_set('error_reporting', E_ALL);
15//ini_set('display_errors', true);
16
17include_once(PHPWG_ROOT_PATH.'include/constants.php');
18include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
19$my_base_url = get_admin_plugin_menu_link(__FILE__);
20
21load_language('plugin.lang', LCAS_PATH);
22load_language('help/plugin.lang', LCAS_PATH);
23
24$error = array();
25
26// +-----------------------------------------------------------------------+
27// |                      Getting plugin version                           |
28// +-----------------------------------------------------------------------+
29$plugin =  LCAS_PluginInfos(LCAS_PATH);
30$version = $plugin['version'];
31
32        if (isset($_POST['submit']) and isset($_POST['LCAS_Option']) and isset($_POST['LCAS_Mail']))
33  {
34
35/* General configuration settings */
36                $_POST['LCAS_MailText'] = str_replace('\"', '"', str_replace("\'", "'", str_replace("\\\\", "\\", $_POST['LCAS_MailText'])));
37   
38    $newconf_LCAS= array(
39      $_POST['LCAS_Option'],
40      $_POST['LCAS_Mail'],
41      $_POST['LCAS_MailText']);
42
43    $conf['LoginCaseAccentsSensitivity'] = serialize($newconf_LCAS);
44
45                $query = '
46                UPDATE '.CONFIG_TABLE.'
47                SET value="'.addslashes($conf['LoginCaseAccentsSensitivity']).'"
48                WHERE param="LoginCaseAccentsSensitivity"
49                LIMIT 1
50                ;';
51               
52                pwg_query($query);
53
54    array_push($page['infos'], l10n('LCAS_save_config'));
55  }
56
57        $conf_LCAS= unserialize($conf['LoginCaseAccentsSensitivity']);
58 
59  if (isset($conf_LCAS[0]))
60  {
61    $case_ins = ($conf_LCAS[0] == '1' or $conf_LCAS[0] == '3');
62    $acc_ins = ($conf_LCAS[0] == '2' or $conf_LCAS[0] == '3');
63
64    if ($case_ins or $acc_ins)
65    {
66
67// +-----------------------------------------------------------------------+
68// |                               user list                               |
69// +-----------------------------------------------------------------------+
70
71      $page['all_users'] = LCAS_get_user_list($conf_LCAS[0]);
72
73// +-----------------------------------------------------------------------+
74// |                           initialization                              |
75// +-----------------------------------------------------------------------+
76
77      $lcas_UserToUpdate = -1;
78      if ((isset($_POST['UserToUpdate'])) && ($_POST['UserToUpdate'] != -1)) {
79        $lcas_UserToUpdate = $_POST['UserToUpdate'];
80       
81        if ((isset($_POST['user-'.$lcas_UserToUpdate])) && ($_POST['user-'.$lcas_UserToUpdate] != '')) {
82
83          // Check if username already exists
84                $lcas_previous_compare_user = LCAS_change_case($_POST['user-'.$lcas_UserToUpdate], $conf_LCAS[0]);
85
86          $LCAS_users = array();
87
88          // This is a dirty request - Works fine for small number of users but could be unoptimized for large number of users
89          $query = '
90            SELECT '.$conf['user_fields']['username'].' AS username
91            FROM '.USERS_TABLE.';';
92         
93          $res = pwg_query($query);
94          while ($r = pwg_db_fetch_assoc($res))
95          {
96            $LCAS_users[$r['username']] = LCAS_change_case($r['username'], $conf_LCAS[0]);
97          }
98           
99          $users_found = array_keys($LCAS_users, $lcas_previous_compare_user);
100
101          if (count($users_found) < 1)
102          {
103            // Get old username before update - Usefull for user notification if is set
104            $query ='
105              SELECT username
106              FROM '.USERS_TABLE.'
107              WHERE id = '.$lcas_UserToUpdate.'
108            ;';
109
110            $data = pwg_db_fetch_assoc(pwg_query($query));
111 
112            // Username update
113            $query = '
114              UPDATE '.USERS_TABLE.'
115              SET username="'.addslashes($_POST['user-'.$lcas_UserToUpdate]).'"
116              WHERE id='.$lcas_UserToUpdate.'
117              LIMIT 1
118              ;';
119
120            pwg_query($query);
121
122            if (isset($conf_LCAS[1]) and $conf_LCAS[1] == 'true')
123            {
124              LCAS_SendMail($lcas_UserToUpdate, $data['username'], $_POST['user-'.$lcas_UserToUpdate]);
125            }
126
127            // Reloading conflict table content
128            $page['all_users'] = LCAS_get_user_list($conf_LCAS[0]);
129            array_push($page['infos'], l10n('LCAS_Info_userlist_username_renamed'));
130          }
131          else
132          {
133            // Username already exists
134            array_push($page['errors'], l10n('LCAS_Err_Userlist_New_Username_Exists').'<br>"'.$lcas_previous_compare_user.'"');
135          }
136        }
137        else {
138          // Username is empty
139          array_push($page['errors'], l10n('LCAS_Err_Userlist_Empty_New_Username'));
140        }
141      }
142
143// +-----------------------------------------------------------------------+
144// |                               user list                               |
145// +-----------------------------------------------------------------------+
146
147      $lcas_previous_compare_user = '';
148      $visible_user_list          = array();
149      foreach ($page['all_users'] as $local_user)
150      {
151        if ($lcas_previous_compare_user != $local_user['transformed']) {
152          $display = 'orange';
153          $lcas_previous_compare_user = $local_user['transformed'];
154        }
155        else {
156          $display = '';
157        }
158
159        $template->append(
160          'users',
161          array(
162            'ID'          => $local_user['id'],
163            'USERNAME'    => stripslashes($local_user['username']),
164            'COMPARE'     => stripslashes($local_user['transformed']),
165            'EMAIL'       => get_email_address_as_display_text($local_user['email']),
166            'DISPLAY'     => $display,
167          )
168        );
169      }
170     
171    }
172  }
173
174
175// +-----------------------------------------------------------------------+
176// |                           templates init                              |
177// +-----------------------------------------------------------------------+
178  $template->assign(
179    array(
180    'LCAS_VERSION'                  => $version,
181    'LCAS_PATH'                     => LCAS_PATH,
182    'PHPWG_VERSION'                 => PHPWG_VERSION,
183    'LCAS_PATH_ABS'                 => LCAS_PATH_ABS,
184                'LCAS_Option'                   => $conf_LCAS[0],
185                'LCAS_MAIL_TRUE'                => $conf_LCAS[1] == 'true'  ? 'checked = "checked"' : '' ,
186                'LCAS_MAIL_FALSE'               => $conf_LCAS[1] == 'false' ? 'checked = "checked"' : '' ,
187    'LCAS_MAILTEXT'                 => $conf_LCAS[2]
188    )
189  );
190
191
192// +-----------------------------------------------------------------------+
193// |                             errors display                            |
194// +-----------------------------------------------------------------------+
195  if (isset ($errors) and count($errors) != 0)
196  {
197          $template->assign('errors',array());
198          foreach ($errors as $error)
199          {
200                  array_push($page['errors'], $error);
201                }
202        } 
203
204// +-----------------------------------------------------------------------+
205// |                           templates display                           |
206// +-----------------------------------------------------------------------+
207  $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/global.tpl');
208  $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
209
210?>
Note: See TracBrowser for help on using the repository browser.