aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul S. Owen <psotfx@users.sourceforge.net>2001-06-06 21:35:08 +0000
committerPaul S. Owen <psotfx@users.sourceforge.net>2001-06-06 21:35:08 +0000
commit999a0c9d1a0fd29a80f1b1e2ec4e263960d09e13 (patch)
tree75431526d045e8162fc6f81706b505b88d6e7518
parent43bc7ac78f64dd081046d2f146765315ef45c339 (diff)
downloadforums-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.sql4
-rw-r--r--phpBB/db/mysql_schema.sql27
-rw-r--r--phpBB/db/postgres_schema.sql4
-rw-r--r--phpBB/includes/auth.php445
-rw-r--r--phpBB/includes/constants.php24
-rw-r--r--phpBB/viewtopic.php4
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