source: extensions/UserAdvManager/trunk/main.inc.php @ 12247

Last change on this file since 12247 was 12247, checked in by Eric, 13 years ago
  • Fix database upgrade error
  • Improve code documentation
  • Version 2.30.0 hard coded
  • Property svn:eol-style set to LF
File size: 5.8 KB
Line 
1<?php
2/*
3Plugin Name: UserAdvManager
4Version: 2.30.0
5Description: Renforcer la gestion des utilisateurs - Enforce users management
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=216
7Author: Nicco, Eric
8Author URI: http://gallery-nicco.no-ip.org, http://www.infernoweb.net
9*/
10
11/* History:  UAM_PATH.'Changelog.txt.php' */
12
13/*
14 ***** TODO List *****
15See project bugtracker: http://piwigo.org/bugs/my_view_page.php
16*/
17
18if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
19if (!defined('UAM_PATH')) define('UAM_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
20
21global $conf;
22
23include_once (UAM_PATH.'include/constants.php');
24include_once (UAM_PATH.'include/functions.inc.php');
25
26load_language('plugin.lang', UAM_PATH);
27$conf_UAM = unserialize($conf['UserAdvManager']);
28
29
30// Plugin administration panel
31add_event_handler('get_admin_plugin_menu_links', 'UAM_admin_menu');
32
33/* Lastvisit table feed for Ghost Tracker */
34add_event_handler('loc_begin_index', 'UAM_GhostTracker');
35
36// User creation
37add_event_handler('register_user', 'UAM_Adduser');
38
39// User deletion
40add_event_handler('delete_user', 'UAM_Deluser');
41
42// Check users registration
43add_event_handler('register_user_check', 'UAM_RegistrationCheck', EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
44
45if (script_basename() == 'profile')
46{
47  add_event_handler('loc_begin_profile', 'UAM_Profile_Init');
48}
49
50// Redirection to profile page
51add_event_handler('login_success', 'UAM_LoginTasks');
52
53// Adding customized text to lost password email
54add_event_handler('render_lost_password_mail_content', 'UAM_lost_password_mail_content');
55
56// *** Important ! This is necessary to make email exclusion work in admin's users management panel ***
57add_event_handler('init', 'UAM_InitPage');
58
59// PWG_Stuffs module
60if ((isset($conf_UAM[33]) and $conf_UAM[33] == 'true'))
61{
62  add_event_handler('get_stuffs_modules', 'register_UAM_stuffs_module');
63}
64
65// Add new feature in user_list - Password Reset
66if ((isset($conf_UAM[38]) and $conf_UAM[38] == 'true'))
67{
68  // add new column on user_list
69  add_event_handler('loc_visible_user_list', 'UAM_loc_visible_user_list');
70
71  //add prefilter on user_list
72  add_event_handler('loc_begin_admin', 'UAM_PwdReset_Action',60);
73 
74  function UAM_PwdReset_Action()
75  {
76    global $conf, $user, $template, $lang, $errors;
77
78    $page['errors'] = array();
79    $page['infos'] = array();
80    $page['filtered_users'] = array();
81
82    if (isset($_POST['pwdreset']))
83    {
84      $collection = array();
85
86      switch ($_POST['target'])
87      {
88        case 'all' :
89        {
90          foreach($page['filtered_users'] as $local_user)
91          {
92            array_push($collection, $local_user['id']);
93          }
94          break;
95        }
96        case 'selection' :
97        {
98          if (isset($_POST['selection']))
99          {
100            $collection = $_POST['selection'];
101          }
102          break;
103        }
104      }
105
106      if (count($collection) == 0)
107      {
108        array_push($page['errors'], l10n('Select at least one user'));
109      }
110    }
111
112    if (isset($_POST['pwdreset']) and count($collection) > 0)
113    {
114      if (in_array($conf['guest_id'], $collection))
115      {
116        array_push($page['errors'], l10n('UAM_Guest cannot be pwdreset'));
117        $template->append('errors', l10n('UAM_Guest cannot be pwdreset'));
118      }
119      if (($conf['guest_id'] != $conf['default_user_id']) and
120        in_array($conf['default_user_id'], $collection))
121      {
122        array_push($page['errors'], l10n('UAM_Default user cannot be pwgreset'));
123        $template->append('errors', l10n('UAM_Default user cannot be pwgreset'));
124      }
125      if (in_array($conf['webmaster_id'], $collection))
126      {
127        array_push($page['errors'], l10n('UAM_Webmaster cannot be pwdreset'));
128        $template->append('errors', l10n('UAM_Webmaster cannot be pwdreset'));
129      }
130      if (in_array($user['id'], $collection))
131      {
132        array_push($page['errors'], l10n('UAM_You cannot pwdreset your account'));
133        $template->append('errors', l10n('UAM_You cannot pwdreset your account'));
134      }
135
136      if (count($page['errors']) == 0)
137      { 
138        if (isset($_POST['confirm_pwdreset']) and 1 == $_POST['confirm_pwdreset'])
139        {
140          foreach ($collection as $user_id)
141          {
142            UAM_Set_PwdReset($user_id);
143          }
144          array_push(
145            $page['infos'],
146            l10n_dec(
147              'UAM %d user pwdreseted', 'UAM %d users pwdreseted',
148              count($collection)
149              )
150            );
151          $template->append('infos', l10n_dec(
152              'UAM %d user pwdreseted', 'UAM %d users pwdreseted',
153              count($collection)));
154          foreach ($page['filtered_users'] as $filter_key => $filter_user)
155          {
156            if (in_array($filter_user['id'], $collection))
157            {
158              unset($page['filtered_users'][$filter_key]);
159            }
160          }
161        }
162        else
163        {
164          array_push($page['errors'], l10n('UAM_You need to confirm pwdreset'));
165          $template->append('errors', l10n('UAM_You need to confirm pwdreset'));
166        }
167      }
168    } 
169    $template->set_prefilter('user_list', 'UAM_PwdReset_Prefilter');
170  }
171
172  function UAM_PwdReset_Prefilter($content, &$smarty)
173  {
174    $search = '
175<fieldset>
176  <legend>{\'Deletions\'|@translate}</legend>
177  <label><input type="checkbox" name="confirm_deletion" value="1"> {\'confirm\'|@translate}</label>
178  <input class="submit" type="submit" value="{\'Delete selected users\'|@translate}" name="delete">
179</fieldset>
180';
181 
182    $addon = '
183<fieldset>
184  <legend>{\'UAM_PwdReset\'|@translate}</legend>
185  <label><input type="checkbox" name="confirm_pwdreset" value="1"> {\'confirm\'|@translate}</label>
186  <input class="submit" type="submit" value="{\'UAM_Password reset selected users\'|@translate}" name="pwdreset">
187</fieldset>
188';
189
190    $replacement = $addon.$search;
191
192    return str_replace($search, $replacement, $content);
193  }
194}
195?>
Note: See TracBrowser for help on using the repository browser.