diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2001-06-06 21:35:08 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2001-06-06 21:35:08 +0000 |
commit | 999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13 (patch) | |
tree | 75431526d045e8162fc6f81706b505b88d6e7518 | |
parent | 43bc7ac78f64dd081046d2f146765315ef45c339 (diff) | |
download | forums-999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13.tar forums-999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13.tar.gz forums-999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13.tar.bz2 forums-999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13.tar.xz forums-999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13.zip |
Reduced auth code size and added some more auth types
git-svn-id: file:///svn/phpbb/trunk@435 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/db/mysql_basic.sql | 4 | ||||
-rw-r--r-- | phpBB/db/mysql_schema.sql | 27 | ||||
-rw-r--r-- | phpBB/db/postgres_schema.sql | 4 | ||||
-rw-r--r-- | phpBB/includes/auth.php | 445 | ||||
-rw-r--r-- | phpBB/includes/constants.php | 24 | ||||
-rw-r--r-- | phpBB/viewtopic.php | 4 |
6 files changed, 200 insertions, 308 deletions
diff --git a/phpBB/db/mysql_basic.sql b/phpBB/db/mysql_basic.sql index 36d41890e9..1299c3611b 100644 --- a/phpBB/db/mysql_basic.sql +++ b/phpBB/db/mysql_basic.sql @@ -32,10 +32,10 @@ INSERT INTO phpbb_user_group (group_id, user_id) VALUES (1, 1); INSERT INTO phpbb_user_group (group_id, user_id) VALUES (2, 2); # -- Forum Access (Open access to ALL) -INSERT INTO phpbb_auth_forums (forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_votecreate, auth_vote) VALUES (1, 0, 0, 0, 0, 0, 0, 0, 0); +INSERT INTO phpbb_auth_forums (forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_votecreate, auth_vote) VALUES (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); # -- User Access (admin is set as a moderator of the created forum) -INSERT INTO phpbb_auth_access (group_id, forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_votecreate, auth_vote, auth_mod) VALUES (2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1); +INSERT INTO phpbb_auth_access (group_id, forum_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete, auth_announce, auth_sticky, auth_votecreate, auth_vote, auth_mod) VALUES (2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); # -- Demo Topic INSERT INTO phpbb_topics VALUES(1, 1, 'Demo Topic', 1, NOW(), 0, 0, 0, 0, 1); diff --git a/phpBB/db/mysql_schema.sql b/phpBB/db/mysql_schema.sql index da03a4f243..fb2897a4aa 100644 --- a/phpBB/db/mysql_schema.sql +++ b/phpBB/db/mysql_schema.sql @@ -18,6 +18,8 @@ CREATE TABLE phpbb_auth_access ( auth_reply tinyint(1) DEFAULT '0' NOT NULL, auth_edit tinyint(1) DEFAULT '0' NOT NULL, auth_delete tinyint(1) DEFAULT '0' NOT NULL, + auth_announce tinyint(1) DEFAULT '0' NOT NULL, + auth_sticky tinyint(1) DEFAULT '0' NOT NULL, auth_votecreate tinyint(1) DEFAULT '0' NOT NULL, auth_attachments tinyint(1) DEFAULT '0' NOT NULL, auth_vote tinyint(1) DEFAULT '0' NOT NULL, @@ -38,6 +40,8 @@ CREATE TABLE phpbb_auth_forums ( auth_reply tinyint(4) DEFAULT '0' NOT NULL, auth_edit tinyint(4) DEFAULT '0' NOT NULL, auth_delete tinyint(4) DEFAULT '0' NOT NULL, + auth_announce tinyint(4) DEFAULT '0' NOT NULL, + auth_sticky tinyint(4) DEFAULT '0' NOT NULL, auth_votecreate tinyint(4) DEFAULT '0' NOT NULL, auth_vote tinyint(4) DEFAULT '0' NOT NULL, auth_attachments tinyint(4) DEFAULT '0' NOT NULL @@ -421,14 +425,20 @@ CREATE TABLE phpbb_users ( user_id int(11) NOT NULL auto_increment, user_active tinyint(4), username varchar(40) NOT NULL, - user_level int(11) DEFAULT '0', - user_regdate int(11) DEFAULT '0' NOT NULL, user_password varchar(32) NOT NULL, user_autologin_key varchar(32), - user_template varchar(50), - user_lang varchar(255), + user_level tinyint(4) DEFAULT '0', user_timezone int(11) DEFAULT '0' NOT NULL, user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL, + user_template varchar(50), + user_theme int(11), + user_lang varchar(255), + user_viewemail tinyint(1), + user_attachsig tinyint(1), + user_allowhtml tinyint(1), + user_allowbbcode tinyint(1), + user_allowsmile tinyint(1), + user_regdate int(11) DEFAULT '0' NOT NULL, user_rank int(11) DEFAULT '0', user_avatar varchar(100), user_email varchar(255), @@ -438,21 +448,14 @@ CREATE TABLE phpbb_users ( user_from varchar(100), user_interests varchar(255), user_sig varchar(255), - user_theme int(11), user_aim varchar(255), user_yim varchar(255), user_msnm varchar(255), user_posts int(11) DEFAULT '0', - user_viewemail tinyint(3), - user_attachsig tinyint(3), - user_allowhtml tinyint(3), - user_allowbbcode tinyint(3), - user_allowsmile tinyint(3), user_actkey varchar(32), user_newpasswd varchar(32), user_notify tinyint(3), - PRIMARY KEY (user_id), - KEY user_id (user_id) + PRIMARY KEY (user_id) ); diff --git a/phpBB/db/postgres_schema.sql b/phpBB/db/postgres_schema.sql index bf7cd5e450..5863deac54 100644 --- a/phpBB/db/postgres_schema.sql +++ b/phpBB/db/postgres_schema.sql @@ -31,6 +31,8 @@ CREATE TABLE phpbb_auth_forums ( auth_reply int2 DEFAULT '0' NOT NULL, auth_edit int2 DEFAULT '0' NOT NULL, auth_delete int2 DEFAULT '0' NOT NULL, + auth_announce int2 DEFAULT '0' NOT NULL, + auth_sticky int2 DEFAULT '0' NOT NULL, auth_votecreate int2 DEFAULT '0' NOT NULL, auth_vote int2 DEFAULT '0' NOT NULL, auth_attachments int2 DEFAULT '0' NOT NULL @@ -49,6 +51,8 @@ CREATE TABLE phpbb_auth_access ( auth_reply int2 DEFAULT '0' NOT NULL, auth_edit int2 DEFAULT '0' NOT NULL, auth_delete int2 DEFAULT '0' NOT NULL, + auth_announce int2 DEFAULT '0' NOT NULL, + auth_sticky int2 DEFAULT '0' NOT NULL, auth_votecreate int2 DEFAULT '0' NOT NULL, auth_attachments int2 DEFAULT '0' NOT NULL, auth_vote int2 DEFAULT '0' NOT NULL, diff --git a/phpBB/includes/auth.php b/phpBB/includes/auth.php index 03df1236af..066088accd 100644 --- a/phpBB/includes/auth.php +++ b/phpBB/includes/auth.php @@ -60,45 +60,64 @@ function auth($type, $forum_id, $userdata, $f_access = -1) switch($type) { case AUTH_ALL: - $a_sql = "aa.auth_view, aa.auth_read, aa.auth_post, aa.auth_reply, aa.auth_edit, aa.auth_delete, aa.auth_votecreate, aa.auth_vote, aa.auth_attachments"; - $auth_fields = array("auth_view", "auth_read", "auth_post", "auth_reply", "auth_edit", "auth_delete", "auth_votecreate", "auth_vote", "auth_attachments"); + $a_sql = "au.auth_view, au.auth_read, au.auth_post, au.auth_reply, au.auth_edit, au.auth_delete, au.auth_announce, au.auth_sticky, au.auth_votecreate, au.auth_vote, au.auth_attachments"; + $auth_fields = array("auth_view", "auth_read", "auth_post", "auth_reply", "auth_edit", "auth_delete", "auth_announce", "auth_sticky", "auth_votecreate", "auth_vote", "auth_attachments"); break; + case AUTH_VIEW: - $a_sql = "aa.auth_view"; + $a_sql = "au.auth_view"; $auth_fields = array("auth_view"); break; + case AUTH_READ: - $a_sql = "aa.auth_read"; + $a_sql = "au.auth_read"; $auth_fields = array("auth_read"); break; case AUTH_POST: - $a_sql = "aa.auth_post"; + $a_sql = "au.auth_post"; $auth_fields = array("auth_post"); break; case AUTH_REPLY: - $a_sql = "aa.auth_reply"; + $a_sql = "au.auth_reply"; $auth_fields = array("auth_reply"); break; case AUTH_EDIT: - $a_sql = "aa.auth_edit"; + $a_sql = "au.auth_edit"; $auth_fields = array("auth_edit"); break; case AUTH_DELETE: - $a_sql = "aa.auth_delete"; + $a_sql = "au.auth_delete"; $auth_fields = array("auth_delete"); break; + + case AUTH_ANNOUNCE: + $a_sql = "au.auth_announce"; + $auth_fields = array("auth_announce"); + break; + case AUTH_STICKY: + $a_sql = "au.auth_sticky"; + $auth_fields = array("auth_sticky"); + break; case AUTH_VOTECREATE: - $a_sql = "aa.auth_votecreate"; + $a_sql = "au.auth_votecreate"; $auth_fields = array("auth_votecreate"); break; case AUTH_VOTE: - $a_sql = "aa.auth_vote"; + $a_sql = "au.auth_vote"; $auth_fields = array("auth_vote"); break; case AUTH_ATTACH: - $a_sql = "aa.auth_attachments"; + $a_sql = "au.auth_attachments"; $auth_fields = array("auth_attachments"); break; + + case AUTH_ALLOW_HTML: + break; + case AUTH_ALLOW_BBCODE: + break; + case AUTH_ALLOW_SMILIES: + break; + default: break; } @@ -111,9 +130,9 @@ function auth($type, $forum_id, $userdata, $f_access = -1) // if($f_access == -1) { - $forum_match_sql = ($forum_id != AUTH_LIST_ALL) ? "WHERE aa.forum_id = $forum_id" : ""; - $sql = "SELECT aa.forum_id, $a_sql - FROM ".FORUMS_TABLE." aa + $forum_match_sql = ($forum_id != AUTH_LIST_ALL) ? "WHERE au.forum_id = $forum_id" : ""; + $sql = "SELECT au.forum_id, $a_sql + FROM ".AUTH_FORUMS_TABLE." au $forum_match_sql"; $af_result = $db->sql_query($sql); @@ -133,10 +152,6 @@ function auth($type, $forum_id, $userdata, $f_access = -1) } } } - else - { - - } // // If the user isn't logged on then @@ -147,80 +162,14 @@ function auth($type, $forum_id, $userdata, $f_access = -1) // $auth_user = array(); - if(!$userdata['session_logged_in']) - { - for($j = 0; $j < count($auth_fields); $j++) - { - $key = $auth_fields[$j]; - - if($forum_id != AUTH_LIST_ALL) - { - $auth_user[$key] = ($f_access[$key] == AUTH_ALL) ? 1 : 0; - - switch($f_access[$key]) - { - case AUTH_ALL: - $auth_user[$key . '_type'] = "Anonymous Users"; - break; - - case AUTH_REG: - $auth_user[$key . '_type'] = "Registered Users"; - break; - - case AUTH_ACL: - $auth_user[$key . '_type'] = "Users granted Special Access"; - break; - - case AUTH_MOD: - $auth_user[$key . '_type'] = "Moderators"; - break; - - case AUTH_ADMIN: - $auth_user[$key . '_type'] = "Administrators"; - break; - } - } - else - { - for($i = 0; $i < count($f_access); $i++) - { - $forum_id = $f_access[$i]['forum_id']; - $auth_user[$forum_id][$key] = ($f_access[$i][$key] == AUTH_ALL) ? 1 : 0; - - switch($f_access[$i][$key]) - { - case AUTH_ALL: - $auth_user[$forum_id][$key . '_type'] = "Anonymous Users"; - break; - - case AUTH_REG: - $auth_user[$forum_id][$key . '_type'] = "Registered Users"; - break; - - case AUTH_ACL: - $auth_user[$forum_id][$key . '_type'] = "Users granted special access"; - break; - - case AUTH_MOD: - $auth_user[$forum_id][$key . '_type'] = "Moderators"; - break; - - case AUTH_ADMIN: - $auth_user[$forum_id][$key . '_type'] = "Administrators"; - break; - } - } - } - } - } - else + if($userdata['session_logged_in']) { - $forum_match_sql = ($forum_id != AUTH_LIST_ALL) ? "AND aa.forum_id = $forum_id" : ""; - $sql = "SELECT aa.forum_id, $a_sql, aa.auth_mod, g.group_single_user - FROM ".AUTH_ACCESS_TABLE." aa, " . USER_GROUP_TABLE. " ug, " . GROUPS_TABLE. " g + $forum_match_sql = ($forum_id != AUTH_LIST_ALL) ? "AND au.forum_id = $forum_id" : ""; + $sql = "SELECT au.forum_id, $a_sql, au.auth_mod, g.group_single_user + FROM ".AUTH_ACCESS_TABLE." au, " . USER_GROUP_TABLE. " ug, " . GROUPS_TABLE. " g WHERE ug.user_id = ".$userdata['user_id']. " AND g.group_id = ug.group_id - AND aa.group_id = ug.group_id + AND au.group_id = ug.group_id $forum_match_sql"; $au_result = $db->sql_query($sql); if(!$au_result) @@ -233,220 +182,154 @@ function auth($type, $forum_id, $userdata, $f_access = -1) { $u_access = $db->sql_fetchrowset($au_result); } + } - $is_admin = ($userdata['user_level'] == ADMIN) ? 1 : 0; - $auth_user = array(); + $is_admin = ($userdata['user_level'] == ADMIN) ? 1 : 0; + $auth_user = array(); + + for($i = 0; $i < count($auth_fields); $i++) + { + $key = $auth_fields[$i]; - for($i = 0; $i < count($auth_fields); $i++) + // + // If the user is logged on and the forum type is either + // ALL or REG then the user has access + // + // If the type if ACL, MOD or ADMIN then we need to see + // if the user has specific permissions to do whatever it + // is they want to do ... to do this we pull relevant + // information for the user (and any groups they belong to) + // + // Now we compare the users access level against the forums + // We assume here that a moderator and admin automatically + // have access to an ACL forum, similarly we assume admins + // meet an auth requirement of MOD + // + // The access level assigned to a single user automatically + // takes precedence over any levels granted by that user being + // a member of a multi-user usergroup, eg. a user who is banned + // from a forum won't gain access to it even if they belong to + // a group which has access (and vice versa). This check is + // done via the single_user check + // + // PS : I appologise for the fantastically clear and hugely + // readable code here ;) Simple gist is, if this row of + // auth_access doesn't represent a single user then OR the + // contents of relevant auth_access levels against the current + // level (allows maximum group privileges to be assigned). If + // the row does represent a single user then forget any previous + // group results and instead set the auth to whatever the OR'd + // contents of the access levels are. + // + + if($forum_id != AUTH_LIST_ALL) { - $key = $auth_fields[$i]; + $value = $f_access[$key]; - if(!$num_u_access) + switch($value) { - // - // If no rows for this user where - // returned then auth is only true - // if the key has a value of ALL || REG - // - if($forum_id != AUTH_LIST_ALL) - { - $auth_user[$key] = ($f_access[$key] == AUTH_ALL || $f_access[$key] == AUTH_REG) ? 1 : 0; - - switch($f_access[$key]) - { - case AUTH_ALL: - $auth_user[$key . '_type'] = "Anonymous Users"; - break; + case AUTH_ALL: + $auth_user[$key] = 1; + $auth_user[$key . '_type'] = "Anonymous Users"; + break; - case AUTH_REG: - $auth_user[$key . '_type'] = "Registered Users"; - break; + case AUTH_REG: + $auth_user[$key] = ($userdata['session_logged_in']) ? 1 : 0; + $auth_user[$key . '_type'] = "Registered Users"; + break; - case AUTH_ACL: - $auth_user[$key . '_type'] = "Users granted special access"; - break; - - case AUTH_MOD: - $auth_user[$key . '_type'] = "Moderators"; - break; - - case AUTH_ADMIN: - $auth_user[$key . '_type'] = "Administrators"; - break; - } - } - else - { - for($k = 0; $k < count($f_access); $k++) - { - $f_forum_id = $f_access[$k]['forum_id']; - $auth_user[$f_forum_id][$key] = ($f_access[$k][$key] == AUTH_ALL || $f_access[$k][$key] == AUTH_REG) ? 1 : 0; - - switch($f_access[$k][$key]) - { - case AUTH_ALL: - $auth_user[$forum_id][$key . '_type'] = "Anonymous Users"; - break; - - case AUTH_REG: - $auth_user[$forum_id][$key . '_type'] = "Registered Users"; - break; - - case AUTH_ACL: - $auth_user[$forum_id][$key . '_type'] = "Users granted special access"; - break; - - case AUTH_MOD: - $auth_user[$forum_id][$key . '_type'] = "Moderators"; - break; - - case AUTH_ADMIN: - $auth_user[$forum_id][$key . '_type'] = "Administrators"; - break; - } - } - } - } - else - { - // - // If the user is logged on and the forum type is either - // ALL or REG then the user has access - // - // If the type if ACL, MOD or ADMIN then we need to see - // if the user has specific permissions to do whatever it - // is they want to do ... to do this we pull relevant - // information for the user (and any groups they belong to) - // - // Now we compare the users access level against the forums - // We assume here that a moderator and admin automatically - // have access to an ACL forum, similarly we assume admins - // meet an auth requirement of MOD - // - // The access level assigned to a single user automatically - // takes precedence over any levels granted by that user being - // a member of a multi-user usergroup, eg. a user who is banned - // from a forum won't gain access to it even if they belong to - // a group which has access (and vice versa). This check is - // done via the single_user check - // - // PS : I appologise for the fantastically clear and hugely - // readable code here ;) Simple gist is, if this row of - // auth_access doesn't represent a single user then OR the - // contents of relevant auth_access levels against the current - // level (allows maximum group privileges to be assigned). If - // the row does represent a single user then forget any previous - // group results and instead set the auth to whatever the OR'd - // contents of the access levels are. - // - - if($forum_id != AUTH_LIST_ALL) - { - switch($value) - { - case AUTH_ALL: - $auth_user[$key] = 1; - $auth_user[$key . '_type'] = "Anonymous Users"; - break; - - case AUTH_REG: - $auth_user[$key] = 1; - $auth_user[$key . '_type'] = "Registered Users"; - break; - - case AUTH_ACL: - $auth_user[$key] = auth_check_user(AUTH_ACL, $key, $u_access, $is_admin); - $auth_user[$key . '_type'] = "Users granted special access"; - break; - - case AUTH_MOD: - $auth_user[$key] = auth_check_user(AUTH_MOD, $key, $u_access, $is_admin); - $auth_user[$key . '_type'] = "Moderators"; - break; - - case AUTH_ADMIN: - $auth_user[$key] = $is_admin; - $auth_user[$key . '_type'] = "Administrators"; - break; - - default: - $auth_user[$key] = 0; - break; - } - } - else - { - for($k = 0; $k < count($f_access); $k++) - { - $value = $f_access[$k][$key]; - $f_forum_id = $f_access[$k]['forum_id']; - - switch($value) - { - case AUTH_ALL: - $auth_user[$f_forum_id][$key] = 1; - $auth_user[$f_forum_id][$key . '_type'] = "Anonymous Users"; - break; - - case AUTH_REG: - $auth_user[$f_forum_id][$key] = 1; - $auth_user[$f_forum_id][$key . '_type'] = "Registered Users"; - break; - - case AUTH_ACL: - $auth_user[$f_forum_id][$key] = auth_check_user(AUTH_ACL, $key, $u_access, $is_admin); - $auth_user[$f_forum_id][$key . '_type'] = "Users granted special access"; - break; + case AUTH_ACL: + $auth_user[$key] = ($userdata['session_logged_in'] && $num_u_access) ? auth_check_user(AUTH_ACL, $key, $u_access, $is_admin) : 0; + $auth_user[$key . '_type'] = "Users granted special access"; + break; - case AUTH_MOD: - $auth_user[$f_forum_id][$key] = auth_check_user(AUTH_MOD, $key, $u_access, $is_admin); - $auth_user[$f_forum_id][$key . '_type'] = "Moderators"; - break; + case AUTH_MOD: + $auth_user[$key] = ($userdata['session_logged_in'] && $num_u_access) ? auth_check_user(AUTH_MOD, $key, $u_access, $is_admin) : 0; + $auth_user[$key . '_type'] = "Moderators"; + break; - case AUTH_ADMIN: - $auth_user[$f_forum_id][$key] = $is_admin; - $auth_user[$f_forum_id][$key . '_type'] = "Administrators"; - break; - - default: - $auth_user[$f_forum_id][$key] = 0; - break; - } - } - } + case AUTH_ADMIN: + $auth_user[$key] = $is_admin; + $auth_user[$key . '_type'] = "Administrators"; + break; + + default: + $auth_user[$key] = 0; + break; } } - // - // Is user a moderator? - // - if($forum_id != AUTH_LIST_ALL) - { - $auth_user['auth_mod'] = auth_check_user(AUTH_MOD, 'auth_mod', $u_access, $is_admin); - } else { for($k = 0; $k < count($f_access); $k++) { + $value = $f_access[$k][$key]; $f_forum_id = $f_access[$k]['forum_id']; - $auth_user[$f_forum_id]['auth_mod'] = auth_check_user(AUTH_MOD, 'auth_mod', $u_access, $is_admin); + + switch($value) + { + case AUTH_ALL: + $auth_user[$f_forum_id][$key] = 1; + $auth_user[$f_forum_id][$key . '_type'] = "Anonymous Users"; + break; + + case AUTH_REG: + $auth_user[$f_forum_id][$key] = ($userdata['session_logged_in']) ? 1 : 0; + $auth_user[$f_forum_id][$key . '_type'] = "Registered Users"; + break; + + case AUTH_ACL: + $auth_user[$f_forum_id][$key] = ($userdata['session_logged_in'] && $num_u_access) ? auth_check_user(AUTH_ACL, $key, $u_access, $is_admin) : 0; + $auth_user[$f_forum_id][$key . '_type'] = "Users granted special access"; + break; + + case AUTH_MOD: + $auth_user[$f_forum_id][$key] = ($userdata['session_logged_in'] && $num_u_access) ? auth_check_user(AUTH_MOD, $key, $u_access, $is_admin) : 0; + $auth_user[$f_forum_id][$key . '_type'] = "Moderators"; + break; + + case AUTH_ADMIN: + $auth_user[$f_forum_id][$key] = $is_admin; + $auth_user[$f_forum_id][$key . '_type'] = "Administrators"; + break; + + default: + $auth_user[$f_forum_id][$key] = 0; + break; + } } } + } - // - // Is user an admin (this is - // really redundant at this time) - // - if($forum_id != AUTH_LIST_ALL) + // + // Is user a moderator? + // + if($forum_id != AUTH_LIST_ALL) + { + $auth_user['auth_mod'] = ($userdata['session_logged_in'] && $num_u_access) ? auth_check_user(AUTH_MOD, 'auth_mod', $u_access, $is_admin) : 0; + } + else + { + for($k = 0; $k < count($f_access); $k++) { - $auth_user['auth_admin'] = $is_admin; + $f_forum_id = $f_access[$k]['forum_id']; + $auth_user[$f_forum_id]['auth_mod'] = ($userdata['session_logged_in'] && $num_u_access) ? auth_check_user(AUTH_MOD, 'auth_mod', $u_access, $is_admin) : 0; } - else + } + + // + // Is user an admin (this is + // really redundant at this time) + // + if($forum_id != AUTH_LIST_ALL) + { + $auth_user['auth_admin'] = $is_admin; + } + else + { + for($k = 0; $k < count($f_access); $k++) { - for($k = 0; $k < count($f_access); $k++) - { - $f_forum_id = $f_access[$k]['forum_id']; - $auth_user[$f_forum_id]['auth_admin'] = $is_admin; - } + $f_forum_id = $f_access[$k]['forum_id']; + $auth_user[$f_forum_id]['auth_admin'] = $is_admin; } } diff --git a/phpBB/includes/constants.php b/phpBB/includes/constants.php index 9d08d10e62..5f82d4f2a8 100644 --- a/phpBB/includes/constants.php +++ b/phpBB/includes/constants.php @@ -87,37 +87,39 @@ define(AUTH_MOD, 3); define(AUTH_ADMIN, 5); define(AUTH_VIEW, 1); + define(AUTH_READ, 2); define(AUTH_POST, 3); define(AUTH_REPLY, 4); define(AUTH_EDIT, 5); define(AUTH_DELETE, 6); -define(AUTH_VOTECREATE, 7); -define(AUTH_VOTE, 8); -define(AUTH_ATTACH, 9); -define(AUTH_LIST_ALL, 10); + +define(AUTH_ANNOUNCE, 7); +define(AUTH_STICKY, 8); +define(AUTH_VOTECREATE, 9); +define(AUTH_VOTE, 10); +define(AUTH_ATTACH, 11); + +define(AUTH_LIST_ALL, 20); // Table names +define('AUTH_ACCESS_TABLE', $table_prefix.'auth_access'); +define('AUTH_FORUMS_TABLE', $table_prefix.'auth_forums'); define('BANLIST_TABLE', $table_prefix.'banlist'); define('CATEGORIES_TABLE', $table_prefix.'categories'); define('CONFIG_TABLE', $table_prefix.'config'); define('DISALLOW_TABLE', $table_prefix.'disallow'); -define('FORUM_ACCESS_TABLE', $table_prefix.'forum_access'); -define('FORUM_MODS_TABLE', $table_prefix.'forum_mods'); define('FORUMS_TABLE', $table_prefix.'forums'); +define('GROUPS_TABLE', $table_prefix.'groups'); define('POSTS_TABLE', $table_prefix.'posts'); define('POSTS_TEXT_TABLE', $table_prefix.'posts_text'); define('PRIV_MSGS_TABLE', $table_prefix.'priv_msgs'); define('RANKS_TABLE', $table_prefix.'ranks'); define('SESSIONS_TABLE', $table_prefix.'session'); -define('SESSIONS_KEY_TABLE', $table_prefix.'session_keys'); define('THEMES_TABLE', $table_prefix.'themes'); define('TOPICS_TABLE', $table_prefix.'topics'); -define('USERS_TABLE', $table_prefix.'users'); -define('GROUPS_TABLE', $table_prefix.'groups'); define('USER_GROUP_TABLE', $table_prefix.'user_group'); +define('USERS_TABLE', $table_prefix.'users'); define('WORDS_TABLE', $table_prefix.'words'); -define('AUTH_ACCESS_TABLE', $table_prefix.'auth_access'); -define('AUTH_FORUMS_TABLE', $table_prefix.'auth_forums'); ?>
\ No newline at end of file diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 632e56c552..3ff1567863 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -148,9 +148,9 @@ else AND f.forum_id = t.forum_id $order_sql"; */ - $order_sql = (!isset($post_id)) ? "" : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, f.forum_name, f.forum_id, fa.auth_view, fa.auth_read, fa.auth_post, fa.auth_reply, fa.auth_edit, fa.auth_delete, fa.auth_votecreate, fa.auth_vote ORDER BY p.post_id ASC"; + $order_sql = (!isset($post_id)) ? "" : "GROUP BY p.post_id, t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, f.forum_name, f.forum_id, fa.auth_view, fa.auth_read, fa.auth_post, fa.auth_reply, fa.auth_edit, fa.auth_delete, fa.auth_announce, fa.auth_sticky, fa.auth_votecreate, fa.auth_vote ORDER BY p.post_id ASC"; - $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, f.forum_name, f.forum_id, fa.auth_view, fa.auth_read, fa.auth_post, fa.auth_reply, fa.auth_edit, fa.auth_delete, fa.auth_votecreate, fa.auth_vote" . $count_sql . " + $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.topic_time, f.forum_name, f.forum_id, fa.auth_view, fa.auth_read, fa.auth_post, fa.auth_reply, fa.auth_edit, fa.auth_announce, fa.auth_sticky, fa.auth_delete, fa.auth_votecreate, fa.auth_vote" . $count_sql . " FROM $join_sql_table ".TOPICS_TABLE." t, ".FORUMS_TABLE." f, ".AUTH_FORUMS_TABLE." fa WHERE $join_sql AND f.forum_id = t.forum_id |