xs_version) || $template->xs_version !== 5) { message_die(GENERAL_ERROR, 'eXtreme Styles mod is not installed. You forgot to upload includes/template.php'); } define('IN_XS', true); include_once('xs_include.' . $phpEx); $template->assign_block_vars('nav_left',array('ITEM' => '» ' . $lang['xs_clone_styles'] . '')); $lang['xs_clone_back'] = str_replace('{URL}', append_sid('xs_clone.'.$phpEx), $lang['xs_clone_back']); // // Check required functions // if(!@function_exists('gzcompress')) { xs_error($lang['xs_import_nogzip']); } // // clone style // if(!empty($HTTP_POST_VARS['clone_style']) && !defined('DEMO_MODE')) { $style = intval($HTTP_POST_VARS['clone_style']); $new_name = stripslashes($HTTP_POST_VARS['clone_name']); // get theme data $sql = "SELECT * FROM " . THEMES_TABLE . " WHERE themes_id='{$style}'"; if(!$result = $db->sql_query($sql)) { xs_error($lang['xs_no_style_info'] . '

' . $lang['xs_clone_back'], __LINE__, __FILE__); } $theme = $db->sql_fetchrow($result); if(empty($theme['themes_id'])) { xs_error($lang['xs_no_themes'] . '

' . $lang['xs_clone_back']); } if($theme['style_name'] === stripslashes($new_name)) { xs_error($lang['xs_clone_taken'] . '

' . $lang['xs_clone_back']); } // check for clone $sql = "SELECT themes_id FROM " . THEMES_TABLE . " WHERE style_name = '" . xs_sql($new_name) . "'"; if(!$result = $db->sql_query($sql)) { xs_error($lang['xs_no_theme_data'] . '

' . $lang['xs_clone_back'], __LINE__, __FILE__); } $row = $db->sql_fetchrow($result); if(!empty($row['themes_id'])) { xs_error($lang['xs_clone_taken'] . '

' . $lang['xs_clone_back']); } // clone it $vars = array('style_name'); $values = array(xs_sql($new_name)); foreach($theme as $var => $value) { if(!is_integer($var) && $var !== 'style_name' && $var !== 'themes_id') { $vars[] = $var; $values[] = xs_sql($value); } } $sql = "INSERT INTO " . THEMES_TABLE . " (" . implode(', ', $vars) . ") VALUES ('" . implode("','", $values) . "')"; if(!$result = $db->sql_query($sql)) { xs_error($lang['xs_error_new_row'] . '

' . $lang['xs_clone_back'], __LINE__, __FILE__); } xs_message($lang['Information'], $lang['xs_theme_cloned'] . '

' . $lang['xs_clone_back']); } // // clone template // if(!empty($HTTP_POST_VARS['clone_tpl']) && !defined('DEMO_MODE')) { $old_name = xs_tpl_name($HTTP_POST_VARS['clone_tpl']); $new_name = xs_tpl_name($HTTP_POST_VARS['clone_style_name']); if(empty($new_name) || $new_name === $old_name) { xs_error($lang['xs_invalid_style_name'] . '

' . $lang['xs_clone_back']); } // check if template exists if(@file_exists('../templates/'.$new_name)) { xs_error($lang['xs_clone_style_exists'] . '

' . $lang['xs_clone_back']); } // check variables $total = intval($HTTP_POST_VARS['total']); $vars = array('clone_tpl', 'clone_style_name', 'total'); $count = 0; $list = array(); for($i=0; $i<$total; $i++) { $vars[] = 'clone_style_id_'.$i; $vars[] = 'clone_style_'.$i; $vars[] = 'clone_style_name_'.$i; if(!empty($HTTP_POST_VARS['clone_style_'.$i]) && !empty($HTTP_POST_VARS['clone_style_name_'.$i])) { // prepare for export $list[] = intval($HTTP_POST_VARS['clone_style_id_'.$i]); $HTTP_POST_VARS['export_style_'.$i] = $HTTP_POST_VARS['clone_style_'.$i]; $HTTP_POST_VARS['export_style_id_'.$i] = $HTTP_POST_VARS['clone_style_id_'.$i]; $HTTP_POST_VARS['export_style_name_'.$i] = $HTTP_POST_VARS['clone_style_name_'.$i]; // prepare for import $HTTP_POST_VARS['import_install_'.$count] = '1'; $count ++; } } if(!$count) { xs_error($lang['xs_clone_no_select'] . '

' . $lang['xs_clone_back']); } $request = array(); for($i=0; $isql_query($sql)) { xs_error($lang['xs_no_theme_data'] . $lang['xs_clone_back']); } $theme_rowset = $db->sql_fetchrowset($result); if(count($theme_rowset) == 0) { xs_error($lang['xs_no_themes'] . '

' . $lang['xs_clone_back']); } $theme_data = xs_generate_themeinfo($theme_rowset, $export, $exportas, $total); // prepare to pack $pack_error = ''; $pack_list = array(); $pack_replace = array('./theme_info.cfg' => $theme_data); // pack style for($i = 0; $i < count($theme_rowset); $i++) { $id = $theme_rowset[$i]['themes_id']; $theme_name = $theme_rowset[$i]['style_name']; for($j=0; $j<$total; $j++) { if(!empty($HTTP_POST_VARS['export_style_name_'.$j]) && $HTTP_POST_VARS['export_style_id_'.$j] == $id) { $theme_name = stripslashes($HTTP_POST_VARS['export_style_name_'.$j]); } } $theme_rowset[$i]['style_name'] = $theme_name; } $data = pack_style($export, $exportas, $theme_rowset, ''); // check errors if($pack_error) { xs_error(str_replace('{TPL}', $export, $lang['xs_export_error']) . $pack_error . '

