diff options
Diffstat (limited to 'phpBB/includes/acp/acp_groups.php')
| -rw-r--r-- | phpBB/includes/acp/acp_groups.php | 155 | 
1 files changed, 143 insertions, 12 deletions
| diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index 486616c33d..b604e20094 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -2,9 +2,8 @@  /**  *  * @package acp -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -27,6 +26,7 @@ class acp_groups  	{  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads; +		global $request;  		$user->add_lang('acp/groups');  		$this->tpl_name = 'acp_groups'; @@ -35,6 +35,12 @@ class acp_groups  		$form_key = 'acp_groups';  		add_form_key($form_key); +		if ($mode == 'position') +		{ +			$this->manage_position(); +			return; +		} +  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx);  		// Check and set some common vars @@ -306,6 +312,7 @@ class acp_groups  						'rank'				=> request_var('group_rank', 0),  						'receive_pm'		=> isset($_REQUEST['group_receive_pm']) ? 1 : 0,  						'legend'			=> isset($_REQUEST['group_legend']) ? 1 : 0, +						'teampage'			=> isset($_REQUEST['group_teampage']) ? 1 : 0,  						'message_limit'		=> request_var('group_message_limit', 0),  						'max_recipients'	=> request_var('group_max_recipients', 0),  						'founder_manage'	=> 0, @@ -317,7 +324,8 @@ class acp_groups  						$submit_ary['founder_manage'] = isset($_REQUEST['group_founder_manage']) ? 1 : 0;  					} -					if (!empty($_FILES['uploadfile']['tmp_name']) || $data['uploadurl'] || $data['remotelink']) +					$uploadfile = $request->file('uploadfile'); +					if (!empty($uploadfile['tmp_name']) || $data['uploadurl'] || $data['remotelink'])  					{  						// Avatar stuff  						$var_ary = array( @@ -331,7 +339,7 @@ class acp_groups  						{  							$data['user_id'] = "g$group_id"; -							if ((!empty($_FILES['uploadfile']['tmp_name']) || $data['uploadurl']) && $can_upload) +							if ((!empty($uploadfile['tmp_name']) || $data['uploadurl']) && $can_upload)  							{  								list($submit_ary['avatar_type'], $submit_ary['avatar'], $submit_ary['avatar_width'], $submit_ary['avatar_height']) = avatar_upload($data, $error);  							} @@ -364,7 +372,7 @@ class acp_groups  						{  							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']); +								$error[] = phpbb_avatar_error_wrong_size($data['width'], $data['height']);  							}  						} @@ -374,7 +382,7 @@ class acp_groups  							{  								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']); +									$error[] = phpbb_avatar_error_wrong_size($data['width'], $data['height']);  								}  							}  						} @@ -408,6 +416,9 @@ class acp_groups  						// Only set the rank, colour, etc. if it's changed or if we're adding a new  						// group. This prevents existing group members being updated if no changes  						// were made. +						// However there are some attributes that need to be set everytime, +						// otherwise the group gets removed from the feature. +						$set_attributes = array('legend', 'teampage');  						$group_attributes = array();  						$test_variables = array( @@ -419,6 +430,7 @@ class acp_groups  							'avatar_height'	=> 'int',  							'receive_pm'	=> 'int',  							'legend'		=> 'int', +							'teampage'		=> 'int',  							'message_limit'	=> 'int',  							'max_recipients'=> 'int',  							'founder_manage'=> 'int', @@ -427,7 +439,7 @@ class acp_groups  						foreach ($test_variables as $test => $type)  						{ -							if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test])) +							if (isset($submit_ary[$test]) && ($action == 'add' || $group_row['group_' . $test] != $submit_ary[$test] || in_array($test, $set_attributes)))  							{  								settype($submit_ary[$test], $type);  								$group_attributes['group_' . $test] = $group_row['group_' . $test] = $submit_ary[$test]; @@ -584,6 +596,7 @@ class acp_groups  					'GROUP_RECEIVE_PM'		=> (isset($group_row['group_receive_pm']) && $group_row['group_receive_pm']) ? ' checked="checked"' : '',  					'GROUP_FOUNDER_MANAGE'	=> (isset($group_row['group_founder_manage']) && $group_row['group_founder_manage']) ? ' checked="checked"' : '',  					'GROUP_LEGEND'			=> (isset($group_row['group_legend']) && $group_row['group_legend']) ? ' checked="checked"' : '', +					'GROUP_TEAMPAGE'		=> (isset($group_row['group_teampage']) && $group_row['group_teampage']) ? ' checked="checked"' : '',  					'GROUP_MESSAGE_LIMIT'	=> (isset($group_row['group_message_limit'])) ? $group_row['group_message_limit'] : 0,  					'GROUP_MAX_RECIPIENTS'	=> (isset($group_row['group_max_recipients'])) ? $group_row['group_max_recipients'] : 0,  					'GROUP_COLOUR'			=> (isset($group_row['group_colour'])) ? $group_row['group_colour'] : '', @@ -615,7 +628,7 @@ class acp_groups  					'U_BACK'			=> $u_back,  					'U_SWATCH'			=> append_sid("{$phpbb_admin_path}swatch.$phpEx", 'form=settings&name=group_colour'),  					'U_ACTION'			=> "{$this->u_action}&action=$action&g=$group_id", -					'L_AVATAR_EXPLAIN'	=> sprintf($user->lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024)), +					'L_AVATAR_EXPLAIN'	=> phpbb_avatar_explanation_string(),  				));  				return; @@ -671,13 +684,15 @@ class acp_groups  					$s_action_options .= '<option value="' . $option . '">' . $user->lang['GROUP_' . $lang] . '</option>';  				} +				$base_url = $this->u_action . "&action=$action&g=$group_id"; +				phpbb_generate_template_pagination($template, $base_url, 'pagination', 'start', $total_members, $config['topics_per_page'], $start); +  				$template->assign_vars(array(  					'S_LIST'			=> true,  					'S_GROUP_SPECIAL'	=> ($group_row['group_type'] == GROUP_SPECIAL) ? true : false,  					'S_ACTION_OPTIONS'	=> $s_action_options, -					'S_ON_PAGE'		=> on_page($total_members, $config['topics_per_page'], $start), -					'PAGINATION'	=> generate_pagination($this->u_action . "&action=$action&g=$group_id", $total_members, $config['topics_per_page'], $start, true), +					'S_ON_PAGE'		=> phpbb_on_page($template, $user, $base_url, $total_members, $config['topics_per_page'], $start),  					'GROUP_NAME'	=> ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'],  					'U_ACTION'			=> $this->u_action . "&g=$group_id", @@ -793,6 +808,122 @@ class acp_groups  			}  		}  	} -} -?>
\ No newline at end of file +	public function manage_position() +	{ +		global $config, $db, $template, $user; + +		$this->tpl_name = 'acp_groups_position'; +		$this->page_title = 'ACP_GROUPS_POSITION'; + +		$field = request_var('field', ''); +		$action = request_var('action', ''); +		$group_id = request_var('g', 0); + +		if ($field && !in_array($field, array('legend', 'teampage'))) +		{ +			// Invalid mode +			trigger_error($user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING); +		} +		else if ($field) +		{ +			$group_position = new phpbb_group_positions($db, $field, $this->u_action); +		} + +		switch ($action) +		{ +			case 'set_config_legend': +				set_config('legend_sort_groupname', request_var('legend_sort_groupname', 0)); +			break; + +			case 'set_config_teampage': +				set_config('teampage_forums', request_var('teampage_forums', 0)); +				set_config('teampage_memberships', request_var('teampage_memberships', 0)); +			break; + +			case 'add': +				$group_position->add_group($group_id); +			break; + +			case 'delete': +				$group_position->delete_group($group_id); +			break; + +			case 'move_up': +				$group_position->move_up($group_id); +			break; + +			case 'move_down': +				$group_position->move_down($group_id); +			break; +		} + +		$sql = 'SELECT group_id, group_name, group_colour, group_type, group_legend +			FROM ' . GROUPS_TABLE . ' +			ORDER BY group_legend, group_name ASC'; +		$result = $db->sql_query($sql); + +		$s_group_select_legend = ''; +		while ($row = $db->sql_fetchrow($result)) +		{ +			$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']; +			if ($row['group_legend']) +			{ +				$template->assign_block_vars('legend', array( +					'GROUP_NAME' => $group_name, +					'GROUP_COLOUR' => ($row['group_colour']) ? ' style="color: #' . $row['group_colour'] . '"' : '', +					'GROUP_TYPE' => $user->lang[phpbb_group_positions::group_type_language($row['group_type'])], + +					'U_MOVE_DOWN' => "{$this->u_action}&field=legend&action=move_down&g=" . $row['group_id'], +					'U_MOVE_UP' => "{$this->u_action}&field=legend&action=move_up&g=" . $row['group_id'], +					'U_DELETE' => "{$this->u_action}&field=legend&action=delete&g=" . $row['group_id'], +				)); +			} +			else +			{ +				$s_group_select_legend .= '<option value="' . (int) $row['group_id'] . '">' . $group_name . '</option>'; +			} +		} +		$db->sql_freeresult($result); + +		$sql = 'SELECT group_id, group_name, group_colour, group_type, group_teampage +			FROM ' . GROUPS_TABLE . ' +			ORDER BY group_teampage, group_name ASC'; +		$result = $db->sql_query($sql); + +		$s_group_select_teampage = ''; +		while ($row = $db->sql_fetchrow($result)) +		{ +			$group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']; +			if ($row['group_teampage']) +			{ +				$template->assign_block_vars('teampage', array( +					'GROUP_NAME' => $group_name, +					'GROUP_COLOUR' => ($row['group_colour']) ? ' style="color: #' . $row['group_colour'] . '"' : '', +					'GROUP_TYPE' => $user->lang[phpbb_group_positions::group_type_language($row['group_type'])], + +					'U_MOVE_DOWN' => "{$this->u_action}&field=teampage&action=move_down&g=" . $row['group_id'], +					'U_MOVE_UP' => "{$this->u_action}&field=teampage&action=move_up&g=" . $row['group_id'], +					'U_DELETE' => "{$this->u_action}&field=teampage&action=delete&g=" . $row['group_id'], +				)); +			} +			else +			{ +				$s_group_select_teampage .= '<option value="' . (int) $row['group_id'] . '">' . $group_name . '</option>'; +			} +		} +		$db->sql_freeresult($result); + +		$template->assign_vars(array( +			'U_ACTION' => $this->u_action, +			'U_ACTION_LEGEND' => $this->u_action . '&field=legend', +			'U_ACTION_TEAMPAGE' => $this->u_action . '&field=teampage', + +			'S_GROUP_SELECT_LEGEND'		=> $s_group_select_legend, +			'S_GROUP_SELECT_TEAMPAGE'	=> $s_group_select_teampage, +			'DISPLAY_FORUMS'			=> ($config['teampage_forums']) ? true : false, +			'DISPLAY_MEMBERSHIPS'		=> $config['teampage_memberships'], +			'LEGEND_SORT_GROUPNAME'		=> ($config['legend_sort_groupname']) ? true : false, +		)); +	} +} | 
