tplPath = ANYFONT_ROOT."/tpl"; self::readFontDir(); if(is_array($config) && isset($config['page'])){ $this->page = $config['page']; $this->page_title = $config['title']; self::get_page(); } } public function printPage(){ print($this->page_html); } public function getStyleBlock($style, $option){ $url = get_bloginfo('wpurl'); $tpl = new fastTPL($this->tplPath); $tpl->define(array("styles_block" => "styles_block.html")); $tpl->assign('STYLE_NAME', $style); $tpl->assign('STYLE_NAME_ID', str_replace(" ", "_", $style)); $tpl->assign('PREVIEW_URL', $url."/images/$style/$style.png"); $options = "
"; foreach($option as $name => $value){ $options .= ""; switch($name){ case "color": $options .= "

"; break; case "font-name": $options .= "

"; break; case "font-size": $sizes = array("7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "18", "22", "24", "28", "36", "40", "44", "48", "54", "60"); $options .= "

"; break; case "shadow": $checked = !$value ? "" : "checked=\"checked\""; $options .= "

"; break; case "shadow-color": // $options .= "

"; // testing advanced color picker $options .= "

"; break; case "limit-width": $checked = !$value ? "" : "checked=\"checked\""; $options .= "

"; break; case "max-width": $options .= "(character limit)