' . $lang['xs_clone_back']); } if(!$data) { xs_error(str_replace('{TPL}', $export, $lang['xs_export_error2']) . '

' . $lang['xs_clone_back']); } // save as file $filename = 'clone_' . time() . '.tmp'; $tmp_filename = XS_TEMP_DIR . $filename; $f = @fopen($tmp_filename, 'wb'); if(!$f) { xs_error(str_replace('{FILE}', $tpl_filename, $lang['xs_error_cannot_create_tmp']) . '

' . $lang['xs_clone_back']); } fwrite($f, $data); fclose($f); // prepare import variables $total = $count; $HTTP_POST_VARS['total'] = $count; $list_only = false; $get_file = ''; define('XS_CLONING', true); $lang['xs_import_back'] = $lang['xs_clone_back']; include('xs_include_import.' . $phpEx); include('xs_include_import2.' . $phpEx); } // // clone style menu // if(!empty($HTTP_GET_VARS['clone'])) { $style = stripslashes($HTTP_GET_VARS['clone']); $sql = "SELECT themes_id, style_name FROM " . THEMES_TABLE . " WHERE template_name = '" . xs_sql($style) . "' ORDER BY style_name ASC"; if(!$result = $db->sql_query($sql)) { xs_error($lang['xs_no_theme_data'] . '

' . $lang['xs_clone_back'], __LINE__, __FILE__); } $theme_rowset = $db->sql_fetchrowset($result); if(count($theme_rowset) == 0) { xs_error($lang['xs_no_themes'] . '

' . $lang['xs_clone_back']); } $template->set_filenames(array('body' => XS_TPL_PATH . 'clone2.tpl')); // clone template $template->assign_vars(array( 'FORM_ACTION' => append_sid('xs_clone.'.$phpEx), 'CLONE_TEMPLATE' => htmlspecialchars($style), 'STYLE_ID' => $theme_rowset[0]['themes_id'], 'STYLE_NAME' => htmlspecialchars($theme_rowset[0]['style_name']), 'TOTAL' => count($theme_rowset), 'L_CLONE_STYLE3' => str_replace('{STYLE}', htmlspecialchars($style), $lang['xs_clone_style3']) )); // clone styles for($i=0; $iassign_block_vars('styles', array( 'ID' => $theme_rowset[$i]['themes_id'], 'TPL' => htmlspecialchars($theme_rowset[$i]['template_name']), 'STYLE' => htmlspecialchars($theme_rowset[$i]['style_name']), 'L_CLONE' => str_replace('{STYLE}', htmlspecialchars($theme_rowset[$i]['style_name']), $lang['xs_clone_style2']) )); } if(count($theme_rowset) == 1) { $template->assign_block_vars('switch_select_nostyle', array()); if($theme_rowset[0]['style_name'] === $style) { $template->assign_block_vars('switch_onchange', array()); } } else { $template->assign_block_vars('switch_select_style', array()); for($i=0; $iassign_block_vars('switch_select_style.style', array( 'NUM' => $i, 'ID' => $theme_rowset[$i]['themes_id'], 'NAME' => htmlspecialchars($theme_rowset[$i]['style_name']) )); } } $template->pparse('body'); xs_exit(); } // // get list of installed styles // $sql = 'SELECT themes_id, template_name, style_name FROM ' . THEMES_TABLE . ' ORDER BY template_name'; if(!$result = $db->sql_query($sql)) { xs_error($lang['xs_no_style_info'], __LINE__, __FILE__); } $style_rowset = $db->sql_fetchrowset($result); $prev_id = -1; $prev_tpl = ''; $style_names = array(); $j = 0; for($i=0; $i 0) { $str = implode('
', $style_names); $str2 = urlencode($prev_tpl); $row_class = $xs_row_class[$j % 2]; $j++; $template->assign_block_vars('styles', array( 'ROW_CLASS' => $row_class, 'TPL' => $prev_tpl, 'STYLES' => $str, 'U_CLONE' => "xs_clone.{$phpEx}?clone={$str2}&sid={$userdata['session_id']}", ) ); } $prev_id = $item['themes_id']; $prev_tpl = $item['template_name']; $style_names = array(htmlspecialchars($item['style_name'])); } } if($prev_id > 0) { $str = implode('
', $style_names); $str2 = urlencode($prev_tpl); $row_class = $xs_row_class[$j % 2]; $j++; $template->assign_block_vars('styles', array( 'ROW_CLASS' => $row_class, 'TPL' => $prev_tpl, 'STYLES' => $str, 'U_CLONE' => "xs_clone.{$phpEx}?clone={$str2}&sid={$userdata['session_id']}", ) ); } $template->set_filenames(array('body' => XS_TPL_PATH . 'clone.tpl')); $template->pparse('body'); xs_exit(); ?>