+++ /dev/null
-<?php\r
-\r
-/***************************************************************************\r
- * xs_clone.php\r
- * ------------\r
- * copyright : (C) 2003 - 2005 CyberAlien\r
- * support : http://www.phpbbstyles.com\r
- *\r
- * version : 2.3.1\r
- *\r
- * file revision : 72\r
- * project revision : 78\r
- * last modified : 05 Dec 2005 13:54:54\r
- *\r
- ***************************************************************************/\r
-\r
-/***************************************************************************\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- ***************************************************************************/\r
-\r
-define('IN_PHPBB', 1);\r
-$phpbb_root_path = "./../";\r
-$no_page_header = true;\r
-require($phpbb_root_path . 'extension.inc');\r
-require('./pagestart.' . $phpEx);\r
-\r
-// check if mod is installed\r
-if(empty($template->xs_version) || $template->xs_version !== 8)\r
-{\r
- message_die(GENERAL_ERROR, isset($lang['xs_error_not_installed']) ? $lang['xs_error_not_installed'] : 'eXtreme Styles mod is not installed. You forgot to upload includes/template.php');\r
-}\r
-\r
-define('IN_XS', true);\r
-include_once('xs_include.' . $phpEx);\r
-\r
-$template->assign_block_vars('nav_left',array('ITEM' => '» <a href="' . append_sid('xs_clone.'.$phpEx) . '">' . $lang['xs_clone_styles'] . '</a>'));\r
-\r
-$lang['xs_clone_back'] = str_replace('{URL}', append_sid('xs_clone.'.$phpEx), $lang['xs_clone_back']);\r
-\r
-//\r
-// Check required functions\r
-//\r
-if(!@function_exists('gzcompress'))\r
-{\r
- xs_error($lang['xs_import_nogzip']);\r
-}\r
-\r
-//\r
-// clone style\r
-//\r
-if(!empty($HTTP_POST_VARS['clone_style']) && !defined('DEMO_MODE'))\r
-{\r
- $style = intval($HTTP_POST_VARS['clone_style']);\r
- $new_name = stripslashes($HTTP_POST_VARS['clone_name']);\r
- // get theme data\r
- $sql = "SELECT * FROM " . THEMES_TABLE . " WHERE themes_id='{$style}'";\r
- if(!$result = $db->sql_query($sql))\r
- {\r
- xs_error($lang['xs_no_style_info'] . '<br /><br />' . $lang['xs_clone_back'], __LINE__, __FILE__);\r
- }\r
- $theme = $db->sql_fetchrow($result);\r
- if(empty($theme['themes_id']))\r
- {\r
- xs_error($lang['xs_no_themes'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- if($theme['style_name'] === stripslashes($new_name))\r
- {\r
- xs_error($lang['xs_clone_taken'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- // check for clone\r
- $sql = "SELECT themes_id FROM " . THEMES_TABLE . " WHERE style_name = '" . xs_sql($new_name) . "'";\r
- if(!$result = $db->sql_query($sql))\r
- {\r
- xs_error($lang['xs_no_theme_data'] . '<br /><br />' . $lang['xs_clone_back'], __LINE__, __FILE__);\r
- }\r
- $row = $db->sql_fetchrow($result);\r
- if(!empty($row['themes_id']))\r
- {\r
- xs_error($lang['xs_clone_taken'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- // clone it\r
- $vars = array('style_name');\r
- $values = array(xs_sql($new_name));\r
- foreach($theme as $var => $value)\r
- {\r
- if(!is_integer($var) && $var !== 'style_name' && $var !== 'themes_id')\r
- {\r
- $vars[] = $var;\r
- $values[] = xs_sql($value);\r
- }\r
- }\r
- $sql = "INSERT INTO " . THEMES_TABLE . " (" . implode(', ', $vars) . ") VALUES ('" . implode("','", $values) . "')";\r
- if(!$result = $db->sql_query($sql))\r
- {\r
- xs_error($lang['xs_error_new_row'] . '<br /><br />' . $lang['xs_clone_back'], __LINE__, __FILE__);\r
- }\r
- // recache themes\r
- if(defined('XS_MODS_CATEGORY_HIERARCHY210'))\r
- {\r
- if ( empty($themes) )\r
- {\r
- $themes = new themes();\r
- }\r
- if ( !empty($themes) )\r
- {\r
- $themes->read(true);\r
- }\r
- }\r
- xs_message($lang['Information'], $lang['xs_theme_cloned'] . '<br /><br />' . $lang['xs_clone_back']);\r
-}\r
-\r
-//\r
-// clone template\r
-//\r
-if(!empty($HTTP_POST_VARS['clone_tpl']) && !defined('DEMO_MODE'))\r
-{\r
- $old_name = xs_tpl_name($HTTP_POST_VARS['clone_tpl']);\r
- $new_name = xs_tpl_name($HTTP_POST_VARS['clone_style_name']);\r
- if(empty($new_name) || $new_name === $old_name)\r
- {\r
- xs_error($lang['xs_invalid_style_name'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- // check if template exists\r
- if(@file_exists('../templates/'.$new_name))\r
- {\r
- xs_error($lang['xs_clone_style_exists'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- // check variables\r
- $total = intval($HTTP_POST_VARS['total']);\r
- $vars = array('clone_tpl', 'clone_style_name', 'total');\r
- $count = 0;\r
- $list = array();\r
- for($i=0; $i<$total; $i++)\r
- {\r
- $vars[] = 'clone_style_id_'.$i;\r
- $vars[] = 'clone_style_'.$i;\r
- $vars[] = 'clone_style_name_'.$i;\r
- if(!empty($HTTP_POST_VARS['clone_style_'.$i]) && !empty($HTTP_POST_VARS['clone_style_name_'.$i]))\r
- {\r
- // prepare for export\r
- $list[] = intval($HTTP_POST_VARS['clone_style_id_'.$i]);\r
- $HTTP_POST_VARS['export_style_'.$i] = $HTTP_POST_VARS['clone_style_'.$i];\r
- $HTTP_POST_VARS['export_style_id_'.$i] = $HTTP_POST_VARS['clone_style_id_'.$i];\r
- $HTTP_POST_VARS['export_style_name_'.$i] = $HTTP_POST_VARS['clone_style_name_'.$i];\r
- // prepare for import\r
- $HTTP_POST_VARS['import_install_'.$count] = '1';\r
- $count ++;\r
- }\r
- }\r
- if(!$count)\r
- {\r
- xs_error($lang['xs_clone_no_select'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- $request = array();\r
- for($i=0; $i<count($vars); $i++)\r
- {\r
- $request[$vars[$i]] = stripslashes($HTTP_POST_VARS[$vars[$i]]);\r
- }\r
- // get ftp configuration\r
- $write_local = false;\r
- if(!get_ftp_config(append_sid('xs_clone.'.$phpEx), $request, true))\r
- {\r
- xs_exit();\r
- }\r
- xs_ftp_connect(append_sid('xs_clone.'.$phpEx), $request, true);\r
- if($ftp === XS_FTP_LOCAL)\r
- {\r
- $write_local = true;\r
- $write_local_dir = '../templates/';\r
- }\r
- // prepare variables for export\r
- $export = $old_name;\r
- $exportas = $new_name;\r
- // Generate theme_info.cfg\r
- $sql = "SELECT * FROM " . THEMES_TABLE . " WHERE template_name = '$export' AND themes_id IN (" . implode(', ', $list) . ")";\r
- if(!$result = $db->sql_query($sql))\r
- {\r
- xs_error($lang['xs_no_theme_data'] . $lang['xs_clone_back']);\r
- }\r
- $theme_rowset = $db->sql_fetchrowset($result);\r
- if(count($theme_rowset) == 0)\r
- {\r
- xs_error($lang['xs_no_themes'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- $theme_data = xs_generate_themeinfo($theme_rowset, $export, $exportas, $total);\r
- // prepare to pack \r
- $pack_error = '';\r
- $pack_list = array();\r
- $pack_replace = array('./theme_info.cfg' => $theme_data);\r
- // pack style\r
- for($i = 0; $i < count($theme_rowset); $i++)\r
- {\r
- $id = $theme_rowset[$i]['themes_id'];\r
- $theme_name = $theme_rowset[$i]['style_name'];\r
- for($j=0; $j<$total; $j++)\r
- {\r
- if(!empty($HTTP_POST_VARS['export_style_name_'.$j]) && $HTTP_POST_VARS['export_style_id_'.$j] == $id)\r
- {\r
- $theme_name = stripslashes($HTTP_POST_VARS['export_style_name_'.$j]);\r
- }\r
- }\r
- $theme_rowset[$i]['style_name'] = $theme_name;\r
- }\r
- $data = pack_style($export, $exportas, $theme_rowset, '');\r
- // check errors\r
- if($pack_error)\r
- {\r
- xs_error(str_replace('{TPL}', $export, $lang['xs_export_error']) . $pack_error . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- if(!$data)\r
- {\r
- xs_error(str_replace('{TPL}', $export, $lang['xs_export_error2']) . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- // save as file\r
- $filename = 'clone_' . time() . '.tmp';\r
- $tmp_filename = XS_TEMP_DIR . $filename;\r
- $f = @fopen($tmp_filename, 'wb');\r
- if(!$f)\r
- {\r
- xs_error(str_replace('{FILE}', $tpl_filename, $lang['xs_error_cannot_create_tmp']) . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- fwrite($f, $data);\r
- fclose($f);\r
- // prepare import variables\r
- $total = $count;\r
- $HTTP_POST_VARS['total'] = $count;\r
- $list_only = false;\r
- $get_file = '';\r
- define('XS_CLONING', true);\r
- $lang['xs_import_back'] = $lang['xs_clone_back'];\r
- include('xs_include_import.' . $phpEx);\r
- include('xs_include_import2.' . $phpEx); \r
-}\r
-\r
-\r
-//\r
-// clone style menu\r
-//\r
-if(!empty($HTTP_GET_VARS['clone']))\r
-{\r
- $style = stripslashes($HTTP_GET_VARS['clone']);\r
- $sql = "SELECT themes_id, style_name FROM " . THEMES_TABLE . " WHERE template_name = '" . xs_sql($style) . "' ORDER BY style_name ASC";\r
- if(!$result = $db->sql_query($sql))\r
- {\r
- xs_error($lang['xs_no_theme_data'] . '<br /><br />' . $lang['xs_clone_back'], __LINE__, __FILE__);\r
- }\r
- $theme_rowset = $db->sql_fetchrowset($result);\r
- if(count($theme_rowset) == 0)\r
- {\r
- xs_error($lang['xs_no_themes'] . '<br /><br />' . $lang['xs_clone_back']);\r
- }\r
- $template->set_filenames(array('body' => XS_TPL_PATH . 'clone2.tpl'));\r
- // clone template\r
- $template->assign_vars(array(\r
- 'FORM_ACTION' => append_sid('xs_clone.'.$phpEx),\r
- 'CLONE_TEMPLATE' => htmlspecialchars($style),\r
- 'STYLE_ID' => $theme_rowset[0]['themes_id'],\r
- 'STYLE_NAME' => htmlspecialchars($theme_rowset[0]['style_name']),\r
- 'TOTAL' => count($theme_rowset),\r
- 'L_CLONE_STYLE3' => str_replace('{STYLE}', htmlspecialchars($style), $lang['xs_clone_style3'])\r
- ));\r
- // clone styles\r
- for($i=0; $i<count($theme_rowset); $i++)\r
- {\r
- $template->assign_block_vars('styles', array(\r
- 'ID' => $theme_rowset[$i]['themes_id'],\r
- 'TPL' => htmlspecialchars($theme_rowset[$i]['template_name']),\r
- 'STYLE' => htmlspecialchars($theme_rowset[$i]['style_name']),\r
- 'L_CLONE' => str_replace('{STYLE}', htmlspecialchars($theme_rowset[$i]['style_name']), $lang['xs_clone_style2'])\r
- ));\r
- }\r
- if(count($theme_rowset) == 1)\r
- {\r
- $template->assign_block_vars('switch_select_nostyle', array());\r
- if($theme_rowset[0]['style_name'] === $style)\r
- {\r
- $template->assign_block_vars('switch_onchange', array());\r
- }\r
- }\r
- else\r
- {\r
- $template->assign_block_vars('switch_select_style', array());\r
- for($i=0; $i<count($theme_rowset); $i++)\r
- {\r
- $template->assign_block_vars('switch_select_style.style', array(\r
- 'NUM' => $i,\r
- 'ID' => $theme_rowset[$i]['themes_id'],\r
- 'NAME' => htmlspecialchars($theme_rowset[$i]['style_name'])\r
- ));\r
- }\r
- }\r
- $template->pparse('body');\r
- xs_exit();\r
-}\r
-\r
-\r
-\r
-//\r
-// get list of installed styles\r
-//\r
-$sql = 'SELECT themes_id, template_name, style_name FROM ' . THEMES_TABLE . ' ORDER BY template_name';\r
-if(!$result = $db->sql_query($sql))\r
-{\r
- xs_error($lang['xs_no_style_info'], __LINE__, __FILE__);\r
-}\r
-$style_rowset = $db->sql_fetchrowset($result);\r
-\r
-$prev_id = -1;\r
-$prev_tpl = '';\r
-$style_names = array();\r
-$j = 0;\r
-for($i=0; $i<count($style_rowset); $i++)\r
-{\r
- $item = $style_rowset[$i];\r
- if($item['template_name'] === $prev_tpl)\r
- {\r
- $style_names[] = htmlspecialchars($item['style_name']);\r
- }\r
- else\r
- {\r
- if($prev_id > 0)\r
- {\r
- $str = implode('<br />', $style_names);\r
- $str2 = urlencode($prev_tpl);\r
- $row_class = $xs_row_class[$j % 2];\r
- $j++;\r
- $template->assign_block_vars('styles', array(\r
- 'ROW_CLASS' => $row_class,\r
- 'TPL' => $prev_tpl,\r
- 'STYLES' => $str,\r
- 'U_CLONE' => "xs_clone.{$phpEx}?clone={$str2}&sid={$userdata['session_id']}",\r
- )\r
- );\r
- }\r
- $prev_id = $item['themes_id'];\r
- $prev_tpl = $item['template_name'];\r
- $style_names = array(htmlspecialchars($item['style_name']));\r
- }\r
-}\r
-\r
-if($prev_id > 0)\r
-{\r
- $str = implode('<br />', $style_names);\r
- $str2 = urlencode($prev_tpl);\r
- $row_class = $xs_row_class[$j % 2];\r
- $j++;\r
- $template->assign_block_vars('styles', array(\r
- 'ROW_CLASS' => $row_class,\r
- 'TPL' => $prev_tpl,\r
- 'STYLES' => $str,\r
- 'U_CLONE' => "xs_clone.{$phpEx}?clone={$str2}&sid={$userdata['session_id']}",\r
- )\r
- );\r
-}\r
-\r
-$template->set_filenames(array('body' => XS_TPL_PATH . 'clone.tpl'));\r
-$template->pparse('body');\r
-xs_exit();\r
-\r
-?>
\ No newline at end of file