"settings", "title" => __("Settings", 'anyfont'));
$page = new anyfontAdmin($config);
$page->printPage();
}
function anyfont_fonts_page() {
$config = array("page" => "fonts", "title" => __("Font Manager", 'anyfont'));
$page = new anyfontAdmin($config);
$page->printPage();
}
function anyfont_styles_page() {
$config = array("page" => "styles", "title" => __("Style Manager", 'anyfont'));
$page = new anyfontAdmin($config);
$page->printPage();
}
function anyfont_insert_scripts() {
wp_enqueue_script("anyfont", ANYFONT_URL."/anyfont.js", array('prototype', 'scriptaculous'));
}
function anyfont_install(){
if(!get_option('anyfont_image_module')){
update_option('anyfont_image_module', 'auto');
}
$home_root = parse_url(get_option('home'));
if ( isset( $home_root['path'] ) ) {
$home_root = trailingslashit($home_root['path']);
} else {
$home_root = '/';
}
wp_mkdir_p(ANYFONT_CACHE);
wp_mkdir_p(ANYFONT_FONTDIR);
$htaccess_file = ABSPATH.".htaccess";
$rules = "# BEGIN AnyFont\n";
$rules .= "\n";
$rules .= "RewriteEngine On\n";
$rules .= "RewriteBase $home_root\n";
$rules .= "RewriteRule ^images/(.*)/(.*)\.png$ wp-content/plugins/anyfont/img.php [L]\n";
$rules .= "\n\n";
$rules .= "# END AnyFont\n\n";
if(!file_exists($htaccess_file)){
anyfont_file_put_contents($htaccess_file, $rules);
} else {
$orig = file_get_contents($htaccess_file);
if(!strstr($orig, $rules)){
anyfont_file_put_contents($htaccess_file, $rules.$orig);
}
}
if(file_exists(ANYFONT_FONTDIR."/styles.ini")){
if(file_exists(ANYFONT_ROOT."/styles.default")){
unlink(ANYFONT_ROOT."/styles.default");
}
}
if(file_exists(ANYFONT_ROOT."/styles.default")){
file_put_contents(ANYFONT_FONTDIR."/styles.ini", file_get_contents(ANYFONT_ROOT."/styles.default"));
unlink(ANYFONT_ROOT."/styles.default");
}
}
function anyfont_uninstall(){
$htaccess_file = ABSPATH.".htaccess";
if(is_writeable($htaccess_file)){
if(file_exists($htaccess_file)){
$contents = file_get_contents($htaccess_file);
$start = mb_strpos($contents, "# BEGIN AnyFont");
$end = mb_strpos($contents, "# END AnyFont") + mb_strlen("# END AnyFont");
if(is_numeric($start)){
$new_contents = substr_replace($contents, "", $start, $end);
anyfont_file_put_contents($htaccess_file, $new_contents);
}
}
}
}
function anyfont_file_put_contents($file, $data){
if(!function_exists('version_compare') || version_compare( phpversion(), '5', '<' )){
$fw = fopen($file, 'w');
fwrite($fw, $data);
fclose($fw);
} else {
file_put_contents($file, $data);
}
}
function anyfont_serialize_array($array, $prefix = ''){
$ini = array();
if( is_array($array)){
ksort($array);
foreach ($array as $key => $value){
// parse data types
if ($value === true || $value == '1')
$value = 'true';
else if ($value === false || $value === '')
$value = 'false';
else if (is_string($value) && $key != 'font-size')
$value = '"' . addslashes($value) . '"';
// serialize value
if (!is_array($value) && !is_numeric($key))
$ini[] = ($prefix ? $prefix . '.' : '') . $key . ' = ' . $value;
else if (!is_array($value))
$ini[] = $prefix . '[] = ' . $value;
else
$ini = array_merge($ini, anyfont_serialize_array($value, ($prefix ? $prefix . '.' : '') . $key));
}
return $ini;
} else {
return false;
}
}
function anyfont_edit_styles(){
if(isset($_REQUEST['update_style']) && $_REQUEST['update_style'] != ''){
$style = parse_ini_file(ANYFONT_FONTDIR."/styles.ini", true);
$style[$_REQUEST['update_style']]['font-name'] = $_REQUEST['font-name'];
$style[$_REQUEST['update_style']]['font-size'] = intval($_REQUEST['font-size']);
$style[$_REQUEST['update_style']]['color'] = str_replace("#", "", $_REQUEST['color']);
$style[$_REQUEST['update_style']]['shadow'] = $_REQUEST['shadow'] == 'on' ? true : false;
$style[$_REQUEST['update_style']]['shadow-color'] = str_replace("#", "", $_REQUEST['shadow-color']);
anyfont_write_styles($style);
if(!isset($_REQUEST['new-style'])){
$result = array("status" => "saved",
"stylename" => $_REQUEST['update_style'],
"img" => base64_encode(file_get_contents(get_option('siteurl')."/images/".urlencode($_REQUEST['update_style'])."/".urlencode($_REQUEST['update_style']).".png"))
);
} else {
$admn = new anyfontAdmin();
$style_block = $admn->getStyleBlock($_REQUEST['update_style'], $style[$_REQUEST['update_style']]);
$result = array("status" => "savedNew", "styleblock" => $style_block, "msg" => $_REQUEST['update_style']." has been saved.");
}
} else {
$result = array("status" => "failed", "error" => _("Please enter the style name."));
}
header("Content-type: application/json");
if (function_exists('json_encode')) {
echo json_encode($result);
exit(0);
} else {
require_once(ANYFONT_ROOT.'/lib/class.json.php');
$JSON = new serviceJSON();
echo $JSON->encode($result);
exit(0);
}
}
function anyfont_write_styles($style){
ksort($style);
$sections = array_unique(array_merge(array(''), array_keys($style)));
$ini = array();
foreach ($sections as $section) {
// write sections
if ($section != '')
$ini[] = '[' . $section . ']';
// serialize value array
if(is_array($style[$section])){
$ini = array_merge($ini, anyfont_serialize_array($style[$section]));
}
$ini[] = '';
}
anyfont_file_put_contents(ANYFONT_FONTDIR."/styles.ini", implode("\r\n", $ini));
}
function anyfont_delete_font(){
if(isset($_REQUEST['font-name'])){
$font = $_REQUEST['font-name'];
unlink(ANYFONT_FONTDIR."/$font.ttf");
printf(__("%s has been deleted.", 'anyfont'), $font);
exit(0);
}else if(isset($_REQUEST['fonts'])){
$fonts = explode(",", $_REQUEST['fonts']);
foreach($fonts as $font){
unlink(ANYFONT_FONTDIR."/$font.ttf");
}
_e("The selected fonts have been deleted.", 'anyfont');
exit(0);
}
}
function anyfont_delete_style(){
$style = parse_ini_file(ANYFONT_FONTDIR."/styles.ini", true);
if(isset($_REQUEST['styles'])){
$styles = explode(",", $_REQUEST['styles']);
foreach($styles as $stylename){
unset($style[$stylename]);
$msg = __("The selected styles have been deleted.", 'anyfont');
}
}else if(isset($_REQUEST['style-name'])){
unset($style[$_REQUEST['style-name']]);
$msg = sprintf(__("%s has been deleted.", 'anyfont'), $_REQUEST['style-name']);
}
anyfont_write_styles($style);
echo $msg;
exit(0);
}
function anyfont_clear_cache(){
$cachedir = ANYFONT_CACHE;
$dir = opendir($cachedir);
while ($file = readdir($dir)) {
if(!is_dir($file)){
unlink($cachedir."/".$file);
}
}
rmdir($cachedir);
wp_mkdir_p(ANYFONT_CACHE);
_e("Cache Cleared", 'anyfont');
exit(0);
}
function anyfont_replace_title($title){
if(!in_the_loop()){
return $title;
}else{
$uri = explode("/", $_SERVER['REQUEST_URI']);
$title_replace = !is_page() ? get_option('anyfont_post_title') : get_option('anyfont_page_title');
if($title_replace && !in_array("wp-admin", $uri)){
$style = !is_page() ? get_option('anyfont_post_title_style') : get_option('anyfont_page_title_style');
$url = get_option('siteurl');
$urltitle = urlencode($title);
$style = urlencode($style);
return "
";
}else{
return $title;
}
}
}
function anyfont_replace_widget_title($params){
if(get_option('anyfont_widget_title')){
$style = urlencode(get_option('anyfont_widget_title_style'));
$url = get_option('siteurl');
foreach($params as $key => $param){
$params[$key]['before_title'] = "
\n";
}
}
return $params;
}
function anyfont_update_option(){
if(is_array($_REQUEST['option'])){
foreach($_REQUEST['option'] as $option){
if($option == "anyfont_image_module"){
update_option($option , $_REQUEST[$option]);
}else {
$result = $_REQUEST['result'][$option] == "on" ? true : false;
if($_REQUEST['style'][$option] !== "false"){
update_option("{$option}_style", $_REQUEST['style'][$option]);
update_option($option , $result);
} else {
_e("Error: No Style Selected! If you have not created any styles yet, click here to go to the style manager now.", 'anyfont');
exit(0);
}
}
}
_e("Your settings have been saved!", 'anyfont');
exit(0);
}
_e("Unknown Error Saving Data", 'anyfont');
exit(0);
}
register_activation_hook(__FILE__, 'anyfont_install');
register_deactivation_hook(__FILE__, 'anyfont_uninstall');
add_action('wp_ajax_anyfont_edit_styles', 'anyfont_edit_styles');
add_action('wp_ajax_anyfont_delete_font', 'anyfont_delete_font');
add_action('wp_ajax_anyfont_delete_style', 'anyfont_delete_style');
add_action('wp_ajax_anyfont_clear_cache', 'anyfont_clear_cache');
add_action('wp_ajax_anyfont_update_option', 'anyfont_update_option');
add_action('admin_menu', 'anyfont_admin_page');
add_action("admin_print_scripts", 'anyfont_insert_scripts');
add_filter("the_title", "anyfont_replace_title");
add_filter("dynamic_sidebar_params", "anyfont_replace_widget_title");
?>