From 528cf7de0f0e72a9ca3e6ba3813b578606bee40b Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Mon, 1 Sep 2008 21:33:12 +0000 Subject: [PATCH] Show users posts in queue in acp and profile + link to mcp git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@8801 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/style/acp_users_overview.html | 4 +-- phpBB/includes/acp/acp_users.php | 13 +++++++++ phpBB/includes/functions.php | 19 ++++++++---- phpBB/memberlist.php | 29 ++++++++++++++++--- .../prosilver/template/memberlist_view.html | 10 +++++-- .../subsilver2/template/memberlist_view.html | 4 ++- 6 files changed, 63 insertions(+), 16 deletions(-) diff --git a/phpBB/adm/style/acp_users_overview.html b/phpBB/adm/style/acp_users_overview.html index 0611ccba46..e3eff369cc 100644 --- a/phpBB/adm/style/acp_users_overview.html +++ b/phpBB/adm/style/acp_users_overview.html @@ -30,7 +30,7 @@
-
{USER_POSTS}
+
{USER_POSTS} ({L_POSTS_IN_QUEUE}) ({L_POSTS_IN_QUEUE})
@@ -138,7 +138,7 @@

- + diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 32bbe4e46d..df5eea46e6 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -891,9 +891,20 @@ class acp_users } } + // Posts in Queue + $sql = 'SELECT COUNT(post_id) as posts_in_queue + FROM ' . POSTS_TABLE . ' + WHERE poster_id = ' . $user_id . ' + AND post_postcount = 1 + AND post_approved = 0'; + $result = $db->sql_query($sql); + $user_row['posts_in_queue'] = (int) $db->sql_fetchfield('posts_in_queue'); + $db->sql_freeresult($result); + $template->assign_vars(array( 'L_NAME_CHARS_EXPLAIN' => sprintf($user->lang[$config['allow_name_chars'] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']), 'L_CHANGE_PASSWORD_EXPLAIN' => sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), + 'L_POSTS_IN_QUEUE' => $user->lang('NUM_POSTS_IN_QUEUE', $user_row['posts_in_queue']), 'S_FOUNDER' => ($user->data['user_type'] == USER_FOUNDER) ? true : false, 'S_OVERVIEW' => true, @@ -905,9 +916,11 @@ class acp_users 'U_SHOW_IP' => $this->u_action . "&u=$user_id&ip=" . (($ip == 'ip') ? 'hostname' : 'ip'), 'U_WHOIS' => $this->u_action . "&action=whois&user_ip={$user_row['user_ip']}", + 'U_MCP_QUEUE' => ($auth->acl_getf_global('m_approve')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue', true, $user->session_id) : '', 'U_SWITCH_PERMISSIONS' => ($auth->acl_get('a_switchperm') && $user->data['user_id'] != $user_row['user_id']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=switch_perm&u={$user_row['user_id']}") : '', + 'POSTS_IN_QUEUE' => $user_row['posts_in_queue'], 'USER' => $user_row['username'], 'USER_REGISTERED' => $user->format_date($user_row['user_regdate']), 'REGISTERED_IP' => ($ip == 'hostname') ? gethostbyaddr($user_row['user_ip']) : $user_row['user_ip'], diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 5fcaece0d6..e96583f75f 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2218,10 +2218,12 @@ function meta_refresh($time, $url) function generate_link_hash($link_name) { global $user; + if (!isset($user->data["hash_$link_name"])) { $user->data["hash_$link_name"] = substr(sha1($user->data['user_form_salt'] . $link_name), 0, 8); } + return $user->data["hash_$link_name"]; } @@ -2244,16 +2246,18 @@ function check_link_hash($token, $link_name) function add_form_key($form_name) { global $config, $template, $user; + $now = time(); $token_sid = ($user->data['user_id'] == ANONYMOUS && !empty($config['form_token_sid_guests'])) ? $user->session_id : ''; $token = sha1($now . $user->data['user_form_salt'] . $form_name . $token_sid); $s_fields = build_hidden_fields(array( - 'creation_time' => $now, - 'form_token' => $token, + 'creation_time' => $now, + 'form_token' => $token, )); + $template->assign_vars(array( - 'S_FORM_TOKEN' => $s_fields, + 'S_FORM_TOKEN' => $s_fields, )); } @@ -2279,23 +2283,26 @@ function check_form_key($form_name, $timespan = false, $return_page = '', $trigg $creation_time = abs(request_var('creation_time', 0)); $token = request_var('form_token', ''); - $diff = (time() - $creation_time); + $diff = time() - $creation_time; - if (($diff <= $timespan) || $timespan === -1) + // If creation_time and the time() now is zero we can assume it was not a human doing this (the check for if ($diff)... + if ($diff && ($diff <= $timespan || $timespan === -1)) { $token_sid = ($user->data['user_id'] == ANONYMOUS && !empty($config['form_token_sid_guests'])) ? $user->session_id : ''; - $key = sha1($creation_time . $user->data['user_form_salt'] . $form_name . $token_sid); + if ($key === $token) { return true; } } } + if ($trigger) { trigger_error($user->lang['FORM_INVALID'] . $return_page); } + return false; } diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index 869777382e..e1bf09411b 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -129,7 +129,7 @@ switch ($mode) $admin_memberships = group_memberships($admin_group_id, $admin_id_ary); $admin_user_ids = array(); - + if (!empty($admin_memberships)) { // ok, we only need the user ids... @@ -527,13 +527,33 @@ switch ($mode) unset($module); } + // If the user has m_approve permission or a_user permission, then list then display unapproved posts + if ($auth->acl_getf_global('m_approve') || $auth->acl_get('a_user')) + { + $sql = 'SELECT COUNT(post_id) as posts_in_queue + FROM ' . POSTS_TABLE . ' + WHERE poster_id = ' . $user_id . ' + AND post_postcount = 1 + AND post_approved = 0'; + $result = $db->sql_query($sql); + $member['posts_in_queue'] = (int) $db->sql_fetchfield('posts_in_queue'); + $db->sql_freeresult($result); + } + else + { + $member['posts_in_queue'] = 0; + } + $template->assign_vars(array( + 'L_POSTS_IN_QUEUE' => $user->lang('NUM_POSTS_IN_QUEUE', $member['posts_in_queue']), + 'POSTS_DAY' => sprintf($user->lang['POST_DAY'], $posts_per_day), 'POSTS_PCT' => sprintf($user->lang['POST_PCT'], $percentage), 'OCCUPATION' => (!empty($member['user_occ'])) ? censor_text($member['user_occ']) : '', 'INTERESTS' => (!empty($member['user_interests'])) ? censor_text($member['user_interests']) : '', 'SIGNATURE' => $member['user_sig'], + 'POSTS_IN_QUEUE'=> $member['posts_in_queue'], 'AVATAR_IMG' => $poster_avatar, 'PM_IMG' => $user->img('icon_contact_pm', $user->lang['SEND_PRIVATE_MESSAGE']), @@ -552,6 +572,7 @@ switch ($mode) 'U_USER_ADMIN' => ($auth->acl_get('a_user')) ? append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=users&mode=overview&u=' . $user_id, true, $user->session_id) : '', 'U_USER_BAN' => ($auth->acl_get('m_ban')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=ban&mode=user&u=' . $user_id, true, $user->session_id) : '', + 'U_MCP_QUEUE' => ($auth->acl_getf_global('m_approve')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue', true, $user->session_id) : '', 'U_SWITCH_PERMISSIONS' => ($auth->acl_get('a_switchperm') && $user->data['user_id'] != $user_id) ? append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=switch_perm&u={$user_id}") : '', @@ -1149,7 +1170,7 @@ switch ($mode) $sql_where .= " AND ug.user_pending = 0 AND u.user_id = ug.user_id AND ug.group_id = $group_id"; $sql_where_data = " AND u.user_id = ug.user_id AND ug.group_id = $group_id"; } - + // Sorting and order if (!isset($sort_key_sql[$sort_key])) { @@ -1601,9 +1622,9 @@ function show_profile($data) function _sort_last_active($first, $second) { global $id_cache, $sort_dir; - + $lesser_than = ($sort_dir === 'a') ? -1 : 1; - + if (isset($id_cache[$first]['group_leader']) && $id_cache[$first]['group_leader'] && (!isset($id_cache[$second]['group_leader']) || !$id_cache[$second]['group_leader'])) { return 1; diff --git a/phpBB/styles/prosilver/template/memberlist_view.html b/phpBB/styles/prosilver/template/memberlist_view.html index 7df3eb6a91..23f87d6bbe 100644 --- a/phpBB/styles/prosilver/template/memberlist_view.html +++ b/phpBB/styles/prosilver/template/memberlist_view.html @@ -5,7 +5,7 @@
- +
{AVATAR_IMG}
@@ -55,7 +55,7 @@

