diff options
Diffstat (limited to 'phpBB/includes')
-rw-r--r-- | phpBB/includes/acp/acp_email.php | 15 | ||||
-rw-r--r-- | phpBB/includes/acp/acp_groups.php | 95 | ||||
-rw-r--r-- | phpBB/includes/acp/acp_language.php | 11 | ||||
-rw-r--r-- | phpBB/includes/acp/acp_modules.php | 10 | ||||
-rw-r--r-- | phpBB/includes/functions.php | 2 | ||||
-rw-r--r-- | phpBB/includes/functions_convert.php | 4 | ||||
-rw-r--r-- | phpBB/includes/functions_display.php | 28 | ||||
-rw-r--r-- | phpBB/includes/functions_messenger.php | 2 | ||||
-rw-r--r-- | phpBB/includes/functions_user.php | 12 | ||||
-rw-r--r-- | phpBB/includes/mcp/mcp_forum.php | 12 | ||||
-rw-r--r-- | phpBB/includes/mcp/mcp_queue.php | 4 | ||||
-rw-r--r-- | phpBB/includes/ucp/ucp_groups.php | 114 | ||||
-rw-r--r-- | phpBB/includes/ucp/ucp_pm_compose.php | 2 |
13 files changed, 203 insertions, 108 deletions
diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index 57d03ff67e..3fbbe6472f 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -51,7 +51,7 @@ class acp_email $error[] = $user->lang['NO_EMAIL_MESSAGE']; } - if (!sizeof($error)) + if (!sizeof($error)) { if ($usernames) { @@ -208,16 +208,21 @@ class acp_email } } - // Exclude bots... + // Exclude bots and guests... $sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " - WHERE group_name = 'BOTS'"; + WHERE group_name IN ('BOTS', 'GUESTS')"; $result = $db->sql_query($sql); - $bot_group_id = (int) $db->sql_fetchfield('group_id'); + + $exclude = array(); + while ($row = $db->sql_fetchrow($result)) + { + $exclude[] = $row['group_id']; + } $db->sql_freeresult($result); $select_list = '<option value="0"' . ((!$group_id) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_USERS'] . '</option>'; - $select_list .= group_select_options($group_id, array($bot_group_id)); + $select_list .= group_select_options($group_id, $exclude); $s_priority_options = '<option value="' . MAIL_LOW_PRIORITY . '">' . $user->lang['MAIL_LOW_PRIORITY'] . '</option>'; $s_priority_options .= '<option value="' . MAIL_NORMAL_PRIORITY . '" selected="selected">' . $user->lang['MAIL_NORMAL_PRIORITY'] . '</option>'; diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index 7147431259..2645ac4ce3 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -272,16 +272,13 @@ class acp_groups 'receive_pm' => isset($_REQUEST['group_receive_pm']) ? 1 : 0, 'legend' => isset($_REQUEST['group_legend']) ? 1 : 0, 'message_limit' => request_var('group_message_limit', 0), + 'founder_manage' => 0, ); if ($user->data['user_type'] == USER_FOUNDER) { $submit_ary['founder_manage'] = isset($_REQUEST['group_founder_manage']) ? 1 : 0; } - else - { - $submit_ary['founder_manage'] = 0; - } if (!empty($_FILES['uploadfile']['tmp_name']) || $data['uploadurl'] || $data['remotelink']) { @@ -318,6 +315,11 @@ class acp_groups $submit_ary['avatar'] = $category . '/' . $avatar_select; } } + else if ($delete) + { + $submit_ary['avatar'] = ''; + $submit_ary['avatar_type'] = $submit_ary['avatar_width'] = $submit_ary['avatar_height'] = 0; + } else if ($data['width'] && $data['height']) { // Only update the dimensions? @@ -346,11 +348,6 @@ class acp_groups $submit_ary['avatar_height'] = $data['height']; } } - else if ($delete) - { - $submit_ary['avatar'] = ''; - $submit_ary['avatar_type'] = $submit_ary['avatar_width'] = $submit_ary['avatar_height'] = 0; - } if ((isset($submit_ary['avatar']) && $submit_ary['avatar'] && (!isset($group_row['group_avatar']) || $group_row['group_avatar'] != $submit_ary['avatar'])) || $delete) { @@ -593,53 +590,38 @@ class acp_groups $this->page_title = 'GROUP_MEMBERS'; - // Total number of group leaders - $sql = 'SELECT COUNT(user_id) AS total_leaders - FROM ' . USER_GROUP_TABLE . " - WHERE group_id = $group_id - AND group_leader = 1"; - $result = $db->sql_query($sql); - $total_leaders = (int) $db->sql_fetchfield('total_leaders'); - $db->sql_freeresult($result); - - // Total number of group members (non-leaders) - $sql = 'SELECT COUNT(user_id) AS total_members - FROM ' . USER_GROUP_TABLE . " - WHERE group_id = $group_id - AND group_leader <> 1"; - $result = $db->sql_query($sql); - $total_members = (int) $db->sql_fetchfield('total_members'); - $db->sql_freeresult($result); - - // Grab the members + // Grab the leaders - always, on every page... $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id - AND u.user_id = ug.user_id + AND u.user_id = ug.user_id + AND ug.group_leader = 1 ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean"; - $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); - - $leader = $member = 0; - $group_data = array( - 'leader' => array(), - 'member' => array(), - ); + $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { - $type = ($row['group_leader']) ? 'leader' : 'member'; - - $group_data[$type][$$type]['user_id'] = $row['user_id']; - $group_data[$type][$$type]['group_id'] = $row['group_id']; - $group_data[$type][$$type]['username'] = $row['username']; - $group_data[$type][$$type]['user_regdate'] = $row['user_regdate']; - $group_data[$type][$$type]['user_posts'] = $row['user_posts']; - $group_data[$type][$$type]['user_pending'] = ($row['user_pending']) ? 1 : 0; + $template->assign_block_vars('leader', array( + 'U_USER_EDIT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&action=edit&u={$row['user_id']}"), - $$type++; + 'USERNAME' => $row['username'], + 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ? true : false, + 'JOINED' => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ', + 'USER_POSTS' => $row['user_posts'], + 'USER_ID' => $row['user_id']) + ); } $db->sql_freeresult($result); + // Total number of group members (non-leaders) + $sql = 'SELECT COUNT(user_id) AS total_members + FROM ' . USER_GROUP_TABLE . " + WHERE group_id = $group_id + AND group_leader = 0"; + $result = $db->sql_query($sql); + $total_members = (int) $db->sql_fetchfield('total_members'); + $db->sql_freeresult($result); + $s_action_options = ''; $options = array('default' => 'DEFAULT', 'approve' => 'APPROVE', 'demote' => 'DEMOTE', 'promote' => 'PROMOTE', 'deleteusers' => 'DELETE'); @@ -664,22 +646,18 @@ class acp_groups 'U_DEFAULT_ALL' => "{$this->u_action}&action=default&g=$group_id") ); - foreach ($group_data['leader'] as $row) - { - $template->assign_block_vars('leader', array( - 'U_USER_EDIT' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=users&action=edit&u={$row['user_id']}"), - - 'USERNAME' => $row['username'], - 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ? true : false, - 'JOINED' => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ', - 'USER_POSTS' => $row['user_posts'], - 'USER_ID' => $row['user_id']) - ); - } + // Grab the members + $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending + FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug + WHERE ug.group_id = $group_id + AND u.user_id = ug.user_id + AND ug.group_leader = 0 + ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean"; + $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); $pending = false; - foreach ($group_data['member'] as $row) + while ($row = $db->sql_fetchrow($result)) { if ($row['user_pending'] && !$pending) { @@ -700,6 +678,7 @@ class acp_groups 'USER_ID' => $row['user_id']) ); } + $db->sql_freeresult($result); return; break; diff --git a/phpBB/includes/acp/acp_language.php b/phpBB/includes/acp/acp_language.php index 7dcd64265c..50fb854d54 100644 --- a/phpBB/includes/acp/acp_language.php +++ b/phpBB/includes/acp/acp_language.php @@ -147,7 +147,7 @@ class acp_language $db->sql_query('UPDATE ' . LANG_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE lang_id = ' . $lang_id); - + add_log('admin', 'LOG_LANGUAGE_PACK_UPDATED', $sql_ary['lang_english_name']); trigger_error($user->lang['LANGUAGE_DETAILS_UPDATED'] . adm_back_link($this->u_action)); @@ -276,7 +276,9 @@ class acp_language echo $buffer; } fclose($fp); - + + add_log('admin', 'LOG_LANGUAGE_FILE_SUBMITTED', $this->language_file); + exit; } else if ($action == 'upload_data') @@ -340,7 +342,8 @@ class acp_language trigger_error($user->lang['UPLOAD_COMPLETED'] . adm_back_link($this->u_action . '&action=details&id=' . $lang_id . '&language_file=' . urlencode($selected_lang_file))); } - + + add_log('admin', 'LOG_LANGUAGE_FILE_SUBMITTED', $this->language_file); $action = 'details'; // no break; @@ -1010,7 +1013,7 @@ class acp_language * {FILENAME} [{LANG_NAME}] * * @package language -* @version $Id: $ +* @version $' . 'Id: ' . '$ * @copyright (c) ' . date('Y') . ' phpBB Group * @author {CHANGED} - {AUTHOR} * @license http://opensource.org/licenses/gpl-license.php GNU Public License diff --git a/phpBB/includes/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php index 2eb45b4972..a1917b1717 100644 --- a/phpBB/includes/acp/acp_modules.php +++ b/phpBB/includes/acp/acp_modules.php @@ -726,7 +726,7 @@ class acp_modules { $sql = 'SELECT left_id, right_id FROM ' . MODULES_TABLE . " - WHERE module_class = '" . $db->sql_escape($this->module_class) . "' + WHERE module_class = '" . $db->sql_escape($module_data['module_class']) . "' AND module_id = {$module_data['parent_id']}"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); @@ -744,13 +744,13 @@ class acp_modules $sql = 'UPDATE ' . MODULES_TABLE . " SET left_id = left_id + 2, right_id = right_id + 2 - WHERE module_class = '" . $db->sql_escape($this->module_class) . "' + WHERE module_class = '" . $db->sql_escape($module_data['module_class']) . "' AND left_id > {$row['right_id']}"; $db->sql_query($sql); $sql = 'UPDATE ' . MODULES_TABLE . " SET right_id = right_id + 2 - WHERE module_class = '" . $db->sql_escape($this->module_class) . "' + WHERE module_class = '" . $db->sql_escape($module_data['module_class']) . "' AND {$row['left_id']} BETWEEN left_id AND right_id"; $db->sql_query($sql); @@ -761,7 +761,7 @@ class acp_modules { $sql = 'SELECT MAX(right_id) AS right_id FROM ' . MODULES_TABLE . " - WHERE module_class = '" . $db->sql_escape($this->module_class) . "'"; + WHERE module_class = '" . $db->sql_escape($module_data['module_class']) . "'"; $result = $db->sql_query($sql); $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); @@ -805,7 +805,7 @@ class acp_modules $sql = 'UPDATE ' . MODULES_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $update_ary) . " - WHERE module_class = '" . $db->sql_escape($this->module_class) . "' + WHERE module_class = '" . $db->sql_escape($module_data['module_class']) . "' AND module_id = {$module_data['module_id']}"; $db->sql_query($sql); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 8639df6ab0..d3638f1941 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2111,7 +2111,7 @@ function bump_topic_allowed($forum_id, $topic_bumped, $last_post_time, $topic_po } // Check bumper, only topic poster and last poster are allowed to bump - if ($topic_poster != $user->data['user_id'] && $last_topic_poster != $user->data['user_id'] && !$auth->acl_get('m_', $forum_id)) + if ($topic_poster != $user->data['user_id'] && $last_topic_poster != $user->data['user_id']) { return false; } diff --git a/phpBB/includes/functions_convert.php b/phpBB/includes/functions_convert.php index fe72f3fa9e..e8c57a4db6 100644 --- a/phpBB/includes/functions_convert.php +++ b/phpBB/includes/functions_convert.php @@ -304,7 +304,7 @@ function decode_ip($int_ip) { if (!$int_ip) { - return ''; + return '127.0.0.1'; } $hexipbang = explode('.', chunk_split($int_ip, 2, '.')); @@ -315,7 +315,7 @@ function decode_ip($int_ip) return ''; } - return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]); + return hexdec($hexipbang[0]) . '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]); } /** diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index e62bf674e6..f63d6a7da7 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -252,7 +252,8 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod $forum_unread = (isset($forum_tracking_info[$forum_id]) && $row['orig_forum_last_post_time'] > $forum_tracking_info[$forum_id]) ? true : false; - $folder_image = $folder_alt = $subforums_list = $l_subforums = ''; + $folder_image = $folder_alt = $l_subforums = ''; + $subforums_list = array(); // Generate list of subforums if we need to if (isset($subforums[$forum_id])) @@ -267,8 +268,10 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod if ($subforum_row['display'] && $subforum_row['name']) { - $subforums_list .= ($subforums_list == '') ? '' : ', '; - $subforums_list .= '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id) . '">' . $subforum_row['name'] . '</a>'; + $subforums_list[] = array( + 'link' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id), + 'name' => $subforum_row['name'] + ); } else { @@ -327,11 +330,19 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod $l_post_click_count = ($row['forum_type'] == FORUM_LINK) ? 'CLICKS' : 'POSTS'; $post_click_count = ($row['forum_type'] != FORUM_LINK || $row['forum_flags'] & FORUM_FLAG_LINK_TRACK) ? $row['forum_posts'] : ''; + $s_subforums_list = array(); + foreach ($subforums_list as $subforum) + { + $s_subforums_list[] = '<a href="' . $subforum['link'] . '">' . $subforum['name'] . '</a>'; + } + $s_subforums_list = (string) implode(', ', $s_subforums_list); + $template->assign_block_vars('forumrow', array( 'S_IS_CAT' => false, 'S_IS_LINK' => ($row['forum_type'] == FORUM_LINK) ? true : false, 'S_UNREAD_FORUM' => $forum_unread, 'S_LOCKED_FORUM' => ($row['forum_status'] == ITEM_LOCKED) ? true : false, + 'S_SUBFORUMS' => (sizeof($subforums_list)) ? true : false, 'FORUM_ID' => $row['forum_id'], 'FORUM_NAME' => $row['forum_name'], @@ -342,13 +353,13 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod 'FORUM_FOLDER_IMG_SRC' => $user->img($folder_image, $folder_alt, false, '', 'src'), 'FORUM_IMAGE' => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang[$folder_alt] . '" />' : '', 'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '', - 'SUBFORUMS' => $subforums_list, 'LAST_POST_SUBJECT' => censor_text($last_post_subject), 'LAST_POST_TIME' => $last_post_time, 'LAST_POSTER' => get_username_string('username', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']), 'LAST_POSTER_COLOUR' => get_username_string('colour', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']), 'LAST_POSTER_FULL' => get_username_string('full', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']), 'MODERATORS' => $moderators_list, + 'SUBFORUMS' => $s_subforums_list, 'L_SUBFORUM_STR' => $l_subforums, 'L_FORUM_FOLDER_ALT' => $folder_alt, @@ -358,6 +369,15 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod 'U_LAST_POSTER' => get_username_string('profile', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']), 'U_LAST_POST' => $last_post_url) ); + + // Assign subforums loop for style authors + foreach ($subforums_list as $subforum) + { + $template->assign_block_vars('forumrow.subforum', array( + 'U_SUBFORUM' => $subforum['link'], + 'SUBFORUM_NAME' => $subforum['name']) + ); + } } $template->assign_vars(array( diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index d63a31ffb5..dd84533b23 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -846,7 +846,7 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = '') // From this point onward most server response codes should be 250 // Specify who the mail is from.... - $smtp->server_send('MAIL FROM:<' . $config['board_contact'] . '>'); + $smtp->server_send('MAIL FROM:<' . $config['board_email'] . '>'); if ($err_msg = $smtp->server_parse('250', __LINE__)) { $smtp->close_session($err_msg); diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 6df1b838b2..3e3ee90c1b 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1755,17 +1755,12 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow // Those are group-only attributes $group_only_ary = array('group_receive_pm', 'group_legend', 'group_message_limit', 'group_founder_manage'); - // Check data - if (!utf8_strlen($name) || utf8_strlen($name) > 40) + // Check data. Limit group name length. + if (!utf8_strlen($name) || utf8_strlen($name) > 60) { $error[] = (!utf8_strlen($name)) ? $user->lang['GROUP_ERR_USERNAME'] : $user->lang['GROUP_ERR_USER_LONG']; } - if (utf8_strlen($desc) > 255) - { - $error[] = $user->lang['GROUP_ERR_DESC_LONG']; - } - if (!in_array($type, array(GROUP_OPEN, GROUP_CLOSED, GROUP_HIDDEN, GROUP_SPECIAL, GROUP_FREE))) { $error[] = $user->lang['GROUP_ERR_TYPE']; @@ -2420,7 +2415,8 @@ function group_memberships($group_id_ary = false, $user_id_ary = false, $return_ $sql = 'SELECT ug.*, u.username, u.username_clean, u.user_email FROM ' . USER_GROUP_TABLE . ' ug, ' . USERS_TABLE . ' u - WHERE ug.user_id = u.user_id AND '; + WHERE ug.user_id = u.user_id + AND ug.user_pending = 0 AND '; if ($group_id_ary) { diff --git a/phpBB/includes/mcp/mcp_forum.php b/phpBB/includes/mcp/mcp_forum.php index 2f02a21a3f..3f11c96e21 100644 --- a/phpBB/includes/mcp/mcp_forum.php +++ b/phpBB/includes/mcp/mcp_forum.php @@ -28,11 +28,11 @@ function mcp_forum_view($id, $mode, $action, $forum_info) unset($_POST['sk'], $_POST['sd'], $_REQUEST['sk'], $_REQUEST['sd']); } - $forum_id = $forum_info['forum_id']; - $start = request_var('start', 0); - $topic_id_list = request_var('topic_id_list', array(0)); - $post_id_list = request_var('post_id_list', array(0)); - $topic_id = request_var('t', 0); + $forum_id = $forum_info['forum_id']; + $start = request_var('start', 0); + $topic_id_list = request_var('topic_id_list', array(0)); + $post_id_list = request_var('post_id_list', array(0)); + $source_topic_id = request_var('t', 0); // Resync Topics if ($action == 'resync') @@ -216,7 +216,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info) $topic_row = array_merge($topic_row, array( 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&f=$forum_id&t={$row['topic_id']}&mode=topic_view"), - 'S_SELECT_TOPIC' => ($action == 'merge_select' && $row['topic_id'] != $topic_id) ? true : false, + 'S_SELECT_TOPIC' => ($action == 'merge_select' && $row['topic_id'] != $source_topic_id) ? true : false, 'U_SELECT_TOPIC' => $url . "&i=$id&mode=topic_view&action=merge&to_topic_id=" . $row['topic_id'] . $selected_ids, 'U_MCP_QUEUE' => $u_mcp_queue, 'U_MCP_REPORT' => ($auth->acl_get('m_report', $forum_id)) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=topic_view&t=' . $row['topic_id'] . '&action=reports') : '', diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php index 6733a73a7e..0367092726 100644 --- a/phpBB/includes/mcp/mcp_queue.php +++ b/phpBB/includes/mcp/mcp_queue.php @@ -64,6 +64,8 @@ class mcp_queue { case 'approve_details': + $this->tpl_name = 'mcp_post'; + $user->add_lang('posting'); $post_id = request_var('p', 0); @@ -167,8 +169,6 @@ class mcp_queue 'POST_ID' => $post_info['post_id']) ); - $this->tpl_name = 'mcp_post'; - break; case 'unapproved_topics': diff --git a/phpBB/includes/ucp/ucp_groups.php b/phpBB/includes/ucp/ucp_groups.php index 98d008da2c..418b68e436 100644 --- a/phpBB/includes/ucp/ucp_groups.php +++ b/phpBB/includes/ucp/ucp_groups.php @@ -312,7 +312,7 @@ class ucp_groups // Hide hidden groups unless user is an admin with group privileges $sql_and = ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel')) ? '<> ' . GROUP_SPECIAL : 'NOT IN (' . GROUP_SPECIAL . ', ' . GROUP_HIDDEN . ')'; - $sql = 'SELECT group_id, group_name, group_desc, group_desc_uid, group_desc_bitfield, group_desc_options, group_type + $sql = 'SELECT group_id, group_name, group_desc, group_desc_uid, group_desc_bitfield, group_desc_options, group_type, group_founder_manage FROM ' . GROUPS_TABLE . ' WHERE ' . ((sizeof($group_id_ary)) ? $db->sql_in_set('group_id', $group_id_ary, true) . ' AND ' : '') . " group_type $sql_and @@ -392,6 +392,12 @@ class ucp_groups { trigger_error($user->lang['NO_GROUP'] . $return_page); } + + // Check if the user is allowed to manage this group if set to founder only. + if ($user->data['user_type'] != USER_FOUNDER && $group_row['group_founder_manage']) + { + trigger_error($user->lang['NOT_ALLOWED_MANAGE_GROUP'] . $return_page, E_USER_WARNING); + } } switch ($action) @@ -403,10 +409,16 @@ class ucp_groups trigger_error($user->lang['NO_GROUP'] . $return_page); } - if (!($row = group_memberships($group_id, $user->data['user_id'])) || !$row[0]['group_leader']) + if (!($row = group_memberships($group_id, $user->data['user_id']))) { trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); } + list(, $row) = each($row); + + if (!$row['group_leader']) + { + trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); + } $file_uploads = (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on') ? true : false; $user->add_lang(array('acp/groups', 'acp/common')); @@ -487,6 +499,34 @@ class ucp_groups $submit_ary['avatar'] = ''; $submit_ary['avatar_type'] = $submit_ary['avatar_width'] = $submit_ary['avatar_height'] = 0; } + else if ($data['width'] && $data['height']) + { + // Only update the dimensions? + if ($config['avatar_max_width'] || $config['avatar_max_height']) + { + if ($data['width'] > $config['avatar_max_width'] || $data['height'] > $config['avatar_max_height']) + { + $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']); + } + } + + if (!sizeof($error)) + { + if ($config['avatar_min_width'] || $config['avatar_min_height']) + { + if ($data['width'] < $config['avatar_min_width'] || $data['height'] < $config['avatar_min_height']) + { + $error[] = sprintf($user->lang['AVATAR_WRONG_SIZE'], $config['avatar_min_width'], $config['avatar_min_height'], $config['avatar_max_width'], $config['avatar_max_height'], $data['width'], $data['height']); + } + } + } + + if (!sizeof($error)) + { + $submit_ary['avatar_width'] = $data['width']; + $submit_ary['avatar_height'] = $data['height']; + } + } if ((isset($submit_ary['avatar']) && $submit_ary['avatar'] && (!isset($group_row['group_avatar']) || $group_row['group_avatar'] != $submit_ary['avatar'])) || $delete) { @@ -656,29 +696,57 @@ class ucp_groups trigger_error($user->lang['NO_GROUP'] . $return_page); } - if (!($row = group_memberships($group_id, $user->data['user_id'])) || !$row[0]['group_leader']) + if (!($row = group_memberships($group_id, $user->data['user_id']))) { trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); } + list(, $row) = each($row); + + if (!$row['group_leader']) + { + trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); + } $user->add_lang(array('acp/groups', 'acp/common')); + $start = request_var('start', 0); + + // Grab the leaders - always, on every page... + $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending + FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug + WHERE ug.group_id = $group_id + AND u.user_id = ug.user_id + AND ug.group_leader = 1 + ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean"; + $result = $db->sql_query($sql); + + while ($row = $db->sql_fetchrow($result)) + { + $template->assign_block_vars('leader', array( + 'USERNAME' => $row['username'], + 'U_USER_VIEW' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']), + 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ? true : false, + 'JOINED' => ($row['user_regdate']) ? $user->format_date($row['user_regdate']) : ' - ', + 'USER_POSTS' => $row['user_posts'], + 'USER_ID' => $row['user_id']) + ); + } + $db->sql_freeresult($result); // Total number of group members (non-leaders) $sql = 'SELECT COUNT(user_id) AS total_members FROM ' . USER_GROUP_TABLE . " WHERE group_id = $group_id - AND group_leader <> 1"; + AND group_leader = 0"; $result = $db->sql_query($sql); $total_members = (int) $db->sql_fetchfield('total_members'); $db->sql_freeresult($result); - $start = request_var('start', 0); - // Grab the members $sql = 'SELECT u.user_id, u.username, u.username_clean, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND u.user_id = ug.user_id + AND ug.group_leader = 0 ORDER BY ug.group_leader DESC, ug.user_pending ASC, u.username_clean"; $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); @@ -695,7 +763,7 @@ class ucp_groups $pending = true; } - $template->assign_block_vars($row['group_leader'] ? 'leader' : 'member', array( + $template->assign_block_vars('member', array( 'USERNAME' => $row['username'], 'U_USER_VIEW' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u=' . $row['user_id']), 'S_GROUP_DEFAULT' => ($row['group_id'] == $group_id) ? true : false, @@ -734,10 +802,16 @@ class ucp_groups trigger_error($user->lang['NO_GROUP'] . $return_page); } - if (!($row = group_memberships($group_id, $user->data['user_id'])) || !$row[0]['group_leader']) + if (!($row = group_memberships($group_id, $user->data['user_id']))) { trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); } + list(, $row) = each($row); + + if (!$row['group_leader']) + { + trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); + } $user->add_lang('acp/groups'); @@ -755,10 +829,16 @@ class ucp_groups trigger_error($user->lang['NO_GROUP'] . $return_page); } - if (!($row = group_memberships($group_id, $user->data['user_id'])) || !$row[0]['group_leader']) + if (!($row = group_memberships($group_id, $user->data['user_id']))) { trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); } + list(, $row) = each($row); + + if (!$row['group_leader']) + { + trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); + } if (confirm_box(true)) { @@ -823,10 +903,16 @@ class ucp_groups $user->add_lang(array('acp/groups', 'acp/common')); - if (!($row = group_memberships($group_id, $user->data['user_id'])) || !$row[0]['group_leader']) + if (!($row = group_memberships($group_id, $user->data['user_id']))) { trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); } + list(, $row) = each($row); + + if (!$row['group_leader']) + { + trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); + } if (confirm_box(true)) { @@ -873,10 +959,16 @@ class ucp_groups trigger_error($user->lang['NO_USERS'] . $return_page); } - if (!($row = group_memberships($group_id, $user->data['user_id'])) || !$row[0]['group_leader']) + if (!($row = group_memberships($group_id, $user->data['user_id']))) { trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page); } + list(, $row) = each($row); + + if (!$row['group_leader']) + { + trigger_error($user->lang['NOT_LEADER_OF_GROUP'] . $return_page); + } $name_ary = array_unique(explode("\n", $name_ary)); $group_name = ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name']; diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index ce6087f424..c228e8daba 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -642,7 +642,7 @@ function compose_pm($id, $mode, $action) $post_id = request_var('p', 0); if ($config['allow_post_links']) { - $message_link = "[url=" . generate_board_url() . "/viewtopic.$phpEx?p={$post_id}#p{$post_id}]{$message_subject}[/url]\n\n"; + $message_link = "[url=" . generate_board_url() . "/viewtopic.$phpEx?p={$post_id}#p{$post_id}]{$user->lang['SUBJECT']}: {$message_subject}[/url]\n\n"; } else { |