source: extensions/Register_FluxBB/trunk/main.inc.php @ 7154

Revision 6991, 8.0 KB checked in by Eric, 10 years ago (diff)
  • Compatibility with Adult_Content users enhanced
  • Version 2.3.4 hard coded
  • Property svn:eol-style set to LF
Line 
1<?php
2/*
3Plugin Name: Register FluxBB
4Version: 2.3.4
5Description: Link user registration from Piwigo to FluxBB forum (registration, password changing, deletion) - Original Nicco's NBC_LinkUser2PunBB plugin upgraded to Piwigo / Liez l'inscription des utilisateurs de Piwigo avec votre forum FluxBB - Portage du plugin NBC_LinkUser2PunBB de Nicco vers Piwigo
6Plugin URI: http://phpwebgallery.net/ext/extension_view.php?eid=252
7Author: Eric
8Author URI: http://www.infernoweb.net
9*/
10
11/*
12--------------------------------------------------------------------------------
13  Author     : Eric
14    email    : lucifer@infernoweb.net
15    website  : http://www.infernoweb.net
16    PWG user : http://forum.phpwebgallery.net/profile.php?id=1106
17--------------------------------------------------------------------------------
18
19:: HISTORY
20
212.0.0b          - 23/11/08  - Initial release. Basic changes to be available for Piwigo 2.0RC4
22
232.0.1b          - 24/11/08  - Small bug correction on submit button display
24
252.0.2                   - 19/02/09      - Language pack correction
26
272.1.0                   - 25/04/09  - Admin panel with tabsheets
28                      - Radio buttons functionnalities corrections (now radio buttons show the configuration saved in database)
29                      - Language files (fr - en) improvement
30
312.1.1                   - 30/04/09      - Bug fixed on profile update
32
332.1.2                   - 22/08/09      - Compatibility bug fixed when used with DynamicRecentPeriod plugin
34
352.1.3     - 16/11/09  - Using sha1 hash instead of md5 for password hashing in FluxBB
36                      - Escaping all characters in login names and be able to retreive them without slashes - FluxBB does not allow this so Piwigo's user names with escaped characters will not been escaped in FluxBB (ie : "it's" in Piwigo will be "It\'s" in FluxBB)
37                      - Code refactoring
38                      - Full HTML 4.0 for tpl
39
402.2.0     - 03/04/10  - Piwigo 2.1 compatibility
41                      - Adding css file
42                      - Templates refactory: Moved with css in a "template" subdirectory of admin directory, Moving icons in template directory, using css rules to improve important text display
43                      - functions_Register_FluxBB.inc.php renamed in functions.inc.php
44                      - Language files revision
45                      - Obsolete files management
46
472.2.1     - 04/04/10  - Bug 1577 fixed : Multiple database support
48
492.2.2     - 23/05/10  - Bug 1674 fixed : Adding of mods for Fluxbb when users loose their password
50                      - Adding of German language (Thx to duke)
51
522.2.3     - 23/05/10  - Bug 1674 re-fixed : Bad link fixed
53                      - Re-adding of German language that was missed at last release :-( (Thx to duke)
54
552.2.4     - 22/08/10  - Bug 1812 fixed : Compliance with FluxBB 1.4
56
572.3.0     - 28/08/10  - Bug 1434 fixed : Bridge between Register_FluxBB and UserAdvManager for new users validation
58
592.3.1     - 31/08/10  - Bug 1825 fixed : Password corruption after Piwigo's profile page visit
60
612.3.2     - 11/09/10  - Bug 1847 fixed : Admins and webmasters was not excluded from registration validation
62
632.3.3     - 13/09/10  - Bug 1853 fixed : Add of controls on plugin configuration settings to avoid some mistakes
64                      - Bug 1855 fixed : Improvement of use of UAM bridge (fixes php notices)
65                      - Several language files fix
66
672.3.4     - 22/09/10  - Compatibility with Plugin Adult_Content
68--------------------------------------------------------------------------------
69*/
70
71// pour faciliter le debug - make debug easier :o)
72//ini_set('error_reporting', E_ALL);
73//ini_set('display_errors', true);
74
75if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
76
77if (!defined('REGFLUXBB_DIR')) define('REGFLUXBB_DIR' , basename(dirname(__FILE__)));
78if (!defined('REGFLUXBB_PATH')) define('REGFLUXBB_PATH' , PHPWG_PLUGINS_PATH.basename(dirname(__FILE__)).'/');
79
80include_once (REGFLUXBB_PATH.'include/constants.php');
81include_once (REGFLUXBB_PATH.'include/functions.inc.php');
82
83
84/* plugin administration */
85add_event_handler('get_admin_plugin_menu_links', 'Register_FluxBB_admin_menu');
86
87function Register_FluxBB_admin_menu($menu)
88{
89  array_push($menu, array(
90    'NAME' => 'Register FluxBB',
91    'URL'  => get_admin_plugin_menu_link(REGFLUXBB_PATH.'admin/admin.php')));
92  return $menu;
93}
94
95
96/* user creation*/
97add_event_handler('register_user', 'Register_FluxBB_Adduser');
98
99function Register_FluxBB_Adduser($register_user)
100{
101  global $conf;
102       
103  // Exclusion of Adult_Content users
104  if ($register_user['username'] != "16" and $register_user['username'] != "18")
105  {
106    include_once (REGFLUXBB_PATH.'include/functions.inc.php');
107
108    // Warning : FluxBB uses Sha1 hash instead of md5 for Piwigo!
109    FluxBB_Adduser($register_user['id'], $register_user['username'], sha1($_POST['password']), $register_user['email']);
110  }
111}
112
113
114/* user deletion */
115add_event_handler('delete_user', 'Register_FluxBB_Deluser');
116
117function Register_FluxBB_Deluser($user_id)
118{
119  include_once (REGFLUXBB_PATH.'include/functions.inc.php');
120
121  FluxBB_Deluser( FluxBB_Searchuser($user_id), true );
122}
123
124
125/* Profile management */
126if (script_basename() == 'profile')
127{
128  add_event_handler('loc_begin_profile', 'Register_FluxBB_InitPage', EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
129
130  function Register_FluxBB_InitPage()
131  {
132    global $conf, $user;
133    include_once (REGFLUXBB_PATH.'include/functions.inc.php');
134   
135    if (isset($_POST['validate']) and !is_admin())
136    {
137    if (!empty($_POST['use_new_pwd']))
138      {
139      $query = '
140SELECT '.$conf['user_fields']['username'].' AS username
141FROM '.USERS_TABLE.'
142WHERE '.$conf['user_fields']['id'].' = \''.$user['id'].'\'
143;';
144
145      list($username) = pwg_db_fetch_row(pwg_query($query));
146
147      FluxBB_Updateuser($user['id'], stripslashes($username), sha1($_POST['use_new_pwd']), $_POST['mail_address']);
148      }
149    }
150  }
151}
152
153
154/* Access validation in FluxBB when validated in Piwigo through UAM plugin */
155add_event_handler('login_success', 'UAM_Bridge', EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
156
157function UAM_Bridge()
158{
159  global $conf, $user;
160 
161  $conf_Register_FluxBB = isset($conf['Register_FluxBB']) ? explode(";" , $conf['Register_FluxBB']) : array();
162 
163  // Check if UAM is installed and if bridge is set - Exception for admins and webmasters
164  $query ='
165SELECT user_id, status
166FROM '.USER_INFOS_TABLE.'
167WHERE user_id = '.$user['id'].'
168;';
169  $data = pwg_db_fetch_assoc(pwg_query($query));
170 
171  if ($data['status'] <> "admin" and $data['status'] <> "webmaster")
172  {
173    if (function_exists('FindAvailableConfirmMailID') and isset($conf_Register_FluxBB[6]) and $conf_Register_FluxBB[6] == 'true')
174    {
175      $conf_UAM = unserialize($conf['UserAdvManager']);
176   
177      // Getting unvalidated users group else Piwigo's default group
178      if (isset($conf_UAM[2]) and $conf_UAM[2] != '-1')
179      {
180        $Waitingroup = $conf_UAM[2];
181      }
182      else
183      {
184        $query = '
185SELECT id
186FROM '.GROUPS_TABLE.'
187WHERE is_default = "true"
188LIMIT 1
189;';
190        $data = pwg_db_fetch_assoc(pwg_query($query));
191        $Waitingroup = $data['id'];
192      }
193   
194      // check if logged in user is in a Piwigo's validated or unvalidated users group
195      $query = '
196SELECT *
197FROM '.USER_GROUP_TABLE.'
198WHERE user_id = '.$user['id'].'
199AND group_id = '.$Waitingroup.'
200;';
201      $count = pwg_db_num_rows(pwg_query($query));
202
203      // Check if logged in user is in a FluxBB's unvalidated group
204      $query = "
205SELECT group_id
206FROM ".FluxBB_USERS_TABLE."
207WHERE id = ".FluxBB_Searchuser($user['id'])."
208;";
209
210      $data = pwg_db_fetch_assoc(pwg_query($query));
211
212      // Logged in user switch to the default FluxBB's group if he'is validated
213      if ($count == 0 and $data['group_id'] = $conf_Register_FluxBB[7])
214      {
215        $query = "
216SELECT conf_value
217FROM ".FluxBB_CONFIG_TABLE."
218WHERE conf_name = 'o_default_user_group'
219;";
220
221        $o_default_user_group = pwg_db_fetch_assoc(pwg_query($query));
222     
223        $query = "
224UPDATE ".FluxBB_USERS_TABLE."
225SET group_id = ".$o_default_user_group['conf_value']."
226WHERE id = ".FluxBB_Searchuser($user['id'])."
227;";
228        pwg_query($query);
229      }
230    }
231  }
232}
233?>
Note: See TracBrowser for help on using the repository browser.