{L_CONTACT_USER} {USERNAME}

- +
{L_EMAIL_ADDRESS}:
{L_SEND_EMAIL_USER} {USERNAME}
{L_WEBSITE}:
{U_WWW}
@@ -82,7 +82,11 @@
{L_WARNINGS}:
{WARNINGS} [ {L_VIEW_NOTES} | {L_WARN_USER} ]
-
{L_TOTAL_POSTS}:
{POSTS} | {L_SEARCH_USER_POSTS}
({POSTS_PCT} / {POSTS_DAY})
+
{L_TOTAL_POSTS}:
+
{POSTS} | {L_SEARCH_USER_POSTS} +
({POSTS_PCT} / {POSTS_DAY}) +
({L_POSTS_IN_QUEUE})
({L_POSTS_IN_QUEUE}) +
{L_ACTIVE_IN_FORUM}:
{ACTIVE_FORUM}
({ACTIVE_FORUM_POSTS} / {ACTIVE_FORUM_PCT}) -
{L_ACTIVE_IN_TOPIC}:
{ACTIVE_TOPIC}
({ACTIVE_TOPIC_POSTS} / {ACTIVE_TOPIC_PCT}) -
diff --git a/phpBB/styles/subsilver2/template/memberlist_view.html b/phpBB/styles/subsilver2/template/memberlist_view.html index 68041259cb..c4536e4621 100644 --- a/phpBB/styles/subsilver2/template/memberlist_view.html +++ b/phpBB/styles/subsilver2/template/memberlist_view.html @@ -74,7 +74,9 @@ {L_TOTAL_POSTS}: - {POSTS}
[{POSTS_PCT} / {POSTS_DAY}]
{L_SEARCH_USER_POSTS}
+ {POSTS}
[{POSTS_PCT} / {POSTS_DAY}] +
[{L_POSTS_IN_QUEUE}]
[{L_POSTS_IN_QUEUE}] +
{L_SEARCH_USER_POSTS}