diff options
Diffstat (limited to 'phpBB/includes/acp')
63 files changed, 587 insertions, 1803 deletions
| diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php index fc5f44e14f..c62fefae46 100644 --- a/phpBB/includes/acp/acp_attachments.php +++ b/phpBB/includes/acp/acp_attachments.php @@ -61,6 +61,10 @@ class acp_attachments  				$l_title = 'ACP_ORPHAN_ATTACHMENTS';  			break; +			case 'manage': +				$l_title = 'ACP_MANAGE_ATTACHMENTS'; +			break; +  			default:  				trigger_error('NO_MODE', E_USER_ERROR);  			break; @@ -1043,6 +1047,230 @@ class acp_attachments  				$db->sql_freeresult($result);  			break; + +			case 'manage': + +				if ($submit) +				{ +					$delete_files = (isset($_POST['delete'])) ? array_keys(request_var('delete', array('' => 0))) : array(); + +					if (sizeof($delete_files)) +					{ +						// Select those attachments we want to delete... +						$sql = 'SELECT real_filename +							FROM ' . ATTACHMENTS_TABLE . ' +							WHERE ' . $db->sql_in_set('attach_id', $delete_files) . ' +								AND is_orphan = 0'; +						$result = $db->sql_query($sql); +						while ($row = $db->sql_fetchrow($result)) +						{ +							$deleted_filenames[] = $row['real_filename']; +						} +						$db->sql_freeresult($result); + +						if ($num_deleted = delete_attachments('attach', $delete_files)) +						{ +							if (sizeof($delete_files) != $num_deleted) +							{ +								$error[] = $user->lang['FILES_GONE']; +							} +							add_log('admin', 'LOG_ATTACHMENTS_DELETED', implode(', ', $deleted_filenames)); +							$notify[] = sprintf($user->lang['LOG_ATTACHMENTS_DELETED'], implode(', ', $deleted_filenames)); +						} +						else +						{ +							$error[] = $user->lang['NO_FILES_TO_DELETE']; +						} +					} +				} + +				$template->assign_vars(array( +					'S_MANAGE'		=> true) +				); + +				$start		= request_var('start', 0); + +				// Sort keys +				$sort_days	= request_var('st', 0); +				$sort_key	= request_var('sk', 't'); +				$sort_dir	= request_var('sd', 'd'); + +				// Sorting +				$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); +				$sort_by_text = array('f' => $user->lang['FILENAME'], 't' => $user->lang['FILEDATE'], 's' => $user->lang['FILESIZE'], 'x' => $user->lang['EXTENSION'], 'd' => $user->lang['DOWNLOADS'],'p' => $user->lang['ATTACH_POST_TYPE'], 'u' => $user->lang['AUTHOR']); +				$sort_by_sql = array('f' => 'a.real_filename', 't' => 'a.filetime', 's' => 'a.filesize', 'x' => 'a.extension', 'd' => 'a.download_count', 'p' => 'a.in_message', 'u' => 'u.username'); + +				$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = ''; +				gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param); + +				$min_filetime = ($sort_days) ? (time() - ($sort_days * 86400)) : ''; +				$limit_filetime = ($min_filetime) ? " AND a.filetime >= $min_filetime " : ''; +				$start = ($sort_days && isset($_POST['sort'])) ? 0 : $start; + +				$attachments_per_page = (int) $config['topics_per_page']; + +				// Handle files stats resync +				$action = request_var('action', ''); +				$resync_files_stats = false; +				if ($action && $action = 'stats') +				{ +					if (!confirm_box(true)) +					{ +						confirm_box(false, $user->lang['RESYNC_FILES_STATS_CONFIRM'], build_hidden_fields(array( +							'i'			=> $id, +							'mode'		=> $mode, +							'action'	=> $action, +						))); +					} +					else +					{ +						$resync_files_stats = true; +						add_log('admin', 'LOG_RESYNC_FILES_STATS'); +					} +				} + +				// Check if files stats are accurate +				$sql = 'SELECT COUNT(attach_id) as num_files +					FROM ' . ATTACHMENTS_TABLE . ' +					WHERE is_orphan = 0'; +				$result = $db->sql_query($sql, 600); +				$num_files_real = (int) $db->sql_fetchfield('num_files'); +				if ($resync_files_stats === true) +				{ +					set_config('num_files', $num_files_real, true); +				} +				$db->sql_freeresult($result); + +				$sql = 'SELECT SUM(filesize) as upload_dir_size +					FROM ' . ATTACHMENTS_TABLE . ' +					WHERE is_orphan = 0'; +				$result = $db->sql_query($sql, 600); +				$total_size_real = (float) $db->sql_fetchfield('upload_dir_size'); +				if ($resync_files_stats === true) +				{ +					set_config('upload_dir_size', $total_size_real, true); +				} +				$db->sql_freeresult($result); + +				// Get current files stats +				$num_files = (int) $config['num_files']; +				$total_size = (float) $config['upload_dir_size']; + +				// Issue warning message if files stats are inaccurate +				if (($num_files != $num_files_real) || ($total_size != $total_size_real)) +				{ +					$error[] = sprintf($user->lang['FILES_STATS_WRONG'], $num_files_real, get_formatted_filesize($total_size_real)); + +					$template->assign_vars(array( +						'S_ACTION_OPTIONS'	=> ($auth->acl_get('a_board')) ? true : false, +						'U_ACTION'			=> $this->u_action,) +					);					 +				} + +				// Make sure $start is set to the last page if it exceeds the amount +				if ($start < 0 || $start > $num_files) +				{ +					$start = ($start < 0) ? 0 : floor(($num_files - 1) / $attachments_per_page) * $attachments_per_page; +				} + +				// If the user is trying to reach the second half of the attachments list, fetch it starting from the end +				$store_reverse = false; +				$sql_limit = $attachments_per_page; + +				if ($start > $num_files / 2) +				{ +					$store_reverse = true; + +					if ($start + $attachments_per_page > $num_files) +					{ +						$sql_limit = min($attachments_per_page, max(1, $num_files - $start)); +					} + +					// Select the sort order. Add time sort anchor for non-time sorting cases +					$sql_sort_anchor = ($sort_key != 't') ? ', a.filetime ' . (($sort_dir == 'd') ? 'ASC' : 'DESC') : ''; +					$sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'ASC' : 'DESC') . $sql_sort_anchor; +					$sql_start = max(0, $num_files - $sql_limit - $start); +				} +				else +				{ +					// Select the sort order. Add time sort anchor for non-time sorting cases +					$sql_sort_anchor = ($sort_key != 't') ? ', a.filetime ' . (($sort_dir == 'd') ? 'DESC' : 'ASC') : ''; +					$sql_sort_order = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC') . $sql_sort_anchor; +					$sql_start = $start; + +				} + +				$attachments_list = array(); + +				// Just get the files +				$sql = 'SELECT a.*, u.username, u.user_colour, t.topic_title +					FROM ' . ATTACHMENTS_TABLE . ' a  +					LEFT JOIN ' . USERS_TABLE . ' u ON (u.user_id = a.poster_id)  +					LEFT JOIN ' . TOPICS_TABLE . " t ON (a.topic_id = t.topic_id) +					WHERE a.is_orphan = 0 +						$limit_filetime +					ORDER BY $sql_sort_order"; +				$result = $db->sql_query_limit($sql, $sql_limit, $sql_start); + +				$i = ($store_reverse) ? $sql_limit - 1 : 0; + +				// Store increment value in a variable to save some conditional calls +				$i_increment = ($store_reverse) ? -1 : 1; +				while ($attachment_row = $db->sql_fetchrow($result)) +				{ +					$attachments_list[$i] = $attachment_row; +					$i = $i + $i_increment; +				} +				$db->sql_freeresult($result); + +				$template->assign_vars(array( +					'TOTAL_FILES'		=> $num_files, +					'TOTAL_SIZE'		=> get_formatted_filesize($total_size), +					'PAGINATION'		=> generate_pagination($this->u_action . "&$u_sort_param", $num_files, $attachments_per_page, $start, true), + +					'S_ON_PAGE'			=> on_page($num_files, $attachments_per_page, $start), +					'S_LIMIT_DAYS'		=> $s_limit_days, +					'S_SORT_KEY'		=> $s_sort_key, +					'S_SORT_DIR'		=> $s_sort_dir) +				); + +				// Grab extensions +				$extensions = $cache->obtain_attach_extensions(true); + +				for ($i = 0, $end = sizeof($attachments_list); $i < $end; ++$i) +				{ +					$row = $attachments_list[$i]; + +					$row['extension'] = strtolower(trim((string) $row['extension'])); +					$comment = ($row['attach_comment'] && !$row['in_message']) ? str_replace(array("\n", "\r"), array('<br />', "\n"), $row['attach_comment']) : ''; +					$display_cat = $extensions[$row['extension']]['display_cat']; +					$l_downloaded_viewed = ($display_cat == ATTACHMENT_CATEGORY_NONE) ? 'DOWNLOAD_COUNT' : 'VIEWED_COUNT'; +					$l_download_count = (!isset($row['download_count']) || (int) $row['download_count'] == 0) ? $user->lang[$l_downloaded_viewed . '_NONE'] : (((int) $row['download_count'] == 1) ? sprintf($user->lang[$l_downloaded_viewed], $row['download_count']) : sprintf($user->lang[$l_downloaded_viewed . 'S'], $row['download_count'])); + +					$template->assign_block_vars('attachments', array( +						'ATTACHMENT_POSTER'	=> get_username_string('full', (int) $row['poster_id'], (string) $row['username'], (string) $row['user_colour'], (string) $row['username']), +						'FILESIZE'			=> get_formatted_filesize((int) $row['filesize']), +						'FILETIME'			=> $user->format_date((int) $row['filetime']), +						'REAL_FILENAME'		=> (!$row['in_message']) ? utf8_wordwrap(utf8_basename((string) $row['real_filename']), 40, '<br />', true) : '', +						'PHYSICAL_FILENAME'	=> utf8_basename((string) $row['physical_filename']), +						'EXT_GROUP_NAME'	=> (!empty($extensions[$row['extension']]['group_name'])) ? $user->lang['EXT_GROUP_' . $extensions[$row['extension']]['group_name']] : '', +						'COMMENT'			=> $comment, +						'TOPIC_TITLE'		=> (!$row['in_message']) ? (string) $row['topic_title'] : '', +						'ATTACH_ID'			=> (int) $row['attach_id'], +						'POST_ID'			=> (int) $row['post_msg_id'], +						'TOPIC_ID'			=> (int) $row['topic_id'], +						'POST_IDS'			=> (!empty($post_ids[$row['attach_id']])) ? (int) $post_ids[$row['attach_id']] : '', + +						'L_DOWNLOAD_COUNT'	=> $l_download_count, + +						'S_IN_MESSAGE'		=> (bool) $row['in_message'], + +						'U_VIEW_TOPIC'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", "t={$row['topic_id']}&p={$row['post_msg_id']}") . "#p{$row['post_msg_id']}", +						'U_FILE'			=> append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'mode=view&id=' . $row['attach_id'])) +					); +				} + +			break;  		}  		if (sizeof($error)) @@ -1235,6 +1463,7 @@ class acp_attachments  	function perform_site_list()  	{  		global $db, $user; +		global $request;  		if (isset($_REQUEST['securesubmit']))  		{ @@ -1243,7 +1472,7 @@ class acp_attachments  			$ip_list = array_unique(explode("\n", $ips));  			$ip_list_log = implode(', ', $ip_list); -			$ip_exclude = (!empty($_POST['ipexclude'])) ? 1 : 0; +			$ip_exclude = (int) $request->variable('ipexclude', false, false, phpbb_request_interface::POST);  			$iplist = array();  			$hostlist = array(); @@ -1455,5 +1684,3 @@ class acp_attachments  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_ban.php b/phpBB/includes/acp/acp_ban.php index f8af1b86e1..d881fc6bdc 100644 --- a/phpBB/includes/acp/acp_ban.php +++ b/phpBB/includes/acp/acp_ban.php @@ -272,5 +272,3 @@ class acp_ban  		));  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index 0644b38eb1..a9574628e1 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -317,16 +317,7 @@ class acp_bbcodes  		$bbcode_tpl = trim($bbcode_tpl);  		$utf8 = strpos($bbcode_match, 'INTTEXT') !== false; -		// make sure we have utf8 support -		$utf8_pcre_properties = false; -		if (version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) -		{ -			// While this is the proper range of PHP versions, PHP may not be linked with the bundled PCRE lib and instead with an older version -			if (@preg_match('/\p{L}/u', 'a') !== false) -			{ -				$utf8_pcre_properties = true; -			} -		} +		$utf8_pcre_properties = phpbb_pcre_utf8_support();  		$fp_match = preg_quote($bbcode_match, '!');  		$fp_replace = preg_replace('#^\[(.*?)\]#', '[$1:$uid]', $bbcode_match); @@ -472,5 +463,3 @@ class acp_bbcodes  		);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php index 3ed5f40368..890bac62b7 100644 --- a/phpBB/includes/acp/acp_board.php +++ b/phpBB/includes/acp/acp_board.php @@ -96,8 +96,10 @@ class acp_board  						'load_moderators'		=> array('lang' => 'YES_MODERATORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),  						'load_jumpbox'			=> array('lang' => 'YES_JUMPBOX',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),  						'load_cpf_memberlist'	=> array('lang' => 'LOAD_CPF_MEMBERLIST',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'load_cpf_pm'			=> array('lang' => 'LOAD_CPF_PM',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain'	=> false),  						'load_cpf_viewprofile'	=> array('lang' => 'LOAD_CPF_VIEWPROFILE',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),  						'load_cpf_viewtopic'	=> array('lang' => 'LOAD_CPF_VIEWTOPIC',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'load_jquery_cdn'		=> array('lang' => 'LOAD_JQUERY_CDN',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),  						'legend3'					=> 'ACP_SUBMIT_CHANGES',  					) @@ -110,10 +112,10 @@ class acp_board  					'vars'	=> array(  						'legend1'				=> 'ACP_AVATAR_SETTINGS', -						'avatar_min_width'		=> array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false,), -						'avatar_min_height'		=> array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false,), -						'avatar_max_width'		=> array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false,), -						'avatar_max_height'		=> array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false,), +						'avatar_min_width'		=> array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false), +						'avatar_min_height'		=> array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false), +						'avatar_max_width'		=> array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false), +						'avatar_max_height'		=> array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),  						'allow_avatar'			=> array('lang' => 'ALLOW_AVATARS',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),  						'allow_avatar_local'	=> array('lang' => 'ALLOW_LOCAL',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), @@ -124,7 +126,7 @@ class acp_board  						'avatar_min'			=> array('lang' => 'MIN_AVATAR_SIZE',		'validate' => 'int:0',	'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),  						'avatar_max'			=> array('lang' => 'MAX_AVATAR_SIZE',		'validate' => 'int:0',	'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),  						'avatar_path'			=> array('lang' => 'AVATAR_STORAGE_PATH',	'validate' => 'rwpath',	'type' => 'text:20:255', 'explain' => true), -						'avatar_gallery_path'	=> array('lang' => 'AVATAR_GALLERY_PATH',	'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true) +						'avatar_gallery_path'	=> array('lang' => 'AVATAR_GALLERY_PATH',	'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true),  					)  				);  			break; @@ -296,7 +298,7 @@ class acp_board  						'cookie_domain'	=> array('lang' => 'COOKIE_DOMAIN',	'validate' => 'string',	'type' => 'text::255', 'explain' => false),  						'cookie_name'	=> array('lang' => 'COOKIE_NAME',	'validate' => 'string',	'type' => 'text::16', 'explain' => false),  						'cookie_path'	=> array('lang'	=> 'COOKIE_PATH',	'validate' => 'string',	'type' => 'text::255', 'explain' => false), -						'cookie_secure'	=> array('lang' => 'COOKIE_SECURE',	'validate' => 'bool',	'type' => 'radio:disabled_enabled', 'explain' => true) +						'cookie_secure'	=> array('lang' => 'COOKIE_SECURE',	'validate' => 'bool',	'type' => 'radio:disabled_enabled', 'explain' => true),  					)  				);  			break; @@ -327,6 +329,7 @@ class acp_board  						'legend3'				=> 'CUSTOM_PROFILE_FIELDS',  						'load_cpf_memberlist'	=> array('lang' => 'LOAD_CPF_MEMBERLIST',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), +						'load_cpf_pm'			=> array('lang' => 'LOAD_CPF_PM',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain'	=> false),  						'load_cpf_viewprofile'	=> array('lang' => 'LOAD_CPF_VIEWPROFILE',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),  						'load_cpf_viewtopic'	=> array('lang' => 'LOAD_CPF_VIEWTOPIC',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false), @@ -340,7 +343,7 @@ class acp_board  					'title'	=> 'ACP_AUTH_SETTINGS',  					'vars'	=> array(  						'legend1'		=> 'ACP_AUTH_SETTINGS', -						'auth_method'	=> array('lang' => 'AUTH_METHOD',	'validate' => 'string',	'type' => 'select', 'method' => 'select_auth_method', 'explain' => false) +						'auth_method'	=> array('lang' => 'AUTH_METHOD',	'validate' => 'string',	'type' => 'select', 'method' => 'select_auth_method', 'explain' => false),  					)  				);  			break; @@ -351,6 +354,7 @@ class acp_board  					'vars'	=> array(  						'legend1'				=> 'ACP_SERVER_SETTINGS',  						'gzip_compress'			=> array('lang' => 'ENABLE_GZIP',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true), +						'use_system_cron'		=> array('lang' => 'USE_SYSTEM_CRON',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),  						'legend2'				=> 'PATH_SETTINGS',  						'smilies_path'			=> array('lang' => 'SMILIES_PATH',		'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true), @@ -438,7 +442,7 @@ class acp_board  		$cfg_array = (isset($_REQUEST['config'])) ? utf8_normalize_nfc(request_var('config', array('' => ''), true)) : $this->new_config;  		$error = array(); -		// We validate the complete config if whished +		// We validate the complete config if wished  		validate_config_vars($display_vars['vars'], $cfg_array, $error);  		if ($submit && !check_form_key($form_key)) @@ -995,5 +999,3 @@ class acp_board  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_bots.php b/phpBB/includes/acp/acp_bots.php index d08cabb062..d253064e81 100644 --- a/phpBB/includes/acp/acp_bots.php +++ b/phpBB/includes/acp/acp_bots.php @@ -414,5 +414,3 @@ class acp_bots  		return ($row) ? false : true;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_captcha.php b/phpBB/includes/acp/acp_captcha.php index 1893eed14f..bef8ae0ea9 100644 --- a/phpBB/includes/acp/acp_captcha.php +++ b/phpBB/includes/acp/acp_captcha.php @@ -46,7 +46,7 @@ class acp_captcha  		// Delegate  		if ($configure)  		{ -			$config_captcha =& phpbb_captcha_factory::get_instance($selected); +			$config_captcha = phpbb_captcha_factory::get_instance($selected);  			$config_captcha->acp_page($id, $this);  		}  		else @@ -78,11 +78,11 @@ class acp_captcha  					// sanity check  					if (isset($captchas['available'][$selected]))  					{ -						$old_captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']); +						$old_captcha = phpbb_captcha_factory::get_instance($config['captcha_plugin']);  						$old_captcha->uninstall();  						set_config('captcha_plugin', $selected); -						$new_captcha =& phpbb_captcha_factory::get_instance($config['captcha_plugin']); +						$new_captcha = phpbb_captcha_factory::get_instance($config['captcha_plugin']);  						$new_captcha->install();  						add_log('admin', 'LOG_CONFIG_VISUAL'); @@ -113,7 +113,7 @@ class acp_captcha  					$captcha_select .= '<option value="' . $value . '"' . $current . ' class="disabled-option">' . $user->lang[$title] . '</option>';  				} -				$demo_captcha =& phpbb_captcha_factory::get_instance($selected); +				$demo_captcha = phpbb_captcha_factory::get_instance($selected);  				foreach ($config_vars as $config_var => $options)  				{ @@ -136,7 +136,7 @@ class acp_captcha  	{  		global $db, $user, $config; -		$captcha =& phpbb_captcha_factory::get_instance($selected); +		$captcha = phpbb_captcha_factory::get_instance($selected);  		$captcha->init(CONFIRM_REG);  		$captcha->execute_demo(); @@ -144,5 +144,3 @@ class acp_captcha  		exit_handler();  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_database.php b/phpBB/includes/acp/acp_database.php index 193dd001c0..632578ef2d 100644 --- a/phpBB/includes/acp/acp_database.php +++ b/phpBB/includes/acp/acp_database.php @@ -486,6 +486,8 @@ class base_extractor  	function base_extractor($download = false, $store = false, $format, $filename, $time)  	{ +		global $request; +  		$this->download = $download;  		$this->store = $store;  		$this->time = $time; @@ -530,7 +532,7 @@ class base_extractor  				break;  				case 'gzip': -					if ((isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'msie') === false) +					if (strpos($request->header('Accept-Encoding'), 'gzip') !== false && strpos(strtolower($request->header('User-Agent')), 'msie') === false)  					{  						ob_start('ob_gzhandler');  					} @@ -1007,43 +1009,8 @@ class sqlite_extractor extends base_extractor  	function write_data($table_name)  	{  		global $db; -		static $proper; - -		if (is_null($proper)) -		{ -			$proper = version_compare(PHP_VERSION, '5.1.3', '>='); -		} - -		if ($proper) -		{ -			$col_types = sqlite_fetch_column_types($db->db_connect_id, $table_name); -		} -		else -		{ -			$sql = "SELECT sql -				FROM sqlite_master -				WHERE type = 'table' -					AND name = '" . $table_name . "'"; -			$table_data = sqlite_single_query($db->db_connect_id, $sql); -			$table_data = preg_replace('#CREATE\s+TABLE\s+"?' . $table_name . '"?#i', '', $table_data); -			$table_data = trim($table_data); - -			preg_match('#\((.*)\)#s', $table_data, $matches); - -			$table_cols = explode(',', trim($matches[1])); -			foreach ($table_cols as $declaration) -			{ -				$entities = preg_split('#\s+#', trim($declaration)); -				$column_name = preg_replace('/"?([^"]+)"?/', '\1', $entities[0]); -				// Hit a primary key, those are not what we need :D -				if (empty($entities[1]) || (strtolower($entities[0]) === 'primary' && strtolower($entities[1]) === 'key')) -				{ -					continue; -				} -				$col_types[$column_name] = $entities[1]; -			} -		} +		$col_types = sqlite_fetch_column_types($db->db_connect_id, $table_name);  		$sql = "SELECT *  			FROM $table_name"; @@ -1615,7 +1582,7 @@ class mssql_extractor extends base_extractor  		}  		$this->flush($sql_data);  	} -	 +  	function write_data_mssqlnative($table_name)  	{  		global $db; @@ -1641,7 +1608,7 @@ class mssql_extractor extends base_extractor  		$row = new result_mssqlnative($result_fields);  		$i_num_fields = $row->num_fields(); -		 +  		for ($i = 0; $i < $i_num_fields; $i++)  		{  			$ary_type[$i] = $row->field_type($i); @@ -1654,7 +1621,7 @@ class mssql_extractor extends base_extractor  			WHERE COLUMNPROPERTY(object_id('$table_name'), COLUMN_NAME, 'IsIdentity') = 1";  		$result2 = $db->sql_query($sql);  		$row2 = $db->sql_fetchrow($result2); -		 +  		if (!empty($row2['has_identity']))  		{  			$sql_data .= "\nSET IDENTITY_INSERT $table_name ON\nGO\n"; @@ -1718,8 +1685,8 @@ class mssql_extractor extends base_extractor  			$sql_data .= "\nSET IDENTITY_INSERT $table_name OFF\nGO\n";  		}  		$this->flush($sql_data); -	}	 -	 +	} +  	function write_data_odbc($table_name)  	{  		global $db; @@ -2455,5 +2422,3 @@ function fgetd_seekless(&$fp, $delim, $read, $seek, $eof, $buffer = 8192)  	return false;  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_disallow.php b/phpBB/includes/acp/acp_disallow.php index e2176b7bcd..f29e902910 100644 --- a/phpBB/includes/acp/acp_disallow.php +++ b/phpBB/includes/acp/acp_disallow.php @@ -116,5 +116,3 @@ class acp_disallow  		);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_email.php b/phpBB/includes/acp/acp_email.php index e98b7a19a5..c7db4f7a39 100644 --- a/phpBB/includes/acp/acp_email.php +++ b/phpBB/includes/acp/acp_email.php @@ -284,5 +284,3 @@ class acp_email  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index 50e12a0f15..7fe8915ad1 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -1946,5 +1946,3 @@ class acp_forums  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php index 486616c33d..9aa54bed89 100644 --- a/phpBB/includes/acp/acp_groups.php +++ b/phpBB/includes/acp/acp_groups.php @@ -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, @@ -408,6 +415,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 +429,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 +438,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 +595,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'] : '', @@ -793,6 +805,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, +		)); +	} +} diff --git a/phpBB/includes/acp/acp_icons.php b/phpBB/includes/acp/acp_icons.php index 24f6cbbcbf..c848039c66 100644 --- a/phpBB/includes/acp/acp_icons.php +++ b/phpBB/includes/acp/acp_icons.php @@ -28,6 +28,7 @@ class acp_icons  	{  		global $db, $user, $auth, $template, $cache;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; +		global $request;  		$user->add_lang('acp/posting'); @@ -338,7 +339,7 @@ class acp_icons  				$image_display_on_posting = (isset($_POST['display_on_posting'])) ? request_var('display_on_posting', array('' => 0)) : array();  				// Ok, add the relevant bits if we are adding new codes to existing emoticons... -				if (!empty($_POST['add_additional_code'])) +				if ($request->variable('add_additional_code', false, false, phpbb_request_interface::POST))  				{  					$add_image			= request_var('add_image', '');  					$add_code			= utf8_normalize_nfc(request_var('add_code', '', true)); @@ -354,7 +355,7 @@ class acp_icons  						$image_width[$add_image] = request_var('add_width', 0);  						$image_height[$add_image] = request_var('add_height', 0); -						if (!empty($_POST['add_display_on_posting'])) +						if ($request->variable('add_display_on_posting', false, false, phpbb_request_interface::POST))  						{  							$image_display_on_posting[$add_image] = 1;  						} @@ -954,5 +955,3 @@ class acp_icons  		return $item_count;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php index c93cbc457f..0e4801f630 100644 --- a/phpBB/includes/acp/acp_inactive.php +++ b/phpBB/includes/acp/acp_inactive.php @@ -308,5 +308,3 @@ class acp_inactive  		$this->page_title = 'ACP_INACTIVE_USERS';  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_jabber.php b/phpBB/includes/acp/acp_jabber.php index 9925527b34..f010c5a5fa 100644 --- a/phpBB/includes/acp/acp_jabber.php +++ b/phpBB/includes/acp/acp_jabber.php @@ -127,5 +127,3 @@ class acp_jabber  		));  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_language.php b/phpBB/includes/acp/acp_language.php index 598b390302..ffa8df1848 100644 --- a/phpBB/includes/acp/acp_language.php +++ b/phpBB/includes/acp/acp_language.php @@ -34,6 +34,7 @@ class acp_language  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix;  		global $safe_mode, $file_uploads; +		global $request;  		include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -58,7 +59,7 @@ class acp_language  		if (isset($_POST['missing_file']))  		{  			$missing_file = request_var('missing_file', array('' => 0)); -			list($_REQUEST['language_file'], ) = array_keys($missing_file); +			$request->overwrite('language_file', array_shift(array_keys($missing_file)));  		}  		$selected_lang_file = request_var('language_file', '|common.' . $phpEx); @@ -68,6 +69,23 @@ class acp_language  		$this->language_directory = basename($this->language_directory);  		$this->language_file = basename($this->language_file); +		// detect language file type +		if ($this->language_directory == 'email') +		{ +			$language_file_type = 'email'; +			$request_default = ''; +		} +		else if (strpos($this->language_file, 'help_') === 0) +		{ +			$language_file_type = 'help'; +			$request_default = array(0 => array(0 => '')); +		} +		else +		{ +			$language_file_type = 'normal'; +			$request_default = array('' => ''); +		} +  		$user->add_lang('acp/language');  		$this->tpl_name = 'acp_language';  		$this->page_title = 'ACP_LANGUAGE_PACKS'; @@ -119,7 +137,7 @@ class acp_language  						'DATA'		=> $data,  						'NAME'		=> $user->lang[strtoupper($method . '_' . $data)],  						'EXPLAIN'	=> $user->lang[strtoupper($method . '_' . $data) . '_EXPLAIN'], -						'DEFAULT'	=> (!empty($_REQUEST[$data])) ? request_var($data, '') : $default +						'DEFAULT'	=> $request->variable($data, (string) $default),  					));  				} @@ -130,7 +148,7 @@ class acp_language  					'method'		=> $method)  				); -				$hidden_data .= build_hidden_fields(array('entry' => $_POST['entry']), true, STRIP); +				$hidden_data .= build_hidden_fields(array('entry' => $request->variable('entry', $request_default, true, phpbb_request_interface::POST)));  				$template->assign_vars(array(  					'S_UPLOAD'	=> true, @@ -187,12 +205,9 @@ class acp_language  					trigger_error($user->lang['FORM_INVALID']. adm_back_link($this->u_action), E_USER_WARNING);  				} -				if (!$lang_id || empty($_POST['entry'])) -				{ -					trigger_error($user->lang['NO_LANG_ID'] . adm_back_link($this->u_action), E_USER_WARNING); -				} +				$entry_value = $request->variable('entry', $request_default, true, phpbb_request_interface::POST); -				if ($this->language_directory != 'email' && !is_array($_POST['entry'])) +				if (!$lang_id || !$entry_value)  				{  					trigger_error($user->lang['NO_LANG_ID'] . adm_back_link($this->u_action), E_USER_WARNING);  				} @@ -291,10 +306,10 @@ class acp_language  					trigger_error(sprintf($user->lang['UNABLE_TO_WRITE_FILE'], $filename) . adm_back_link($this->u_action . '&id=' . $lang_id . '&action=details&language_file=' . urlencode($selected_lang_file)), E_USER_WARNING);  				} -				if ($this->language_directory == 'email') +				if ($language_file_type == 'email')  				{  					// Email Template -					$entry = $this->prepare_lang_entry($_POST['entry'], false); +					$entry = $this->prepare_lang_entry(htmlspecialchars_decode($entry_value), false);  					fwrite($fp, $entry);  				}  				else @@ -302,13 +317,13 @@ class acp_language  					$name = (($this->language_directory) ? $this->language_directory . '_' : '') . $this->language_file;  					$header = str_replace(array('{FILENAME}', '{LANG_NAME}', '{CHANGED}', '{AUTHOR}'), array($name, $row['lang_english_name'], date('Y-m-d', time()), $row['lang_author']), $this->language_file_header); -					if (strpos($this->language_file, 'help_') === 0) +					if ($language_file_type == 'help')  					{  						// Help File  						$header .= '$help = array(' . "\n";  						fwrite($fp, $header); -						foreach ($_POST['entry'] as $key => $value) +						foreach ($entry_value as $key => $value)  						{  							if (!is_array($value))  							{ @@ -319,7 +334,7 @@ class acp_language  							foreach ($value as $_key => $_value)  							{ -								$entry .= "\t\t" . (int) $_key . "\t=> '" . $this->prepare_lang_entry($_value) . "',\n"; +								$entry .= "\t\t" . (int) $_key . "\t=> '" . $this->prepare_lang_entry(htmlspecialchars_decode($_value)) . "',\n";  							}  							$entry .= "\t),\n"; @@ -329,15 +344,15 @@ class acp_language  						$footer = ");\n\n?>";  						fwrite($fp, $footer);  					} -					else +					else if ($language_file_type == 'normal')  					{  						// Language File  						$header .= $this->lang_header;  						fwrite($fp, $header); -						foreach ($_POST['entry'] as $key => $value) +						foreach ($entry_value as $key => $value)  						{ -							$entry = $this->format_lang_array($key, $value); +							$entry = $this->format_lang_array(htmlspecialchars_decode($key), htmlspecialchars_decode($value));  							fwrite($fp, $entry);  						} @@ -782,11 +797,6 @@ class acp_language  					$sql = 'DELETE FROM ' . PROFILE_FIELDS_LANG_TABLE . ' WHERE lang_id = ' . $lang_id;  					$db->sql_query($sql); -					$sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " WHERE image_lang = '" . $db->sql_escape($row['lang_iso']) . "'"; -					$result = $db->sql_query($sql); - -					$cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE); -  					add_log('admin', 'LOG_LANGUAGE_PACK_DELETED', $row['lang_english_name']);  					trigger_error(sprintf($user->lang['LANGUAGE_PACK_DELETED'], $row['lang_english_name']) . adm_back_link($this->u_action)); @@ -851,66 +861,6 @@ class acp_language  				$db->sql_query('INSERT INTO ' . LANG_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));  				$lang_id = $db->sql_nextid(); -				$valid_localized = array( -					'icon_back_top', 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply', -				); - -				$sql_ary = array(); - -				$sql = 'SELECT * -					FROM ' . STYLES_IMAGESET_TABLE; -				$result = $db->sql_query($sql); -				while ($imageset_row = $db->sql_fetchrow($result)) -				{ -					if (@file_exists("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$lang_pack['iso']}/imageset.cfg")) -					{ -						$cfg_data_imageset_data = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$lang_pack['iso']}/imageset.cfg"); -						foreach ($cfg_data_imageset_data as $image_name => $value) -						{ -							if (strpos($value, '*') !== false) -							{ -								if (substr($value, -1, 1) === '*') -								{ -									list($image_filename, $image_height) = explode('*', $value); -									$image_width = 0; -								} -								else -								{ -									list($image_filename, $image_height, $image_width) = explode('*', $value); -								} -							} -							else -							{ -								$image_filename = $value; -								$image_height = $image_width = 0; -							} - -							if (strpos($image_name, 'img_') === 0 && $image_filename) -							{ -								$image_name = substr($image_name, 4); -								if (in_array($image_name, $valid_localized)) -								{ -									$sql_ary[] = array( -										'image_name'		=> (string) $image_name, -										'image_filename'	=> (string) $image_filename, -										'image_height'		=> (int) $image_height, -										'image_width'		=> (int) $image_width, -										'imageset_id'		=> (int) $imageset_row['imageset_id'], -										'image_lang'		=> (string) $lang_pack['iso'], -									); -								} -							} -						} -					} -				} -				$db->sql_freeresult($result); - -				if (sizeof($sql_ary)) -				{ -					$db->sql_multi_insert(STYLES_IMAGESET_DATA_TABLE, $sql_ary); -					$cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE); -				} -  				// Now let's copy the default language entries for custom profile fields for this new language - makes admin's life easier.  				$sql = 'SELECT lang_id  					FROM ' . LANG_TABLE . " @@ -1454,5 +1404,3 @@ $lang = array_merge($lang, array(  		return $entry;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_logs.php b/phpBB/includes/acp/acp_logs.php index 2fc86e325f..065a6d1c22 100644 --- a/phpBB/includes/acp/acp_logs.php +++ b/phpBB/includes/acp/acp_logs.php @@ -27,6 +27,7 @@ class acp_logs  	{  		global $db, $user, $auth, $template, $cache;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; +		global $request;  		$user->add_lang('mcp'); @@ -35,8 +36,8 @@ class acp_logs  		$forum_id	= request_var('f', 0);  		$topic_id	= request_var('t', 0);  		$start		= request_var('start', 0); -		$deletemark = (!empty($_POST['delmarked'])) ? true : false; -		$deleteall	= (!empty($_POST['delall'])) ? true : false; +		$deletemark = $request->variable('delmarked', false, false, phpbb_request_interface::POST); +		$deleteall	= $request->variable('delall', false, false, phpbb_request_interface::POST);  		$marked		= request_var('mark', array(0));  		// Sort keys @@ -172,5 +173,3 @@ class acp_logs  		}  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php index 6d1c02248a..a922ef570c 100644 --- a/phpBB/includes/acp/acp_main.php +++ b/phpBB/includes/acp/acp_main.php @@ -610,5 +610,3 @@ class acp_main  		$this->page_title = 'ACP_MAIN';  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_modules.php b/phpBB/includes/acp/acp_modules.php index 75bc5766a9..52033b590c 100644 --- a/phpBB/includes/acp/acp_modules.php +++ b/phpBB/includes/acp/acp_modules.php @@ -1061,5 +1061,3 @@ class acp_modules  		return $this->lang_name($target['module_langname']);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_permission_roles.php b/phpBB/includes/acp/acp_permission_roles.php index 03ea5a39dd..3fe562b25d 100644 --- a/phpBB/includes/acp/acp_permission_roles.php +++ b/phpBB/includes/acp/acp_permission_roles.php @@ -567,5 +567,3 @@ class acp_permission_roles  		$auth_admin->acl_clear_prefetch();  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_permissions.php b/phpBB/includes/acp/acp_permissions.php index e9f0af5071..0708ed3e28 100644 --- a/phpBB/includes/acp/acp_permissions.php +++ b/phpBB/includes/acp/acp_permissions.php @@ -658,6 +658,7 @@ class acp_permissions  	function set_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)  	{  		global $user, $auth; +		global $request;  		$psubmit = request_var('psubmit', array(0 => array(0 => 0))); @@ -676,18 +677,17 @@ class acp_permissions  		list($ug_id, ) = each($psubmit);  		list($forum_id, ) = each($psubmit[$ug_id]); -		if (empty($_POST['setting']) || empty($_POST['setting'][$ug_id]) || empty($_POST['setting'][$ug_id][$forum_id]) || !is_array($_POST['setting'][$ug_id][$forum_id])) +		$settings = $request->variable('setting', array(0 => array(0 => array('' => 0))), false, phpbb_request_interface::POST); +		if (empty($settings) || empty($settings[$ug_id]) || empty($settings[$ug_id][$forum_id]))  		{  			trigger_error('WRONG_PERMISSION_SETTING_FORMAT', E_USER_WARNING);  		} -		// We obtain and check $_POST['setting'][$ug_id][$forum_id] directly and not using request_var() because request_var() -		// currently does not support the amount of dimensions required. ;) -		//		$auth_settings = request_var('setting', array(0 => array(0 => array('' => 0)))); -		$auth_settings = array_map('intval', $_POST['setting'][$ug_id][$forum_id]); +		$auth_settings = $settings[$ug_id][$forum_id];  		// Do we have a role we want to set? -		$assigned_role = (isset($_POST['role'][$ug_id][$forum_id])) ? (int) $_POST['role'][$ug_id][$forum_id] : 0; +		$roles = $request->variable('role', array(0 => array(0 => 0)), false, phpbb_request_interface::POST); +		$assigned_role = (isset($roles[$ug_id][$forum_id])) ? (int) $roles[$ug_id][$forum_id] : 0;  		// Do the admin want to set these permissions to other items too?  		$inherit = request_var('inherit', array(0 => array(0))); @@ -747,6 +747,7 @@ class acp_permissions  	function set_all_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)  	{  		global $user, $auth; +		global $request;  		// User or group to be set?  		$ug_type = (sizeof($user_id)) ? 'user' : 'group'; @@ -757,8 +758,8 @@ class acp_permissions  			trigger_error($user->lang['NO_AUTH_OPERATION'] . adm_back_link($this->u_action), E_USER_WARNING);  		} -		$auth_settings = (isset($_POST['setting'])) ? $_POST['setting'] : array(); -		$auth_roles = (isset($_POST['role'])) ? $_POST['role'] : array(); +		$auth_settings = $request->variable('setting', array(0 => array(0 => array('' => 0))), false, phpbb_request_interface::POST); +		$auth_roles = $request->variable('role', array(0 => array(0 => 0)), false, phpbb_request_interface::POST);  		$ug_ids = $forum_ids = array();  		// We need to go through the auth settings @@ -1311,5 +1312,3 @@ class acp_permissions  		);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_php_info.php b/phpBB/includes/acp/acp_php_info.php index 7dd345971a..65150a40c5 100644 --- a/phpBB/includes/acp/acp_php_info.php +++ b/phpBB/includes/acp/acp_php_info.php @@ -88,5 +88,3 @@ class acp_php_info  		return '<a name="' . str_replace(' ', '_', $matches[1]) . '">';  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_profile.php b/phpBB/includes/acp/acp_profile.php index 2e43b0545a..a18a01c44a 100644 --- a/phpBB/includes/acp/acp_profile.php +++ b/phpBB/includes/acp/acp_profile.php @@ -30,6 +30,7 @@ class acp_profile  	{  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; +		global $request;  		include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);  		include($phpbb_root_path . 'includes/functions_user.' . $phpEx); @@ -369,6 +370,7 @@ class acp_profile  						'field_show_profile'=> 0,  						'field_no_view'		=> 0,  						'field_show_on_reg'	=> 0, +						'field_show_on_pm'	=> 0,  						'field_show_on_vt'	=> 0,  						'lang_name'			=> utf8_normalize_nfc(request_var('field_ident', '', true)),  						'lang_explain'		=> '', @@ -380,7 +382,7 @@ class acp_profile  				// $exclude contains the data we gather in each step  				$exclude = array( -					1	=> array('field_ident', 'lang_name', 'lang_explain', 'field_option_none', 'field_show_on_reg', 'field_show_on_vt', 'field_required', 'field_hide', 'field_show_profile', 'field_no_view'), +					1	=> array('field_ident', 'lang_name', 'lang_explain', 'field_option_none', 'field_show_on_reg', 'field_show_on_pm', 'field_show_on_vt', 'field_required', 'field_hide', 'field_show_profile', 'field_no_view'),  					2	=> array('field_length', 'field_maxlen', 'field_minlen', 'field_validation', 'field_novalue', 'field_default_value'),  					3	=> array('l_lang_name', 'l_lang_explain', 'l_lang_default_value', 'l_lang_options')  				); @@ -406,6 +408,7 @@ class acp_profile  				$visibility_ary = array(  					'field_required',  					'field_show_on_reg', +					'field_show_on_pm',  					'field_show_on_vt',  					'field_show_profile',  					'field_hide', @@ -487,7 +490,8 @@ class acp_profile  							$cp->vars['field_default_value_day'] = $now['mday'];  							$cp->vars['field_default_value_month'] = $now['mon'];  							$cp->vars['field_default_value_year'] = $now['year']; -							$var = $_POST['field_default_value'] = 'now'; +							$var = 'now'; +							$request->overwrite('field_default_value', $var, phpbb_request_interface::POST);  						}  						else  						{ @@ -496,7 +500,8 @@ class acp_profile  								$cp->vars['field_default_value_day'] = request_var('field_default_value_day', 0);  								$cp->vars['field_default_value_month'] = request_var('field_default_value_month', 0);  								$cp->vars['field_default_value_year'] = request_var('field_default_value_year', 0); -								$var = $_POST['field_default_value'] = sprintf('%2d-%2d-%4d', $cp->vars['field_default_value_day'], $cp->vars['field_default_value_month'], $cp->vars['field_default_value_year']); +								$var = sprintf('%2d-%2d-%4d', $cp->vars['field_default_value_day'], $cp->vars['field_default_value_month'], $cp->vars['field_default_value_year']); +								$request->overwrite('field_default_value', $var, phpbb_request_interface::POST);  							}  							else  							{ @@ -688,7 +693,7 @@ class acp_profile  							}  							else  							{ -								$_new_key_ary[$key] = (is_array($_REQUEST[$key])) ? utf8_normalize_nfc(request_var($key, array(''), true)) : utf8_normalize_nfc(request_var($key, '', true)); +								$_new_key_ary[$key] = ($field_type == FIELD_BOOL && $key == 'lang_options') ? utf8_normalize_nfc(request_var($key, array(''), true)) : utf8_normalize_nfc(request_var($key, '', true));  							}  						}  					} @@ -731,6 +736,7 @@ class acp_profile  							'S_STEP_ONE'		=> true,  							'S_FIELD_REQUIRED'	=> ($cp->vars['field_required']) ? true : false,  							'S_SHOW_ON_REG'		=> ($cp->vars['field_show_on_reg']) ? true : false, +							'S_SHOW_ON_PM'		=> ($cp->vars['field_show_on_pm']) ? true : false,  							'S_SHOW_ON_VT'		=> ($cp->vars['field_show_on_vt']) ? true : false,  							'S_FIELD_HIDE'		=> ($cp->vars['field_hide']) ? true : false,  							'S_SHOW_PROFILE'	=> ($cp->vars['field_show_profile']) ? true : false, @@ -1047,6 +1053,7 @@ class acp_profile  			'field_validation'		=> $cp->vars['field_validation'],  			'field_required'		=> $cp->vars['field_required'],  			'field_show_on_reg'		=> $cp->vars['field_show_on_reg'], +			'field_show_on_pm'		=> $cp->vars['field_show_on_pm'],  			'field_show_on_vt'		=> $cp->vars['field_show_on_vt'],  			'field_hide'			=> $cp->vars['field_hide'],  			'field_show_profile'	=> $cp->vars['field_show_profile'], @@ -1622,5 +1629,3 @@ class acp_profile  		return $sql;  	}  } - -?> diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php index ffe20f86f5..6120c15d68 100644 --- a/phpBB/includes/acp/acp_prune.php +++ b/phpBB/includes/acp/acp_prune.php @@ -462,5 +462,3 @@ class acp_prune  		$db->sql_freeresult($result);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_ranks.php b/phpBB/includes/acp/acp_ranks.php index dfd7511427..41404db8e9 100644 --- a/phpBB/includes/acp/acp_ranks.php +++ b/phpBB/includes/acp/acp_ranks.php @@ -236,5 +236,3 @@ class acp_ranks  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_reasons.php b/phpBB/includes/acp/acp_reasons.php index dbc9fcb6cc..799fcf4c3f 100644 --- a/phpBB/includes/acp/acp_reasons.php +++ b/phpBB/includes/acp/acp_reasons.php @@ -371,5 +371,3 @@ class acp_reasons  		$db->sql_freeresult($result);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index 0cd67b1c34..a3061ae2da 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -232,15 +232,7 @@ class acp_search  		global $db, $user, $auth, $template, $cache;  		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx; -		if (isset($_REQUEST['action']) && is_array($_REQUEST['action'])) -		{ -			$action = request_var('action', array('' => false)); -			$action = key($action); -		} -		else -		{ -			$action = request_var('action', ''); -		} +		$action = request_var('action', '');  		$this->state = explode(',', $config['search_indexing_state']);  		if (isset($_POST['cancel'])) @@ -405,9 +397,8 @@ class acp_search  							$i = 0;  							while ($row = ($buffer ? $rows[$i++] : $db->sql_fetchrow($result)))  							{ -								// Indexing enabled for this forum or global announcement? -								// Global announcements get indexed by default. -								if (!$row['forum_id'] || (isset($forums[$row['forum_id']]) && $forums[$row['forum_id']])) +								// Indexing enabled for this forum +								if (isset($forums[$row['forum_id']]) && $forums[$row['forum_id']])  								{  									$this->search->index('post', $row['post_id'], $row['post_text'], $row['post_subject'], $row['poster_id'], $row['forum_id']);  								} @@ -639,5 +630,3 @@ class acp_search  		return $error;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_send_statistics.php b/phpBB/includes/acp/acp_send_statistics.php index b3baf54983..eb7154d114 100644 --- a/phpBB/includes/acp/acp_send_statistics.php +++ b/phpBB/includes/acp/acp_send_statistics.php @@ -16,8 +16,6 @@ if (!defined('IN_PHPBB'))  	exit;  } -include($phpbb_root_path . 'includes/questionnaire/questionnaire.' . $phpEx); -  /**  * @package acp  */ @@ -27,7 +25,9 @@ class acp_send_statistics  	function main($id, $mode)  	{ -		global $config, $template, $phpbb_admin_path, $phpEx; +		global $config, $template, $phpbb_admin_path, $phpbb_root_path, $phpEx; + +		include($phpbb_root_path . 'includes/questionnaire/questionnaire.' . $phpEx);  		$collect_url = "http://www.phpbb.com/stats/receive_stats.php"; @@ -86,5 +86,3 @@ class acp_send_statistics  		}  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index 3bc8c86500..fc9acbbcb8 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -26,8 +26,6 @@ class acp_styles  	var $style_cfg;  	var $template_cfg;  	var $theme_cfg; -	var $imageset_cfg; -	var $imageset_keys;  	function main($id, $mode)  	{ @@ -45,7 +43,7 @@ class acp_styles  		$bitfield->set(9);  		$bitfield->set(11);  		$bitfield->set(12); -		define('TEMPLATE_BITFIELD', $bitfield->get_base64()); +		$this->template_bitfield = $bitfield->get_base64();  		unset($bitfield);  		$user->add_lang('acp/styles'); @@ -58,7 +56,7 @@ class acp_styles  		$style_id = request_var('id', 0);  		// Fill the configuration variables -		$this->style_cfg = $this->template_cfg = $this->theme_cfg = $this->imageset_cfg = ' +		$this->style_cfg = $this->template_cfg = $this->theme_cfg = '  #  # phpBB {MODE} configuration file  # @@ -83,19 +81,6 @@ copyright = {COPYRIGHT}  version = {VERSION}  '; -		$this->theme_cfg .= ' -# Some configuration options - -# -# You have to turn this option on if you want to use the -# path template variables ({T_IMAGESET_PATH} for example) within -# your css file. -# This is mostly the case if you want to use language specific -# images within your css file. -# -parse_css_file = {PARSE_CSS_FILE} -'; -  		$this->template_cfg .= '  # Some configuration options @@ -105,33 +90,6 @@ parse_css_file = {PARSE_CSS_FILE}  # Templates cannot inherit from inheriting templates.  #'; -		$this->imageset_keys = array( -			'logos' => array( -				'site_logo', -			), -			'buttons'	=> array( -				'icon_back_top', 'icon_contact_aim', 'icon_contact_email', 'icon_contact_icq', 'icon_contact_jabber', 'icon_contact_msnm', 'icon_contact_pm', 'icon_contact_yahoo', 'icon_contact_www', 'icon_post_delete', 'icon_post_edit', 'icon_post_info', 'icon_post_quote', 'icon_post_report', 'icon_user_online', 'icon_user_offline', 'icon_user_profile', 'icon_user_search', 'icon_user_warn', 'button_pm_forward', 'button_pm_new', 'button_pm_reply', 'button_topic_locked', 'button_topic_new', 'button_topic_reply', -			), -			'icons'		=> array( -				'icon_post_target', 'icon_post_target_unread', 'icon_topic_attach', 'icon_topic_latest', 'icon_topic_newest', 'icon_topic_reported', 'icon_topic_unapproved', 'icon_friend', 'icon_foe', -			), -			'forums'	=> array( -				'forum_link', 'forum_read', 'forum_read_locked', 'forum_read_subforum', 'forum_unread', 'forum_unread_locked', 'forum_unread_subforum', 'subforum_read', 'subforum_unread' -			), -			'folders'	=> array( -				'topic_moved', 'topic_read', 'topic_read_mine', 'topic_read_hot', 'topic_read_hot_mine', 'topic_read_locked', 'topic_read_locked_mine', 'topic_unread', 'topic_unread_mine', 'topic_unread_hot', 'topic_unread_hot_mine', 'topic_unread_locked', 'topic_unread_locked_mine', 'sticky_read', 'sticky_read_mine', 'sticky_read_locked', 'sticky_read_locked_mine', 'sticky_unread', 'sticky_unread_mine', 'sticky_unread_locked', 'sticky_unread_locked_mine', 'announce_read', 'announce_read_mine', 'announce_read_locked', 'announce_read_locked_mine', 'announce_unread', 'announce_unread_mine', 'announce_unread_locked', 'announce_unread_locked_mine', 'global_read', 'global_read_mine', 'global_read_locked', 'global_read_locked_mine', 'global_unread', 'global_unread_mine', 'global_unread_locked', 'global_unread_locked_mine', 'pm_read', 'pm_unread', -			), -			'polls'		=> array( -				'poll_left', 'poll_center', 'poll_right', -			), -			'ui'		=> array( -				'upload_bar', -			), -			'user'		=> array( -				'user_icon1', 'user_icon2', 'user_icon3', 'user_icon4', 'user_icon5', 'user_icon6', 'user_icon7', 'user_icon8', 'user_icon9', 'user_icon10', -			), -		); -  		// Execute overall actions  		switch ($action)  		{ @@ -174,8 +132,6 @@ parse_css_file = {PARSE_CSS_FILE}  				{  					switch ($mode)  					{ -						case 'imageset': -							return $this->edit_imageset($style_id);  						case 'template':  							return $this->edit_template($style_id);  						case 'theme': @@ -251,7 +207,7 @@ parse_css_file = {PARSE_CSS_FILE}  				switch ($action)  				{ -					// Refresh template data stored in db and clear cache +					// Clear cache  					case 'refresh':  						$sql = 'SELECT * @@ -268,49 +224,13 @@ parse_css_file = {PARSE_CSS_FILE}  						if (confirm_box(true))  						{ -							$template_refreshed = ''; - -							// Only refresh database if the template is stored in the database -							if ($template_row['template_storedb'] && file_exists("{$phpbb_root_path}styles/{$template_row['template_path']}/template/")) -							{ -								$filelist = array('' => array()); - -								$sql = 'SELECT template_filename, template_mtime -									FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -									WHERE template_id = $style_id"; -								$result = $db->sql_query($sql); - -								while ($row = $db->sql_fetchrow($result)) -								{ -//									if (@filemtime("{$phpbb_root_path}styles/{$template_row['template_path']}/template/" . $row['template_filename']) > $row['template_mtime']) -//									{ -										// get folder info from the filename -										if (($slash_pos = strrpos($row['template_filename'], '/')) === false) -										{ -											$filelist[''][] = $row['template_filename']; -										} -										else -										{ -											$filelist[substr($row['template_filename'], 0, $slash_pos + 1)][] = substr($row['template_filename'], $slash_pos + 1, strlen($row['template_filename']) - $slash_pos - 1); -										} -//									} -								} -								$db->sql_freeresult($result); - -								$this->store_templates('update', $style_id, $template_row['template_path'], $filelist); -								unset($filelist); - -								$template_refreshed = $user->lang['TEMPLATE_REFRESHED'] . '<br />'; -								add_log('admin', 'LOG_TEMPLATE_REFRESHED', $template_row['template_name']); -							} -  							$this->clear_template_cache($template_row); -							trigger_error($template_refreshed . $user->lang['TEMPLATE_CACHE_CLEARED'] . adm_back_link($this->u_action)); +							trigger_error($user->lang['TEMPLATE_CACHE_CLEARED'] . adm_back_link($this->u_action));  						}  						else  						{ -							confirm_box(false, ($template_row['template_storedb']) ? $user->lang['CONFIRM_TEMPLATE_REFRESH'] : $user->lang['CONFIRM_TEMPLATE_CLEAR_CACHE'], build_hidden_fields(array( +							confirm_box(false, $user->lang['CONFIRM_TEMPLATE_CLEAR_CACHE'], build_hidden_fields(array(  								'i'			=> $id,  								'mode'		=> $mode,  								'action'	=> $action, @@ -325,209 +245,7 @@ parse_css_file = {PARSE_CSS_FILE}  			break;  			case 'theme': - -				switch ($action) -				{ -					// Refresh theme data stored in the database -					case 'refresh': - -						$sql = 'SELECT * -							FROM ' . STYLES_THEME_TABLE . " -							WHERE theme_id = $style_id"; -						$result = $db->sql_query($sql); -						$theme_row = $db->sql_fetchrow($result); -						$db->sql_freeresult($result); - -						if (!$theme_row) -						{ -							trigger_error($user->lang['NO_THEME'] . adm_back_link($this->u_action), E_USER_WARNING); -						} - -						if (!$theme_row['theme_storedb']) -						{ -							trigger_error($user->lang['THEME_ERR_REFRESH_FS'] . adm_back_link($this->u_action), E_USER_WARNING); -						} - -						if (confirm_box(true)) -						{ -							if ($theme_row['theme_storedb'] && file_exists("{$phpbb_root_path}styles/{$theme_row['theme_path']}/theme/stylesheet.css")) -							{ -								// Save CSS contents -								$sql_ary = array( -									'theme_mtime'	=> (int) filemtime("{$phpbb_root_path}styles/{$theme_row['theme_path']}/theme/stylesheet.css"), -									'theme_data'	=> $this->db_theme_data($theme_row) -								); - -								$sql = 'UPDATE ' . STYLES_THEME_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " -									WHERE theme_id = $style_id"; -								$db->sql_query($sql); - -								$cache->destroy('sql', STYLES_THEME_TABLE); - -								add_log('admin', 'LOG_THEME_REFRESHED', $theme_row['theme_name']); -								trigger_error($user->lang['THEME_REFRESHED'] . adm_back_link($this->u_action)); -							} -						} -						else -						{ -							confirm_box(false, $user->lang['CONFIRM_THEME_REFRESH'], build_hidden_fields(array( -								'i'			=> $id, -								'mode'		=> $mode, -								'action'	=> $action, -								'id'		=> $style_id -							))); -						} -					break; -				} - -				$this->frontend('theme', array('edit', 'details'), array('refresh', 'export', 'delete')); -			break; - -			case 'imageset': - -				switch ($action) -				{ -					case 'refresh': - -						$sql = 'SELECT * -							FROM ' . STYLES_IMAGESET_TABLE . " -							WHERE imageset_id = $style_id"; -						$result = $db->sql_query($sql); -						$imageset_row = $db->sql_fetchrow($result); -						$db->sql_freeresult($result); - -						if (!$imageset_row) -						{ -							trigger_error($user->lang['NO_IMAGESET'] . adm_back_link($this->u_action), E_USER_WARNING); -						} - -						if (confirm_box(true)) -						{ -							$sql_ary = array(); - -							$imageset_definitions = array(); -							foreach ($this->imageset_keys as $topic => $key_array) -							{ -								$imageset_definitions = array_merge($imageset_definitions, $key_array); -							} - -							$cfg_data_imageset = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/imageset.cfg"); - -							$db->sql_transaction('begin'); - -							$sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . ' -								WHERE imageset_id = ' . $style_id; -							$result = $db->sql_query($sql); - -							foreach ($cfg_data_imageset as $image_name => $value) -							{ -								if (strpos($value, '*') !== false) -								{ -									if (substr($value, -1, 1) === '*') -									{ -										list($image_filename, $image_height) = explode('*', $value); -										$image_width = 0; -									} -									else -									{ -										list($image_filename, $image_height, $image_width) = explode('*', $value); -									} -								} -								else -								{ -									$image_filename = $value; -									$image_height = $image_width = 0; -								} - -								if (strpos($image_name, 'img_') === 0 && $image_filename) -								{ -									$image_name = substr($image_name, 4); -									if (in_array($image_name, $imageset_definitions)) -									{ -										$sql_ary[] = array( -											'image_name'		=> (string) $image_name, -											'image_filename'	=> (string) $image_filename, -											'image_height'		=> (int) $image_height, -											'image_width'		=> (int) $image_width, -											'imageset_id'		=> (int) $style_id, -											'image_lang'		=> '', -										); -									} -								} -							} - -							$sql = 'SELECT lang_dir -								FROM ' . LANG_TABLE; -							$result = $db->sql_query($sql); - -							while ($row = $db->sql_fetchrow($result)) -							{ -								if (@file_exists("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$row['lang_dir']}/imageset.cfg")) -								{ -									$cfg_data_imageset_data = parse_cfg_file("{$phpbb_root_path}styles/{$imageset_row['imageset_path']}/imageset/{$row['lang_dir']}/imageset.cfg"); -									foreach ($cfg_data_imageset_data as $image_name => $value) -									{ -										if (strpos($value, '*') !== false) -										{ -											if (substr($value, -1, 1) === '*') -											{ -												list($image_filename, $image_height) = explode('*', $value); -												$image_width = 0; -											} -											else -											{ -												list($image_filename, $image_height, $image_width) = explode('*', $value); -											} -										} -										else -										{ -											$image_filename = $value; -											$image_height = $image_width = 0; -										} - -										if (strpos($image_name, 'img_') === 0 && $image_filename) -										{ -											$image_name = substr($image_name, 4); -											if (in_array($image_name, $imageset_definitions)) -											{ -												$sql_ary[] = array( -													'image_name'		=> (string) $image_name, -													'image_filename'	=> (string) $image_filename, -													'image_height'		=> (int) $image_height, -													'image_width'		=> (int) $image_width, -													'imageset_id'		=> (int) $style_id, -													'image_lang'		=> (string) $row['lang_dir'], -												); -											} -										} -									} -								} -							} -							$db->sql_freeresult($result); - -							$db->sql_multi_insert(STYLES_IMAGESET_DATA_TABLE, $sql_ary); - -							$db->sql_transaction('commit'); - -							$cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE); -							$cache->destroy('imageset_site_logo_md5'); - -							add_log('admin', 'LOG_IMAGESET_REFRESHED', $imageset_row['imageset_name']); -							trigger_error($user->lang['IMAGESET_REFRESHED'] . adm_back_link($this->u_action)); -						} -						else -						{ -							confirm_box(false, $user->lang['CONFIRM_IMAGESET_REFRESH'], build_hidden_fields(array( -								'i'			=> $id, -								'mode'		=> $mode, -								'action'	=> $action, -								'id'		=> $style_id -							))); -						} -					break; -				} - -				$this->frontend('imageset', array('edit', 'details'), array('refresh', 'export', 'delete')); +				$this->frontend('theme', array('edit', 'details'), array('export', 'delete'));  			break;  		}  	} @@ -567,10 +285,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$l_prefix = strtoupper($mode); @@ -720,7 +434,7 @@ parse_css_file = {PARSE_CSS_FILE}  		$template_file = preg_replace('#\.{2,}#', '.', $template_file);  		// Retrieve some information about the template -		$sql = 'SELECT template_storedb, template_path, template_name +		$sql = 'SELECT template_path, template_name  			FROM ' . STYLES_TEMPLATE_TABLE . "  			WHERE template_id = $template_id";  		$result = $db->sql_query($sql); @@ -732,6 +446,32 @@ parse_css_file = {PARSE_CSS_FILE}  			trigger_error($user->lang['NO_TEMPLATE'] . adm_back_link($this->u_action), E_USER_WARNING);  		} +		// Get the filesystem location of the current file +		$template_path = "{$phpbb_root_path}styles/{$template_info['template_path']}/template"; +		$file = "$template_path/$template_file"; + +		if ($template_file) +		{ +			$l_not_writable = sprintf($user->lang['TEMPLATE_FILE_NOT_WRITABLE'], htmlspecialchars($template_file)) . adm_back_link($this->u_action); + +			if ($safe_mode) +			{ +				trigger_error($l_not_writable, E_USER_WARNING); +			} + +			if (file_exists($file) && is_file($file) && is_readable($file)) +			{ +				if (!phpbb_is_writable($file)) +				{ +					trigger_error($l_not_writable, E_USER_WARNING); +				} +			} +			else +			{ +				trigger_error($user->lang['NO_TEMPLATE'] . adm_back_link($this->u_action), E_USER_WARNING); +			} +		} +  		if ($save_changes && !check_form_key('acp_styles'))  		{  			trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING); @@ -744,50 +484,14 @@ parse_css_file = {PARSE_CSS_FILE}  		// save changes to the template if the user submitted any  		if ($save_changes && $template_file)  		{ -			// Get the filesystem location of the current file -			$file = "{$phpbb_root_path}styles/{$template_info['template_path']}/template/$template_file"; -			$additional = ''; - -			// If the template is stored on the filesystem try to write the file else store it in the database -			if (!$safe_mode && !$template_info['template_storedb'] && file_exists($file) && phpbb_is_writable($file)) +			// Try to write the file +			if (!($fp = @fopen($file, 'wb')))  			{ -				if (!($fp = @fopen($file, 'wb'))) -				{ -					// File exists and is writeable, but still not able to be written to -					trigger_error(sprintf($user->lang['TEMPLATE_FILE_NOT_WRITABLE'], htmlspecialchars($template_file)) . adm_back_link($this->u_action), E_USER_WARNING); -				} -				fwrite($fp, $template_data); -				fclose($fp); -			} -			else -			{ -				$db->sql_transaction('begin'); - -				// If it's not stored in the db yet, then update the template setting and store all template files in the db -				if (!$template_info['template_storedb']) -				{ -					if ($super = $this->get_super('template', $template_id)) -					{ -						$this->store_in_db('template', $super['template_id']); -					} -					else -					{ -						$this->store_in_db('template', $template_id); -					} - -					add_log('admin', 'LOG_TEMPLATE_EDIT_DETAILS', $template_info['template_name']); -					$additional .= '<br />' . $user->lang['EDIT_TEMPLATE_STORED_DB']; -				} - -				// Update the template_data table entry for this template file -				$sql = 'UPDATE ' . STYLES_TEMPLATE_DATA_TABLE . " -					SET template_data = '" . $db->sql_escape($template_data) . "', template_mtime = " . time() . " -					WHERE template_id = $template_id -						AND template_filename = '" . $db->sql_escape($template_file) . "'"; -				$db->sql_query($sql); - -				$db->sql_transaction('commit'); +				// File exists and is writeable, but still not able to be written to +				trigger_error($l_not_writable, E_USER_WARNING);  			} +			fwrite($fp, $template_data); +			fclose($fp);  			// destroy the cached version of the template (filename without extension)  			$this->clear_template_cache($template_info, array(substr($template_file, 0, -5))); @@ -795,56 +499,22 @@ parse_css_file = {PARSE_CSS_FILE}  			$cache->destroy('sql', STYLES_TABLE);  			add_log('admin', 'LOG_TEMPLATE_EDIT', $template_info['template_name'], $template_file); -			trigger_error($user->lang['TEMPLATE_FILE_UPDATED'] . $additional . adm_back_link($this->u_action . "&action=edit&id=$template_id&text_rows=$text_rows&template_file=$template_file")); +			trigger_error($user->lang['TEMPLATE_FILE_UPDATED'] . adm_back_link($this->u_action . "&action=edit&id=$template_id&text_rows=$text_rows&template_file=$template_file"));  		}  		// Generate a category array containing template filenames -		if (!$template_info['template_storedb']) -		{ -			$template_path = "{$phpbb_root_path}styles/{$template_info['template_path']}/template"; -			$filelist = filelist($template_path, '', 'html'); -			$filelist[''] = array_diff($filelist[''], array('bbcode.html')); +		$filelist = filelist($template_path, '', 'html'); +		$filelist[''] = array_diff($filelist[''], array('bbcode.html')); -			if ($template_file) -			{ -				if (!file_exists($template_path . "/$template_file") || !($template_data = file_get_contents($template_path . "/$template_file"))) -				{ -					trigger_error($user->lang['NO_TEMPLATE'] . adm_back_link($this->u_action), E_USER_WARNING); -				} -			} -		} -		else +		if ($template_file)  		{ -			$sql = 'SELECT * -				FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -				WHERE template_id = $template_id"; -			$result = $db->sql_query($sql); +			$template_data = file_get_contents($file); -			$filelist = array('' => array()); -			while ($row = $db->sql_fetchrow($result)) +			if (!$template_data)  			{ -				$file_info = pathinfo($row['template_filename']); - -				if (($file_info['basename'] != 'bbcode') && ($file_info['extension'] == 'html')) -				{ -					if (($file_info['dirname'] == '.') || empty($file_info['dirname'])) -					{ -						$filelist[''][] = $row['template_filename']; -					} -					else -					{ -						$filelist[$file_info['dirname'] . '/'][] = $file_info['basename']; -					} -				} - -				if ($row['template_filename'] == $template_file) -				{ -					$template_data = $row['template_data']; -				} +				trigger_error($user->lang['NO_TEMPLATE'] . adm_back_link($this->u_action), E_USER_WARNING);  			} -			$db->sql_freeresult($result); -			unset($file_info);  		}  		if (empty($filelist[''])) @@ -1015,35 +685,6 @@ parse_css_file = {PARSE_CSS_FILE}  			adm_page_footer();  		} -		$filemtime = array(); -		if ($template_row['template_storedb']) -		{ -			$ids = array(); -			if (isset($template_row['template_inherits_id']) && $template_row['template_inherits_id']) -			{ -				$ids[] = $template_row['template_inherits_id']; -			} -			$ids[] = $template_row['template_id']; - -			$filemtime 			= array(); -			$file_template_db	= array(); - -			foreach ($ids as $id) -			{ -				$sql = 'SELECT template_filename, template_mtime -					FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -					WHERE template_id = $id"; -				$result = $db->sql_query($sql); - -				while ($row = $db->sql_fetchrow($result)) -				{ -					$filemtime[$row['template_filename']] = $row['template_mtime']; -					$file_template_db[$row['template_filename']] = $id; -				} -				$db->sql_freeresult($result); -			} -		} -  		// Get a list of cached template files and then retrieve additional information about them  		$file_ary = $this->template_cache_filelist($template_row['template_path']); @@ -1066,30 +707,10 @@ parse_css_file = {PARSE_CSS_FILE}  			$file_tpl = "{$phpbb_root_path}styles/{$template_row['template_path']}/template/$tpl_file.html";  			$inherited = false; -			if (isset($template_row['template_inherits_id']) && $template_row['template_inherits_id']) -			{ -				if (!$template_row['template_storedb']) -				{ -					if (!file_exists($file_tpl)) -					{ -						$file_tpl = "{$phpbb_root_path}styles/{$template_row['template_inherit_path']}/template/$tpl_file.html"; -						$inherited = true; -					} -				} -				else -				{ -					if ($file_template_db[$file . '.html'] == $template_row['template_inherits_id']) -					{ -						$file_tpl = "{$phpbb_root_path}styles/{$template_row['template_inherit_path']}/template/$tpl_file.html"; -						$inherited = true; -					} -				} -			} - -			// Correct the filename if it is stored in database and the file is in a subfolder. -			if ($template_row['template_storedb']) +			if (isset($template_row['template_inherits_id']) && $template_row['template_inherits_id'] && !file_exists($file_tpl))  			{ -				$file = str_replace('.', '/', $file); +				$file_tpl = "{$phpbb_root_path}styles/{$template_row['template_inherit_path']}/template/$tpl_file.html"; +				$inherited = true;  			}  			$template->assign_block_vars('file', array( @@ -1099,10 +720,9 @@ parse_css_file = {PARSE_CSS_FILE}  				'FILENAME'		=> $file,  				'FILENAME_PATH'	=> $file_tpl,  				'FILESIZE'		=> get_formatted_filesize(filesize("{$phpbb_root_path}cache/$filename")), -				'MODIFIED'		=> $user->format_date((!$template_row['template_storedb']) ? filemtime($file_tpl) : $filemtime[$file . '.html'])) -			); +				'MODIFIED'		=> $user->format_date(filemtime($file_tpl)), +			));  		} -		unset($filemtime);  		$template->assign_vars(array(  			'S_CACHE'			=> true, @@ -1136,7 +756,7 @@ parse_css_file = {PARSE_CSS_FILE}  		$theme_file = str_replace('..', '.', $theme_file);  		// Retrieve some information about the theme -		$sql = 'SELECT theme_storedb, theme_path, theme_name, theme_data +		$sql = 'SELECT theme_path, theme_name  			FROM ' . STYLES_THEME_TABLE . "  			WHERE theme_id = $theme_id";  		$result = $db->sql_query($sql); @@ -1147,71 +767,62 @@ parse_css_file = {PARSE_CSS_FILE}  		}  		$db->sql_freeresult($result); -		// save changes to the theme if the user submitted any -		if ($save_changes) +		// Get the filesystem location of the current file +		$theme_path = "{$phpbb_root_path}styles/{$theme_info['theme_path']}/theme"; +		$file = "$theme_path/$theme_file"; + +		if ($theme_file)  		{ -			// Get the filesystem location of the current file -			$file = "{$phpbb_root_path}styles/{$theme_info['theme_path']}/theme/$theme_file"; -			$additional = ''; -			$message = $user->lang['THEME_UPDATED']; +			$l_not_writable = sprintf($user->lang['THEME_FILE_NOT_WRITABLE'], htmlspecialchars($theme_file)) . adm_back_link($this->u_action); -			// If the theme is stored on the filesystem try to write the file else store it in the database -			if (!$safe_mode && !$theme_info['theme_storedb'] && file_exists($file) && phpbb_is_writable($file)) +			if ($safe_mode)  			{ -				if (!($fp = @fopen($file, 'wb'))) +				trigger_error($l_not_writable, E_USER_WARNING); +			} + +			if (file_exists($file) && is_file($file) && is_readable($file)) +			{ +				if (!phpbb_is_writable($file))  				{ -					trigger_error($user->lang['NO_THEME'] . adm_back_link($this->u_action), E_USER_WARNING); +					trigger_error($l_not_writable, E_USER_WARNING);  				} -				fwrite($fp, $theme_data); -				fclose($fp);  			}  			else  			{ -				// Write stylesheet to db -				$sql_ary = array( -					'theme_mtime'		=> time(), -					'theme_storedb'		=> 1, -					'theme_data'		=> $this->db_theme_data($theme_info, $theme_data), -				); -				$sql = 'UPDATE ' . STYLES_THEME_TABLE . ' -					SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' -					WHERE theme_id = ' . $theme_id; -				$db->sql_query($sql); +				trigger_error($user->lang['NO_THEME'] . adm_back_link($this->u_action), E_USER_WARNING); +			} +		} -				$cache->destroy('sql', STYLES_THEME_TABLE); +		// save changes to the theme if the user submitted any +		if ($save_changes && $theme_file) +		{ +			$message = $user->lang['THEME_UPDATED']; -				// notify the user if the theme was not stored in the db before his modification -				if (!$theme_info['theme_storedb']) -				{ -					add_log('admin', 'LOG_THEME_EDIT_DETAILS', $theme_info['theme_name']); -					$message .= '<br />' . $user->lang['EDIT_THEME_STORED_DB']; -				} +			if (!($fp = @fopen($file, 'wb'))) +			{ +				trigger_error($l_not_writable, E_USER_WARNING);  			} +			fwrite($fp, $theme_data); +			fclose($fp); +  			$cache->destroy('sql', STYLES_THEME_TABLE); -			add_log('admin', (!$theme_info['theme_storedb']) ? 'LOG_THEME_EDIT_FILE' : 'LOG_THEME_EDIT', $theme_info['theme_name'], (!$theme_info['theme_storedb']) ? $theme_file : ''); +			add_log('admin', 'LOG_THEME_EDIT_FILE', $theme_info['theme_name'], $theme_file);  			trigger_error($message . adm_back_link($this->u_action . "&action=edit&id=$theme_id&template_file=$theme_file&text_rows=$text_rows"));  		}  		// Generate a category array containing theme filenames -		if (!$theme_info['theme_storedb']) -		{ -			$theme_path = "{$phpbb_root_path}styles/{$theme_info['theme_path']}/theme"; +		$filelist = filelist($theme_path, '', 'css'); -			$filelist = filelist($theme_path, '', 'css'); +		if ($theme_file) +		{ +			$theme_data = file_get_contents($file); -			if ($theme_file) +			if (!$theme_data)  			{ -				if (!file_exists($theme_path . "/$theme_file") || !($theme_data = file_get_contents($theme_path . "/$theme_file"))) -				{ -					trigger_error($user->lang['NO_THEME'] . adm_back_link($this->u_action), E_USER_WARNING); -				} +				trigger_error($user->lang['NO_THEME'] . adm_back_link($this->u_action), E_USER_WARNING);  			}  		} -		else -		{ -			$theme_data = &$theme_info['theme_data']; -		}  		// Now create the categories  		$filelist_cats[''] = array(); @@ -1274,7 +885,6 @@ parse_css_file = {PARSE_CSS_FILE}  		$template->assign_vars(array(  			'S_EDIT_THEME'		=> true,  			'S_HIDDEN_FIELDS'	=> build_hidden_fields(array('template_file' => $theme_file)), -			'S_THEME_IN_DB'		=> $theme_info['theme_storedb'],  			'S_TEMPLATES'		=> $tpl_options,  			'U_ACTION'			=> $this->u_action . "&action=edit&id=$theme_id&text_rows=$text_rows", @@ -1292,289 +902,12 @@ parse_css_file = {PARSE_CSS_FILE}  			'SELECTED_TEMPLATE'	=> $theme_info['theme_name'],  			'TEMPLATE_FILE'		=> $theme_file,  			'TEMPLATE_DATA'		=> utf8_htmlspecialchars($theme_data), -			'TEXT_ROWS'			=> $text_rows) -		); -	} - -	/** -	* Edit imagesets -	* -	* @param int $imageset_id specifies which imageset is being edited -	*/ -	function edit_imageset($imageset_id) -	{ -		global $db, $user, $phpbb_root_path, $cache, $template; - -		$this->page_title = 'EDIT_IMAGESET'; - -		if (!$imageset_id) -		{ -			trigger_error($user->lang['NO_IMAGESET'] . adm_back_link($this->u_action), E_USER_WARNING); -		} - -		$update		= (isset($_POST['update'])) ? true : false; - -		$imgname	= request_var('imgname', 'site_logo'); -		$imgname	= preg_replace('#[^a-z0-9\-+_]#i', '', $imgname); -		$sql_extra = $imgnamelang = ''; - -		$sql = 'SELECT imageset_path, imageset_name -			FROM ' . STYLES_IMAGESET_TABLE . " -			WHERE imageset_id = $imageset_id"; -		$result = $db->sql_query($sql); -		$imageset_row = $db->sql_fetchrow($result); -		$db->sql_freeresult($result); - -		if (!$imageset_row) -		{ -			trigger_error($user->lang['NO_IMAGESET'] . adm_back_link($this->u_action), E_USER_WARNING); -		} - -		$imageset_path		= $imageset_row['imageset_path']; -		$imageset_name		= $imageset_row['imageset_name']; - -		if (strpos($imgname, '-') !== false) -		{ -			list($imgname, $imgnamelang) = explode('-', $imgname); -			$sql_extra = " AND image_lang IN ('" . $db->sql_escape($imgnamelang) . "', '')"; -		} - -		$sql = 'SELECT image_filename, image_width, image_height, image_lang, image_id -			FROM ' . STYLES_IMAGESET_DATA_TABLE . " -			WHERE imageset_id = $imageset_id -				AND image_name = '" . $db->sql_escape($imgname) . "'$sql_extra"; -		$result = $db->sql_query($sql); -		$imageset_data_row = $db->sql_fetchrow($result); -		$db->sql_freeresult($result); - -		$image_filename	= $imageset_data_row['image_filename']; -		$image_width	= $imageset_data_row['image_width']; -		$image_height	= $imageset_data_row['image_height']; -		$image_lang		= $imageset_data_row['image_lang']; -		$image_id		= $imageset_data_row['image_id']; -		$imgsize		= ($imageset_data_row['image_width'] && $imageset_data_row['image_height']) ? 1 : 0; - -		// Check to see whether the selected image exists in the table -		$valid_name = ($update) ? false : true; - -		foreach ($this->imageset_keys as $category => $img_ary) -		{ -			if (in_array($imgname, $img_ary)) -			{ -				$valid_name = true; -				break; -			} -		} - -		if ($update && isset($_POST['imgpath']) && $valid_name) -		{ -			// If imgwidth and imgheight are non-zero grab the actual size -			// from the image itself ... we ignore width settings for the poll center image -			$imgwidth	= request_var('imgwidth', 0); -			$imgheight	= request_var('imgheight', 0); -			$imgsize	= request_var('imgsize', 0); -			$imgpath	= request_var('imgpath', ''); -			$imgpath	= str_replace('..', '.', $imgpath); - -			// If no dimensions selected, we reset width and height to 0 ;) -			if (!$imgsize) -			{ -				$imgwidth = $imgheight = 0; -			} - -			$imglang = ''; - -			if ($imgpath && !file_exists("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath")) -			{ -				trigger_error($user->lang['NO_IMAGE_ERROR'] . adm_back_link($this->u_action), E_USER_WARNING); -			} - -			// Determine width/height. If dimensions included and no width/height given, we detect them automatically... -			if ($imgsize && $imgpath) -			{ -				if (!$imgwidth || !$imgheight) -				{ -					list($imgwidth_file, $imgheight_file) = getimagesize("{$phpbb_root_path}styles/$imageset_path/imageset/$imgpath"); -					$imgwidth = ($imgwidth) ? $imgwidth : $imgwidth_file; -					$imgheight = ($imgheight) ? $imgheight : $imgheight_file; -				} -				$imgwidth	= ($imgname != 'poll_center') ? (int) $imgwidth : 0; -				$imgheight	= (int) $imgheight; -			} - -			if (strpos($imgpath, '/') !== false) -			{ -				list($imglang, $imgfilename) = explode('/', $imgpath); -			} -			else -			{ -				$imgfilename = $imgpath; -			} - -			$sql_ary = array( -				'image_filename'	=> (string) $imgfilename, -				'image_width'		=> (int) $imgwidth, -				'image_height'		=> (int) $imgheight, -				'image_lang'		=> (string) $imglang, -			); - -			// already exists -			if ($imageset_data_row) -			{ -				$sql = 'UPDATE ' . STYLES_IMAGESET_DATA_TABLE . ' -					SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " -					WHERE image_id = $image_id"; -				$db->sql_query($sql); -			} -			// does not exist -			else if (!$imageset_data_row) -			{ -				$sql_ary['image_name']	= $imgname; -				$sql_ary['imageset_id']	= (int) $imageset_id; -				$db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); -			} - -			$cache->destroy('sql', STYLES_IMAGESET_DATA_TABLE); - -			add_log('admin', 'LOG_IMAGESET_EDIT', $imageset_name); - -			$template->assign_var('SUCCESS', true); - -			$image_filename = $imgfilename; -			$image_width	= $imgwidth; -			$image_height	= $imgheight; -			$image_lang		= $imglang; -		} - -		$imglang = ''; -		$imagesetlist = array('nolang' => array(), 'lang' => array()); -		$langs = array(); - -		$dir = "{$phpbb_root_path}styles/$imageset_path/imageset"; -		$dp = @opendir($dir); - -		if ($dp) -		{ -			while (($file = readdir($dp)) !== false) -			{ -				if ($file[0] != '.' && strtoupper($file) != 'CVS' && !is_file($dir . '/' . $file) && !is_link($dir . '/' . $file)) -				{ -					$langs[] = $file; -				} -				else if (preg_match('#\.(?:gif|jpg|png)$#', $file)) -				{ -					$imagesetlist['nolang'][] = $file; -				} -			} - -			if ($sql_extra) -			{ -				$dp2 = @opendir("$dir/$imgnamelang"); - -				if ($dp2) -				{ -					while (($file2 = readdir($dp2)) !== false) -					{ -						if (preg_match('#\.(?:gif|jpg|png)$#', $file2)) -						{ -							$imagesetlist['lang'][] = "$imgnamelang/$file2"; -						} -					} -					closedir($dp2); -				} -			} -			closedir($dp); -		} - -		// Generate list of image options -		$img_options = ''; -		foreach ($this->imageset_keys as $category => $img_ary) -		{ -			$template->assign_block_vars('category', array( -				'NAME'			=> $user->lang['IMG_CAT_' . strtoupper($category)] -			)); - -			foreach ($img_ary as $img) -			{ -				if ($category == 'buttons') -				{ -					foreach ($langs as $language) -					{ -						$template->assign_block_vars('category.images', array( -							'SELECTED'			=> ($img == $imgname && $language == $imgnamelang), -							'VALUE'				=> $img . '-' . $language, -							'TEXT'				=> $user->lang['IMG_' . strtoupper($img)] . ' [ ' . $language . ' ]' -						)); -					} -				} -				else -				{ -					$template->assign_block_vars('category.images', array( -						'SELECTED'			=> ($img == $imgname), -						'VALUE'				=> $img, -						'TEXT'				=> (($category == 'custom') ? $img : $user->lang['IMG_' . strtoupper($img)]) -					)); -				} -			} -		} - -		// Make sure the list of possible images is sorted alphabetically -		sort($imagesetlist['lang']); -		sort($imagesetlist['nolang']); - -		$image_found = false; -		$img_val = ''; -		foreach ($imagesetlist as $type => $img_ary) -		{ -			if ($type !== 'lang' || $sql_extra) -			{ -				$template->assign_block_vars('imagesetlist', array( -					'TYPE'	=> ($type == 'lang') -				)); -			} - -			foreach ($img_ary as $img) -			{ -				$imgtext = preg_replace('/^([^\/]+\/)/', '', $img); -				$selected = (!empty($imgname) && strpos($image_filename, $imgtext) !== false); -				if ($selected) -				{ -					$image_found = true; -					$img_val = htmlspecialchars($img); -				} -				$template->assign_block_vars('imagesetlist.images', array( -					'SELECTED'			=> $selected, -					'TEXT'				=> $imgtext, -					'VALUE'				=> htmlspecialchars($img) -				)); -			} -		} - -		$imgsize_bool = (!empty($imgname) && $image_width && $image_height) ? true : false; -		$image_request = '../styles/' . $imageset_path . '/imageset/' . ($image_lang ? $imgnamelang . '/' : '') . $image_filename; - -		$template->assign_vars(array( -			'S_EDIT_IMAGESET'	=> true, -			'L_TITLE'			=> $user->lang[$this->page_title], -			'L_EXPLAIN'			=> $user->lang[$this->page_title . '_EXPLAIN'], -			'IMAGE_OPTIONS'		=> $img_options, -			'IMAGE_SIZE'		=> $image_width, -			'IMAGE_HEIGHT'		=> $image_height, -			'IMAGE_REQUEST'		=> (empty($image_filename)) ? 'images/no_image.png' : $image_request, -			'U_ACTION'			=> $this->u_action . "&action=edit&id=$imageset_id", -			'U_BACK'			=> $this->u_action, -			'NAME'				=> $imageset_name, -			'A_NAME'			=> addslashes($imageset_name), -			'PATH'				=> $imageset_path, -			'A_PATH'			=> addslashes($imageset_path), -			'ERROR'				=> !$valid_name, -			'IMG_SRC'			=> ($image_found) ? '../styles/' . $imageset_path . '/imageset/' . $img_val : 'images/no_image.png', -			'IMAGE_SELECT'		=> $image_found +			'TEXT_ROWS'			=> $text_rows,  		));  	}  	/** -	* Remove style/template/theme/imageset +	* Remove style/template/theme  	*/  	function remove($mode, $style_id)  	{ @@ -1588,23 +921,18 @@ parse_css_file = {PARSE_CSS_FILE}  		{  			case 'style':  				$sql_from = STYLES_TABLE; -				$sql_select = 'style_id, style_name, template_id, theme_id, imageset_id'; +				$sql_select = 'style_id, style_name, template_id, theme_id';  				$sql_where = 'AND style_active = 1';  			break;  			case 'template':  				$sql_from = STYLES_TEMPLATE_TABLE; -				$sql_select = 'template_id, template_name, template_path, template_storedb'; +				$sql_select = 'template_id, template_name, template_path';  			break;  			case 'theme':  				$sql_from = STYLES_THEME_TABLE; -				$sql_select = 'theme_id, theme_name, theme_path, theme_storedb'; -			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -				$sql_select = 'imageset_id, imageset_name, imageset_path'; +				$sql_select = 'theme_id, theme_name, theme_path';  			break;  		} @@ -1658,7 +986,7 @@ parse_css_file = {PARSE_CSS_FILE}  				}  				// Remove the components -				$components = array('template', 'theme', 'imageset'); +				$components = array('template', 'theme');  				foreach ($components as $component)  				{  					$new_id = request_var('new_' . $component . '_id', 0); @@ -1707,7 +1035,7 @@ parse_css_file = {PARSE_CSS_FILE}  	}  	/** -	* Remove template/theme/imageset entry from the database +	* Remove template/theme entry from the database  	*/  	function remove_component($component, $component_id, $new_id, $style_id = false)  	{ @@ -1731,13 +1059,6 @@ parse_css_file = {PARSE_CSS_FILE}  			return;  		} -		if ($component == 'imageset') -		{ -			$sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " -				WHERE imageset_id = $component_id"; -			$db->sql_query($sql); -		} -  		switch ($component)  		{  			case 'template': @@ -1747,10 +1068,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE;; -			break;  		}  		$sql = "DELETE FROM $sql_from @@ -1764,7 +1081,7 @@ parse_css_file = {PARSE_CSS_FILE}  	}  	/** -	* Display the options which can be used to replace a style/template/theme/imageset +	* Display the options which can be used to replace a style/template/theme  	*/  	function display_component_options($component, $component_id, $style_row = false, $style_id = false)  	{ @@ -1792,10 +1109,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$s_options = ''; @@ -1844,7 +1157,7 @@ parse_css_file = {PARSE_CSS_FILE}  			$template->assign_var('S_REPLACE_OPTIONS', $s_options);  			if ($component == 'style')  			{ -				$components = array('template', 'theme', 'imageset'); +				$components = array('template', 'theme');  				foreach ($components as $component)  				{  					$this->display_component_options($component, $style_row[$component . '_id'], false, $component_id, true); @@ -1906,7 +1219,6 @@ parse_css_file = {PARSE_CSS_FILE}  		$inc_template = request_var('inc_template', 0);  		$inc_theme = request_var('inc_theme', 0); -		$inc_imageset = request_var('inc_imageset', 0);  		$store = request_var('store', 0);  		$format = request_var('format', ''); @@ -1932,7 +1244,7 @@ parse_css_file = {PARSE_CSS_FILE}  		switch ($mode)  		{  			case 'style': -				if ($update && ($inc_template + $inc_theme + $inc_imageset) < 1) +				if ($update && ($inc_template + $inc_theme) < 1)  				{  					$error[] = $user->lang['STYLE_ERR_MORE_ELEMENTS'];  				} @@ -1942,9 +1254,8 @@ parse_css_file = {PARSE_CSS_FILE}  				$sql_select = 's.style_id, s.style_name, s.style_copyright';  				$sql_select .= ($inc_template) ? ', t.*' : ', t.template_name';  				$sql_select .= ($inc_theme) ? ', c.*' : ', c.theme_name'; -				$sql_select .= ($inc_imageset) ? ', i.*' : ', i.imageset_name'; -				$sql_from = STYLES_TABLE . ' s, ' . STYLES_TEMPLATE_TABLE . ' t, ' . STYLES_THEME_TABLE . ' c, ' . STYLES_IMAGESET_TABLE . ' i'; -				$sql_where = "s.style_id = $style_id AND t.template_id = s.template_id AND c.theme_id = s.theme_id AND i.imageset_id = s.imageset_id"; +				$sql_from = STYLES_TABLE . ' s, ' . STYLES_TEMPLATE_TABLE . ' t, ' . STYLES_THEME_TABLE . ' c'; +				$sql_where = "s.style_id = $style_id AND t.template_id = s.template_id AND c.theme_id = s.theme_id";  				$l_prefix = 'STYLE';  			break; @@ -1968,16 +1279,6 @@ parse_css_file = {PARSE_CSS_FILE}  				$l_prefix = 'THEME';  			break; - -			case 'imageset': -				$name = 'imageset_name'; - -				$sql_select = '*'; -				$sql_from = STYLES_IMAGESET_TABLE; -				$sql_where = "imageset_id = $style_id"; - -				$l_prefix = 'IMAGESET'; -			break;  		}  		if ($update && !sizeof($error)) @@ -1994,7 +1295,7 @@ parse_css_file = {PARSE_CSS_FILE}  				trigger_error($user->lang['NO_' . $l_prefix] . adm_back_link($this->u_action), E_USER_WARNING);  			} -			$var_ary = array('style_id', 'style_name', 'style_copyright', 'template_id', 'template_name', 'template_path', 'template_copyright', 'template_storedb', 'template_inherits_id', 'bbcode_bitfield', 'theme_id', 'theme_name', 'theme_path', 'theme_copyright', 'theme_storedb', 'theme_mtime', 'theme_data', 'imageset_id', 'imageset_name', 'imageset_path', 'imageset_copyright'); +			$var_ary = array('style_id', 'style_name', 'style_copyright', 'template_id', 'template_name', 'template_path', 'template_copyright', 'template_inherits_id', 'bbcode_bitfield', 'theme_id', 'theme_name', 'theme_path', 'theme_copyright');  			foreach ($var_ary as $var)  			{ @@ -2012,7 +1313,6 @@ parse_css_file = {PARSE_CSS_FILE}  				$style_cfg .= (!$inc_template) ? "\nrequired_template = {$style_row['template_name']}" : '';  				$style_cfg .= (!$inc_theme) ? "\nrequired_theme = {$style_row['theme_name']}" : ''; -				$style_cfg .= (!$inc_imageset) ? "\nrequired_imageset = {$style_row['imageset_name']}" : '';  				$data[] = array(  					'src'		=> $style_cfg, @@ -2050,31 +1350,12 @@ parse_css_file = {PARSE_CSS_FILE}  				);  				// This is potentially nasty memory-wise ... -				if (!$style_row['template_storedb']) -				{ -					$files[] = array( -						'src'		=> "styles/{$style_row['template_path']}/template/", -						'prefix-'	=> "styles/{$style_row['template_path']}/", -						'prefix+'	=> false, -						'exclude'	=> 'template.cfg' -					); -				} -				else -				{ -					$sql = 'SELECT template_filename, template_data -						FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -						WHERE template_id = {$style_row['template_id']}"; -					$result = $db->sql_query($sql); - -					while ($row = $db->sql_fetchrow($result)) -					{ -						$data[] = array( -							'src' => $row['template_data'], -							'prefix' => 'template/' . $row['template_filename'] -						); -					} -					$db->sql_freeresult($result); -				} +				$files[] = array( +					'src'		=> "styles/{$style_row['template_path']}/template/", +					'prefix-'	=> "styles/{$style_row['template_path']}/", +					'prefix+'	=> false, +					'exclude'	=> 'template.cfg' +				);  				unset($template_cfg);  			} @@ -2087,130 +1368,21 @@ parse_css_file = {PARSE_CSS_FILE}  				$items = $cache->obtain_cfg_items($style_row);  				$items = $items['theme']; -				if (!isset($items['parse_css_file'])) -				{ -					$items['parse_css_file'] = 'off'; -				} - -				$theme_cfg = str_replace(array('{PARSE_CSS_FILE}'), array($items['parse_css_file']), $theme_cfg); -  				$files[] = array(  					'src'		=> "styles/{$style_row['theme_path']}/theme/",  					'prefix-'	=> "styles/{$style_row['theme_path']}/",  					'prefix+'	=> false, -					'exclude'	=> ($style_row['theme_storedb']) ? 'stylesheet.css,theme.cfg' : 'theme.cfg' +					'exclude'	=> 'theme.cfg',  				);  				$data[] = array(  					'src'		=> $theme_cfg, -					'prefix'	=> 'theme/theme.cfg' +					'prefix'	=> 'theme/theme.cfg',  				); -				if ($style_row['theme_storedb']) -				{ -					$data[] = array( -						'src'		=> $style_row['theme_data'], -						'prefix'	=> 'theme/stylesheet.css' -					); -				} -  				unset($items, $theme_cfg);  			} -			// Export imageset core code -			if ($mode == 'imageset' || $inc_imageset) -			{ -				$imageset_cfg = str_replace(array('{MODE}', '{NAME}', '{COPYRIGHT}', '{VERSION}'), array($mode, $style_row['imageset_name'], $style_row['imageset_copyright'], $config['version']), $this->imageset_cfg); - -				$imageset_main = array(); - -				$sql = 'SELECT image_filename, image_name, image_height, image_width -					FROM ' . STYLES_IMAGESET_DATA_TABLE . " -					WHERE imageset_id = $style_id -						AND image_lang = ''"; -				$result = $db->sql_query($sql); -				while ($row = $db->sql_fetchrow($result)) -				{ -					$imageset_main[$row['image_name']] = $row['image_filename'] . ($row['image_height'] ? '*' . $row['image_height']: '') . ($row['image_width'] ? '*' . $row['image_width']: ''); -				} -				$db->sql_freeresult($result); - -				foreach ($this->imageset_keys as $topic => $key_array) -				{ -					foreach ($key_array as $key) -					{ -						if (isset($imageset_main[$key])) -						{ -							$imageset_cfg .= "\nimg_" . $key . ' = ' . str_replace("styles/{$style_row['imageset_path']}/imageset/", '{PATH}', $imageset_main[$key]); -						} -					} -				} - -				$files[] = array( -					'src'		=> "styles/{$style_row['imageset_path']}/imageset/", -					'prefix-'	=> "styles/{$style_row['imageset_path']}/", -					'prefix+'	=> false, -					'exclude'	=> 'imageset.cfg' -				); - -				$data[] = array( -					'src'		=> trim($imageset_cfg), -					'prefix'	=> 'imageset/imageset.cfg' -				); - -				end($data); - -				$imageset_root = "{$phpbb_root_path}styles/{$style_row['imageset_path']}/imageset/"; - -				if ($dh = @opendir($imageset_root)) -				{ -					while (($fname = readdir($dh)) !== false) -					{ -						if ($fname[0] != '.' && $fname != 'CVS' && is_dir("$imageset_root$fname")) -						{ -							$files[key($files)]['exclude'] .= ',' . $fname . '/imageset.cfg'; -						} -					} -					closedir($dh); -				} - -				$imageset_lang = array(); - -				$sql = 'SELECT image_filename, image_name, image_height, image_width, image_lang -					FROM ' . STYLES_IMAGESET_DATA_TABLE . " -					WHERE imageset_id = $style_id -						AND image_lang <> ''"; -				$result = $db->sql_query($sql); -				while ($row = $db->sql_fetchrow($result)) -				{ -					$imageset_lang[$row['image_lang']][$row['image_name']] = $row['image_filename'] . ($row['image_height'] ? '*' . $row['image_height']: '') . ($row['image_width'] ? '*' . $row['image_width']: ''); -				} -				$db->sql_freeresult($result); - -				foreach ($imageset_lang as $lang => $imageset_localized) -				{ -					$imageset_cfg = str_replace(array('{MODE}', '{NAME}', '{COPYRIGHT}', '{VERSION}'), array($mode, $style_row['imageset_name'], $style_row['imageset_copyright'], $config['version']), $this->imageset_cfg); - -					foreach ($this->imageset_keys as $topic => $key_array) -					{ -						foreach ($key_array as $key) -						{ -							if (isset($imageset_localized[$key])) -							{ -								$imageset_cfg .= "\nimg_" . $key . ' = ' . str_replace("styles/{$style_row['imageset_path']}/imageset/", '{PATH}', $imageset_localized[$key]); -							} -						} -					} - -					$data[] = array( -						'src'		=> trim($imageset_cfg), -						'prefix'	=> 'imageset/' . $lang . '/imageset.cfg' -					); -				} - -				unset($imageset_cfg); -			} -  			switch ($format)  			{  				case 'tar': @@ -2335,7 +1507,7 @@ parse_css_file = {PARSE_CSS_FILE}  		$l_type = strtoupper($mode);  		$error = array(); -		$element_ary = array('template' => STYLES_TEMPLATE_TABLE, 'theme' => STYLES_THEME_TABLE, 'imageset' => STYLES_IMAGESET_TABLE); +		$element_ary = array('template' => STYLES_TEMPLATE_TABLE, 'theme' => STYLES_THEME_TABLE);  		switch ($mode)  		{ @@ -2350,10 +1522,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$sql = "SELECT * @@ -2377,11 +1545,9 @@ parse_css_file = {PARSE_CSS_FILE}  			$template_id = request_var('template_id', 0);  			$theme_id = request_var('theme_id', 0); -			$imageset_id = request_var('imageset_id', 0);  			$style_active = request_var('style_active', 0);  			$style_default = request_var('style_default', 0); -			$store_db = request_var('store_db', 0);  			// If the admin selected the style to be the default style, but forgot to activate it... we will do it for him  			if ($style_default) @@ -2397,7 +1563,7 @@ parse_css_file = {PARSE_CSS_FILE}  			$conflict = $db->sql_fetchrow($result);  			$db->sql_freeresult($result); -			if ($mode == 'style' && (!$template_id || !$theme_id || !$imageset_id)) +			if ($mode == 'style' && (!$template_id || !$theme_id))  			{  				$error[] = $user->lang['STYLE_ERR_NO_IDS'];  			} @@ -2412,29 +1578,6 @@ parse_css_file = {PARSE_CSS_FILE}  				$error[] = $user->lang[$l_type . '_ERR_STYLE_NAME'];  			} -			if ($mode === 'theme' || $mode === 'template') -			{ -				// a rather elaborate check we have to do here once to avoid trouble later -				$check = "{$phpbb_root_path}styles/" . $style_row["{$mode}_path"] . (($mode === 'theme') ? '/theme/stylesheet.css' : '/template'); -				if (($style_row["{$mode}_storedb"] != $store_db) && !$store_db && ($safe_mode || !phpbb_is_writable($check))) -				{ -					$error[] = $user->lang['EDIT_' . strtoupper($mode) . '_STORED_DB']; -					$store_db = 1; -				} - -				// themes which have to be parsed have to go into db -				if ($mode == 'theme') -				{ -					$cfg = parse_cfg_file("{$phpbb_root_path}styles/" . $style_row["{$mode}_path"] . "/theme/theme.cfg"); - -					if (isset($cfg['parse_css_file']) && $cfg['parse_css_file'] && !$store_db) -					{ -						$error[] = $user->lang['EDIT_THEME_STORE_PARSED']; -						$store_db = 1; -					} -				} -			} -  			if (!sizeof($error))  			{  				// Check length settings @@ -2455,9 +1598,7 @@ parse_css_file = {PARSE_CSS_FILE}  			$style_row = array_merge($style_row, array(  				'template_id'			=> $template_id,  				'theme_id'				=> $theme_id, -				'imageset_id'			=> $imageset_id,  				'style_active'			=> $style_active, -				$mode . '_storedb'		=> $store_db,  				$mode . '_name'			=> $name,  				$mode . '_copyright'	=> $copyright)  			); @@ -2478,81 +1619,14 @@ parse_css_file = {PARSE_CSS_FILE}  					$sql_ary += array(  						'template_id'		=> (int) $template_id,  						'theme_id'			=> (int) $theme_id, -						'imageset_id'		=> (int) $imageset_id,  						'style_active'		=> (int) $style_active,  					);  				break; -				case 'imageset': -				break; -  				case 'theme': - -					if ($style_row['theme_storedb'] != $store_db) -					{ -						$theme_data = ''; - -						if (!$style_row['theme_storedb']) -						{ -							$theme_data = $this->db_theme_data($style_row); -						} -						else if (!$store_db && !$safe_mode && phpbb_is_writable("{$phpbb_root_path}styles/{$style_row['theme_path']}/theme/stylesheet.css")) -						{ -							$store_db = 1; -							$theme_data = $style_row['theme_data']; - -							if ($fp = @fopen("{$phpbb_root_path}styles/{$style_row['theme_path']}/theme/stylesheet.css", 'wb')) -							{ -								$store_db = (@fwrite($fp, str_replace("styles/{$style_row['theme_path']}/theme/", './', $theme_data))) ? 0 : 1; -							} -							fclose($fp); -						} - -						$sql_ary += array( -							'theme_mtime'	=> ($store_db) ? filemtime("{$phpbb_root_path}styles/{$style_row['theme_path']}/theme/stylesheet.css") : 0, -							'theme_storedb'	=> $store_db, -							'theme_data'	=> ($store_db) ? $theme_data : '', -						); -					}  				break;  				case 'template': - -					if ($style_row['template_storedb'] != $store_db) -					{ -						if ($super = $this->get_super($mode, $style_row['template_id'])) -						{ -							$error[] = (sprintf($user->lang["{$l_type}_INHERITS"], $super['template_name'])); -							$sql_ary = array(); -						} -						else -						{ -							if (!$store_db && !$safe_mode && phpbb_is_writable("{$phpbb_root_path}styles/{$style_row['template_path']}/template")) -							{ -								$err = $this->store_in_fs('template', $style_row['template_id']); -								if ($err) -								{ -									$error += $err; -								} -							} -							else if ($store_db) -							{ -								$this->store_in_db('template', $style_row['template_id']); -							} -							else -							{ -								// We no longer store within the db, but are also not able to update the file structure -								// Since the admin want to switch this, we adhere to his decision. But we also need to remove the cache -								$sql = 'DELETE FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -									WHERE template_id = $style_id"; -								$db->sql_query($sql); -							} - -							$sql_ary += array( -								'template_storedb'	=> $store_db, -							); -						} -					}  				break;  			} @@ -2619,16 +1693,12 @@ parse_css_file = {PARSE_CSS_FILE}  			'S_STYLE'				=> ($mode == 'style') ? true : false,  			'S_TEMPLATE'			=> ($mode == 'template') ? true : false,  			'S_THEME'				=> ($mode == 'theme') ? true : false, -			'S_IMAGESET'			=> ($mode == 'imageset') ? true : false, -			'S_STORE_DB'			=> (isset($style_row[$mode . '_storedb'])) ? $style_row[$mode . '_storedb'] : 0, -			'S_STORE_DB_DISABLED'	=> (isset($style_row[$mode . '_inherits_id'])) ? $style_row[$mode . '_inherits_id'] : 0,  			'S_STYLE_ACTIVE'		=> (isset($style_row['style_active'])) ? $style_row['style_active'] : 0,  			'S_STYLE_DEFAULT'		=> (isset($style_row['style_default'])) ? $style_row['style_default'] : 0,  			'S_SUPERTEMPLATE'		=> (isset($style_row[$mode . '_inherits_id']) && $style_row[$mode . '_inherits_id']) ? $super['template_name'] : 0,  			'S_TEMPLATE_OPTIONS'	=> ($mode == 'style') ? $template_options : '',  			'S_THEME_OPTIONS'		=> ($mode == 'style') ? $theme_options : '', -			'S_IMAGESET_OPTIONS'	=> ($mode == 'style') ? $imageset_options : '',  			'U_ACTION'		=> $this->u_action . '&action=details&id=' . $style_id,  			'U_BACK'		=> $this->u_action, @@ -2636,8 +1706,6 @@ parse_css_file = {PARSE_CSS_FILE}  			'L_TITLE'				=> $user->lang[$this->page_title],  			'L_EXPLAIN'				=> $user->lang[$this->page_title . '_EXPLAIN'],  			'L_NAME'				=> $user->lang[$l_type . '_NAME'], -			'L_LOCATION'			=> ($mode == 'template' || $mode == 'theme') ? $user->lang[$l_type . '_LOCATION'] : '', -			'L_LOCATION_EXPLAIN'	=> ($mode == 'template' || $mode == 'theme') ? $user->lang[$l_type . '_LOCATION_EXPLAIN'] : '',  			'ERROR_MSG'		=> (sizeof($error)) ? implode('<br />', $error) : '',  			'NAME'			=> $style_row[$mode . '_name'], @@ -2724,84 +1792,6 @@ parse_css_file = {PARSE_CSS_FILE}  	}  	/** -	* Store template files into db -	*/ -	function store_templates($mode, $style_id, $template_path, $filelist) -	{ -		global $phpbb_root_path, $phpEx, $db; - -		$template_path = $template_path . '/template/'; -		$includes = array(); -		foreach ($filelist as $pathfile => $file_ary) -		{ -			foreach ($file_ary as $file) -			{ -				if (!($fp = @fopen("{$phpbb_root_path}styles/$template_path$pathfile$file", 'r'))) -				{ -					trigger_error("Could not open {$phpbb_root_path}styles/$template_path$pathfile$file", E_USER_ERROR); -				} - -				$filesize = filesize("{$phpbb_root_path}styles/$template_path$pathfile$file"); - -				if ($filesize) -				{ -					$template_data = fread($fp, $filesize); -				} - -				fclose($fp); - -				if (!$filesize) -				{ -					// File is empty -					continue; -				} - -				if (preg_match_all('#<!-- INCLUDE (.*?\.html) -->#is', $template_data, $matches)) -				{ -					foreach ($matches[1] as $match) -					{ -						$includes[trim($match)][] = $file; -					} -				} -			} -		} - -		foreach ($filelist as $pathfile => $file_ary) -		{ -			foreach ($file_ary as $file) -			{ -				// Skip index. -				if (strpos($file, 'index.') === 0) -				{ -					continue; -				} - -				// We could do this using extended inserts ... but that could be one -				// heck of a lot of data ... -				$sql_ary = array( -					'template_id'			=> (int) $style_id, -					'template_filename'		=> "$pathfile$file", -					'template_included'		=> (isset($includes[$file])) ? implode(':', $includes[$file]) . ':' : '', -					'template_mtime'		=> (int) filemtime("{$phpbb_root_path}styles/$template_path$pathfile$file"), -					'template_data'			=> (string) file_get_contents("{$phpbb_root_path}styles/$template_path$pathfile$file"), -				); - -				if ($mode == 'insert') -				{ -					$sql = 'INSERT INTO ' . STYLES_TEMPLATE_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); -				} -				else -				{ -					$sql = 'UPDATE ' . STYLES_TEMPLATE_DATA_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " -						WHERE template_id = $style_id -							AND template_filename = '" . $db->sql_escape("$pathfile$file") . "'"; -				} -				$db->sql_query($sql); -			} -		} -	} - -	/**  	* Returns an array containing all template filenames for one template that are currently cached.  	*  	* @param string $template_path contains the name of the template's folder in /styles/ @@ -2876,7 +1866,7 @@ parse_css_file = {PARSE_CSS_FILE}  	}  	/** -	* Install Style/Template/Theme/Imageset +	* Install Style/Template/Theme  	*/  	function install($mode)  	{ @@ -2886,7 +1876,7 @@ parse_css_file = {PARSE_CSS_FILE}  		$error = $installcfg = $style_row = array();  		$root_path = $cfg_file = ''; -		$element_ary = array('template' => STYLES_TEMPLATE_TABLE, 'theme' => STYLES_THEME_TABLE, 'imageset' => STYLES_IMAGESET_TABLE); +		$element_ary = array('template' => STYLES_TEMPLATE_TABLE, 'theme' => STYLES_THEME_TABLE);  		$install_path = request_var('path', '');  		$update = (isset($_POST['update'])) ? true : false; @@ -2932,7 +1922,6 @@ parse_css_file = {PARSE_CSS_FILE}  					$reqd_template = (isset($installcfg['required_template'])) ? $installcfg['required_template'] : false;  					$reqd_theme = (isset($installcfg['required_theme'])) ? $installcfg['required_theme'] : false; -					$reqd_imageset = (isset($installcfg['required_imageset'])) ? $installcfg['required_imageset'] : false;  					// Check to see if each element is already installed, if it is grab the id  					foreach ($element_ary as $element => $table) @@ -2958,7 +1947,7 @@ parse_css_file = {PARSE_CSS_FILE}  							$cfg_contents = parse_cfg_file($cfg_file);  							// Merge only specific things. We may need them later. -							foreach (array('inherit_from', 'parse_css_file') as $key) +							foreach (array('inherit_from') as $key)  							{  								if (!empty($cfg_contents[$key]) && !isset($installcfg[$key]))  								{ @@ -2977,10 +1966,6 @@ parse_css_file = {PARSE_CSS_FILE}  				case 'theme':  					$this->test_installed('theme', $error, $root_path, false, $style_row['theme_id'], $style_row['theme_name'], $style_row['theme_copyright']);  				break; - -				case 'imageset': -					$this->test_installed('imageset', $error, $root_path, false, $style_row['imageset_id'], $style_row['imageset_name'], $style_row['imageset_copyright']); -				break;  			}  		}  		else @@ -2988,7 +1973,6 @@ parse_css_file = {PARSE_CSS_FILE}  			trigger_error($user->lang['NO_' . $l_type] . adm_back_link($this->u_action), E_USER_WARNING);  		} -		$style_row['store_db'] = request_var('store_db', 0);  		$style_row['style_active'] = request_var('style_active', 1);  		$style_row['style_default'] = request_var('style_default', 0); @@ -3002,19 +1986,18 @@ parse_css_file = {PARSE_CSS_FILE}  					${$element . '_root_path'} = (${'reqd_' . $element}) ? $phpbb_root_path . 'styles/' . ${'reqd_' . $element} . '/' : false;  					${$element . '_path'} = (${'reqd_' . $element}) ? ${'reqd_' . $element} : false;  				} -				$this->install_style($error, 'install', $root_path, $style_row['style_id'], $style_row['style_name'], $install_path, $style_row['style_copyright'], $style_row['style_active'], $style_row['style_default'], $style_row, $template_root_path, $template_path, $theme_root_path, $theme_path, $imageset_root_path, $imageset_path); +				$this->install_style($error, 'install', $root_path, $style_row['style_id'], $style_row['style_name'], $install_path, $style_row['style_copyright'], $style_row['style_active'], $style_row['style_default'], $style_row, $template_root_path, $template_path, $theme_root_path, $theme_path);  			}  			else  			{ -				$style_row['store_db'] = $this->install_element($mode, $error, 'install', $root_path, $style_row[$mode . '_id'], $style_row[$mode . '_name'], $install_path, $style_row[$mode . '_copyright'], $style_row['store_db']); +				$this->install_element($mode, $error, 'install', $root_path, $style_row[$mode . '_id'], $style_row[$mode . '_name'], $install_path, $style_row[$mode . '_copyright']);  			}  			if (!sizeof($error))  			{  				$cache->destroy('sql', STYLES_TABLE); -				$message = ($style_row['store_db']) ? '_ADDED_DB' : '_ADDED'; -				trigger_error($user->lang[$l_type . $message] . adm_back_link($this->u_action)); +				trigger_error($user->lang[$l_type . '_ADDED'] . adm_back_link($this->u_action));  			}  		} @@ -3030,7 +2013,6 @@ parse_css_file = {PARSE_CSS_FILE}  			'S_SUPERTEMPLATE'	=> (isset($installcfg['inherit_from'])) ? $installcfg['inherit_from'] : '',  			'S_THEME'			=> ($mode == 'theme') ? true : false, -			'S_STORE_DB'			=> (isset($style_row[$mode . '_storedb'])) ? $style_row[$mode . '_storedb'] : 0,  			'S_STYLE_ACTIVE'		=> (isset($style_row['style_active'])) ? $style_row['style_active'] : 0,  			'S_STYLE_DEFAULT'		=> (isset($style_row['style_default'])) ? $style_row['style_default'] : 0, @@ -3040,15 +2022,12 @@ parse_css_file = {PARSE_CSS_FILE}  			'L_TITLE'				=> $user->lang[$this->page_title],  			'L_EXPLAIN'				=> $user->lang[$this->page_title . '_EXPLAIN'],  			'L_NAME'				=> $user->lang[$l_type . '_NAME'], -			'L_LOCATION'			=> ($mode == 'template' || $mode == 'theme') ? $user->lang[$l_type . '_LOCATION'] : '', -			'L_LOCATION_EXPLAIN'	=> ($mode == 'template' || $mode == 'theme') ? $user->lang[$l_type . '_LOCATION_EXPLAIN'] : '',  			'ERROR_MSG'			=> (sizeof($error)) ? implode('<br />', $error) : '',  			'NAME'				=> $style_row[$mode . '_name'],  			'COPYRIGHT'			=> $style_row[$mode . '_copyright'],  			'TEMPLATE_NAME'		=> ($mode == 'style') ? $style_row['template_name'] : '', -			'THEME_NAME'		=> ($mode == 'style') ? $style_row['theme_name'] : '', -			'IMAGESET_NAME'		=> ($mode == 'style') ? $style_row['imageset_name'] : '') +			'THEME_NAME'		=> ($mode == 'style') ? $style_row['theme_name'] : '')  		);  	} @@ -3060,7 +2039,7 @@ parse_css_file = {PARSE_CSS_FILE}  		global $phpbb_root_path, $phpEx, $config, $db, $cache, $user, $template;  		$l_type = strtoupper($mode); -		$element_ary = array('template' => STYLES_TEMPLATE_TABLE, 'theme' => STYLES_THEME_TABLE, 'imageset' => STYLES_IMAGESET_TABLE); +		$element_ary = array('template' => STYLES_TEMPLATE_TABLE, 'theme' => STYLES_THEME_TABLE);  		$error = array();  		$style_row = array( @@ -3068,8 +2047,6 @@ parse_css_file = {PARSE_CSS_FILE}  			$mode . '_copyright'	=> utf8_normalize_nfc(request_var('copyright', '', true)),  			'template_id'			=> 0,  			'theme_id'				=> 0, -			'imageset_id'			=> 0, -			'store_db'				=> request_var('store_db', 0),  			'style_active'			=> request_var('style_active', 1),  			'style_default'			=> request_var('style_default', 0),  		); @@ -3082,7 +2059,7 @@ parse_css_file = {PARSE_CSS_FILE}  			switch ($mode)  			{  				case 'style': -					$sql_select = 'template_id, theme_id, imageset_id'; +					$sql_select = 'template_id, theme_id';  					$sql_from = STYLES_TABLE;  				break; @@ -3095,11 +2072,6 @@ parse_css_file = {PARSE_CSS_FILE}  					$sql_select = 'theme_id';  					$sql_from = STYLES_THEME_TABLE;  				break; - -				case 'imageset': -					$sql_select = 'imageset_id'; -					$sql_from = STYLES_IMAGESET_TABLE; -				break;  			}  			$sql = "SELECT $sql_select @@ -3118,7 +2090,6 @@ parse_css_file = {PARSE_CSS_FILE}  			{  				$style_row['template_id']	= (isset($row['template_id'])) ? $row['template_id'] : $style_row['template_id'];  				$style_row['theme_id']		= (isset($row['theme_id'])) ? $row['theme_id'] : $style_row['theme_id']; -				$style_row['imageset_id']	= (isset($row['imageset_id'])) ? $row['imageset_id'] : $style_row['imageset_id'];  			}  		} @@ -3126,9 +2097,8 @@ parse_css_file = {PARSE_CSS_FILE}  		{  			$style_row['template_id'] = request_var('template_id', $style_row['template_id']);  			$style_row['theme_id'] = request_var('theme_id', $style_row['theme_id']); -			$style_row['imageset_id'] = request_var('imageset_id', $style_row['imageset_id']); -			if ($mode == 'style' && (!$style_row['template_id'] || !$style_row['theme_id'] || !$style_row['imageset_id'])) +			if ($mode == 'style' && (!$style_row['template_id'] || !$style_row['theme_id']))  			{  				$error[] = $user->lang['STYLE_ERR_NO_IDS'];  			} @@ -3148,8 +2118,7 @@ parse_css_file = {PARSE_CSS_FILE}  			{  				$cache->destroy('sql', STYLES_TABLE); -				$message = ($style_row['store_db']) ? '_ADDED_DB' : '_ADDED'; -				trigger_error($user->lang[$l_type . $message] . adm_back_link($this->u_action)); +				trigger_error($user->lang[$l_type . '_ADDED'] . adm_back_link($this->u_action));  			}  		} @@ -3183,12 +2152,10 @@ parse_css_file = {PARSE_CSS_FILE}  			'S_THEME'			=> ($mode == 'theme') ? true : false,  			'S_BASIS'			=> ($basis) ? true : false, -			'S_STORE_DB'			=> (isset($style_row['storedb'])) ? $style_row['storedb'] : 0,  			'S_STYLE_ACTIVE'		=> (isset($style_row['style_active'])) ? $style_row['style_active'] : 0,  			'S_STYLE_DEFAULT'		=> (isset($style_row['style_default'])) ? $style_row['style_default'] : 0,  			'S_TEMPLATE_OPTIONS'	=> ($mode == 'style') ? $template_options : '',  			'S_THEME_OPTIONS'		=> ($mode == 'style') ? $theme_options : '', -			'S_IMAGESET_OPTIONS'	=> ($mode == 'style') ? $imageset_options : '',  			'U_ACTION'			=> $this->u_action . '&action=add&basis=' . $basis,  			'U_BACK'			=> $this->u_action, @@ -3196,8 +2163,6 @@ parse_css_file = {PARSE_CSS_FILE}  			'L_TITLE'				=> $user->lang[$this->page_title],  			'L_EXPLAIN'				=> $user->lang[$this->page_title . '_EXPLAIN'],  			'L_NAME'				=> $user->lang[$l_type . '_NAME'], -			'L_LOCATION'			=> ($mode == 'template' || $mode == 'theme') ? $user->lang[$l_type . '_LOCATION'] : '', -			'L_LOCATION_EXPLAIN'	=> ($mode == 'template' || $mode == 'theme') ? $user->lang[$l_type . '_LOCATION_EXPLAIN'] : '',  			'ERROR_MSG'			=> (sizeof($error)) ? implode('<br />', $error) : '',  			'NAME'				=> $style_row[$mode . '_name'], @@ -3210,7 +2175,6 @@ parse_css_file = {PARSE_CSS_FILE}  					$reqd_template = (isset($installcfg['required_template'])) ? $installcfg['required_template'] : false;  					$reqd_theme = (isset($installcfg['required_theme'])) ? $installcfg['required_theme'] : false; -					$reqd_imageset = (isset($installcfg['required_imageset'])) ? $installcfg['required_imageset'] : false;  					// Check to see if each element is already installed, if it is grab the id  					foreach ($element_ary as $element => $table) @@ -3237,10 +2201,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$l_element = strtoupper($element); @@ -3279,11 +2239,11 @@ parse_css_file = {PARSE_CSS_FILE}  	/**  	* Install/Add style  	*/ -	function install_style(&$error, $action, $root_path, &$id, $name, $path, $copyright, $active, $default, &$style_row, $template_root_path = false, $template_path = false, $theme_root_path = false, $theme_path = false, $imageset_root_path = false, $imageset_path = false) +	function install_style(&$error, $action, $root_path, &$id, $name, $path, $copyright, $active, $default, &$style_row, $template_root_path = false, $template_path = false, $theme_root_path = false, $theme_path = false)  	{  		global $config, $db, $user; -		$element_ary = array('template', 'theme', 'imageset'); +		$element_ary = array('template', 'theme');  		if (!$name)  		{ @@ -3329,7 +2289,7 @@ parse_css_file = {PARSE_CSS_FILE}  			}  		} -		if (!$style_row['template_id'] || !$style_row['theme_id'] || !$style_row['imageset_id']) +		if (!$style_row['template_id'] || !$style_row['theme_id'])  		{  			$error[] = $user->lang['STYLE_ERR_NO_IDS'];  		} @@ -3347,7 +2307,6 @@ parse_css_file = {PARSE_CSS_FILE}  			'style_active'		=> (int) $active,  			'template_id'		=> (int) $style_row['template_id'],  			'theme_id'			=> (int) $style_row['theme_id'], -			'imageset_id'		=> (int) $style_row['imageset_id'],  		);  		$sql = 'INSERT INTO ' . STYLES_TABLE . ' @@ -3374,7 +2333,7 @@ parse_css_file = {PARSE_CSS_FILE}  	/**  	* Install/add an element, doing various checks as we go  	*/ -	function install_element($mode, &$error, $action, $root_path, &$id, $name, $path, $copyright, $store_db = 0) +	function install_element($mode, &$error, $action, $root_path, &$id, $name, $path, $copyright)  	{  		global $phpbb_root_path, $db, $user; @@ -3390,10 +2349,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$l_type = strtoupper($mode); @@ -3445,7 +2400,7 @@ parse_css_file = {PARSE_CSS_FILE}  				$select_bf = '';  			} -			$sql = "SELECT {$mode}_id, {$mode}_name, {$mode}_path, {$mode}_storedb $select_bf +			$sql = "SELECT {$mode}_id, {$mode}_name, {$mode}_path, $select_bf  				FROM $sql_from  				WHERE {$mode}_name = '" . $db->sql_escape($cfg_data['inherit_from']) . "'  					AND {$mode}_inherits_id = 0"; @@ -3461,8 +2416,6 @@ parse_css_file = {PARSE_CSS_FILE}  				$inherit_id = $row["{$mode}_id"];  				$inherit_path = $row["{$mode}_path"];  				$inherit_bf = ($mode === 'template') ? $row["bbcode_bitfield"] : false; -				$cfg_data['store_db'] = $row["{$mode}_storedb"]; -				$store_db = $row["{$mode}_storedb"];  			}  		}  		else @@ -3497,13 +2450,9 @@ parse_css_file = {PARSE_CSS_FILE}  				}  				else  				{ -					$sql_ary['bbcode_bitfield'] = TEMPLATE_BITFIELD; +					$sql_ary['bbcode_bitfield'] = $this->template_bitfield;  				} -				// We set a pre-defined bitfield here which we may use further in 3.2 -				$sql_ary += array( -					'template_storedb'		=> $store_db, -				);  				if (isset($cfg_data['inherit_from']) && $cfg_data['inherit_from'])  				{  					$sql_ary += array( @@ -3514,22 +2463,6 @@ parse_css_file = {PARSE_CSS_FILE}  			break;  			case 'theme': -				// We are only interested in the theme configuration for now - -				if (isset($cfg_data['parse_css_file']) && $cfg_data['parse_css_file']) -				{ -					$store_db = 1; -				} - -				$sql_ary += array( -					'theme_storedb'	=> $store_db, -					'theme_data'	=> ($store_db) ? $this->db_theme_data($sql_ary, false, $root_path) : '', -					'theme_mtime'	=> (int) filemtime("{$phpbb_root_path}styles/$path/theme/stylesheet.css") -				); -			break; - -			// all the heavy lifting is done later -			case 'imageset':  			break;  		} @@ -3541,119 +2474,9 @@ parse_css_file = {PARSE_CSS_FILE}  		$id = $db->sql_nextid(); -		if ($mode == 'template' && $store_db) -		{ -			$filelist = filelist("{$root_path}template", '', 'html'); -			$this->store_templates('insert', $id, $path, $filelist); -		} -		else if ($mode == 'imageset') -		{ -			$cfg_data = parse_cfg_file("$root_path$mode/imageset.cfg"); - -			$imageset_definitions = array(); -			foreach ($this->imageset_keys as $topic => $key_array) -			{ -				$imageset_definitions = array_merge($imageset_definitions, $key_array); -			} - -			foreach ($cfg_data as $key => $value) -			{ -				if (strpos($value, '*') !== false) -				{ -					if (substr($value, -1, 1) === '*') -					{ -						list($image_filename, $image_height) = explode('*', $value); -						$image_width = 0; -					} -					else -					{ -						list($image_filename, $image_height, $image_width) = explode('*', $value); -					} -				} -				else -				{ -					$image_filename = $value; -					$image_height = $image_width = 0; -				} - -				if (strpos($key, 'img_') === 0 && $image_filename) -				{ -					$key = substr($key, 4); -					if (in_array($key, $imageset_definitions)) -					{ -						$sql_ary = array( -							'image_name'		=> $key, -							'image_filename'	=> str_replace('{PATH}', "styles/$path/imageset/", trim($image_filename)), -							'image_height'		=> (int) $image_height, -							'image_width'		=> (int) $image_width, -							'imageset_id'		=> (int) $id, -							'image_lang'		=> '', -						); -						$db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); -					} -				} -			} -			unset($cfg_data); - -			$sql = 'SELECT lang_dir -				FROM ' . LANG_TABLE; -			$result = $db->sql_query($sql); - -			while ($row = $db->sql_fetchrow($result)) -			{ -				if (@file_exists("$root_path$mode/{$row['lang_dir']}/imageset.cfg")) -				{ -					$cfg_data_imageset_data = parse_cfg_file("$root_path$mode/{$row['lang_dir']}/imageset.cfg"); -					foreach ($cfg_data_imageset_data as $image_name => $value) -					{ -						if (strpos($value, '*') !== false) -						{ -							if (substr($value, -1, 1) === '*') -							{ -								list($image_filename, $image_height) = explode('*', $value); -								$image_width = 0; -							} -							else -							{ -								list($image_filename, $image_height, $image_width) = explode('*', $value); -							} -						} -						else -						{ -							$image_filename = $value; -							$image_height = $image_width = 0; -						} - -						if (strpos($image_name, 'img_') === 0 && $image_filename) -						{ -							$image_name = substr($image_name, 4); -							if (in_array($image_name, $imageset_definitions)) -							{ -								$sql_ary = array( -									'image_name'		=> $image_name, -									'image_filename'	=> $image_filename, -									'image_height'		=> (int) $image_height, -									'image_width'		=> (int) $image_width, -									'imageset_id'		=> (int) $id, -									'image_lang'		=> $row['lang_dir'], -								); -								$db->sql_query('INSERT INTO ' . STYLES_IMAGESET_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary)); -							} -						} -					} -					unset($cfg_data_imageset_data); -				} -			} -			$db->sql_freeresult($result); -		} -  		$db->sql_transaction('commit'); -		$log = ($store_db) ? 'LOG_' . $l_type . '_ADD_DB' : 'LOG_' . $l_type . '_ADD_FS'; -		add_log('admin', $log, $name); - -		// Return store_db in case it had to be altered -		return $store_db; +		add_log('admin', 'LOG_' . $l_type . '_ADD_FS', $name);  	}  	/** @@ -3679,10 +2502,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$sql = "SELECT {$mode}_id, {$mode}_name, {$mode}_path @@ -3735,10 +2554,6 @@ parse_css_file = {PARSE_CSS_FILE}  			case 'theme':  				$sql_from = STYLES_THEME_TABLE;  			break; - -			case 'imageset': -				$sql_from = STYLES_IMAGESET_TABLE; -			break;  		}  		$sql = "SELECT {$mode}_inherits_id @@ -3770,182 +2585,4 @@ parse_css_file = {PARSE_CSS_FILE}  		return false;  	} - -	/** -	* Moves a template set and its subtemplates to the database -	* -	* @access public -	* @param string $mode The component to move - only template is supported -	* @param int $id The template id -	*/ -	function store_in_db($mode, $id) -	{ -		global $db, $user; - -		$error = array(); -		$l_type = strtoupper($mode); -		if ($super = $this->get_super($mode, $id)) -		{ -			$error[] = (sprintf($user->lang["{$l_type}_INHERITS"], $super['template_name'])); -			return $error; -		} - -		$sql = "SELECT {$mode}_id, {$mode}_name, {$mode}_path -			FROM " . STYLES_TEMPLATE_TABLE . ' -			WHERE template_id = ' . (int) $id; - -		$result = $db->sql_query_limit($sql, 1); -		if ($row = $db->sql_fetchrow($result)) -		{ -			$db->sql_freeresult($result); -			$subs = $this->check_inheritance($mode, $id); - -			$this->_store_in_db($mode, $id, $row["{$mode}_path"]); -			if ($subs && sizeof($subs)) -			{ -				foreach ($subs as $sub_id => $sub) -				{ -					if ($err = $this->_store_in_db($mode, $sub["{$mode}_id"], $sub["{$mode}_path"])) -					{ -						$error[] = $err; -					} -				} -			} -		} -		if (sizeof($error)) -		{ -			return $error; -		} - -		return false; -	} - -	/** -	* Moves a template set to the database -	* -	* @access private -	* @param string $mode The component to move - only template is supported -	* @param int $id The template id -	* @param string $path TThe path to the template files -	*/ -	function _store_in_db($mode, $id, $path) -	{ -		global $phpbb_root_path, $db; - -		$filelist = filelist("{$phpbb_root_path}styles/{$path}/template", '', 'html'); -		$this->store_templates('insert', $id, $path, $filelist); - -		// Okay, we do the query here -shouldn't be triggered often. -		$sql = 'UPDATE ' . STYLES_TEMPLATE_TABLE . ' -						SET template_storedb = 1 -						WHERE template_id = ' . $id; -		$db->sql_query($sql); -	} - -	/** -	* Moves a template set and its subtemplates to the filesystem -	* -	* @access public -	* @param string $mode The component to move - only template is supported -	* @param int $id The template id -	*/ -	function store_in_fs($mode, $id) -	{ -		global $db, $user; - -		$error = array(); -		$l_type = strtoupper($mode); -		if ($super = $this->get_super($mode, $id)) -		{ -			$error[] = (sprintf($user->lang["{$l_type}_INHERITS"], $super['template_name'])); -			return($error); -		} - -		$sql = "SELECT {$mode}_id, {$mode}_name, {$mode}_path -			FROM " . STYLES_TEMPLATE_TABLE . ' -			WHERE template_id = ' . (int) $id; - -		$result = $db->sql_query_limit($sql, 1); -		if ($row = $db->sql_fetchrow($result)) -		{ -			$db->sql_freeresult($result); -			if (!sizeof($error)) -			{ -				$subs = $this->check_inheritance($mode, $id); - -				$this->_store_in_fs($mode, $id, $row["{$mode}_path"]); - -				if ($subs && sizeof($subs)) -				{ -					foreach ($subs as $sub_id => $sub) -					{ -						$this->_store_in_fs($mode, $sub["{$mode}_id"], $sub["{$mode}_path"]); -					} -				} -			} -			if (sizeof($error)) -			{ -				$this->store_in_db($id, $mode); -				return $error; -			} -		} -		return false; -	} - -	/** -	* Moves a template set to the filesystem -	* -	* @access private -	* @param string $mode The component to move - only template is supported -	* @param int $id The template id -	* @param string $path The path to the template -	*/ -	function _store_in_fs($mode, $id, $path) -	{ -		global $phpbb_root_path, $db, $user, $safe_mode; - -		$store_db = 0; -		$error = array(); -		if (!$safe_mode && phpbb_is_writable("{$phpbb_root_path}styles/{$path}/template")) -		{ -			$sql = 'SELECT * -					FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -					WHERE template_id = $id"; -			$result = $db->sql_query($sql); - -			while ($row = $db->sql_fetchrow($result)) -			{ -				if (!($fp = @fopen("{$phpbb_root_path}styles/{$path}/template/" . $row['template_filename'], 'wb'))) -				{ -					$store_db = 1; -					$error[] = $user->lang['EDIT_TEMPLATE_STORED_DB']; -					break; -				} - -				fwrite($fp, $row['template_data']); -				fclose($fp); -			} -			$db->sql_freeresult($result); - -			if (!$store_db) -			{ -				$sql = 'DELETE FROM ' . STYLES_TEMPLATE_DATA_TABLE . " -						WHERE template_id = $id"; -				$db->sql_query($sql); -			} -		} -		if (sizeof($error)) -		{ -			return $error; -		} -		$sql = 'UPDATE ' . STYLES_TEMPLATE_TABLE . ' -				SET template_storedb = 0 -				WHERE template_id = ' . $id; -		$db->sql_query($sql); - -		return false; -	} -  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_update.php b/phpBB/includes/acp/acp_update.php index 7e3d1a1024..ee4e49249d 100644 --- a/phpBB/includes/acp/acp_update.php +++ b/phpBB/includes/acp/acp_update.php @@ -86,5 +86,3 @@ class acp_update  		));  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index abf1481000..ac95e3709d 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -56,7 +56,7 @@ class acp_users  			$this->page_title = 'WHOIS';  			$this->tpl_name = 'simple_body'; -			$user_ip = request_var('user_ip', ''); +			$user_ip = phpbb_ip_normalise(request_var('user_ip', ''));  			$domain = gethostbyaddr($user_ip);  			$ipwhois = user_ipwhois($user_ip); @@ -921,7 +921,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				if ($user_id == $user->data['user_id']) @@ -1405,7 +1405,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				$s_birthday_day_options = '<option value="0"' . ((!$data['bday_day']) ? ' selected="selected"' : '') . '>--</option>'; @@ -1588,7 +1588,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				$dateformat_options = ''; @@ -1714,7 +1714,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				if (!$config['allow_avatar'] && $user_row['user_avatar_type']) @@ -1857,7 +1857,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				$signature_preview = ''; @@ -2388,5 +2388,3 @@ class acp_users  		return ($var & 1 << $user->keyoptions[$key]) ? true : false;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/acp_words.php b/phpBB/includes/acp/acp_words.php index 88c5bbe592..450a2fad4c 100644 --- a/phpBB/includes/acp/acp_words.php +++ b/phpBB/includes/acp/acp_words.php @@ -186,5 +186,3 @@ class acp_words  		$db->sql_freeresult($result);  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/auth.php b/phpBB/includes/acp/auth.php index 10d7973da6..e0e07e51eb 100644 --- a/phpBB/includes/acp/auth.php +++ b/phpBB/includes/acp/auth.php @@ -1281,5 +1281,3 @@ class auth_admin extends auth  		return true;  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_attachments.php b/phpBB/includes/acp/info/acp_attachments.php index b77785801f..4bcd7e2ea5 100644 --- a/phpBB/includes/acp/info/acp_attachments.php +++ b/phpBB/includes/acp/info/acp_attachments.php @@ -23,7 +23,8 @@ class acp_attachments_info  				'attach'		=> array('title' => 'ACP_ATTACHMENT_SETTINGS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_BOARD_CONFIGURATION', 'ACP_ATTACHMENTS')),  				'extensions'	=> array('title' => 'ACP_MANAGE_EXTENSIONS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_ATTACHMENTS')),  				'ext_groups'	=> array('title' => 'ACP_EXTENSION_GROUPS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_ATTACHMENTS')), -				'orphan'		=> array('title' => 'ACP_ORPHAN_ATTACHMENTS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_ATTACHMENTS')) +				'orphan'		=> array('title' => 'ACP_ORPHAN_ATTACHMENTS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_ATTACHMENTS')), +				'manage'		=> array('title' => 'ACP_MANAGE_ATTACHMENTS', 'auth' => 'acl_a_attach', 'cat' => array('ACP_ATTACHMENTS')),  			),  		);  	} @@ -36,5 +37,3 @@ class acp_attachments_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_ban.php b/phpBB/includes/acp/info/acp_ban.php index df51011ec6..7db7cf1371 100644 --- a/phpBB/includes/acp/info/acp_ban.php +++ b/phpBB/includes/acp/info/acp_ban.php @@ -35,5 +35,3 @@ class acp_ban_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_bbcodes.php b/phpBB/includes/acp/info/acp_bbcodes.php index c0206432d6..f5a3cfe10f 100644 --- a/phpBB/includes/acp/info/acp_bbcodes.php +++ b/phpBB/includes/acp/info/acp_bbcodes.php @@ -33,5 +33,3 @@ class acp_bbcodes_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_board.php b/phpBB/includes/acp/info/acp_board.php index 3e18f55940..5f73241012 100644 --- a/phpBB/includes/acp/info/acp_board.php +++ b/phpBB/includes/acp/info/acp_board.php @@ -48,5 +48,3 @@ class acp_board_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_bots.php b/phpBB/includes/acp/info/acp_bots.php index 45087f9225..6dce4b352b 100644 --- a/phpBB/includes/acp/info/acp_bots.php +++ b/phpBB/includes/acp/info/acp_bots.php @@ -33,6 +33,3 @@ class acp_bots_info  	{  	}  } - - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_captcha.php b/phpBB/includes/acp/info/acp_captcha.php index b2541c252c..cfeef20e34 100644 --- a/phpBB/includes/acp/info/acp_captcha.php +++ b/phpBB/includes/acp/info/acp_captcha.php @@ -34,5 +34,3 @@ class acp_captcha_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_database.php b/phpBB/includes/acp/info/acp_database.php index 85c3c8b21c..7d57dd4974 100644 --- a/phpBB/includes/acp/info/acp_database.php +++ b/phpBB/includes/acp/info/acp_database.php @@ -34,5 +34,3 @@ class acp_database_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_disallow.php b/phpBB/includes/acp/info/acp_disallow.php index 41315eb716..93ec5633a6 100644 --- a/phpBB/includes/acp/info/acp_disallow.php +++ b/phpBB/includes/acp/info/acp_disallow.php @@ -33,6 +33,3 @@ class acp_disallow_info  	{  	}  } - - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_email.php b/phpBB/includes/acp/info/acp_email.php index 4ad7bca58b..eb16ba05f1 100644 --- a/phpBB/includes/acp/info/acp_email.php +++ b/phpBB/includes/acp/info/acp_email.php @@ -33,6 +33,3 @@ class acp_email_info  	{  	}  } - - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_forums.php b/phpBB/includes/acp/info/acp_forums.php index 8d82eaf42d..7d4b04d384 100644 --- a/phpBB/includes/acp/info/acp_forums.php +++ b/phpBB/includes/acp/info/acp_forums.php @@ -33,5 +33,3 @@ class acp_forums_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_groups.php b/phpBB/includes/acp/info/acp_groups.php index 3910c24e6b..36e8793007 100644 --- a/phpBB/includes/acp/info/acp_groups.php +++ b/phpBB/includes/acp/info/acp_groups.php @@ -21,6 +21,7 @@ class acp_groups_info  			'version'	=> '1.0.0',  			'modes'		=> array(  				'manage'		=> array('title' => 'ACP_GROUPS_MANAGE', 'auth' => 'acl_a_group', 'cat' => array('ACP_GROUPS')), +				'position'		=> array('title' => 'ACP_GROUPS_POSITION', 'auth' => 'acl_a_group', 'cat' => array('ACP_GROUPS')),  			),  		);  	} @@ -33,5 +34,3 @@ class acp_groups_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_icons.php b/phpBB/includes/acp/info/acp_icons.php index 16bf753940..e4939aad2a 100644 --- a/phpBB/includes/acp/info/acp_icons.php +++ b/phpBB/includes/acp/info/acp_icons.php @@ -34,5 +34,3 @@ class acp_icons_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_inactive.php b/phpBB/includes/acp/info/acp_inactive.php index e17fbda9dd..1453c51c50 100644 --- a/phpBB/includes/acp/info/acp_inactive.php +++ b/phpBB/includes/acp/info/acp_inactive.php @@ -33,5 +33,3 @@ class acp_inactive_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_jabber.php b/phpBB/includes/acp/info/acp_jabber.php index 7bcf7744e1..2259b78e19 100644 --- a/phpBB/includes/acp/info/acp_jabber.php +++ b/phpBB/includes/acp/info/acp_jabber.php @@ -33,4 +33,3 @@ class acp_jabber_info  	{  	}  } -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_language.php b/phpBB/includes/acp/info/acp_language.php index f7606631fe..40eadd0abf 100644 --- a/phpBB/includes/acp/info/acp_language.php +++ b/phpBB/includes/acp/info/acp_language.php @@ -33,5 +33,3 @@ class acp_language_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_logs.php b/phpBB/includes/acp/info/acp_logs.php index f119e10b83..a28ff57bf3 100644 --- a/phpBB/includes/acp/info/acp_logs.php +++ b/phpBB/includes/acp/info/acp_logs.php @@ -36,5 +36,3 @@ class acp_logs_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_main.php b/phpBB/includes/acp/info/acp_main.php index 5574cc40d1..2e9969d2be 100644 --- a/phpBB/includes/acp/info/acp_main.php +++ b/phpBB/includes/acp/info/acp_main.php @@ -33,5 +33,3 @@ class acp_main_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_modules.php b/phpBB/includes/acp/info/acp_modules.php index 886f17d628..6cda51ed9c 100644 --- a/phpBB/includes/acp/info/acp_modules.php +++ b/phpBB/includes/acp/info/acp_modules.php @@ -35,5 +35,3 @@ class acp_modules_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_permission_roles.php b/phpBB/includes/acp/info/acp_permission_roles.php index 3ab2fecd53..47496e3859 100644 --- a/phpBB/includes/acp/info/acp_permission_roles.php +++ b/phpBB/includes/acp/info/acp_permission_roles.php @@ -36,5 +36,3 @@ class acp_permission_roles_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_permissions.php b/phpBB/includes/acp/info/acp_permissions.php index 6f341742f3..59d1b449f0 100644 --- a/phpBB/includes/acp/info/acp_permissions.php +++ b/phpBB/includes/acp/info/acp_permissions.php @@ -50,5 +50,3 @@ class acp_permissions_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_php_info.php b/phpBB/includes/acp/info/acp_php_info.php index 7d716b0f83..a131581750 100644 --- a/phpBB/includes/acp/info/acp_php_info.php +++ b/phpBB/includes/acp/info/acp_php_info.php @@ -33,5 +33,3 @@ class acp_php_info_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_profile.php b/phpBB/includes/acp/info/acp_profile.php index 8590226038..9575477333 100644 --- a/phpBB/includes/acp/info/acp_profile.php +++ b/phpBB/includes/acp/info/acp_profile.php @@ -33,5 +33,3 @@ class acp_profile_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_prune.php b/phpBB/includes/acp/info/acp_prune.php index 46565c4f16..c688776380 100644 --- a/phpBB/includes/acp/info/acp_prune.php +++ b/phpBB/includes/acp/info/acp_prune.php @@ -34,5 +34,3 @@ class acp_prune_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_ranks.php b/phpBB/includes/acp/info/acp_ranks.php index 06b9c6d284..12afeb041b 100644 --- a/phpBB/includes/acp/info/acp_ranks.php +++ b/phpBB/includes/acp/info/acp_ranks.php @@ -33,5 +33,3 @@ class acp_ranks_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_reasons.php b/phpBB/includes/acp/info/acp_reasons.php index 65d805ee18..5bc1310088 100644 --- a/phpBB/includes/acp/info/acp_reasons.php +++ b/phpBB/includes/acp/info/acp_reasons.php @@ -33,5 +33,3 @@ class acp_reasons_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_search.php b/phpBB/includes/acp/info/acp_search.php index 4afd6c6994..979d84e63a 100644 --- a/phpBB/includes/acp/info/acp_search.php +++ b/phpBB/includes/acp/info/acp_search.php @@ -34,5 +34,3 @@ class acp_search_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_send_statistics.php b/phpBB/includes/acp/info/acp_send_statistics.php index de5dcdb8ad..93efa99b6d 100644 --- a/phpBB/includes/acp/info/acp_send_statistics.php +++ b/phpBB/includes/acp/info/acp_send_statistics.php @@ -33,5 +33,3 @@ class acp_send_statistics_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_styles.php b/phpBB/includes/acp/info/acp_styles.php index db67167e39..bdcceb1b7d 100644 --- a/phpBB/includes/acp/info/acp_styles.php +++ b/phpBB/includes/acp/info/acp_styles.php @@ -23,7 +23,6 @@ class acp_styles_info  				'style'		=> array('title' => 'ACP_STYLES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),  				'template'	=> array('title' => 'ACP_TEMPLATES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_COMPONENTS')),  				'theme'		=> array('title' => 'ACP_THEMES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_COMPONENTS')), -				'imageset'	=> array('title' => 'ACP_IMAGESETS', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_COMPONENTS')),  			),  		);  	} @@ -36,5 +35,3 @@ class acp_styles_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_update.php b/phpBB/includes/acp/info/acp_update.php index 886cdc94d5..8ecb062d4e 100644 --- a/phpBB/includes/acp/info/acp_update.php +++ b/phpBB/includes/acp/info/acp_update.php @@ -33,5 +33,3 @@ class acp_update_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_users.php b/phpBB/includes/acp/info/acp_users.php index 10081ac870..a63480d0f0 100644 --- a/phpBB/includes/acp/info/acp_users.php +++ b/phpBB/includes/acp/info/acp_users.php @@ -43,5 +43,3 @@ class acp_users_info  	{  	}  } - -?>
\ No newline at end of file diff --git a/phpBB/includes/acp/info/acp_words.php b/phpBB/includes/acp/info/acp_words.php index a2417f8a7f..4a2ddfea7f 100644 --- a/phpBB/includes/acp/info/acp_words.php +++ b/phpBB/includes/acp/info/acp_words.php @@ -33,5 +33,3 @@ class acp_words_info  	{  	}  } - -?>
\ No newline at end of file | 