"; } } $options .= "
"; $tpl->assign('DELETE_ICON', ANYFONT_URL."/img/icon-delete.png"); $tpl->assign('EDIT_ICON', ANYFONT_URL."/img/icon-edit.png"); $tpl->assign('OPTIONS', $options); return $tpl->fetchParsed("styles_block"); } private function get_page(){ $url = get_bloginfo('wpurl'); $jslang_array = array( "del_style_note" => __("Please note that once a style is deleted, any generated images that are assosiated with the style will no longer load.", 'anyfont'), "chk_del_style" => __("Are you sure you want to delete this style?", 'anyfont'), "chk_del_styles" => __("Are you sure you want to delete the selected styles?", 'anyfont'), "msg_del_fonts" => __("Deleting Selected Fonts...", 'anyfont'), "msg_del_styles" => __("Deleting Selected Styles...", 'anyfont'), "msg_del" => __("Deleting", 'anyfont'), "err_select_font" => __("No Fonts Selected!", 'anyfont'), "err_select_style" => __("No Styles Selected!", 'anyfont'), "chk_clear_cache" => __("Are you sure you want to clear the cache?", 'anyfont'), "msg_clear_cache" => __("Clearing the cache...", 'anyfont'), "msg_no_images" => __("no images", 'anyfont'), "msg_upload_success" => __("was uploaded successfully", 'anyfont'), "err_upload_failed" => __("Upload Failed:", 'anyfont'), "err_saving_style" => __("Save Failed! Please ensure that the font folder and all files inside are writable by the webserver.", 'anyfont'), "msg_saved_style" => __("Style has been saved.", 'anyfont'), "msg_saving_style" => __("Saving Style...", 'anyfont'), "msg_upload_start" => __("Uploading Font...", 'anyfont'), "msg_saving_settings" => __("Saving Settings...", 'anyfont') ); if (function_exists('json_encode')) { $jslang = json_encode($jslang_array); } else { require_once(ANYFONT_ROOT.'/lib/class.json.php'); $JSON = new serviceJSON(); $jslang = $JSON->encode($jslang_array); } $this->tpl = new fastTPL($this->tplPath); $this->tpl->define(array($this->page => "{$this->page}.html", "header" => "header.html", "footer" => "footer.html", )); $this->tpl->assign("STYLE", file_get_contents(ANYFONT_ROOT."/styles.css")); $this->tpl->assign("URL", $url."/"); $this->tpl->assign("JSLANG", $jslang); $this->tpl->assign("ICON_CLASS", $this->page); $this->tpl->assign("PAGE_TITLE", "AnyFont - ".$this->page_title); $this->tpl->assign("HEADER", $this->tpl->fetchParsed("header")); switch($this->page){ case 'settings': self::getSettings(); break; case 'fonts': self::getFonts(); break; case 'styles': self::getStyles(); break; } $this->tpl->assign("FOOTER", $this->tpl->fetchParsed("footer")); $this->page_html = $this->tpl->fetchParsed($this->page); } private function getSettings(){ $cachedir = ANYFONT_CACHE; $totalsize = 0; $imagecount = 0; if(!is_dir($cachedir)){ return false; } else { $dir = opendir($cachedir); while ($file = readdir($dir)) { $fileinfo = explode(".", $file); if ($fileinfo[1] == "png") { $imagecount++; $totalsize += filesize($cachedir."/".$file); } } } $imageplural = $imagecount == 1 ? " image" : " images"; $isare = $imagecount == 1 ? "is" : "are"; $imagecount == 0 ? $imagecount = "no" : 0; $opt = array("auto(Default)" => "auto", "gd" => "php4", "imagick" => "php5"); $imageopt = ""; foreach($opt as $mod => $val){ $selected = ($val == get_option('anyfont_image_module')) ? "selected=\"selected\"" : ""; if($val == "auto"){ $imageopt .= ""; }else if(extension_loaded($mod)){ $imageopt .= ""; } } self::isReplaceEnabled(get_option('anyfont_page_title'), "PAGE"); self::isReplaceEnabled(get_option('anyfont_post_title'), "POST"); self::isReplaceEnabled(get_option('anyfont_widget_title'), "WIDGET"); self::isReplaceEnabled(get_option('anyfont_blog_title'), "BLOG_TITLE"); self::isReplaceEnabled(get_option('anyfont_blog_desc'), "BLOG_DESC"); self::isReplaceEnabled(get_option('anyfont_disable_hotlinking'), "DISABLE_HOTLINKING"); $this->tpl->assign("REPLACE_H2", __("Replace Text Titles", 'anyfont')); $this->tpl->assign("IMAGE_H2", __("Image Cache", 'anyfont')); $this->tpl->assign("ADVANCED_H2", __("Advanced Settings", 'anyfont')); $this->tpl->assign("ADVANCED_MSG", __("It is recommended that the following options are left on their default settings.", 'anyfont')); $this->tpl->assign("HELP_MSG", __("To replace certain plain text titles with images in your wordpress blog, enable the appropriate section below and then assign it one of your styles.", 'anyfont')); $this->tpl->assign("SEO_NOTE", __("The post title, page title, blog name and blog description image replacements are SEO compatible.", 'anyfont')); $this->tpl->assign("DISCLAIMER", __("PLEASE NOTE:
These options may not be compatible with ALL themes and/or custom widgets.
If your theme already uses a custom image for the title, it is NOT advisable to enable the blog name option.", 'anyfont')); $this->tpl->assign("DISCLAIMER_CONT", __("If you encounter any problems, Please check the FAQ for known issues with certain themes, check with the developer of your theme, or contact me for assistance.", 'anyfont')); $this->tpl->assign("POST_TITLE_STYLES", self::titleStyleConfig( get_option('anyfont_post_title_style'))); $this->tpl->assign("PAGE_TITLE_STYLES", self::titleStyleConfig(get_option('anyfont_page_title_style'))); $this->tpl->assign("WIDGET_TITLE_STYLES", self::titleStyleConfig(get_option('anyfont_widget_title_style'))); $this->tpl->assign("BLOG_TITLE_STYLES", self::titleStyleConfig(get_option('anyfont_blog_title_style'))); $this->tpl->assign("BLOG_DESC_STYLES", self::titleStyleConfig(get_option('anyfont_blog_desc_style'))); $this->tpl->assign("IMAGE_MODULE_OPTIONS", $imageopt); $this->tpl->assign("STYLE_URL", WP_ADMIN_URL."/admin.php?page=anyfont-styles"); $this->tpl->assign("IMAGE_COUNT", $imagecount.$imageplural); $this->tpl->assign("ISARE", $isare); $this->tpl->assign("TOTAL_SIZE", self::bytecalc($totalsize)); } private function isReplaceEnabled($section, $assign){ if($section){ $this->tpl->assign("{$assign}_CHECKED", "checked=\"checked\""); } else { $this->tpl->assign("{$assign}_DISABLED", "disabled=\"disabled\""); } } private function titleStyleConfig($section){ $styles = parse_ini_file(ANYFONT_FONTDIR."/styles.ini", true); $styleoptions = ''; foreach($styles as $style => $option){ if($style != "admin"){ $selected = $style == $section ? "selected=\"selected\"" : ''; $styleoptions .= ""; } } return $styleoptions; } private function getFonts(){ $list = ""; $tpl = new fastTPL($this->tplPath); $tpl->define(array("font_block" => "fonts-block.html")); foreach($this->fontlist as $font){ $urlname = urlencode($font['name']); $tpl->assign('FONT_NAME', $font['name']); $tpl->assign('FONT_URL', get_bloginfo('wpurl')."/images/admin/$urlname.png"); $tpl->assign('DELETE_ICON', ANYFONT_URL."/img/icon-delete.png"); $list .= $tpl->fetchParsed("font_block"); } $this->tpl->assign("FONTS", $list); $this->tpl->assign("UPLOAD_URL", ANYFONT_URL."/upload.php"); } private function readFontDir() { $fontdir = ANYFONT_FONTDIR; $this->fontlist = array(); if(!is_dir($fontdir)){ return false; } else { $dir = opendir($fontdir); while ($file = readdir($dir)) { $fileinfo = explode(".", $file); if ($fileinfo[1] == "ttf" || $fileinfo[1] == "otf") { array_push($this->fontlist, array("name" => $fileinfo[0], "type" => $fileinfo[1])); } } } } private function getStyles(){ $styles = ""; $settings = parse_ini_file(ANYFONT_FONTDIR."/styles.ini", true); foreach($settings as $style => $option){ if($style != "admin"){ $styles.=self::getStyleBlock($style, $option); } } $new_style = "

"; $new_style .= "

"; $sizes = array("7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "18", "22", "24", "36", "40", "44", "48", "54", "60"); $new_style .= "

"; $new_style .= "

"; $new_style .= "

"; $new_style .= "

"; $new_style .= "(character limit)

"; $new_style .= ""; $this->tpl->assign("NEW_STYLE_FORM", $new_style); $this->tpl->assign("STYLES", $styles); } private function bytecalc($bytes, $base10=false, $round=0){ $labels=array(' bytes', ' kB', ' MB', ' GB'); if (($bytes <= 0) || (! is_array($labels)) || (count($labels) <= 0)) return null; $step = $base10 ? 3 : 10 ; $base = $base10 ? 10 : 2; $log = (int)(log10($bytes)/log10($base)); krsort($labels); foreach ($labels as $p=>$lab) { $pow = $p * $step; if ($log < $pow) continue; $text = $bytes." bytes (".round($bytes/pow($base,$pow),$round) . $lab.")"; break; } return $text; } }