function xs_get_vars($theme) { $arr1 = array(); $arr2 = array(); $vars_100 = array('head_stylesheet', 'body_background'); $vars_50 = array('fontface'); $vars_30 = array('style_name'); $vars_25 = array('tr_class', 'th_class', 'td_class', 'span_class'); $vars_6 = array('body_bgcolor', 'body_text', 'body_link', 'body_vlink', 'body_alink', 'body_hlink', 'tr_color', 'th_color', 'td_color', 'fontcolor'); $vars_5 = array('img_size_poll', 'img_size_privmsg'); $vars_4 = array('fontsize', 'theme_public'); foreach ($theme as $var => $value) { if (!is_integer($var) && $var !== 'themes_id' && $var !== 'template_name') { // editable variable $len = 0; $sub = substr($var, 0, strlen($var) - 1); if (xs_in_array($var, $vars_100) || xs_in_array($sub, $vars_100)) { $len = 100; } elseif (xs_in_array($var, $vars_50) || xs_in_array($sub, $vars_50)) { $len = 50; } elseif (xs_in_array($var, $vars_30) || xs_in_array($sub, $vars_30)) { $len = 30; } elseif (xs_in_array($var, $vars_25) || xs_in_array($sub, $vars_25)) { $len = 25; } elseif (xs_in_array($var, $vars_6) || xs_in_array($sub, $vars_6)) { $len = 6; } elseif (xs_in_array($var, $vars_5) || xs_in_array($sub, $vars_5)) { $len = 5; } elseif (xs_in_array($var, $vrs_4) || xs_in_array($sub, $vars_4)) { $len = 4; } elseif (strpos($var, 'class')) { $len = 25; } elseif (strpos($var, 'color')) { $len = 6; } if ($len) { $item = array('var' => $var, 'len' => $len, 'color' => $len == 6 ? true : false, 'font' => $len == 25 ? true : false); if ($var === 'style_name' || $var === 'head_stylesheet' || $var === 'body_background') { $arr1[$var] = $item; } else { $arr2[$var] = $item; } } } } krsort($arr1); ksort($arr2); if (defined('XS_MODS_CATEGORY_HIERARCHY210')) { // force sort for the added fields $added = array('style_name' => array(), 'images_pack' => array('var' => $item['images_pack'], 'len' => 100, 'color' => false, 'font' => false), 'custom_tpls' => array('var' => $item['custom_tpls'], 'len' => 100, 'color' => false, 'font' => false), 'head_stylesheet' => array()); $arr1 = array_merge($added, $arr1); // we need to add lang entries global $lang; $lang['xs_data_images_pack'] = $lang['Images_pack']; $lang['xs_data_images_pack_explain'] = $lang['Images_pack_explain']; $lang['xs_data_custom_tpls'] = $lang['Custom_tpls']; $lang['xs_data_custom_tpls_explain'] = $lang['Custom_tpls_explain']; } return array_merge($arr1, $arr2); }
function xs_get_vars($theme) { $arr1 = array(); $arr2 = array(); $vars_100 = array('head_stylesheet', 'body_background'); $vars_50 = array('fontface'); $vars_30 = array('style_name'); $vars_25 = array('tr_class', 'th_class', 'td_class', 'span_class'); $vars_6 = array('body_bgcolor', 'body_text', 'body_link', 'body_vlink', 'body_alink', 'body_hlink', 'tr_color', 'th_color', 'td_color', 'fontcolor'); $vars_5 = array('img_size_poll', 'img_size_privmsg'); $vars_4 = array('fontsize', 'theme_public'); foreach ($theme as $var => $value) { if (!is_integer($var) && $var !== 'themes_id' && $var !== 'template_name') { // editable variable $len = 0; $sub = substr($var, 0, strlen($var) - 1); if (xs_in_array($var, $vars_100) || xs_in_array($sub, $vars_100)) { $len = 100; } elseif (xs_in_array($var, $vars_50) || xs_in_array($sub, $vars_50)) { $len = 50; } elseif (xs_in_array($var, $vars_30) || xs_in_array($sub, $vars_30)) { $len = 30; } elseif (xs_in_array($var, $vars_25) || xs_in_array($sub, $vars_25)) { $len = 25; } elseif (xs_in_array($var, $vars_6) || xs_in_array($sub, $vars_6)) { $len = 6; } elseif (xs_in_array($var, $vars_5) || xs_in_array($sub, $vars_5)) { $len = 5; } elseif (xs_in_array($var, $vrs_4) || xs_in_array($sub, $vars_4)) { $len = 4; } elseif (strpos($var, 'class')) { $len = 25; } elseif (strpos($var, 'color')) { $len = 6; } if ($len) { $item = array('var' => $var, 'len' => $len, 'color' => $len == 6 ? true : false, 'font' => $len == 25 ? true : false); if ($var === 'style_name' || $var === 'head_stylesheet' || $var === 'body_background') { $arr1[$var] = $item; } else { $arr2[$var] = $item; } } } } krsort($arr1); ksort($arr2); return array_merge($arr1, $arr2); }
if ($list_only) { // show list of files. used for debug. $str = '<div align="left">'; // main data $str .= $lang['xs_import_list_filename'] . $header['filename'] . '<br />'; $str .= $lang['xs_import_list_template'] . $header['template'] . '<br />'; $str .= $lang['xs_import_list_comment'] . $header['comment'] . '<br />'; $str .= $lang['xs_import_list_styles'] . implode(', ', $header['styles']) . '<br />'; ksort($list_data); $str .= '<br />' . str_replace('{NUM}', sizeof($list_data), $lang['xs_import_list_files']) . '<br />'; $str .= '<table border="0" cellspacing="0" cellpadding="1" align="left">'; foreach ($list_data as $var => $value) { $str .= '<tr><td>' . htmlspecialchars($value['filename']) . '</td><td>'; if ($value['size'] > 0) { $ext = strtolower(substr($var, strlen($var) - 4)); if (xs_in_array($ext, $text_types) || xs_in_array($ext, $img_types)) { $str .= '[<a href="' . append_sid('xs_import.' . PHP_EXT . '?list=1&import=' . urlencode($filename) . '&get_file=' . urlencode($var)) . '">' . $lang['xs_import_view_lc'] . '</a>] '; } $str .= '[<a href="' . append_sid('xs_import.' . PHP_EXT . '?list=1&import=' . urlencode($filename) . '&get_file=' . urlencode($var)) . '&get_content=1">' . $lang['xs_import_download_lc'] . '</a>] '; } $str .= str_replace('{NUM}', $value['size'], $lang['xs_import_file_size']) . '</td></tr>'; } $str .= '</table>'; $str .= '</div>'; xs_message($lang['Information'], $str); } $str = ''; if (!$write_local) { // // Generate actions list //
// directories $res = @opendir('../' . $current_dir_full); if (!$res) { xs_error(str_replace('{DIR}', $current_dir_full, $lang['xs_export_no_open_dir']) . '<br /><br />' . $return_url_root); } while (($file = readdir($res)) !== false) { if ($file !== '.' && $file !== '..') { $filename = '../' . ($current_dir_full ? $current_dir_full . '/' : '') . $file; if (is_dir($filename)) { $list_dirs[] = $file; } else { $pos = strrpos($file, '.'); if ($pos !== false) { $ext = strtolower(substr($file, $pos)); $ext1 = substr($ext, 1); if (!$filter_data['ext'] && xs_in_array($ext, $editable) || $ext1 === $filter_data['ext']) { // check filter if ($filter_data['data']) { $content = @implode('', @file($filename)); if (strpos($content, $filter_data['data']) !== false) { $list_files_editable[] = $file; } } else { $list_files_editable[] = $file; } } else { $list_files[] = $file; } } } }
$match = XS_TPL_PREFIX . $clear . XS_SEPARATOR; } $match_len = strlen($match); $style_len = strlen(STYLE_EXTENSION); $backup_len = strlen(XS_BACKUP_EXT); $dir = $template->cachedir; $res = @opendir($dir); if (!$res) { $data = $lang['xs_cache_nowrite']; } else { $num = 0; $num_error = 0; while (($file = readdir($res)) !== false) { $len = strlen($file); // delete only files that match pattern, that aren't in exclusion list and that aren't downloaded styles. if (substr($file, 0, $match_len) === $match && !xs_in_array($file, $skip_files)) { if (substr($file, $len - $style_len) !== STYLE_EXTENSION && substr($file, $len - $backup_len) !== XS_BACKUP_EXT) { $res2 = @unlink($dir . $file); if ($res2) { $data .= str_replace('{FILE}', $file, $lang['xs_cache_log_deleted']) . "<br />\n"; $num++; } elseif (@is_file($dir . $file)) { $data .= str_replace('{FILE}', $file, $lang['xs_cache_log_nodelete']) . "<br />\n"; $num_error++; } } } } closedir($res); if (!$num && !$num_error) { if (!empty($clear)) {