X7ROOT File Manager
Current Path:
/home/notabjze/malakiethegreat.com/wp-content/plugins/jupiterx-core/includes
home
/
notabjze
/
malakiethegreat.com
/
wp-content
/
plugins
/
jupiterx-core
/
includes
/
ðŸ“
..
ðŸ“
admin
ðŸ“
compiler
ðŸ“
condition
ðŸ“
control-panel-2
ðŸ“
custom-fields
ðŸ“
customizer
ðŸ“
extensions
📄
fonts.php
(6.2 KB)
ðŸ“
google-tag
📄
icons.php
(2.05 KB)
ðŸ“
parse-css
ðŸ“
popups
ðŸ“
post-type
ðŸ“
svg-sanitizer
ðŸ“
templates
ðŸ“
updater
ðŸ“
utilities
ðŸ“
widget-area
ðŸ“
widgets
ðŸ“
woocommerce
Editing: fonts.php
<?php use Elementor\Plugin; /** * Handle the JupiterX custom fonts functionality. * * @since 2.5.0 */ class JupiterX_Custom_Fonts { private static $instance = null; const POST_TYPE = 'jupiterx-fonts'; const FONTS_CUSTOM_GROUP = 'jx-custom-fonts'; public static function get_instance() { if ( null === self::$instance ) { self::$instance = new self(); } return self::$instance; } public function __construct() { add_filter( 'wp_check_filetype_and_ext', [ $this, 'allow_ttf' ], 10, 5 ); add_filter( 'upload_mimes', [ $this, 'upload_mimes' ] ); add_filter( 'elementor/fonts/groups', [ $this, 'register_fonts_groups' ] ); add_filter( 'elementor/fonts/additional_fonts', [ $this, 'register_fonts_in_control' ] ); add_action( 'elementor/css-file/post/parse', [ $this, 'enqueue_fonts' ], 10, 1 ); add_action( 'elementor/css-file/global/parse', [ $this, 'enqueue_fonts' ], 10, 1 ); add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'get_all_font_faces' ] ); add_action( 'elementor/preview/enqueue_styles', [ $this, 'get_all_font_faces' ] ); add_action( 'elementor/css-file/global/enqueue', [ $this, 'get_all_font_faces' ] ); } /** * Add TTF, WOFF, WOFF2, SVG to allowed media types. * * @return void * @since 2.5.0 */ public function upload_mimes( $mime_types ) { foreach ( $this->get_file_types() as $type => $mime ) { if ( ! isset( $mime_types[ $type ] ) ) { $mime_types[ $type ] = $mime; } } return $mime_types; } /** * Returns the list of all font types and the mime types. * * @return array * @since 2.5.0 */ private function get_file_types() { return [ 'woff' => 'application/font-woff', 'woff2' => 'application/font-woff2', 'ttf' => 'application/x-font-ttf', 'svg' => 'image/svg+xml', ]; } /** * Allow TTF By checking the mime type and extension. * * @since 2.5.0 * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function allow_ttf( $data, $file, $filename, $mimes, $real_mime ) { if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) { return $data; } $wp_file_type = wp_check_filetype( $filename, $mimes ); if ( 'ttf' === $wp_file_type['ext'] ) { $data['ext'] = 'ttf'; $data['type'] = 'application/x-font-ttf'; } return $data; } /** * Creates a new font group in elementor typography control called 'Jupiter X Fonts'. * * @param $fonts * * @return array * @since 2.5.0 */ public function register_fonts_groups( $font_groups ) { $new_groups = [ self::FONTS_CUSTOM_GROUP => esc_html__( 'Jupiter X Fonts', 'jupiterx-core' ) ]; return array_merge( $new_groups, $font_groups ); } /** * Returns the list of jupiterx-fonts to show in the typography controls of elementor. * * @param $fonts * * @return array * @since 2.5.0 */ public function register_fonts_in_control( $fonts ) { $jupiterx_fonts = get_posts( [ 'post_type' => self::POST_TYPE, 'numberposts' => - 1, ] ); $custom_fonts = []; foreach ( $jupiterx_fonts as $font ) { $custom_fonts[ $font->post_title ] = self::FONTS_CUSTOM_GROUP; } return array_merge( $custom_fonts, $fonts ); } /** * Enqueue fonts css. * * @param $post_css * * @since 2.5.0 */ public function enqueue_fonts( $post_css ) { $used_fonts = $post_css->get_fonts(); foreach ( $used_fonts as $font_family ) { $font_face = get_post_meta( $this->get_font_id_by_title( $font_family ), 'jupiterx_font_face', true ); $this->enqueue_font( $font_face, $post_css ); } } /** * Get fonts array form the database or generate a new list if $force is set to true. * * @param bool $force * * @return array|bool|mixed * @since 2.5.0 */ public function get_fonts() { static $fonts = false; if ( false !== $fonts ) { return $fonts; } return $this->get_fonts_list(); } /** * Gets a list of all Font Manager fonts and stores it in the options table. * * @return array * @since 2.5.0 */ private function get_fonts_list() { $fonts = new WP_Query( [ 'post_type' => self::POST_TYPE, 'posts_per_page' => - 1, ] ); $new_fonts = []; foreach ( $fonts->posts as $font ) { $new_fonts[] = [ $font->ID, $font->post_title ]; } return $new_fonts; } /** * Add a comment before and after the font face and add the css to the related post stylesheet. * * @param $font_face * @param $post_css * * @return void */ public function enqueue_font( $font_face, $post_css ) { // Add a css comment. $custom_css = PHP_EOL . '/* Start JX Custom Fonts CSS */' . $font_face . '/* End JX Custom Fonts CSS */'; $post_css->get_stylesheet()->add_raw_css( $custom_css ); } /** * Gets font ID by font title. * * @param $font_title * * @return int * @since 2.5.0 */ private function get_font_id_by_title( $font_title ) { $query_args = [ 'post_type' => self::POST_TYPE, 's' => $font_title, 'posts_per_page' => 1, ]; $fonts_query = new WP_Query( $query_args ); $current_font_obj = ( is_array( $fonts_query->get_posts() ) && count( $fonts_query->get_posts() ) > 0 ) ? (object) $fonts_query->get_posts()[0] : false; if ( empty( $current_font_obj ) || false === $current_font_obj ) { return null; } return $current_font_obj->ID; } /** * Gets all the font faces in the post meta table to load them in editor preview. * * @return void * @since 2.5.0 */ public function get_all_font_faces() { //phpcs:disable global $wpdb; $all_font_faces = $wpdb->get_results( "SELECT meta_value as font_face FROM $wpdb->postmeta WHERE meta_key = 'jupiterx_font_face'" ); //phpcs:enable if ( empty( $all_font_faces ) ) { return null; } $font_faces = ''; foreach ( $all_font_faces as $font_face ) { $font_faces .= PHP_EOL . htmlspecialchars( $font_face->font_face, ENT_NOQUOTES ) . PHP_EOL; } echo '<style id="jupiterx-editor-custom-font-faces">' . $font_faces . '</style>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } JupiterX_Custom_Fonts::get_instance();
Upload File
Create Folder