diff options
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/adm/style/acp_styles.html | 7 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_styles.php | 272 | ||||
| -rw-r--r-- | phpBB/language/en/acp/styles.php | 7 | 
3 files changed, 162 insertions, 124 deletions
diff --git a/phpBB/adm/style/acp_styles.html b/phpBB/adm/style/acp_styles.html index 1978537cf4..098cc723d9 100644 --- a/phpBB/adm/style/acp_styles.html +++ b/phpBB/adm/style/acp_styles.html @@ -23,16 +23,17 @@  		<dd><select id="new_id" name="new_id">{S_REPLACE_OPTIONS}</select></dd>  	</dl>  	<!-- IF S_DELETE_STYLE --> +		<hr />  		<dl> -			<dt><label for="new_template_id">{L_REPLACE_TEMPLATE}:</label><br /><span>{L_REPLACE_TEMPLATE_EXPLAIN}</span></dt> +			<dt><label for="new_template_id">{L_DELETE_TEMPLATE}:</label><br /><span>{L_REPLACE_TEMPLATE_EXPLAIN}</span></dt>  			<dd><select id="new_template_id" name="new_template_id">{S_REPLACE_TEMPLATE_OPTIONS}</select></dd>  		</dl>  		<dl> -			<dt><label for="new_theme_id">{L_REPLACE_THEME}:</label><br /><span>{L_REPLACE_THEME_EXPLAIN}</span></dt> +			<dt><label for="new_theme_id">{L_DELETE_THEME}:</label><br /><span>{L_REPLACE_THEME_EXPLAIN}</span></dt>  			<dd><select id="new_theme_id" name="new_theme_id">{S_REPLACE_THEME_OPTIONS}</select></dd>  		</dl>  		<dl> -			<dt><label for="new_imageset_id">{L_REPLACE_IMAGESET}:</label><br /><span>{L_REPLACE_IMAGESET_EXPLAIN}</span></dt> +			<dt><label for="new_imageset_id">{L_DELETE_IMAGESET}:</label><br /><span>{L_REPLACE_IMAGESET_EXPLAIN}</span></dt>  			<dd><select id="new_imageset_id" name="new_imageset_id">{S_REPLACE_IMAGESET_OPTIONS}</select></dd>  		</dl>  	<!-- ENDIF --> diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index d9565214db..2e2807c8cb 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -1587,23 +1587,23 @@ parse_css_file = {PARSE_CSS_FILE}  		{  			case 'style':  				$sql_from = STYLES_TABLE; -				$sql_select = 'style_name, template_id, theme_id, imageset_id'; +				$sql_select = 'style_id, style_name, template_id, theme_id, imageset_id';  				$sql_where = 'AND style_active = 1';  			break;  			case 'template':  				$sql_from = STYLES_TEMPLATE_TABLE; -				$sql_select = 'template_name, template_path, template_storedb'; +				$sql_select = 'template_id, template_name, template_path, template_storedb';  			break;  			case 'theme':  				$sql_from = STYLES_THEME_TABLE; -				$sql_select = 'theme_name, theme_path, theme_storedb'; +				$sql_select = 'theme_id, theme_name, theme_path, theme_storedb';  			break;  			case 'imageset':  				$sql_from = STYLES_IMAGESET_TABLE; -				$sql_select = 'imageset_name, imageset_path'; +				$sql_select = 'imageset_id, imageset_name, imageset_path';  			break;  		} @@ -1633,37 +1633,14 @@ parse_css_file = {PARSE_CSS_FILE}  			trigger_error($user->lang['NO_' . $l_prefix] . adm_back_link($this->u_action), E_USER_WARNING);  		} -		$sql = "SELECT {$mode}_id, {$mode}_name -			FROM $sql_from -			WHERE {$mode}_id <> $style_id -			$sql_where -			ORDER BY {$mode}_name ASC"; -		$result = $db->sql_query($sql); - -		$s_options = ''; - -		if ($row = $db->sql_fetchrow($result)) -		{ -			do -			{ -				$s_options .= '<option value="' . $row[$mode . '_id'] . '">' . $row[$mode . '_name'] . '</option>'; -			} -			while ($row = $db->sql_fetchrow($result)); -		} -		else -		{ -			trigger_error($user->lang['ONLY_' . $l_prefix] . adm_back_link($this->u_action), E_USER_WARNING); -		} -		$db->sql_freeresult($result); -  		if ($update)  		{ -			$sql = "DELETE FROM $sql_from -				WHERE {$mode}_id = $style_id"; -			$db->sql_query($sql); -  			if ($mode == 'style')  			{ +				$sql = "DELETE FROM $sql_from +					WHERE {$mode}_id = $style_id"; +				$db->sql_query($sql); +  				$sql = 'UPDATE ' . USERS_TABLE . "  					SET user_style = $new_id  					WHERE user_style = $style_id"; @@ -1684,58 +1661,13 @@ parse_css_file = {PARSE_CSS_FILE}  				foreach ($components as $component)  				{  					$new_id = request_var('new_' . $component . '_id', 0); -					$style_id = $style_row[$component . '_id']; - -					if (($new_id == 0) || ($component === 'template' && ($conflicts = $this->check_inheritance($component, $style_id)))) -					{ -						// We can not delete the template, as the selected one is inheriting from this one. -						continue; -					} - -					if ($component == 'imageset') -					{ -						$sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " -							WHERE imageset_id = $style_id"; -						$db->sql_query($sql); -					} - -					switch ($component) -					{ -						case 'template': -							$sql_from = STYLES_TEMPLATE_TABLE; -						break; - -						case 'theme': -							$sql_from = STYLES_THEME_TABLE; -						break; - -						case 'imageset': -							$sql_from = STYLES_IMAGESET_TABLE;; -						break; -					} - -					$sql = "DELETE FROM $sql_from -						WHERE {$component}_id = $style_id"; -					$db->sql_query($sql); - -					$sql = 'UPDATE ' . STYLES_TABLE . " -						SET {$component}_id = $new_id -						WHERE {$component}_id = $style_id"; -					$db->sql_query($sql); +					$component_id = $style_row[$component . '_id']; +					$this->remove_component($component, $component_id, $new_id);  				}  			}  			else  			{ -				if ($mode == 'imageset') -				{ -					$sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " -						WHERE imageset_id = $style_id"; -					$db->sql_query($sql); -				} -				$sql = 'UPDATE ' . STYLES_TABLE . " -					SET {$mode}_id = $new_id -					WHERE {$mode}_id = $style_id"; -				$db->sql_query($sql); +				$this->remove_component($mode, $style_id, $new_id);  			}  			$cache->destroy('sql', STYLES_TABLE); @@ -1745,11 +1677,12 @@ parse_css_file = {PARSE_CSS_FILE}  			trigger_error($user->lang[$message] . adm_back_link($this->u_action));  		} +		$this->display_component_options($mode, $style_row[$mode . '_id'], $style_row); +  		$this->page_title = 'DELETE_' . $l_prefix;  		$template->assign_vars(array(  			'S_DELETE'			=> true, -			'S_REPLACE_OPTIONS'	=> $s_options,  			'L_TITLE'			=> $user->lang[$this->page_title],  			'L_EXPLAIN'			=> $user->lang[$this->page_title . '_EXPLAIN'], @@ -1769,55 +1702,158 @@ parse_css_file = {PARSE_CSS_FILE}  			$template->assign_vars(array(  				'S_DELETE_STYLE'		=> true,  			)); +		} +	} + +	/** +	* Remove template/theme/imageset entry from the database +	*/ +	function remove_component($component, $style_id, $new_id) +	{ +		global $db; + +		if (($new_id == 0) || ($component === 'template' && ($conflicts = $this->check_inheritance($component, $style_id)))) +		{ +			// We can not delete the template, as the selected one is inheriting from this one. +			return; +		} + +		if ($component == 'imageset') +		{ +			$sql = 'DELETE FROM ' . STYLES_IMAGESET_DATA_TABLE . " +				WHERE imageset_id = $style_id"; +			$db->sql_query($sql); +		} + +		switch ($component) +		{ +			case 'template': +				$sql_from = STYLES_TEMPLATE_TABLE; +			break; + +			case 'theme': +				$sql_from = STYLES_THEME_TABLE; +			break; + +			case 'imageset': +				$sql_from = STYLES_IMAGESET_TABLE;; +			break; +		} + +		$sql = "DELETE FROM $sql_from +			WHERE {$component}_id = $style_id"; +		$db->sql_query($sql); + +		$sql = 'UPDATE ' . STYLES_TABLE . " +			SET {$component}_id = $new_id +			WHERE {$component}_id = $style_id"; +		$db->sql_query($sql); +	} + +	/** +	* Display the options which can be used to replace a style/template/theme/imageset +	*/ +	function display_component_options($component, $component_id, $style_row = false, $style_id = false) +	{ +		global $db, $template, $user; -			$components = array('template', 'theme', 'imageset'); -			foreach ($components as $mode) +		$component_in_use = array(); +		if (($component != 'style') && $style_id) +		{ +			$sql = 'SELECT style_id, style_name +				FROM ' . STYLES_TABLE . " +				WHERE {$component}_id = {$component_id} +					AND style_id <> {$style_id} +				ORDER BY style_name ASC"; +			$result = $db->sql_query($sql); +			while ($row = $db->sql_fetchrow($result))  			{ -				$sql_where = ''; -				switch ($mode) +				$component_in_use[] = $row['style_name']; +			} +			$db->sql_freeresult($result); + +			if ($component === 'template' && ($conflicts = $this->check_inheritance($component, $component_id))) +			{ +				foreach ($conflicts as $temp_id => $conflict_data)  				{ -					case 'template': -						$sql_from = STYLES_TEMPLATE_TABLE; -						$sql_select = 'template_name, template_path, template_storedb'; -						$sql_where = ' AND template_inherits_id <> ' . $style_row[$mode . '_id']; -					break; +					$component_in_use[] = $conflict_data['template_name']; +				} +			} +		} -					case 'theme': -						$sql_from = STYLES_THEME_TABLE; -						$sql_select = 'theme_name, theme_path, theme_storedb'; -					break; +		$sql_where = ''; +		switch ($component) +		{ +			case 'style': +				$sql_from = STYLES_TABLE; +				$sql_where = 'WHERE style_active = 1'; +			break; -					case 'imageset': -						$sql_from = STYLES_IMAGESET_TABLE; -						$sql_select = 'imageset_name, imageset_path'; -					break; -				} +			case 'template': +				$sql_from = STYLES_TEMPLATE_TABLE; +				$sql_where = 'WHERE template_inherits_id <> ' . $component_id; +			break; -				$sql = "SELECT {$mode}_id, {$mode}_name -					FROM $sql_from -					WHERE {$mode}_id <> {$style_row[$mode . '_id']} -						$sql_where -					ORDER BY {$mode}_name ASC"; -				$result = $db->sql_query($sql); +			case 'theme': +				$sql_from = STYLES_THEME_TABLE; +			break; -				$s_options = '<option value="0">' . $user->lang['KEEP_' . strtoupper($mode)] . '</option>'; +			case 'imageset': +				$sql_from = STYLES_IMAGESET_TABLE; +			break; +		} -				$set_default = true; -				while ($row = $db->sql_fetchrow($result)) +		$s_options = ''; +		if (($component != 'style') && empty($component_in_use)) +		{ +			$sql = "SELECT {$component}_id, {$component}_name +				FROM $sql_from +				WHERE {$component}_id = {$component_id}"; +			$result = $db->sql_query($sql); +			$row = $db->sql_fetchrow($result); +			$db->sql_freeresult($result); + +			$s_options .= '<option value="-1" selected="selected">' . $user->lang['DELETE_' . strtoupper($component)] . '</option>'; +			$s_options .= '<option value="0">' . sprintf($user->lang['KEEP_' . strtoupper($component)], $row[$component . '_name']) . '</option>'; +		} +		else +		{ +			$sql = "SELECT {$component}_id, {$component}_name +				FROM $sql_from +				$sql_where +				ORDER BY {$component}_name ASC"; +			$result = $db->sql_query($sql); + +			$s_keep_option = $s_options = ''; +			while ($row = $db->sql_fetchrow($result)) +			{ +				if ($row[$component . '_id'] != $component_id)  				{ -					if ($set_default) -					{ -						$s_options .= '<option value="' . $row[$mode . '_id'] . '" selected="selected">' . $row[$mode . '_name'] . '</option>'; -						$set_default = false; -					} -					else -					{ -						$s_options .= '<option value="' . $row[$mode . '_id'] . '">' . $row[$mode . '_name'] . '</option>'; -					} +					$s_options .= '<option value="' . $row[$component . '_id'] . '">' . sprintf($user->lang['REPLACE_WITH_OPTION'], $row[$component . '_name']) . '</option>';  				} -				$db->sql_freeresult($result); +				else if ($component != 'style') +				{ +					$s_keep_option = '<option value="0" selected="selected">' . sprintf($user->lang['KEEP_' . strtoupper($component)], $row[$component . '_name']) . '</option>'; +				} +			} +			$db->sql_freeresult($result); +			$s_options = $s_keep_option . $s_options; +		} -				$template->assign_var('S_REPLACE_' . strtoupper($mode) . '_OPTIONS', $s_options); +		if (!$style_row) +		{ +			$template->assign_var('S_REPLACE_' . strtoupper($component) . '_OPTIONS', $s_options); +		} +		else +		{ +			$template->assign_var('S_REPLACE_OPTIONS', $s_options); +			if ($component == 'style') +			{ +				$components = array('template', 'theme', 'imageset'); +				foreach ($components as $component) +				{ +					$this->display_component_options($component, $style_row[$component . '_id'], false, $component_id); +				}  			}  		}  	} diff --git a/phpBB/language/en/acp/styles.php b/phpBB/language/en/acp/styles.php index f5531071e4..8f65b3ef5f 100644 --- a/phpBB/language/en/acp/styles.php +++ b/phpBB/language/en/acp/styles.php @@ -285,9 +285,9 @@ $lang = array_merge($lang, array(  	'INSTALLED_TEMPLATE'		=> 'Installed templates',  	'INSTALLED_THEME'			=> 'Installed themes', -	'KEEP_IMAGESET'				=> 'Keep imageset', -	'KEEP_TEMPLATE'				=> 'Keep template', -	'KEEP_THEME'				=> 'Keep theme', +	'KEEP_IMAGESET'				=> 'Keep "%s" imageset', +	'KEEP_TEMPLATE'				=> 'Keep "%s" template', +	'KEEP_THEME'				=> 'Keep "%s" theme',  	'LINE_SPACING'				=> 'Line spacing',  	'LOCALISED_IMAGES'			=> 'Localised', @@ -325,6 +325,7 @@ $lang = array_merge($lang, array(  	'REPLACE_TEMPLATE_EXPLAIN'	=> 'This template set will replace the one you are deleting in any styles that use it.',  	'REPLACE_THEME'				=> 'Replace theme with',  	'REPLACE_THEME_EXPLAIN'		=> 'This theme will replace the one you are deleting in any styles that use it.', +	'REPLACE_WITH_OPTION'		=> 'Replace with "%s"',  	'REQUIRES_IMAGESET'			=> 'This style requires the %s imageset to be installed.',  	'REQUIRES_TEMPLATE'			=> 'This style requires the %s template set to be installed.',  	'REQUIRES_THEME'			=> 'This style requires the %s theme to be installed.',  | 
