source: extensions/Register_FluxBB/include/functions.inc.php

Last change on this file was 22204, checked in by Eric, 11 years ago

Version 2.5.9:
Bug fixed : Adding accounts from FluxBB to Piwigo was not working
Rewrite plugin admin panel URL

  • Property svn:eol-style set to LF
File size: 26.1 KB
Line 
1<?php
2
3include_once (PHPWG_ROOT_PATH.'/include/constants.php');
4include_once (REGFLUXBB_PATH.'include/constants.php');
5
6
7/**
8 * Change user's password in FluxBB user table if a new password is set in Piwigo
9 * or an account synchronization was set
10 */
11function Register_FluxBB_InitProfile()
12{
13  global $template, $conf, $user;
14
15  if (Reg_FluxBB_PwdSynch($user['id']))
16  {
17    $template->append('errors', l10n('RegFluxBB_Password_Reset_Msg'));
18  }
19
20  if (isset($_POST['validate']))
21  {
22    if (!empty($_POST['use_new_pwd']))
23    {
24      $query = '
25SELECT '.$conf['user_fields']['username'].' AS username
26FROM '.USERS_TABLE.'
27WHERE '.$conf['user_fields']['id'].' = \''.$user['id'].'\'
28AND '.$conf['user_fields']['username'].' NOT IN ("18","16")
29;';
30
31      list($username) = pwg_db_fetch_row(pwg_query($query));
32      FluxBB_Updateuser($user['id'], stripslashes($username), sha1($_POST['use_new_pwd']), $_POST['mail_address']);
33    }
34  }
35}
36
37
38/**
39 * Triggered on login_success
40 *
41 * Redirect user to profile page and displays a message to make him change his password for synch with FluxBB
42 *
43 */
44function Register_FluxBB_Login()
45{
46  global $conf, $user;
47
48    if (Reg_FluxBB_PwdSynch($user['id']))
49    {
50      redirect(PHPWG_ROOT_PATH.'profile.php');
51    }
52}
53
54
55/**
56 * Checks special users exclusion before add new registered user in FluxBB user table
57 */
58function Register_FluxBB_Adduser($register_user)
59{
60  global $errors, $conf;
61
62  // Exclusion of Adult_Content users - //Todo: Compatibility with user_mass_register plugin
63  if ($register_user['username'] != "16" and $register_user['username'] != "18" /*and strpos(@$_GET['page'],'user_mass_register') === false*/)
64  {
65    FluxBB_Adduser($register_user['id'], $register_user['username'], sha1($_POST['password']), $register_user['email']);
66  }
67  /*elseif ($register_user['username'] != "16" and $register_user['username'] != "18" and strpos(@$_GET['page'],'user_mass_register') !== false)
68  {
69    //include_once(PHPWG_ROOT_PATH.'plugins/user_mass_register/admin.php');
70    //FluxBB_Adduser($register_user['id'],$login, $password, $email);
71  }*/
72}
73
74/**
75 * Delete registered user in FluxBB user table
76 */
77function Register_FluxBB_Deluser($user_id)
78{
79  FluxBB_Deluser(FluxBB_Searchuser($user_id), true);
80}
81
82
83/**
84 * Update FluxBB password if user uses "lost password"
85 */
86function Register_FluxBB_PasswReset()
87{
88  global $page, $user, $conf;
89
90  if (isset($_POST['submit']))
91  {
92    if ('reset' == $_GET['action'])
93    {
94      $user_id = check_password_reset_key($_GET['key']);
95
96      $query = '
97SELECT '.$conf['user_fields']['username'].' AS username, mail_address
98FROM '.USERS_TABLE.'
99WHERE '.$conf['user_fields']['id'].' = \''.$user_id.'\'
100AND '.$conf['user_fields']['username'].' NOT IN ("18","16")
101;';
102
103      list($username,$mail_address) = pwg_db_fetch_row(pwg_query($query));
104      FluxBB_Updateuser($user_id, stripslashes($username), sha1($_POST['use_new_pwd']), $mail_address);
105    }
106  }
107}
108
109/**
110 * Bridge with UAM confirmation option
111 */
112function UAM_Bridge()
113{
114  global $conf, $user;
115 
116  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
117 
118  // Check if UAM is installed and if bridge is set - Exception for admins and webmasters
119  $query ='
120SELECT user_id, status
121FROM '.USER_INFOS_TABLE.'
122WHERE user_id = '.$user['id'].'
123;';
124  $data = pwg_db_fetch_assoc(pwg_query($query));
125 
126  if ($data['status'] <> "admin" and $data['status'] <> "webmaster")
127  {
128    if (function_exists('FindAvailableConfirmMailID') and isset($conf_Register_FluxBB['FLUXBB_UAM_LINK']) and $conf_Register_FluxBB['FLUXBB_UAM_LINK'] == 'true')
129    {
130      $conf_UAM = unserialize($conf['UserAdvManager']);
131   
132      // Getting unvalidated users group else Piwigo's default group
133      if (isset($conf_UAM['NO_CONFIRM_GROUP']) and $conf_UAM['NO_CONFIRM_GROUP'] != '-1')
134      {
135        $Waitingroup = $conf_UAM['NO_CONFIRM_GROUP'];
136      }
137      else
138      {
139        $query = '
140SELECT id
141FROM '.GROUPS_TABLE.'
142WHERE is_default = "true"
143LIMIT 1
144;';
145        $data = pwg_db_fetch_assoc(pwg_query($query));
146        $Waitingroup = $data['id'];
147      }
148   
149      // check if logged in user is in a Piwigo's validated or unvalidated users group
150      $query = '
151SELECT *
152FROM '.USER_GROUP_TABLE.'
153WHERE user_id = '.$user['id'].'
154AND group_id = '.$Waitingroup.'
155;';
156      $count = pwg_db_num_rows(pwg_query($query));
157
158      // Check if logged in user is in a FluxBB's unvalidated group
159      $query = '
160SELECT group_id
161FROM '.FluxBB_USERS_TABLE.'
162WHERE id = '.FluxBB_Searchuser($user['id']).'
163;';
164
165      $data = pwg_db_fetch_assoc(pwg_query($query));
166
167      // Logged in user switch to the default FluxBB's group if he is validated
168      if ($count == 0 and $data['group_id'] = $conf_Register_FluxBB['FLUXBB_GROUP'])
169      {
170        $query = '
171SELECT conf_value
172FROM '.FluxBB_CONFIG_TABLE.'
173WHERE conf_name = "o_default_user_group"
174;';
175
176        $o_user_group = pwg_db_fetch_assoc(pwg_query($query));
177     
178        $query = '
179UPDATE '.FluxBB_USERS_TABLE.'
180SET group_id = '.$o_user_group['conf_value'].'
181WHERE id = '.FluxBB_Searchuser($user['id']).'
182;';
183        pwg_query($query);
184      }
185    }
186  }
187}
188
189/**
190 * Check the username accuracy in FluxBB users table
191 */
192function Register_FluxBB_RegistrationCheck($errors, $user)
193{
194  global $conf;
195 
196  // Because FluxBB is case insensitive on login name, we have to check if a similar login already exists in FluxBB's user table
197  // If "test" user already exists, "TEST" or "Test" (and so on...) can't register
198  $query = '
199SELECT username
200  FROM '.FluxBB_USERS_TABLE.'
201WHERE LOWER('.stripslashes('username').') = "'.strtolower($user['username']).'"
202;';
203
204  $count = pwg_db_num_rows(pwg_query($query));
205
206  if ($count > 0)
207  {
208    array_push($errors, l10n('this login is already used'));
209  }
210  return $errors; 
211}
212
213
214/**
215 * Users linking in a dedicated links table
216 */
217function FluxBB_Linkuser($pwg_id, $bb_id, $PwdSync)
218{
219  global $conf;
220
221  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
222
223  $query = '
224SELECT pwg.id as pwg_id, bb.id as bb_id
225FROM '.USERS_TABLE.' pwg, '.FluxBB_USERS_TABLE.' bb
226WHERE pwg.id = '.$pwg_id.'
227  AND bb.id = '.$bb_id.'
228  AND pwg.username = bb.username
229  AND pwg.username NOT IN ("18","16")
230;';
231
232  $data = pwg_db_fetch_row(pwg_query($query));
233
234  if (!empty($data) and !is_null($PwdSync))
235  {
236    $subquery = '
237DELETE FROM '.Register_FluxBB_ID_TABLE.'
238WHERE id_user_pwg = "'.$pwg_id.'"
239OR id_user_FluxBB = "'.$bb_id.'"
240;';
241
242    pwg_query($subquery);
243
244    $subquery = '
245INSERT INTO '.Register_FluxBB_ID_TABLE.'
246  (id_user_pwg, id_user_FluxBB, PwdSynch)
247VALUES ('.$pwg_id.', '.$bb_id.', "'.$PwdSync.'")
248;';
249
250    pwg_query($subquery);
251  }
252  else
253  {
254    $PwdSync = NULL;
255    $subquery = '
256DELETE FROM '.Register_FluxBB_ID_TABLE.'
257WHERE id_user_pwg = "'.$pwg_id.'"
258OR id_user_FluxBB = "'.$bb_id.'"
259;';
260
261    pwg_query($subquery);
262
263    $subquery = '
264INSERT INTO '.Register_FluxBB_ID_TABLE.'
265  (id_user_pwg, id_user_FluxBB, PwdSynch)
266VALUES ('.$pwg_id.', '.$bb_id.', "'.$PwdSync.'")
267;';
268
269    pwg_query($subquery);
270  }
271}
272
273
274/**
275 * Users unlinking in a dedicated links table (on user deletion)
276 */
277function FluxBB_Unlinkuser($bb_id)
278{
279  $query = '
280DELETE FROM '.Register_FluxBB_ID_TABLE.'
281WHERE id_user_FluxBB = '.$bb_id.'
282;';
283
284  pwg_query($query);
285}
286
287
288/**
289 * Add new registered user in fluxBB users table
290 * Called from Register_FluxBB_Adduser()
291 */
292function FluxBB_Adduser($pwg_id, $login, $password, $adresse_mail)
293{
294  global $errors, $conf;
295
296  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
297
298  $registred = time();
299  $registred_ip = $_SERVER['REMOTE_ADDR'];
300
301  // Set default FluxBB group - Check if UAM is installed and if bridge is set
302  if (function_exists('FindAvailableConfirmMailID') and isset($conf_Register_FluxBB['FLUXBB_UAM_LINK']) and $conf_Register_FluxBB['FLUXBB_UAM_LINK'] == 'true')
303  {
304    $o_default_user_group1 = $conf_Register_FluxBB['FLUXBB_GROUP'];
305  }
306  else
307  {
308    $query = '
309SELECT conf_value
310FROM '.FluxBB_CONFIG_TABLE.'
311WHERE conf_name = "o_default_user_group"
312;';
313
314    $o_default_user_group = pwg_db_fetch_assoc(pwg_query($query));
315  }
316
317// Check for timezone settings in FluxBB version 1.4.x or higher
318  $query1 = '
319SELECT conf_value
320FROM '.FluxBB_CONFIG_TABLE.'
321WHERE conf_name = "o_default_timezone"
322;';
323
324  $count1 = pwg_db_num_rows(pwg_query($query1));
325
326// Check for timezone settings in FluxBB version 1.2.x
327  $query2 = '
328SELECT conf_value
329FROM '.FluxBB_CONFIG_TABLE.'
330WHERE conf_name = "o_server_timezone"
331;';
332
333  $count2 = pwg_db_num_rows(pwg_query($query2));
334
335// Set timezone var according of FluxBB version
336  if ($count1 == 1 and $count2 == 0)
337  {
338    $o_default_timezone = pwg_db_fetch_assoc(pwg_query($query1));
339  }
340  else if ($count1 == 0 and $count2 == 1)
341  {
342    $o_default_timezone = pwg_db_fetch_assoc(pwg_query($query2));
343  }
344
345// Get FluxBB default language
346  $query = '
347SELECT conf_value
348FROM '.FluxBB_CONFIG_TABLE.'
349WHERE conf_name = "o_default_lang"
350;';
351
352  $o_default_lang = pwg_db_fetch_assoc(pwg_query($query));
353
354// Get FluxBB default style
355  $query = '
356SELECT conf_value
357FROM '.FluxBB_CONFIG_TABLE.'
358WHERE conf_name = "o_default_style"
359;';
360
361  $o_default_style = pwg_db_fetch_assoc(pwg_query($query));
362
363  // Add user - Check if UAM is installed and if bridge is set
364  if (function_exists('FindAvailableConfirmMailID') and isset($conf_Register_FluxBB['FLUXBB_UAM_LINK']) and $conf_Register_FluxBB['FLUXBB_UAM_LINK'] == 'true')
365  {
366    $query = "
367INSERT INTO ".FluxBB_USERS_TABLE." (
368  username,
369  ". ( isset($o_default_user_group1) ? 'group_id' : '' ) .",
370  password,
371  email,
372  ". ( isset($o_default_timezone['conf_value']) ? 'timezone' : '' ) .",
373  ". ( isset($o_default_lang['conf_value']) ? 'language' : '' ) .",
374  ". ( isset($o_default_style['conf_value']) ? 'style' : '' ) .",
375  registered,
376  registration_ip,
377  last_visit
378  )
379VALUES(
380  '".pwg_db_real_escape_string($login)."',
381  ". ( isset($o_default_user_group1) ? "'".$o_default_user_group1."'" : '' ) .",
382  '".$password."',
383        '".$adresse_mail."',
384  ". ( isset($o_default_timezone['conf_value']) ? "'".$o_default_timezone['conf_value']."'" : '' ) .",
385  ". ( isset($o_default_lang['conf_value']) ? "'".$o_default_lang['conf_value']."'" : '' ) .",
386  ". ( isset($o_default_style['conf_value']) ? "'".$o_default_style['conf_value']."'" : '' ) .",
387  '".$registred."',
388  '".$registred_ip."',
389  '".$registred."'
390  );";
391 
392    pwg_query($query);
393  }
394  else
395  {
396    $query = "
397INSERT INTO ".FluxBB_USERS_TABLE." (
398  username,
399  ". ( isset($o_default_user_group['conf_value']) ? 'group_id' : '' ) .",
400  password,
401  email,
402  ". ( isset($o_default_timezone['conf_value']) ? 'timezone' : '' ) .",
403  ". ( isset($o_default_lang['conf_value']) ? 'language' : '' ) .",
404  ". ( isset($o_default_style['conf_value']) ? 'style' : '' ) .",
405  registered,
406  registration_ip,
407  last_visit
408  )
409VALUES(
410  '".pwg_db_real_escape_string($login)."',
411  ". ( isset($o_default_user_group['conf_value']) ? "'".$o_default_user_group['conf_value']."'" : '' ) .",
412  '".$password."',
413        '".$adresse_mail."',
414  ". ( isset($o_default_timezone['conf_value']) ? "'".$o_default_timezone['conf_value']."'" : '' ) .",
415  ". ( isset($o_default_lang['conf_value']) ? "'".$o_default_lang['conf_value']."'" : '' ) .",
416  ". ( isset($o_default_style['conf_value']) ? "'".$o_default_style['conf_value']."'" : '' ) .",
417  '".$registred."',
418  '".$registred_ip."',
419  '".$registred."'
420  )
421;";
422    pwg_query($query);
423  }
424
425  $bb_id = pwg_db_insert_id();
426
427  FluxBB_Linkuser($pwg_id, $bb_id, "OK");
428}
429
430
431/**
432 * Update user information in FluxBB users table
433 */
434function FluxBB_Updateuser($pwg_id, $username, $password, $adresse_mail)
435{
436  global $conf;
437 
438  include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
439  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
440
441// Select users to update in ID link table
442  $query = '
443SELECT id_user_FluxBB as FluxBB_id
444FROM '.Register_FluxBB_ID_TABLE.'
445WHERE id_user_pwg = '.$pwg_id.'
446;';
447
448  $row = pwg_db_fetch_assoc(pwg_query($query));
449
450  if (!empty($row))
451  {
452    $query = '
453UPDATE '.FluxBB_USERS_TABLE.'
454SET username = "'.pwg_db_real_escape_string($username).'", email = "'.$adresse_mail.'", password = "'.$password.'"
455WHERE id = '.$row['FluxBB_id'].'
456AND "'.pwg_db_real_escape_string($username).'" NOT IN ("18","16")
457;';
458
459    pwg_query($query);
460
461    FluxBB_Linkuser($pwg_id, $row['FluxBB_id'], "OK");
462  }
463  else
464  {
465    $query = '
466SELECT id as FluxBB_id
467FROM '.FluxBB_USERS_TABLE.'
468WHERE BINARY username = BINARY "'.pwg_db_real_escape_string($username).'"
469;';
470
471    $row = pwg_db_fetch_assoc(pwg_query($query));
472
473    if (!empty($row))
474    {
475      $query = '
476UPDATE '.FluxBB_USERS_TABLE.'
477SET username = "'.pwg_db_real_escape_string($username).'", email = "'.$adresse_mail.'", password = "'.$password.'"
478WHERE id = '.$row['FluxBB_id'].'
479AND "'.pwg_db_real_escape_string($username).'" NOT IN ("18","16")
480;';
481
482      pwg_query($query);
483
484      FluxBB_Linkuser($pwg_id, $row['FluxBB_id'], "OK");
485    }
486  }
487}
488
489
490/**
491 * Add new registered user in fluxBB users table from audit/synch action
492 * Standard FluxBB_Adduser() function is not used because of existing password mismatch
493 * To solve password synch problem, passwords are reset to NULL to force users to get a new password on their profile page
494 */
495function Synch_FluxBB_Adduser($pwg_id, $login, $adresse_mail)
496{
497  global $errors, $conf;
498
499  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
500
501  $registred = time();
502  $registred_ip = $_SERVER['REMOTE_ADDR'];
503  $password = NULL;
504
505  // Set default FluxBB group - Check if UAM is installed and if bridge is set
506  if (function_exists('FindAvailableConfirmMailID') and isset($conf_Register_FluxBB['FLUXBB_UAM_LINK']) and $conf_Register_FluxBB['FLUXBB_UAM_LINK'] == 'true')
507  {
508    $o_default_user_group1 = $conf_Register_FluxBB['FLUXBB_GROUP'];
509  }
510  else
511  {
512    $query = '
513SELECT conf_value
514FROM '.FluxBB_CONFIG_TABLE.'
515WHERE conf_name = "o_default_user_group"
516;';
517
518    $o_default_user_group = pwg_db_fetch_assoc(pwg_query($query));
519  }
520
521// Check for timezone settings in FluxBB version 1.4.x or higher
522  $query1 = '
523SELECT conf_value
524FROM '.FluxBB_CONFIG_TABLE.'
525WHERE conf_name = "o_default_timezone"
526;';
527
528  $count1 = pwg_db_num_rows(pwg_query($query1));
529
530// Check for timezone settings in FluxBB version 1.2.x
531  $query2 = '
532SELECT conf_value
533FROM '.FluxBB_CONFIG_TABLE.'
534WHERE conf_name = "o_server_timezone"
535;';
536
537  $count2 = pwg_db_num_rows(pwg_query($query2));
538
539// Set timezone var according of FluxBB version
540  if ($count1 == 1 and $count2 == 0)
541  {
542    $o_default_timezone = pwg_db_fetch_assoc(pwg_query($query1));
543  }
544  else if ($count1 == 0 and $count2 == 1)
545  {
546    $o_default_timezone = pwg_db_fetch_assoc(pwg_query($query2));
547  }
548
549// Get FluxBB default language
550  $query = '
551SELECT conf_value
552FROM '.FluxBB_CONFIG_TABLE.'
553WHERE conf_name = "o_default_lang"
554;';
555
556  $o_default_lang = pwg_db_fetch_assoc(pwg_query($query));
557
558// Get FluxBB default style
559  $query = '
560SELECT conf_value
561FROM '.FluxBB_CONFIG_TABLE.'
562WHERE conf_name = "o_default_style"
563;';
564
565  $o_default_style = pwg_db_fetch_assoc(pwg_query($query));
566
567  // Add user - Check if UAM is installed and if bridge is set
568  if (function_exists('FindAvailableConfirmMailID') and isset($conf_Register_FluxBB['FLUXBB_UAM_LINK']) and $conf_Register_FluxBB['FLUXBB_UAM_LINK'] == 'true')
569  {
570    $query = "
571INSERT INTO ".FluxBB_USERS_TABLE." (
572  username,
573  ". ( isset($o_default_user_group1) ? 'group_id' : '' ) .",
574  password,
575  email,
576  ". ( isset($o_default_timezone['conf_value']) ? 'timezone' : '' ) .",
577  ". ( isset($o_default_lang['conf_value']) ? 'language' : '' ) .",
578  ". ( isset($o_default_style['conf_value']) ? 'style' : '' ) .",
579  registered,
580  registration_ip,
581  last_visit
582  )
583VALUES(
584  '".pwg_db_real_escape_string($login)."',
585  ". ( isset($o_default_user_group1) ? "'".$o_default_user_group1."'" : '' ) .",
586  '".$password."',
587        '".$adresse_mail."',
588  ". ( isset($o_default_timezone['conf_value']) ? "'".$o_default_timezone['conf_value']."'" : '' ) .",
589  ". ( isset($o_default_lang['conf_value']) ? "'".$o_default_lang['conf_value']."'" : '' ) .",
590  ". ( isset($o_default_style['conf_value']) ? "'".$o_default_style['conf_value']."'" : '' ) .",
591  '".$registred."',
592  '".$registred_ip."',
593  '".$registred."'
594  );";
595 
596    pwg_query($query);
597  }
598  else
599  {
600    $query = "
601INSERT INTO ".FluxBB_USERS_TABLE." (
602  username,
603  ". ( isset($o_default_user_group['conf_value']) ? 'group_id' : '' ) .",
604  password,
605  email,
606  ". ( isset($o_default_timezone['conf_value']) ? 'timezone' : '' ) .",
607  ". ( isset($o_default_lang['conf_value']) ? 'language' : '' ) .",
608  ". ( isset($o_default_style['conf_value']) ? 'style' : '' ) .",
609  registered,
610  registration_ip,
611  last_visit
612  )
613VALUES(
614  '".pwg_db_real_escape_string($login)."',
615  ". ( isset($o_default_user_group['conf_value']) ? "'".$o_default_user_group['conf_value']."'" : '' ) .",
616  '".$password."',
617        '".$adresse_mail."',
618  ". ( isset($o_default_timezone['conf_value']) ? "'".$o_default_timezone['conf_value']."'" : '' ) .",
619  ". ( isset($o_default_lang['conf_value']) ? "'".$o_default_lang['conf_value']."'" : '' ) .",
620  ". ( isset($o_default_style['conf_value']) ? "'".$o_default_style['conf_value']."'" : '' ) .",
621  '".$registred."',
622  '".$registred_ip."',
623  '".$registred."'
624  )
625;";
626    pwg_query($query);
627  }
628
629  $bb_id = pwg_db_insert_id();
630
631  FluxBB_Linkuser($pwg_id, $bb_id, "NOK");
632}
633
634
635/**
636 * Add new registered user in Piwigo users table from audit/synch action
637 * To solve password synch problem, passwords are reset to NULL to force users to get a new password on their profile page
638 *
639 * Based on user_mass_register plugin (thx to plg!)
640 *
641 * @return : $errors
642 */
643function Synch_Piwigo_Adduser($fluxbb_id, $username, $password, $email)
644{
645  global $conf;
646  load_language('plugin.lang', REGFLUXBB_PATH);
647
648    $errors = register_user($username, $password, $email, false);
649
650    if (empty($errors))
651    {
652      include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php');
653
654      $keyargs_content = array(
655        get_l10n_args('Hello %s,', $username),
656        get_l10n_args('To synchronize your forum access with the gallery you have been registered at %s!', $conf['gallery_title']),
657        get_l10n_args('', ''),
658        get_l10n_args('Here are your connection settings', ''),
659        get_l10n_args('Username: %s', $username),
660        get_l10n_args('Password: %s', $password),
661        get_l10n_args('Email: %s', $email),
662        get_l10n_args('', ''),
663        get_l10n_args('Please change your password at your first connexion on the gallery', ''),
664        get_l10n_args('', ''),
665        get_l10n_args('If you think you\'ve received this email in error, please contact us at %s', get_webmaster_mail_address()),
666      );
667
668      pwg_mail(
669        $email,
670        array(
671          'subject' => '['.$conf['gallery_title'].'] '.l10n('Registration'),
672          'content' => l10n_args($keyargs_content),
673          'content_format' => 'text/plain',
674          )
675      );
676
677      $pwg_id = get_userid($username);
678
679      FluxBB_Linkuser($pwg_id, $fluxbb_id, "NOK");
680    }
681
682  return $errors;
683}
684
685
686/**
687 * Update user information in FluxBB users table from audit/synch action
688 * Standard FluxBB_Updateuser() function is not used because of existing password mismatch
689 * To solve password synch problem, passwords are reset to NULL to force users to get a new password by using "forgotten password" function
690 */
691function Synch_FluxBB_Updateuser($pwg_id, $username, $adresse_mail)
692{
693  global $conf;
694 
695  include_once( PHPWG_ROOT_PATH.'include/common.inc.php' );
696  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
697  $password = NULL;
698
699// Select users to update in ID link table
700  $query = '
701SELECT id_user_FluxBB as FluxBB_id
702FROM '.Register_FluxBB_ID_TABLE.'
703WHERE id_user_pwg = '.$pwg_id.'
704;';
705
706  $row = pwg_db_fetch_assoc(pwg_query($query));
707
708  if (!empty($row))
709  {
710    $query = '
711UPDATE '.FluxBB_USERS_TABLE.'
712SET username = "'.pwg_db_real_escape_string($username).'", email = "'.$adresse_mail.'", password = "'.$password.'"
713WHERE id = '.$row['FluxBB_id'].'
714AND "'.pwg_db_real_escape_string($username).'" NOT IN ("18","16")
715AND "'.pwg_db_real_escape_string($username).'" <> "'.stripslashes($conf_Register_FluxBB['FLUXBB_ADMIN']).'"
716;';
717
718    pwg_query($query);
719
720    FluxBB_Linkuser($pwg_id, $row['FluxBB_id'], "NOK");
721  }
722  else
723  {
724    $query = '
725SELECT id as FluxBB_id
726FROM '.FluxBB_USERS_TABLE.'
727WHERE BINARY username = BINARY "'.pwg_db_real_escape_string($username).'"
728AND "'.pwg_db_real_escape_string($username).'" <> "'.stripslashes($conf_Register_FluxBB['FLUXBB_ADMIN']).'"
729;';
730
731    $row = pwg_db_fetch_assoc(pwg_query($query));
732
733    if (!empty($row))
734    {
735      $query = '
736UPDATE '.FluxBB_USERS_TABLE.'
737SET username = "'.pwg_db_real_escape_string($username).'", email = "'.$adresse_mail.'", password = "'.$password.'"
738WHERE id = '.$row['FluxBB_id'].'
739AND "'.pwg_db_real_escape_string($username).'" NOT IN ("18","16")
740AND "'.pwg_db_real_escape_string($username).'" <> "'.stripslashes($conf_Register_FluxBB['FLUXBB_ADMIN']).'"
741;';
742
743      pwg_query($query);
744
745      FluxBB_Linkuser($pwg_id, $row['FluxBB_id'], "NOK");
746    }
747  }
748}
749
750
751/**
752 * Reg_FluxBB_PwdSynch
753 * Checks if a password needs to be resynch between Piwigo and FluxBB
754 *
755 * @uid        : the user id
756 *
757 * @returns    : true if the password is NOT synchronized (NOK) else false
758 *
759 */
760function Reg_FluxBB_PwdSynch($uid)
761{
762  $query = '
763SELECT PwdSynch
764FROM '.Register_FluxBB_ID_TABLE.'
765WHERE id_user_pwg='.$uid.'
766;';
767
768  $result = pwg_db_fetch_assoc(pwg_query($query));
769
770  if($result['PwdSynch'] == "NOK" or is_null($result['PwdSynch']))
771  {
772    return true;
773  }
774  else return false; 
775}
776
777
778/**
779 * Search linked users
780 */
781function FluxBB_Searchuser($id_user_pwg)
782{
783  $query = '
784SELECT id_user_FluxBB, id_user_pwg
785FROM '.Register_FluxBB_ID_TABLE.'
786WHERE id_user_pwg = '.$id_user_pwg.'
787LIMIT 1
788;';
789
790  $data = pwg_db_fetch_assoc(pwg_query($query));
791 
792  if (!empty($data))
793    return $data['id_user_FluxBB'];
794  else
795    return '0'; 
796}
797
798
799/**
800 * Delete user from FluxBB users table
801 * Called from Register_FluxBB_Deluser()
802 */
803function FluxBB_Deluser($id_user_FluxBB, $SuppTopicsPosts)
804{
805  global $conf;
806
807  $conf_Register_FluxBB = unserialize($conf['Register_FluxBB']);
808
809  $query0 = '
810SELECT username, id
811FROM '.FluxBB_USERS_TABLE.'
812WHERE id = '.$id_user_FluxBB.'
813LIMIT 1
814;';
815
816  $data0 = pwg_db_fetch_assoc(pwg_query($query0));
817
818  // If True, delete related topics and posts
819  if ($SuppTopicsPosts and $conf_Register_FluxBB['FLUXBB_DEL_PT'])
820  {
821    // Delete posts and topics of this user
822    $subquery = '
823DELETE FROM '.FluxBB_POSTS_TABLE.'
824WHERE poster_id = '.$id_user_FluxBB.'
825;';
826
827    $subresult = pwg_query($subquery);
828
829    // Delete topics of this user
830    $subquery = '
831DELETE FROM '.FluxBB_TOPICS_TABLE.'
832WHERE BINARY poster = BINARY "'.pwg_db_real_escape_string($data0['username']).'"
833;';
834
835    $subresult = pwg_query($subquery);
836  }
837
838  // Delete user's subscriptions
839  $subquery = '
840DELETE FROM '.FluxBB_SUBSCRIPTIONS_TABLE.'
841WHERE user_id = '.$id_user_FluxBB.'
842;';
843
844  $subresult = pwg_query($subquery);
845 
846  // Delete user's account
847  $subquery = '
848DELETE FROM '.FluxBB_USERS_TABLE.'
849WHERE id = '.$id_user_FluxBB.'
850;';
851
852  $subresult = pwg_query($subquery);
853
854  FluxBB_Unlinkuser($id_user_FluxBB);
855}
856
857
858/**
859 * Get plugin information
860 */
861function RegFluxBB_Infos($dir)
862{
863  $path = $dir;
864
865  $plg_data = implode( '', file($path.'main.inc.php') );
866  if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) )
867  {
868    $plugin['name'] = trim( $val[1] );
869  }
870  if (preg_match("|Version: (.*)|", $plg_data, $val))
871  {
872    $plugin['version'] = trim($val[1]);
873  }
874  if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) )
875  {
876    $plugin['uri'] = trim($val[1]);
877  }
878  if ($desc = load_language('description.txt', $path.'/', array('return' => true)))
879  {
880    $plugin['description'] = trim($desc);
881  }
882  elseif ( preg_match("|Description: (.*)|", $plg_data, $val) )
883  {
884    $plugin['description'] = trim($val[1]);
885  }
886  if ( preg_match("|Author: (.*)|", $plg_data, $val) )
887  {
888    $plugin['author'] = trim($val[1]);
889  }
890  if ( preg_match("|Author URI: (.*)|", $plg_data, $val) )
891  {
892    $plugin['author uri'] = trim($val[1]);
893  }
894  if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid='))
895  {
896    list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']);
897    if (is_numeric($extension)) $plugin['extension'] = $extension;
898  }
899// IMPORTANT SECURITY !
900  $plugin = array_map('htmlspecialchars', $plugin);
901
902  return $plugin ;
903}
904
905
906/**
907 * Delete obsolete files at plugin update
908 */
909function regfluxbb_obsolete_files()
910{
911  if (file_exists(REGFLUXBB_PATH.'obsolete.list')
912    and $old_files = file(REGFLUXBB_PATH.'obsolete.list', FILE_IGNORE_NEW_LINES)
913    and !empty($old_files))
914  {
915    array_push($old_files, 'obsolete.list');
916    foreach($old_files as $old_file)
917    {
918      $path = REGFLUXBB_PATH.$old_file;
919      if (is_file($path))
920      {
921        @unlink($path);
922      }
923    }
924  }
925}
926
927
928/**
929 * Function to update plugin version number in config table
930 * Used everytime a new version is updated even if no database
931 * upgrade is needed
932 */
933function RegFluxBB_version_update()
934{
935  global $conf;
936
937  // Get current plugin version
938  // --------------------------
939  $plugin =  RegFluxBB_Infos(REGFLUXBB_PATH);
940  $version = $plugin['version'];
941
942  // Upgrading options
943  // -----------------
944  $query = '
945SELECT value
946FROM '.CONFIG_TABLE.'
947WHERE param = "Register_FluxBB"
948;';
949
950  $result = pwg_query($query);
951  $Conf_RegFluxBB = pwg_db_fetch_assoc($result);
952
953  $Newconf_RegFluxBB = unserialize($Conf_RegFluxBB['value']);
954
955  $Newconf_RegFluxBB['REGFLUXBB_VERSION'] = $version;
956
957  $update_conf = serialize($Newconf_RegFluxBB);
958
959  conf_update_param('Register_FluxBB', pwg_db_real_escape_string($update_conf));
960
961
962// Check #_plugin table consistency
963// Only useful if a previous version upgrade has not worked correctly (rare case)
964// ------------------------------------------------------------------------------
965  $query = '
966SELECT version
967  FROM '.PLUGINS_TABLE.'
968WHERE id = "Register_FluxBB"
969;';
970 
971  $data = pwg_db_fetch_assoc(pwg_query($query));
972 
973  if (empty($data['version']) or $data['version'] <> $version)
974  {
975    $query = '
976UPDATE '.PLUGINS_TABLE.'
977SET version="'.$version.'"
978WHERE id = "Register_FluxBB"
979LIMIT 1
980;';
981
982    pwg_query($query);
983  }
984}
985
986
987/**
988 * Useful for debugging - 4 vars can be set
989 * Output result to log.txt file
990 *
991 */
992function RegFluxBBLog($var1, $var2, $var3, $var4)
993{
994   $fo=fopen (REGFLUXBB_PATH.'log.txt','a') ;
995   fwrite($fo,"======================\n") ;
996   fwrite($fo,'le ' . date('D, d M Y H:i:s') . "\r\n");
997   fwrite($fo,$var1 ."\r\n") ;
998   fwrite($fo,$var2 ."\r\n") ;
999   fwrite($fo,$var3 ."\r\n") ;
1000   fwrite($fo,$var4 ."\r\n") ;
1001   fclose($fo) ;
1002}
1003?>
Note: See TracBrowser for help on using the repository browser.