tplPath = ANYFONT_ROOT."/tpl";
if(is_array($config) && isset($config['page'])){
$this->page = $config['page'];
$this->page_title = $config['title'];
$this->get_page();
}
}
function printPage(){
print($this->page_html);
}
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':
$this->getSettings();
break;
case 'fonts':
$this->readFontDir();
$this->getFonts();
break;
case 'styles':
$this->readFontDir();
$this->getStyles();
break;
}
$this->tpl->assign("FOOTER", $this->tpl->fetchParsed("footer"));
$this->page_html = $this->tpl->fetchParsed($this->page);
}
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 .= "";
}
}
$this->isReplaceEnabled(get_option('anyfont_page_title'), "PAGE");
$this->isReplaceEnabled(get_option('anyfont_post_title'), "POST");
$this->isReplaceEnabled(get_option('anyfont_cat_title'), "CAT");
$this->isReplaceEnabled(get_option('anyfont_tag_title'), "TAG");
$this->isReplaceEnabled(get_option('anyfont_widget_title'), "WIDGET");
$this->isReplaceEnabled(get_option('anyfont_blog_title'), "BLOG_TITLE");
$this->isReplaceEnabled(get_option('anyfont_blog_desc'), "BLOG_DESC");
$this->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", $this->titleStyleConfig( get_option('anyfont_post_title_style')));
$this->tpl->assign("PAGE_TITLE_STYLES", $this->titleStyleConfig(get_option('anyfont_page_title_style')));
$this->tpl->assign("TAG_TITLE_STYLES", $this->titleStyleConfig(get_option('anyfont_tag_title_style')));
$this->tpl->assign("CAT_TITLE_STYLES", $this->titleStyleConfig(get_option('anyfont_cat_title_style')));
$this->tpl->assign("WIDGET_TITLE_STYLES", $this->titleStyleConfig(get_option('anyfont_widget_title_style')));
$this->tpl->assign("BLOG_TITLE_STYLES", $this->titleStyleConfig(get_option('anyfont_blog_title_style')));
$this->tpl->assign("BLOG_DESC_STYLES", $this->titleStyleConfig(get_option('anyfont_blog_desc_style')));
$this->tpl->assign("IMAGE_MODULE_OPTIONS", $imageopt);
$this->tpl->assign("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", $this->bytecalc($totalsize));
}
function isReplaceEnabled($section, $assign){
if($section){
$this->tpl->assign("{$assign}_CHECKED", "checked=\"checked\"");
$this->tpl->assign("{$assign}_ON_CLASS", " anyfont_checkbox_on");
} else {
$this->tpl->assign("{$assign}_DISABLED", "disabled=\"disabled\"");
}
}
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;
}
function getFonts(){
$list = "";
$tpl = new fastTPL($this->tplPath);
$tpl->define(array("font_block" => "fonts-block.html"));
foreach($this->fontlist as $displayname => $fontdetail){
$fontname = urlencode($fontdetail['filename']);
$fonttypes = "";
$i = 1;
$t = count($fontdetail["type"]);
foreach($fontdetail["type"] as $type){
$i != 1 && $i <= $t ? $fonttypes .= ", " : 0;
$fonttypes .= "{$type['ftype']}";
$i++;
}
$tpl->assign('FONTID', preg_replace('/\s+/', "", $displayname));
$tpl->assign('FONT_NAME', $fontname);
$tpl->assign('FONT_DISPLAY_NAME', $displayname);
$tpl->assign('FONT_TYPES', $fonttypes);
$tpl->assign('DISPLAY_NAME', $displayname);
$tpl->assign('COPYRIGHT', $fontdetail['copyright']);
$tpl->assign('FONT_URL', get_bloginfo('wpurl')."/images/admin/$fontname/".urlencode("The quick brown fox jumps over the lazy dog").".png");
// !get_option('anyfont_display_charmap') ? $tpl->assign('CHARMAP_URL', get_bloginfo('wpurl')."/images/admin/$fontname/charactermap.png") : 0;
$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");
}
function readFontDir() {
$this->fontlist = array();
$filelist = array();
$sortlist = array();
$buildlist = array();
if(!is_dir(ANYFONT_FONTDIR)){
return false;
} else {
$dir = dir(ANYFONT_FONTDIR);
while (false !== ($e = $dir->read())){
if($e != '.' && $e != '..' && self::is_font($e) === true){
$fontdetails = $this->getFontInfo( ANYFONT_FONTDIR ."/". $e);
$buildlist[$fontdetails[1]]["name"] = $fontdetails[1];
if(!$buildlist[$fontdetails[1]]["type"]){
$buildlist[$fontdetails[1]]["type"] = array();
}
array_push($buildlist[$fontdetails[1]]["type"], array("ftype" => $fontdetails[2], "filename" => $this->getFontName($e)));
$buildlist[$fontdetails[1]]["trademark"] = $fontdetails[7];
$buildlist[$fontdetails[1]]["copyright"] = $fontdetails[10];
$buildlist[$fontdetails[1]]["version"] = $fontdetails[5];
$buildlist[$fontdetails[1]]["author"] = !isset($fontdetails[8]) ? $fontdetails[9] : $fontdetails[8];
$buildlist[$fontdetails[1]]["url"] = $fontdetails[11];
$buildlist[$fontdetails[1]]["license"] = $fontdetails[13];
$buildlist[$fontdetails[1]]["filename"] = $this->getFontName($e);
array_push($sortlist, $fontdetails[1]);
}
}
}
natcasesort($sortlist);
foreach($sortlist as $fontname){
$this->fontlist[$fontname] = $buildlist[$fontname];
}
}
function getStyles(){
$styles = "";
if(file_exists(ANYFONT_FONTDIR."/styles.ini")){
$settings = parse_ini_file(ANYFONT_FONTDIR."/styles.ini", true);
if(file_exists(ANYFONT_FONTDIR."/styles.ini")){
$settings = parse_ini_file(ANYFONT_FONTDIR."/styles.ini", true);
foreach($settings as $style => $option){
if($style != "admin"){
ksort($option);
$styles.=$this->getStyleBlock($style, $option);
}
}
}
$new_style = "
";
$new_style .= "
";
$new_style .= "