PageRenderTime 26ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/delete_users.php

http://github.com/MightyGorgon/icy_phoenix
PHP | 136 lines | 69 code | 21 blank | 46 comment | 14 complexity | 34317d0c145f67adee3b7054519fd88c MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /**
  3. *
  4. * @package Icy Phoenix
  5. * @version $Id$
  6. * @copyright (c) 2008 Icy Phoenix
  7. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8. *
  9. */
  10. /**
  11. *
  12. * @Extra credits for this file
  13. * Niels Chr. Rød (ncr@db9.dk) - (http://mods.db9.dk)
  14. *
  15. */
  16. /*
  17. #########################################################
  18. ## phpBB2 drop-in mod, that checks for unused accounts for X days use the script while logged in as ADMIN, add the days=X as a extra parameter
  19. ## e.g. delete_users.php?mode=not_login&days=10 will delete all accounts who have never logged in and are older than 10 days
  20. ##
  21. ## And zero postes
  22. ## e.g. delete_users.php?mode=zero_poster&days=10 will delete all accounts who have never posted and are older than 10 days
  23. ##
  24. ## You can also delete specific users
  25. ## e.g. delete_users.php?mode=user_name&del_user=Niels
  26. ## or delete_users.php?mode=user_id&del_user=18
  27. ## Will delete a specific user either by name or by id, remember that is is NOT case sensitive
  28. ## if the user have posted, then his/her posts will be converted to posted by guest, and the users
  29. ## name will still be shown
  30. ##
  31. #########################################################
  32. ## Added by Mighty Gorgon:
  33. ## Possibility to recall it directly from command line with progress status.
  34. ##
  35. ## First set this
  36. ## define('KILL_CONFIRM', true);
  37. ##
  38. ## Then recall this address
  39. ## delete_users.php?mode=prune_mg&users_number=50&days=360
  40. ##
  41. #########################################################
  42. */
  43. define('CTRACKER_DISABLED', true);
  44. // to enable email notification to the user, after deletion, enable this
  45. define('NOTIFY_USERS', true);
  46. // to disable confirmation when executing PRUNE_MG
  47. define('KILL_CONFIRM', false);
  48. define('IN_ICYPHOENIX', true);
  49. if (!defined('IP_ROOT_PATH')) define('IP_ROOT_PATH', './');
  50. if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
  51. include(IP_ROOT_PATH . 'common.' . PHP_EXT);
  52. include_once(IP_ROOT_PATH . 'includes/digest_constants.' . PHP_EXT);
  53. include_once(IP_ROOT_PATH . 'includes/functions_users_delete.' . PHP_EXT);
  54. include_once(IP_ROOT_PATH . 'includes/emailer.' . PHP_EXT);
  55. @set_time_limit(180);
  56. // Start session management
  57. $user->session_begin();
  58. $auth->acl($user->data);
  59. $user->setup();
  60. // End session management
  61. $sql = 'SELECT user_level FROM ' . USERS_TABLE . ' WHERE user_id="' . $user->data['user_id'] . '" LIMIT 1';
  62. $result = $db->sql_query($sql);
  63. $user_row = $db->sql_fetchrow($result);
  64. $db->sql_freeresult($result);
  65. if ($user_row['user_level'] != ADMIN)
  66. {
  67. message_die(GENERAL_ERROR, $lang['Not_Authorized']);
  68. }
  69. $del_user = request_var('del_user', 0);
  70. $del_user = ($del_user < 2) ? 0 : $del_user;
  71. $mode = request_var('mode', '');
  72. $days = request_var('days', 0);
  73. if ($mode == 'prune_mg')
  74. {
  75. $users_number = request_var('users_number', 0);
  76. $users_number = ($users_number == 0) ? '50' : $users_number;
  77. }
  78. if(isset($_POST['cancel']))
  79. {
  80. redirect(append_sid($_POST['ref_url'], true));
  81. }
  82. if(!isset($_POST['confirm']) && !KILL_CONFIRM)
  83. {
  84. $ref_url = explode('/', $_SERVER['HTTP_REFERER']);
  85. $s_hidden_fields = '';
  86. $s_hidden_fields .= '<input type="hidden" name="ref_url" value="' . htmlspecialchars($ref_url[sizeof($ref_url) - 1]) . '" />';
  87. $s_hidden_fields .= '<input type="hidden" name="del_user" value="' . $del_user . '" />';
  88. $s_hidden_fields .= '<input type="hidden" name="mode" value="' . $mode . '" />';
  89. $s_hidden_fields .= '<input type="hidden" name="days" value="' . $days . '" />';
  90. $template->assign_vars(array(
  91. 'MESSAGE_TITLE' => $lang['Confirm'],
  92. 'MESSAGE_TEXT' => $lang['Confirm_delete_user'],
  93. 'L_YES' => $lang['Yes'],
  94. 'L_NO' => $lang['No'],
  95. 'S_CONFIRM_ACTION' => append_sid('delete_users.' . PHP_EXT),
  96. 'S_HIDDEN_FIELDS' => $s_hidden_fields
  97. )
  98. );
  99. full_page_generation('confirm_body.tpl', $lang['Confirm'], '', '');
  100. }
  101. // Recall kill script!
  102. include(IP_ROOT_PATH . 'includes/users_delete_inc.' . PHP_EXT);
  103. $message = '<b>Mode</b>: [ <span class="topic_glo">' . $mode_des . '</span> ]<br />' . (($i) ? sprintf($lang['Prune_users_number'], $i) . $name_list : $lang['Prune_no_users']);
  104. if (($mode == 'prune_mg') && ($users_number == $i))
  105. {
  106. $redirect_url = append_sid('delete_users.' . PHP_EXT . '?mode=' . $mode . '&amp;users_number=' . $users_number . '&amp;days=' . $days);
  107. meta_refresh(3, $redirect_url);
  108. $message = '<span class="topic_glo">' . $lang['InProgress'] . '</span><br /><br />' . $message;
  109. }
  110. else
  111. {
  112. $message .= '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid(CMS_PAGE_FORUM) . '">', '</a>');
  113. }
  114. message_die(GENERAL_MESSAGE, $message);
  115. ?>