true); function admin_themes(&$smarty) { global $theme; if ($theme['version'] > 0.703) $this->actions['style'] = true; parent::AdminPanel($smarty); } } function admin_theme_data( $theme_file, $theme_id, $defprev ) { $theme_data = io_load_file($theme_file); $theme_data = str_replace ( '\r', '\n', $theme_data ); preg_match( '/(Theme|Style) Name:(.*)/i', $theme_data, $theme_name ); preg_match( '/(Theme|Style) URI:(.*)/i', $theme_data, $theme_uri ); preg_match( '|Description:(.*)|i', $theme_data, $description ); preg_match( '|Author:(.*)|i', $theme_data, $author_name ); preg_match( '|Author URI:(.*)|i', $theme_data, $author_uri ); preg_match( '|Template:(.*)|i', $theme_data, $template ); if ( preg_match( '|Version:(.*)|i', $theme_data, $version ) ) $version = trim( $version[1] ); else $version =''; if ( preg_match('|Status:(.*)|i', $theme_data, $status) ) $status = trim($status[1]); else $status = 'publish'; $description = @wptexturize( trim( $description[1] ) ); $name = @$theme_name[1]? $theme_name[2] : $theme_id; $name = trim( $name ); $theme = $name; $theme_uri = trim( @$theme_uri[2] ); if ( '' == @$author_uri[1] ) { $author = trim( @$author_name[1] ); } else { $author = '' . trim( $author_name[1] ) . ''; } if (file_exists($f = dirname($theme_file). '/preview.png')) $prev = $f; else $prev = $defprev; //$theme['name'] = isset($theme['name'])? $theme['name'] : ($thm); return array( 'name' => $name, 'id' => $theme_id, 'title' => $theme, 'www' => $theme_uri, 'description' => $description, 'author' => $author, 'version' => $version, 'template' => $template, 'status' => $status, 'preview' => $prev ); } class admin_themes_default extends AdminPanelAction { var $defprev = ''; var $commands = array('select'); function theme_list() { global $fp_config; $list = theme_list(); $info = array(); foreach ($list as $thm) { // don't show current theme if ($fp_config['general']['theme'] == $thm) continue; $theme = array(); $d = THEMES_DIR . $thm; $f = $d . '/theme.conf.php'; $theme = admin_theme_data($d . '/theme.conf.php', $thm, $this->defprev); $info[] = $theme; } return $info; } function setup() { $this->defprev = BLOG_BASEURL . ADMIN_DIR . 'panels/'. ADMIN_PANEL .'/preview-default.png'; $current_theme = admin_theme_data(THEMES_DIR . THE_THEME . '/theme.conf.php', THE_THEME, $this->defprev); $this->smarty->assign('current_theme', $current_theme); $this->smarty->assign('available_themes', $this->theme_list()); } function doselect($id) { global $fp_config; //$id = isset($_GET['select'])? $_GET['select'] : null; if ($id) { $id = sanitize_title($id); if (theme_exists($id)) { $fp_config['general']['theme'] = $id; unset($fp_config['general']['style']); //$t = theme_loadsettings(); //$fp_config['general']['style'] = $t['default_style']; $return = config_save() ? 1 : -1; } else { $return = -2; } $this->smarty->assign('success', $return); return 1; } } function onerror() { $this->main(); return 0; } function cleartplcache() { // if theme was switched, clear tpl cache $tpl =& new tpl_deleter(); $tpl->getList(); } } ?>