- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
245 lines
5.9 KiB
PHP
Executable File
245 lines
5.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Thrive Themes - https://thrivethemes.com
|
|
*
|
|
* @package thrive-visual-editor
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Silence is golden!
|
|
}
|
|
|
|
/**
|
|
* Main class for handling the editor page related stuff
|
|
*
|
|
* Class TCB_Editor_Page
|
|
*/
|
|
class TCB_Font_Manager {
|
|
/**
|
|
* Instance
|
|
*
|
|
* @var TCB_Font_Manager
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* Singleton instance method
|
|
*
|
|
* @return TCB_Font_Manager
|
|
*/
|
|
public static function instance() {
|
|
if ( null === self::$instance ) {
|
|
self::$instance = new self();
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Return all fonts needed for font manager
|
|
*
|
|
* @return array
|
|
*/
|
|
public function all_fonts() {
|
|
$fonts = array(
|
|
'google' => array(
|
|
'label' => __( 'Google Fonts', 'thrive-cb' ),
|
|
'fonts' => [],
|
|
'search_priority' => 99,
|
|
),
|
|
'safe' => array(
|
|
'label' => __( 'Web Safe Fonts', 'thrive-cb' ),
|
|
'fonts' => static::safe_fonts(),
|
|
'search_priority' => 1,
|
|
),
|
|
'custom' => array(
|
|
'label' => __( 'Custom Fonts', 'thrive-cb' ),
|
|
'fonts' => $this->custom_fonts(),
|
|
'search_priority' => 1,
|
|
),
|
|
);
|
|
|
|
/**
|
|
* Compatibility with the "Font Library" plugin
|
|
*/
|
|
if ( tve_font_library()::is_wordpress_version_supported() ) {
|
|
$fonts['library'] = array(
|
|
'label' => __( 'Font Library', 'thrive-cb' ),
|
|
'fonts' => static::font_library_fonts(),
|
|
'search_priority' => 1,
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Compatibility with the "Custom Fonts" plugin
|
|
*/
|
|
if ( class_exists( 'Bsf_Custom_Fonts_Taxonomy' ) ) {
|
|
$bsf = [];
|
|
|
|
if ( version_compare( BSF_CUSTOM_FONTS_VER, '2.0.0', '<' ) === true ) {
|
|
foreach ( Bsf_Custom_Fonts_Taxonomy::get_fonts() as $font_face => $urls ) {
|
|
$bsf [ $font_face ] = [
|
|
'family' => $font_face,
|
|
'variants' => [],
|
|
'subsets' => '',
|
|
];
|
|
}
|
|
} else if ( version_compare( BSF_CUSTOM_FONTS_VER, '2.0.0', '>=' ) === true ) {
|
|
if ( class_exists( 'Bsf_Custom_Fonts_Render', false ) ) {
|
|
$custom_fonts = Bsf_Custom_Fonts_Render::get_instance()->get_existing_font_posts();
|
|
|
|
foreach ( $custom_fonts as $key => $font_id ) {
|
|
$font_face = get_the_title( $font_id );
|
|
$bsf [ $font_id ] = [
|
|
'family' => $font_face,
|
|
'variants' => [],
|
|
'subsets' => '',
|
|
];
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $bsf ) {
|
|
$fonts['custom_fonts_plugin'] = array(
|
|
'label' => __( 'Custom Fonts Plugin', 'thrive-cb' ),
|
|
'fonts' => $bsf,
|
|
'search_priority' => 1,
|
|
);
|
|
}
|
|
}
|
|
|
|
return $fonts;
|
|
}
|
|
|
|
/**
|
|
* Return array of fonts from font library
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function font_library_fonts() {
|
|
$fonts = [];
|
|
|
|
$response = tve_font_library()->endpoint->get_fonts();
|
|
$fonts = $response->data ?? [];
|
|
|
|
//Sort array of font objects by the name key.
|
|
usort( $fonts, function ( $a, $b ) {
|
|
return strcmp( $a['name'], $b['name'] );
|
|
} );
|
|
|
|
// Move fontFamily key to family key for each item in the array.
|
|
// This is to maintain consistency with other font sources.
|
|
foreach ( $fonts as $key => $font ) {
|
|
$fonts[ $key ]['family'] = $font['fontFamily'];
|
|
unset( $fonts[ $key ]['fontFamily'] );
|
|
}
|
|
|
|
return $fonts;
|
|
}
|
|
|
|
/**
|
|
* Return array of custom fonts
|
|
*
|
|
* @return array
|
|
*/
|
|
public function custom_fonts() {
|
|
$custom_fonts = json_decode( get_option( 'thrive_font_manager_options' ), true );
|
|
$imported_fonts = Tve_Dash_Font_Import_Manager::getImportedFonts();
|
|
|
|
if ( ! is_array( $custom_fonts ) ) {
|
|
$custom_fonts = [];
|
|
}
|
|
|
|
$imported_keys = [];
|
|
foreach ( $imported_fonts as $imp_font ) {
|
|
$imported_keys[] = $imp_font['family'];
|
|
}
|
|
|
|
$return = [];
|
|
foreach ( $custom_fonts as $font ) {
|
|
$return[ $font['font_name'] ] = array(
|
|
'family' => $font['font_name'],
|
|
'regular_weight' => intval( $font['font_style'] ),
|
|
'class' => $font['font_class'],
|
|
);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Return safe fonts array
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function safe_fonts() {
|
|
return array(
|
|
array(
|
|
'family' => 'Georgia, serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Palatino Linotype, Book Antiqua, Palatino, serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Times New Roman, Times, serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Arial, Helvetica, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Arial Black, Gadget, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Comic Sans MS, cursive, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Impact, Charcoal, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Lucida Sans Unicode, Lucida Grande, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Tahoma, Geneva, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Trebuchet MS, Helvetica, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Verdana, Geneva, sans-serif',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Courier New, Courier, monospace',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
array(
|
|
'family' => 'Lucida Console, Monaco, monospace',
|
|
'variants' => [ 'regular', 'italic', '600' ],
|
|
'subsets' => [ 'latin' ],
|
|
),
|
|
);
|
|
}
|
|
}
|