diff options
Diffstat (limited to 'phpBB/develop/add_permissions.php')
-rw-r--r-- | phpBB/develop/add_permissions.php | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/phpBB/develop/add_permissions.php b/phpBB/develop/add_permissions.php deleted file mode 100644 index 40ece4000d..0000000000 --- a/phpBB/develop/add_permissions.php +++ /dev/null @@ -1,396 +0,0 @@ -<?php -// ------------------------------------------------------------- -// -// $Id$ -// -// FILENAME : add_permissions.php -// STARTED : Sat Nov 06, 2004 -// COPYRIGHT : © 2004 phpBB Group -// WWW : http://www.phpbb.com/ -// LICENCE : GPL vs2.0 [ see /docs/COPYING ] -// -// ------------------------------------------------------------- - -// -// Security message: -// -// This script is potentially dangerous. -// Remove or comment the next line (die(".... ) to enable this script. -// Do NOT FORGET to either remove this script or disable it after you have used it. -// -die("Please read the first lines of this script for instructions on how to enable it"); - -define('IN_PHPBB', 1); -define('PHPBB_ROOT_PATH', './../'); -define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1)); -require(PHPBB_ROOT_PATH . 'common.' . PHP_EXT); - -// auth => is_local, is_global -$f_permissions = array( - 'f_' => array(1, 0), - 'f_list' => array(1, 0), - 'f_read' => array(1, 0), - 'f_post' => array(1, 0), - 'f_reply' => array(1, 0), - 'f_edit' => array(1, 0), - 'f_user_lock' => array(1, 0), - 'f_delete' => array(1, 0), - 'f_bump' => array(1, 0), - 'f_poll' => array(1, 0), - 'f_vote' => array(1, 0), - 'f_votechg' => array(1, 0), - 'f_announce'=> array(1, 0), - 'f_sticky' => array(1, 0), - 'f_attach' => array(1, 0), - 'f_download'=> array(1, 0), - 'f_icons' => array(1, 0), - 'f_bbcode' => array(1, 0), - 'f_smilies' => array(1, 0), - 'f_img' => array(1, 0), - 'f_flash' => array(1, 0), - 'f_sigs' => array(1, 0), - 'f_search' => array(1, 0), - 'f_email' => array(1, 0), - 'f_print' => array(1, 0), - 'f_ignoreflood' => array(1, 0), - 'f_postcount' => array(1, 0), - 'f_noapprove'=> array(1, 0), - 'f_report' => array(1, 0), - 'f_subscribe' => array(1, 0), -); - -$m_permissions = array( - 'm_' => array(1, 1), - 'm_edit' => array(1, 1), - 'm_delete' => array(1, 1), - 'm_move' => array(1, 1), - 'm_lock' => array(1, 1), - 'm_split' => array(1, 1), - 'm_merge' => array(1, 1), - 'm_approve' => array(1, 1), - 'm_unrate' => array(1, 1), - 'm_auth' => array(1, 1), - 'm_ip' => array(1, 1), - 'm_info' => array(1, 1), -); - -$a_permissions = array( - 'a_' => array(0, 1), - 'a_server' => array(0, 1), - 'a_board' => array(0, 1), - 'a_clearlogs' => array(0, 1), - 'a_words' => array(0, 1), - 'a_icons' => array(0, 1), - 'a_bbcode' => array(0, 1), - 'a_attach' => array(0, 1), - 'a_email' => array(0, 1), - 'a_styles' => array(0, 1), - 'a_user' => array(0, 1), - 'a_useradd' => array(0, 1), - 'a_userdel' => array(0, 1), - 'a_ranks' => array(0, 1), - 'a_ban' => array(0, 1), - 'a_names' => array(0, 1), - 'a_group' => array(0, 1), - 'a_groupadd'=> array(0, 1), - 'a_groupdel'=> array(0, 1), - 'a_forum' => array(0, 1), - 'a_forumadd'=> array(0, 1), - 'a_forumdel'=> array(0, 1), - 'a_prune' => array(0, 1), - 'a_auth' => array(0, 1), - 'a_authmods'=> array(0, 1), - 'a_authadmins' => array(0, 1), - 'a_authusers' => array(0, 1), - 'a_authgroups' => array(0, 1), - 'a_authdeps'=> array(0, 1), - 'a_backup' => array(0, 1), - 'a_restore' => array(0, 1), - 'a_search' => array(0, 1), - 'a_events' => array(0, 1), - 'a_cron' => array(0, 1), -); - -$u_permissions = array( - 'u_' => array(0, 1), - 'u_sendemail' => array(0, 1), - 'u_readpm' => array(0, 1), - 'u_sendpm' => array(0, 1), - 'u_sendim' => array(0, 1), - 'u_hideonline' => array(0, 1), - 'u_viewonline' => array(0, 1), - 'u_viewprofile' => array(0, 1), - 'u_chgavatar' => array(0, 1), - 'u_chggrp' => array(0, 1), - 'u_chgemail' => array(0, 1), - 'u_chgname' => array(0, 1), - 'u_chgpasswd' => array(0, 1), - 'u_chgcensors' => array(0, 1), - 'u_search' => array(0, 1), - 'u_savedrafts' => array(0, 1), - 'u_download' => array(0, 1), - 'u_attach' => array(0, 1), - 'u_sig' => array(0, 1), - 'u_pm_attach' => array(0, 1), - 'u_pm_bbcode' => array(0, 1), - 'u_pm_smilies' => array(0, 1), - 'u_pm_download' => array(0, 1), - 'u_pm_edit' => array(0, 1), - 'u_pm_printpm' => array(0, 1), - 'u_pm_emailpm' => array(0, 1), - 'u_pm_forward' => array(0, 1), - 'u_pm_delete' => array(0, 1), - 'u_pm_img' => array(0, 1), - 'u_pm_flash' => array(0, 1), -); - -echo "<p><b>Determining existing permissions</b></p>\n"; - -$sql = 'SELECT auth_option_id, auth_option FROM ' . ACL_OPTIONS_TABLE; -$result = $db->sql_query($sql); - -$remove_auth_options = array(); -while ($row = $db->sql_fetchrow($result)) -{ - if (!in_array($row['auth_option'], array_keys(${substr($row['auth_option'], 0, 2) . 'permissions'}))) - { - $remove_auth_options[$row['auth_option']] = $row['auth_option_id']; - } - unset(${substr($row['auth_option'], 0, 2) . 'permissions'}[$row['auth_option']]); -} -$db->sql_freeresult($result); - -if (sizeof($remove_auth_options)) -{ - $db->sql_query('DELETE FROM ' . ACL_USERS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')'); - $db->sql_query('DELETE FROM ' . ACL_GROUPS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')'); - $db->sql_query('DELETE FROM ' . ACL_OPTIONS_TABLE . ' WHERE auth_option_id IN (' . implode(', ', $remove_auth_options) . ')'); - - echo '<p><b>Removed the following auth options... [<i>' . implode(', ', array_keys($remove_auth_options)) . "</i>]</b></p>\n\n"; -} - -$prefixes = array('f_', 'a_', 'm_', 'u_'); - -foreach ($prefixes as $prefix) -{ - $var = $prefix . 'permissions'; - if (sizeof($$var)) - { - foreach ($$var as $auth_option => $l_ary) - { - $sql_ary = array( - 'auth_option' => $auth_option, - 'is_local' => $l_ary[0], - 'is_global' => $l_ary[1] - ); - - $db->sql_query('INSERT INTO ' . ACL_OPTIONS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); - - echo "<p><b>Adding $auth_option...</b></p>\n"; - - mass_auth('group', 0, 'guests', $auth_option, ACL_NEVER); - mass_auth('group', 0, 'inactive', $auth_option, ACL_NEVER); - mass_auth('group', 0, 'inactive_coppa', $auth_option, ACL_NEVER); - mass_auth('group', 0, 'registered_coppa', $auth_option, ACL_NEVER); - mass_auth('group', 0, 'registered', $auth_option, (($prefix != 'm_' && $prefix != 'a_') ? ACL_YES : ACL_NEVER)); - mass_auth('group', 0, 'global_moderators', $auth_option, (($prefix != 'a_') ? ACL_YES : ACL_NEVER)); - mass_auth('group', 0, 'administrators', $auth_option, ACL_YES); - mass_auth('group', 0, 'bots', $auth_option, (($prefix != 'm_' && $prefix != 'a_') ? ACL_YES : ACL_NEVER)); - } - } -} - -$sql = 'UPDATE ' . USERS_TABLE . " SET user_permissions = ''"; -$db->sql_query($sql); - -$cache->destroy('_acl_options'); - -echo "<p><b>Done</b></p>\n"; - -/* - $ug_type = user|group - $forum_id = forum ids (array|int|0) -> 0 == all forums - $ug_id = [int] user_id|group_id : [string] usergroup name - $acl_list = [string] acl entry : [array] acl entries - $setting = ACL_YES|ACL_NEVER|ACL_NO -*/ -function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting) -{ - global $db; - static $acl_option_ids, $group_ids; - - if ($ug_type == 'group' && is_string($ug_id)) - { - if (!isset($group_ids[$ug_id])) - { - $sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " - WHERE group_name = '" . strtoupper($ug_id) . "'"; - $result = $db->sql_query_limit($sql, 1); - $id = (int) $db->sql_fetchfield('group_id', $result); - $db->sql_freeresult($result); - - if (!$id) - { - return; - } - - $group_ids[$ug_id] = $id; - } - - $ug_id = (int) $group_ids[$ug_id]; - } - - // Build correct parameters - $auth = array(); - - if (!is_array($acl_list)) - { - $auth = array($acl_list => $setting); - } - else - { - foreach ($acl_list as $auth_option) - { - $auth[$auth_option] = $setting; - } - } - unset($acl_list); - - if (!is_array($forum_id)) - { - $forum_id = array($forum_id); - } - - // Set any flags as required - foreach ($auth as $auth_option => $acl_setting) - { - $flag = substr($auth_option, 0, strpos($auth_option, '_') + 1); - if (empty($auth[$flag])) - { - $auth[$flag] = $acl_setting; - } - } - - if (!is_array($acl_option_ids) || empty($acl_option_ids)) - { - $sql = 'SELECT auth_option_id, auth_option - FROM ' . ACL_OPTIONS_TABLE; - $result = $db->sql_query($sql); - - while ($row = $db->sql_fetchrow($result)) - { - $acl_option_ids[$row['auth_option']] = $row['auth_option_id']; - } - $db->sql_freeresult($result); - } - - $sql_forum = 'AND a.forum_id IN (' . implode(', ', array_map('intval', $forum_id)) . ')'; - - $sql = ($ug_type == 'user') ? 'SELECT o.auth_option_id, o.auth_option, a.forum_id, a.auth_setting FROM ' . ACL_USERS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . " o WHERE a.auth_option_id = o.auth_option_id $sql_forum AND a.user_id = $ug_id" : 'SELECT o.auth_option_id, o.auth_option, a.forum_id, a.auth_setting FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . " o WHERE a.auth_option_id = o.auth_option_id $sql_forum AND a.group_id = $ug_id"; - $result = $db->sql_query($sql); - - $cur_auth = array(); - while ($row = $db->sql_fetchrow($result)) - { - $cur_auth[$row['forum_id']][$row['auth_option_id']] = $row['auth_setting']; - } - $db->sql_freeresult($result); - - $table = ($ug_type == 'user') ? ACL_USERS_TABLE : ACL_GROUPS_TABLE; - $id_field = $ug_type . '_id'; - - $sql_ary = array(); - foreach ($forum_id as $forum) - { - foreach ($auth as $auth_option => $setting) - { - $auth_option_id = $acl_option_ids[$auth_option]; - - if (!$auth_option_id) - { - continue; - } - - switch ($setting) - { - case ACL_NO: - if (isset($cur_auth[$forum][$auth_option_id])) - { - $sql_ary['delete'][] = "DELETE FROM $table - WHERE forum_id = $forum - AND auth_option_id = $auth_option_id - AND $id_field = $ug_id"; - } - break; - - default: - if (!isset($cur_auth[$forum][$auth_option_id])) - { - $sql_ary['insert'][] = "$ug_id, $forum, $auth_option_id, $setting"; - } - else if ($cur_auth[$forum][$auth_option_id] != $setting) - { - $sql_ary['update'][] = "UPDATE " . $table . " - SET auth_setting = $setting - WHERE $id_field = $ug_id - AND forum_id = $forum - AND auth_option_id = $auth_option_id"; - } - } - } - } - unset($cur_auth); - - $sql = ''; - foreach ($sql_ary as $sql_type => $sql_subary) - { - switch ($sql_type) - { - case 'insert': - switch ($db->sql_layer) - { - case 'mysql': - case 'mysql4': - $sql = 'VALUES ' . implode(', ', preg_replace('#^(.*?)$#', '(\1)', $sql_subary)); - break; - - case 'mssql': - case 'sqlite': - $sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary)); - break; - - default: - foreach ($sql_subary as $sql) - { - $sql = "INSERT INTO $table ($id_field, forum_id, auth_option_id, auth_setting) VALUES ($sql)"; - $result = $db->sql_query($sql); - $sql = ''; - } - } - - if ($sql != '') - { - $sql = "INSERT INTO $table ($id_field, forum_id, auth_option_id, auth_setting) $sql"; - $result = $db->sql_query($sql); - } - break; - - case 'update': - case 'delete': - foreach ($sql_subary as $sql) - { - $result = $db->sql_query($sql); - $sql = ''; - } - break; - } - unset($sql_ary[$sql_type]); - } - unset($sql_ary); - -} - -garbage_collection(); -exit_handler(); - -?>
\ No newline at end of file |