ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
wp-includes
2026-09-16 11:58:53
Editing: uaf_font_functions.php
Cancel
Save Changes
<?php if ( ! defined( 'ABSPATH' ) ) exit; function uaf_count_uploaded_fonts(){ $count = 0; $fontsRawData = get_option('uaf_font_data'); if ((!empty($fontsRawData)) && ($fontsRawData != 'null')){ $fontsData = json_decode($fontsRawData, true); $count = count($fontsData); } return $count; } function uaf_get_uploaded_font_data(){ $fontsRawData = get_option('uaf_font_data'); return json_decode($fontsRawData, true); } function uaf_get_font_families(){ $fontsData = uaf_group_fontdata_by_fontname(uaf_get_uploaded_font_data()); $fonts_uaf = array(); if (!empty($fontsData)): foreach ($fontsData as $fontName=>$fontData): $fonts_uaf[] = $fontName; endforeach; endif; return $fonts_uaf; } function uaf_save_font_files($font_name, $font_weight, $font_style, $convertResponse, $predefined_font_id = '', $font_stretch = ''){ uaf_create_folder(); // CREATE FOLDER IF DOESN"T EXISTS $uafPath = uaf_path_details(); $fontNameToStore = sanitize_file_name(rand(0,9999).$font_name); $convertResponseArray = json_decode(stripslashes($convertResponse), true); if ($convertResponseArray['global']['status'] == 'ok'): $neededFontFormats = array('woff2','woff'); foreach ($neededFontFormats as $neededFontFormat): if ($convertResponseArray[$neededFontFormat]['status'] == 'ok'): $fontFileContent = wp_safe_remote_get($convertResponseArray[$neededFontFormat]['filename'], array('timeout'=>'300')); if ( is_wp_error( $fontFileContent ) ) { $fontUploadFinalResponse['status'] = 'error'; $fontUploadFinalResponse['body'] = $fontFileContent->get_error_message(); return $fontUploadFinalResponse; } if ( $fontFileContent['response']['code'] == '200') : $fontFileContent = wp_remote_retrieve_body( $fontFileContent ); if (!empty($fontFileContent)): $newFileName = $fontNameToStore.'.'.$neededFontFormat; $newFilePath = $uafPath['dir'].$newFileName; $fh = fopen($newFilePath, 'w') or die("can't open file. Make sure you have write permission to your upload folder"); fwrite($fh, $fontFileContent); fclose($fh); else: $fontSaveMsg[$neededFontFormat]['status'] = 'error'; $fontSaveMsg[$neededFontFormat]['body'] = "Couldn't receive $neededFontFormat file"; endif; else: $fontSaveMsg[$neededFontFormat]['status'] = 'error'; $fontSaveMsg[$neededFontFormat]['body'] = $neededFontFormat.' : '.$fontFileContent['response']['code'].' '.$fontFileContent['response']['message']; endif; else: $fontSaveMsg[$neededFontFormat]['status'] = 'error'; $fontSaveMsg[$neededFontFormat]['body'] = $convertResponseArray[$neededFontFormat]['msg']; endif; endforeach; if (!empty($fontSaveMsg)): $fontUploadFinalResponse['body'] = ''; foreach ($fontSaveMsg as $formatKey => $formatData): if ($fontSaveMsg[$formatKey]['status'] == 'error'): $fontUploadFinalResponse['status'] = 'error'; $fontUploadFinalResponse['body'] .= $formatData['body'].'<br/>'; endif; endforeach; else: uaf_save_font_entry_to_db($font_name, $font_weight, $font_style, $fontNameToStore, $predefined_font_id, $font_stretch); $fontUploadFinalResponse['status'] = 'success'; $fontUploadFinalResponse['body'] = 'Font Uploaded'; endif; else: $fontUploadFinalResponse['status'] = 'error'; $fontUploadFinalResponse['body'] = $convertResponseArray['global']['msg']; endif; return $fontUploadFinalResponse; } function uaf_path_details(){ $uaf_upload = wp_upload_dir(); $uaf_upload_dir = $uaf_upload['basedir']; $uaf_upload_dir = $uaf_upload_dir . '/useanyfont/'; $uaf_upload_url = $uaf_upload['baseurl']; $uaf_upload_url = $uaf_upload_url . '/useanyfont/'; $pathReturn['dir'] = $uaf_upload_dir; $pathReturn['url'] = $uaf_upload_url; return $pathReturn; } function uaf_create_folder() { $uaf_upload_path = uaf_path_details(); if (!is_dir($uaf_upload_path['dir'])) { if (!@mkdir($uaf_upload_path['dir'], 0755, true)) { set_transient('uaf_folder_create_error', "Cannot create folder. Please check folder permissions.", 60 * 10); } } } function uaf_save_font_entry_to_db($font_name, $font_weight, $font_style, $font_path, $predefined_font_id = '', $font_stretch = ''){ $fontsRawData = get_option('uaf_font_data'); $fontsData = json_decode($fontsRawData, true); if (empty($fontsData)): $fontsData = array(); endif; $fontArrayKey = date('ymdhis'); $fontsData[$fontArrayKey] = array( 'font_name' => sanitize_title($font_name), 'font_path' => $font_path, 'predefined_font_id' => $predefined_font_id ); if (!empty(trim($font_weight))){ $fontsData[$fontArrayKey]['font_weight'] = sanitize_title($font_weight); } if (!empty(trim($font_style))){ $fontsData[$fontArrayKey]['font_style'] = sanitize_title($font_style); } if (!empty(trim($font_stretch))){ $fontsData[$fontArrayKey]['font_stretch'] = sanitize_title($font_stretch); } $updateFontData = json_encode($fontsData); update_option('uaf_font_data',$updateFontData); uaf_write_css(); } function uaf_write_css(){ $uaf_use_absolute_font_path = $GLOBALS['uaf_user_settings']['uaf_use_absolute_font_path']; // Check if user want to use absolute font path. if (empty($uaf_use_absolute_font_path)){ $uaf_use_absolute_font_path = 0; } $uaf_upload_path = uaf_path_details(); $uaf_upload_dir = $uaf_upload_path['dir']; $uaf_upload_url = $uaf_upload_path['url']; if ($uaf_use_absolute_font_path == 0){ // If user use relative path $url_parts = parse_url($uaf_upload_url); $uaf_upload_url = "$url_parts[path]"; } else { if (is_ssl()){ $uaf_upload_url = preg_replace('#^https?:#', 'https:', $uaf_upload_path['url']); } } ob_start(); $fontsData = uaf_get_uploaded_font_data(); if (!empty($fontsData)): foreach ($fontsData as $key=>$fontData): ?> @font-face { font-family: '<?php echo esc_html($fontData['font_name']) ?>'; src: <?php if (file_exists($uaf_upload_dir.$fontData['font_path'].'.woff2')){ ?>url('<?php echo esc_url($uaf_upload_url.$fontData['font_path']) ?>.woff2') format('woff2'), <?php } ?>url('<?php echo esc_url($uaf_upload_url.$fontData['font_path']) ?>.woff') format('woff'); <?php echo array_key_exists('font_weight',$fontData)?'font-weight: '.esc_html($fontData['font_weight']).';':''; ?> <?php echo array_key_exists('font_style',$fontData)?'font-style: '.esc_html($fontData['font_style']).';':''; ?> <?php echo (array_key_exists('font_stretch',$fontData) && !empty($fontData['font_stretch']))?'font-stretch: '.esc_html($fontData['font_stretch']).';':''; ?> font-display: <?php echo esc_html($GLOBALS['uaf_user_settings']['uaf_font_display_property']); ?>; } .<?php echo esc_html($fontData['font_name']) ?>{font-family: '<?php echo esc_html($fontData['font_name']) ?>' !important;} <?php endforeach; endif; $fontsImplementRawData = get_option('uaf_font_implement'); $fontsImplementData = json_decode($fontsImplementRawData, true); if (!empty($fontsImplementData)): foreach ($fontsImplementData as $key=>$fontImplementData): if (isset($fontImplementData['font_name']) && !empty(trim($fontImplementData['font_name']))){ $font_name = $fontImplementData['font_name']; } else { $font_name = $fontsData[$fontImplementData['font_key']]['font_name']; }?> <?php echo uaf_sanitize_css_selector($fontImplementData['font_elements']); ?>{ font-family: '<?php echo esc_html($font_name); ?>' !important; } <?php endforeach; endif; $uaf_style = ob_get_contents(); $uafStyleSheetPath = $uaf_upload_path['dir'].'/uaf.css'; if ($fh = @fopen($uafStyleSheetPath, 'w')) { // Suppress warnings and check if file opens fwrite($fh, $uaf_style); fclose($fh); } else { set_transient('uaf_css_write_error', "Cannot write to CSS file. Please check file permissions.", 60 * 10); // Store error for 10 minutes } ob_end_clean(); ob_start(); $fontsData = uaf_get_uploaded_font_data(); if (!empty($fontsData)): foreach ($fontsData as $key=>$fontData): ?> @font-face { font-family: '<?php echo esc_html($fontData['font_name']) ?>'; src: <?php if (file_exists($uaf_upload_dir.$fontData['font_path'].'.woff2')){ ?>url('<?php echo esc_url($uaf_upload_url.$fontData['font_path']) ?>.woff2') format('woff2'), <?php } ?>url('<?php echo esc_url($uaf_upload_url.$fontData['font_path']) ?>.woff') format('woff'); <?php echo array_key_exists('font_weight',$fontData)?'font-weight: '.esc_html($fontData['font_weight']).';':''; ?> <?php echo array_key_exists('font_style',$fontData)?'font-style: '.esc_html($fontData['font_style']).';':''; ?> <?php echo (array_key_exists('font_stretch',$fontData) && !empty($fontData['font_stretch']))?'font-stretch: '.esc_html($fontData['font_stretch']).';':''; ?> font-display: <?php echo esc_html($GLOBALS['uaf_user_settings']['uaf_font_display_property']); ?>; } .<?php echo esc_html($fontData['font_name']) ?>{font-family: '<?php echo esc_html($fontData['font_name']) ?>' !important;} .et_gf_<?php echo esc_html($fontData['font_name']) ?>{background:none !important;font-family:<?php echo esc_html($fontData['font_name']) ?>;text-indent:0 !important;font-size:25px;} <?php endforeach; endif; $uaf_style = ob_get_contents(); $uafStyleSheetPath = $uaf_upload_path['dir'].'/admin-uaf.css'; if ($fh = @fopen($uafStyleSheetPath, 'w')) { // Suppress warnings and check if file opens fwrite($fh, $uaf_style); fclose($fh); } else { set_transient('uaf_css_write_error', "Cannot write to CSS file. Please check file permissions.", 60 * 10); // Store error for 10 minutes } $uafStyleSheetPath = $uaf_upload_path['dir'].'/admin-uaf-rtl.css'; if ($fh = @fopen($uafStyleSheetPath, 'w')) { // Suppress warnings and check if file opens fwrite($fh, $uaf_style); fclose($fh); } else { set_transient('uaf_css_write_error', "Cannot write to CSS file. Please check file permissions.", 60 * 10); // Store error for 10 minutes } ob_end_clean(); update_option('uaf_css_updated_timestamp', time()); // Time entry for stylesheet version update_option('uaf_site_url', base64_encode(site_url())); uaf_clear_plugins_cache(); // CLEAN plugin's cache. uaf_block_editor_custom_fonts(); } function uaf_get_language_selector(){ $enableMultiLang = ''; $returnSelectHTML = ''; if ($GLOBALS['uaf_user_settings']['uaf_enable_multi_lang_support'] == 1){ $enableMultiLang = TRUE; $supported_multi_lang_plugins = $GLOBALS['uaf_fix_settings']['supported_multi_lang_plugins']; foreach ($supported_multi_lang_plugins as $key => $plugin_name) { if (is_plugin_active($plugin_name)){ $active_multi_lang_plugin = $plugin_name; } //echo $active_multi_lang_plugin; } if (isset($active_multi_lang_plugin)){ switch ($active_multi_lang_plugin) { case 'polylang/polylang.php': // WHEN POLYLANG PLUGIN IS ACTIVATED. $active_languages = pll_languages_list(array('fields'=>'')); foreach ($active_languages as $key => $active_language) { $lang_select_data[$active_language->w3c] = $active_language->name; } break; case 'polylang-pro/polylang.php': // WHEN POLYLANG PRO PLUGIN IS ACTIVATED. $active_languages = pll_languages_list(array('fields'=>'')); foreach ($active_languages as $key => $active_language) { $lang_select_data[$active_language->w3c] = $active_language->name; } break; case 'sitepress-multilingual-cms/sitepress.php': // WHEN WPML PLUGIN IS ACTIVATED. $active_languages = icl_get_languages(); foreach ($active_languages as $key => $active_language) { $lang_select_data[str_replace('_', '-',$active_language['default_locale'])] = $active_language['translated_name'].' ('.$active_language["native_name"].')'; } break; } $returnSelectHTML = '<select style="width:200px;" class="uaf_required" name="language"><option selected="selected" value="">- Select - </option><option value="all_lang">All Languages</option>'; foreach ($lang_select_data as $locale => $lang_name) { //$returnSelectHTML .= '<option value="body.language-'.$locale.'">'.$lang_name.'</option>'; $returnSelectHTML .= '<option value="html:lang('.esc_attr($locale).')">'.esc_attr($lang_name).'</option>'; } $returnSelectHTML .= '</select>'; } else { $returnSelectHTML = "You don't have multi lingual plugin active which is supported by Use Any Font."; } } $return['enableMultiLang'] = $enableMultiLang; $return['selectHTML'] = $returnSelectHTML; return $return; } function uaf_save_font_assign(){ $font_key = sanitize_key($_POST['font_key']); if (isset($_POST['elements'])) { $elements = array_map('sanitize_text_field', $_POST['elements']); } else { $elements = array(); } $custom_elements = trim(sanitize_textarea_field($_POST['custom_elements'])); if ( empty($font_key) ) { return array( 'status' => 'error', 'body' => 'Please select a font before assigning.' ); } if ( empty($elements) && empty($custom_elements) ) { return array( 'status' => 'error', 'body' => 'Please select at least one element or add a custom element.' ); } $fontsData = uaf_get_uploaded_font_data(); $font_name = $fontsData[$font_key]['font_name']; $fontsImplementRawData = get_option('uaf_font_implement'); $fontsImplementData = json_decode($fontsImplementRawData, true); if (empty($fontsImplementData)): $fontsImplementData = array(); endif; $fontElements = array(); $fontElements[] = @join(', ',$elements); $fontElements[] = @join(', ',array_filter(array_map('trim',explode("\n", $custom_elements)))); $fontElements = array_filter(array_map('trim',$fontElements)); $finalElements = join(', ', $fontElements); $finalElements = uaf_langutizse_elements($finalElements); if (!empty($finalElements) && !empty($_POST['font_key'])){ $fontsImplementData[date('ymdhis')] = array( 'font_key' => $font_key, 'font_name' => $font_name, 'font_elements' => $finalElements ); $updateFontsImplementData = json_encode($fontsImplementData); update_option('uaf_font_implement',$updateFontsImplementData); uaf_write_css(); $return['status'] = 'success'; $return['body'] = 'Font Assigned'; } else { $return['body'] = "Couldn't assign font. Please select font and atleast one element or add a custom element"; $return['status'] = "error"; } return $return; } function uaf_langutizse_elements($finalElements){ if (isset($_POST['language']) && ($_POST['language'] != 'all_lang')){ $language = sanitize_text_field($_POST['language']); $finalElementArray = explode(',', $finalElements); $finalElementArray = array_map('trim', $finalElementArray); $prefixed_array = preg_filter('/^/', $language.' ', $finalElementArray); $finalElements = join(', ', $prefixed_array); } return $finalElements; } function uaf_delete_font(){ $uaf_paths = uaf_path_details(); $fontsData = uaf_get_uploaded_font_data(); $key_to_delete = sanitize_key($_GET['delete_font_key']); @unlink(realpath($uaf_paths['dir'].$fontsData[$key_to_delete]['font_path'].'.woff2')); @unlink(realpath($uaf_paths['dir'].$fontsData[$key_to_delete]['font_path'].'.woff')); @unlink(realpath($uaf_paths['dir'].$fontsData[$key_to_delete]['font_path'].'.eot')); unset($fontsData[$key_to_delete]); $updateFontData = json_encode($fontsData); update_option('uaf_font_data',$updateFontData); // DELETING FONT ASSIGN AFTER THE FONT IS DELETED. REMOVED DUE TO MULTI VARIATION COMPLICATIONS. /*$fontsImplementRawData = get_option('uaf_font_implement'); $fontsImplementData = json_decode($fontsImplementRawData, true); if (!empty($fontsImplementData)){ foreach ($fontsImplementData as $implement_key => $font_assign_array) { if ($key_to_delete == $font_assign_array['font_key']){ unset($fontsImplementData[$implement_key]); } } $updatefontsImplementData = json_encode($fontsImplementData); update_option('uaf_font_implement',$updatefontsImplementData); }*/ $return['status'] = 'success'; $return['body'] = 'Font Deleted'; uaf_write_css(); return $return; } function uaf_delete_font_assign(){ $fontsImplementRawData = get_option('uaf_font_implement'); $fontsImplementData = json_decode($fontsImplementRawData, true); $key_to_delete = sanitize_key($_GET['delete_font_assign_key']); unset($fontsImplementData[$key_to_delete]); $updateFontsImplementData = json_encode($fontsImplementData); update_option('uaf_font_implement',$updateFontsImplementData); uaf_write_css(); $return['status'] = 'success'; $return['body'] = 'Font assign removed'; return $return; } function uaf_get_uploaded_predefined_fonts(){ $fontsRawData = get_option('uaf_font_data'); $fontsData = json_decode($fontsRawData, true); $predefindFonts = array(); if (!empty($fontsData)){ foreach ($fontsData as $fontKey => $fontData) { if (isset($fontData['predefined_font_id']) && !empty(trim($fontData['predefined_font_id']))){ $predefindFonts[] = $fontData['predefined_font_id']; } } } return $predefindFonts; } function uaf_add_pre_defined_font($fontId){ $url = $GLOBALS['uaf_user_settings']['uaf_server_url']. '/uaf_convertor/import_predefine_font.php'; $response = wp_remote_post( $url, array( 'method' => 'POST', 'redirection' => 5, 'httpversion' => '1.0', 'timeout' => 10000, 'body' => array( 'api_key' => $GLOBALS['uaf_user_settings']['uaf_api_key'], 'url' => base64_decode($GLOBALS['uaf_user_settings']['uaf_activated_url']), 'font_count' => uaf_count_uploaded_fonts(), 'font_id' => $fontId ) ) ); if ( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); $return['status'] = 'error'; $return['body'] = "Something went wrong: $error_message"; } else { $responseArray = json_decode($response['body'], true); if ($responseArray['global']['status'] == 'error'): $return['status'] = 'error'; $return['body'] = $responseArray['global']['msg']; else: $return = uaf_save_font_files($responseArray['global']['font_name'], '', '', $response['body'], $fontId); endif; } return $return; } function uaf_group_fontdata_by_fontname($fontDatas){ $returnArray = array(); if (!empty($fontDatas)){ foreach($fontDatas as $key => $value){ $returnArray[$value['font_name']][$key] = $value; } } return $returnArray; } function uaf_order_font_by_weight($a, $b) { if (array_key_exists("font_weight", $a) && array_key_exists("font_weight", $b)) { return strcmp($a["font_weight"], $b["font_weight"]); } else { return 0; } } function uaf_css_write_error() { $error_message = get_transient('uaf_css_write_error'); if ($error_message) { echo '<div class="notice notice-error is-dismissible"> <p><strong>Use Any Font Error:</strong> ' . esc_html($error_message) . '</p> </div>'; delete_transient('uaf_css_write_error'); // Remove the error after displaying } } function uaf_sanitize_css_selector( $selector ) { // Allow only valid CSS selector characters return preg_replace( '/[^A-Za-z0-9\s\-\_\.\#\>\:\,\*\+\~\[\]\=\"\'\(\)\/]/', '', $selector ); }
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete