wp-config.php file."); exit(0); } require_once(ABSPATH.'wp-admin/includes/admin.php'); !defined('WP_CONTENT_URL') ? define('WP_CONTENT_URL', get_option('siteurl') . '/wp-content') :0; !defined('WP_CONTENT_DIR') ? define('WP_CONTENT_DIR', ABSPATH . 'wp-content') : 0; !defined('WP_PLUGIN_URL') ? define('WP_PLUGIN_URL', WP_CONTENT_URL. '/plugins') : 0; !defined('WP_PLUGIN_DIR') ? define('WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins') : 0; define('ANYFONT_ROOT', WP_PLUGIN_DIR."/".basename(dirname( __FILE__ ))); define('ANYFONT_URL', WP_PLUGIN_URL."/".basename(dirname( __FILE__ ))); define('ANYFONT_FONTDIR', WP_CONTENT_DIR."/fonts"); define('ANYFONT_CACHE', WP_CONTENT_DIR."/font-cache"); if(!is_user_logged_in()){ die('-1'); } if(!current_user_can('upload_files')){ send_response(array( "success" => false, "failure" => __("You are not allowed to upload files. Please contact your Administrator for assistance.", 'anyfont') )); }elseif($_FILES){ list($name,$result) = upload('font', ANYFONT_FONTDIR, 'ttf,otf'); if($name){ $details = stat(ANYFONT_FONTDIR."/$name"); $name_array = explode(".tt", $name); $name_array[1] != "f" ? $name_array = explode(".otf", $name) : 0; $fontdetails = get_font_info( ANYFONT_FONTDIR ."/$name"); send_response( array( "success" => true, "failure" => false, "file_name" => $name_array[0], "font_id" => preg_replace("/\s+/", "", $fontdetails[1]), "font_name" => $fontdetails[1], "copyright" => $fontdetails[10], "styletype" => $fontdetails[2], "img_url" => get_option('siteurl')."/images/admin/".$name_array[0]."/".urlencode("The quick brown fox jumps over the lazy dog").".png", "img_del" => ANYFONT_URL."/img/icon-delete.png" ) ); } else { send_response(array( "success" => false, "failure" => $result )); } }else{ send_response(array( "success" => false, "failure" => __("File Upload Error", 'anyfont') )); } function upload($file_id, $folder=false, $types=false) { if(!$_FILES[$file_id]['name']) return array('','No file specified'); $file_name = str_replace("&", "and", $_FILES[$file_id]['name']); $ext_arr = split("\.",basename($file_name)); $ext = strtolower($ext_arr[count($ext_arr)-1]); $file_name = $ext_arr[0]; if($types) { $all_types = explode(",",strtolower($types)); if(in_array($ext,$all_types)); else { $result = "'".$_FILES[$file_id]['name']."' is not a valid file."; return array('',$result); } } if(!file_exists($folder)) { if(!wp_mkdir_p($folder)){ $result = sprintf(__("The folder '%s' does not exist and could not be created, please check that the webserver has permissions to write to the wp-content folder.", 'anyfont'), $folder); return array("$file_name.$ext", $result); } } elseif(!is_writable($folder)) { $result = sprintf(__("The folder '%s' is not writable, please check that the webserver has permissions to write to the folder. Only as a last resort, try setting the folder permissions to 0777.", 'anyfont'), $folder); return array("$file_name.$ext", $result); } if($folder){ $uploadfile = $folder."/$file_name.$ext"; } else { $result = "Server Error."; return array("$file_name.$ext", $result); } $result = ''; if (!move_uploaded_file($_FILES[$file_id]['tmp_name'], $uploadfile)) { $result = "Cannot upload the file '".$_FILES[$file_id]['name']."'"; //Show error if any. return array("$file_name.$ext",$result); } else { if(!$_FILES[$file_id]['size']) { @unlink($uploadfile); $file_name = ''; $result = "Empty file - please upload a valid font."; } else { chmod($uploadfile,0777); } } return array("$file_name.$ext", $result); } function send_response($result){ 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 dec2ord($dec){ return dec2hex(ord($dec)); } function dec2hex($dec){ return str_repeat('0', 2-strlen(($hex=strtoupper(dechex($dec))))) . $hex; } /** * @original author Unknown * found at http://www.phpclasses.org/browse/package/2144.html */ function get_font_info($filename){ $fd = fopen ($filename, "r"); $text = fread ($fd, filesize($filename)); fclose ($fd); $number_of_tables = hexdec(dec2ord($text[4]).dec2ord($text[5])); for($i=0;$i<$number_of_tables;$i++){ $tag = $text[12+$i*16].$text[12+$i*16+1].$text[12+$i*16+2].$text[12+$i*16+3]; if($tag == 'name'){ $ntOffset = hexdec( dec2ord($text[12+$i*16+8]).dec2ord($text[12+$i*16+8+1]). dec2ord($text[12+$i*16+8+2]).dec2ord($text[12+$i*16+8+3]) ); $offset_storage_dec = hexdec(dec2ord($text[$ntOffset+4]).dec2ord($text[$ntOffset+5])); $number_name_records_dec = hexdec(dec2ord($text[$ntOffset+2]).dec2ord($text[$ntOffset+3])); } } $storage_dec = $offset_storage_dec + $ntOffset; $storage_hex = strtoupper(dechex($storage_dec)); for($j=0;$j<$number_name_records_dec;$j++){ $platform_id_dec = hexdec(dec2ord($text[$ntOffset+6+$j*12+0]).dec2ord($text[$ntOffset+6+$j*12+1])); $name_id_dec = hexdec(dec2ord($text[$ntOffset+6+$j*12+6]).dec2ord($text[$ntOffset+6+$j*12+7])); $string_length_dec = hexdec(dec2ord($text[$ntOffset+6+$j*12+8]).dec2ord($text[$ntOffset+6+$j*12+9])); $string_offset_dec = hexdec(dec2ord($text[$ntOffset+6+$j*12+10]).dec2ord($text[$ntOffset+6+$j*12+11])); if(!empty($name_id_dec) and empty($font_tags[$name_id_dec])){ for($l=0;$l<$string_length_dec;$l++){ if(ord($text[$storage_dec+$string_offset_dec+$l]) == '0'){ continue; } else { $font_tags[$name_id_dec] .= ($text[$storage_dec+$string_offset_dec+$l]); } } } } return $font_tags; }