Files
roi-theme/wp-content/plugins/thrive-visual-editor/thrive-dashboard/inc/font-manager/font-manager.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- 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>
2025-11-03 21:04:30 -06:00

261 lines
9.6 KiB
PHP
Executable File

<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-dashboard
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
/* Display font manager admin interface */
function tve_dash_font_manager_main_page() {
$font_options = is_array( json_decode( get_option( 'thrive_font_manager_options' ), true ) ) ? json_decode( get_option( 'thrive_font_manager_options' ), true ) : array();
$last_option = end( $font_options );
$font_id = intval( $last_option['font_id'] ) + 1;
include 'views/admin-font-manager.php';
}
add_action( 'admin_enqueue_scripts', 'tve_dash_font_manager_include_scripts' );
function tve_dash_font_manager_include_scripts( $hook ) {
$allowed = array(
'admin_page_tve_dash_font_manager',
'admin_page_tve_dash_font_import_manager',
);
if ( ! in_array( $hook, $allowed ) ) {
return;
}
tve_dash_enqueue();
if ( $hook == 'admin_page_tve_dash_font_import_manager' && ! empty( $_POST['attachment_id'] ) && $_POST['attachment_id'] != "-1" && count( $_POST ) == 1 ) {
/**
* we don't want to load dash style.css when WP FTP form is displayed
*/
wp_deregister_style( 'tve-dash-styles-css' );
}
if ( $hook == 'admin_page_tve_dash_font_import_manager' ) {
wp_enqueue_media();
tve_dash_enqueue_style( 'tve-dash-font-import-manager-css', TVE_DASH_URL . '/inc/font-import-manager/views/css/manager.css' );
tve_dash_enqueue_script( 'tve-dash-font-import-manager-js', TVE_DASH_URL . '/inc/font-import-manager/views/js/manager.js', array(
'jquery',
'media-upload',
'thickbox',
) );
}
if ( $hook == 'admin_page_tve_dash_font_manager' ) {
add_thickbox();
wp_enqueue_script( 'wp-color-picker' );
wp_enqueue_style( 'wp-color-picker' );
tve_dash_enqueue_style( 'tve-dash-font-manager', TVE_DASH_URL . '/inc/font-manager/css/style.css' );
}
}
add_action( "wp_ajax_tve_dash_font_manager_update_posts_fonts", "tve_dash_font_manager_update_posts_fonts" );
function tve_dash_font_manager_update_posts_fonts() {
check_ajax_referer( 'tve-dash' );
if ( ! current_user_can( TVE_DASH_CAPABILITY ) ) {
wp_die( '' );
}
$posts = get_posts( array( 'posts_per_page' => - 1 ) );
foreach ( $posts as $post ) {
$post_id = $post->ID;
$post_content = $post->post_content;
preg_match_all( "/thrive_custom_font id='\d+'/", $post_content, $font_ids );
$post_fonts = array();
foreach ( $font_ids[0] as $font_id ) {
$parts = explode( "'", $font_id );
$id = $parts[1];
$font = thrive_get_font_options( $id );
if ( tve_dash_font_manager_is_safe_font( $font->font_name ) ) {
continue;
}
if ( Tve_Dash_Font_Import_Manager::isImportedFont( $font->font_name ) ) {
$post_fonts[] = Tve_Dash_Font_Import_Manager::getCssFile();
continue;
}
$post_fonts[] = "//fonts.googleapis.com/css?family=" . str_replace( " ", "+", $font->font_name ) . ( $font->font_style != 0 ? ":" . $font->font_style : "" ) . ( $font->font_italic ? "" . $font->font_italic : "" ) . ( $font->font_bold != 0 ? "," . $font->font_bold : "" ) . ( $font->font_character_set != 0 ? "&subset=" . $font->font_character_set : "" );
}
$post_fonts = array_unique( $post_fonts );
update_post_meta( $post_id, 'thrive_post_fonts', sanitize_text_field( json_encode( $post_fonts ) ) );
}
die;
}
function tve_dash_font_manager_get_safe_fonts() {
return $safe_fonts = array(
array(
'family' => 'Georgia, serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Palatino Linotype, Book Antiqua, Palatino, serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Times New Roman, Times, serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Arial, Helvetica, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Arial Black, Gadget, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Comic Sans MS, cursive, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Impact, Charcoal, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Lucida Sans Unicode, Lucida Grande, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Tahoma, Geneva, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Trebuchet MS, Helvetica, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Verdana, Geneva, sans-serif',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Courier New, Courier, monospace',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
array(
'family' => 'Lucida Console, Monaco, monospace',
'variants' => array( 'regular', 'italic', '600' ),
'subsets' => array( 'latin' ),
),
);
}
function tve_dash_font_manager_is_safe_font( $font_family ) {
foreach ( tve_dash_font_manager_get_safe_fonts() as $font ) {
if ( $font_family === $font['family'] ) {
return true;
}
}
return false;
}
function tve_dash_font_manager_get_safe_font( $font_family ) {
foreach ( tve_dash_font_manager_get_safe_fonts() as $font ) {
if ( $font['family'] === $font_family ) {
return $font;
}
}
return array();
}
function tve_dash_get_font_family_array( $font_name = null ) {
if ( $font_name === false ) {
return false;
}
$font_name = str_replace( " ", "", trim( $font_name ) );
$fonts = array(
'AbrilFatface' => "font-family: 'Abril Fatface', cursive;",
'Amatic SC' => "font-family: 'Amatic SC', cursive;",
'Archivo Black' => "font-family: 'Archivo Black', sans-serif;",
'Arbutus Slab' => "font-family: 'Arbutus Slab', serif;",
'Archivo Narrow' => "font-family: 'Archivo Narrow', sans-serif;",
'Arial' => "font-family: 'Arial';",
'Arimo' => "font-family: 'Arimo', sans-serif;",
'Arvo' => "font-family: 'Arvo', serif;",
'Boogaloo' => "font-family: 'Boogaloo', cursive;",
'Calligraffitti' => "font-family: 'Calligraffitti', cursive;",
'CantataOne' => "font-family: 'Cantata One', serif;",
'Cardo' => "font-family: 'Cardo', serif;",
'Cutive' => "font-family: 'Cutive', serif;",
'DaysOne' => "font-family: 'Days One', sans-serif;",
'Dosis' => "font-family: 'Dosis', sans-serif;",
'Droid Sans' => "font-family: 'Droid Sans', sans-serif;",
'Droid Serif' => "font-family: 'Droid Serif', sans-serif;",
'FjallaOne' => "font-family: 'Fjalla One', sans-serif;",
'FrancoisOne' => "font-family: 'Francois One', sans-serif;",
'Georgia' => "font-family: 'Georgia';",
'GravitasOne' => "font-family: 'Gravitas One', cursive;",
'Helvetica' => "font-family: 'Helvetica';",
'JustAnotherHand' => "font-family: 'Just Another Hand', cursive;",
'Josefin Sans' => "font-family: 'Josefin Sans', sans-serif;",
'Josefin Slab' => "font-family: 'Josefin Slab', serif;",
'Lobster' => "font-family: 'Lobster', cursive;",
'Lato' => "font-family: 'Lato', sans-serif;",
'Montserrat' => "font-family: 'Montserrat', sans-serif;",
'NotoSans' => "font-family: 'Noto Sans', sans-serif;",
'OleoScript' => "font-family: 'Oleo Script', cursive;",
'Old Standard TT' => "font-family: 'Old Standard TT', serif;",
'Open Sans' => "font-family: 'Open Sans', sans-serif;",
'Oswald' => "font-family: 'Oswald', sans-serif;",
'OpenSansCondensed' => "font-family: 'Open Sans Condensed', sans-serif;",
'Oxygen' => "font-family: 'Oxygen', sans-serif;",
'Pacifico' => "font-family: 'Pacifico', cursive;",
'Playfair Display' => "font-family: 'Playfair Display', serif;",
'Poiret One' => "font-family: 'Poiret One', cursive;",
'PT Sans' => "font-family: 'PT Sans', sans-serif;",
'PT Serif' => "font-family: 'PT Serif', sans-serif;",
'Raleway' => "font-family: 'Raleway', sans-serif;",
'Roboto' => "font-family: 'Roboto', sans-serif;",
'Roboto Condensed' => "font-family: 'Roboto Condensed', sans-serif;",
'Roboto Slab' => "font-family: 'Roboto Slab', serif;",
'ShadowsIntoLightTwo' => "font-family: 'Shadows Into Light Two', cursive;",
'Source Sans Pro' => "font-family: 'Source Sans Pro', sans-serif;",
'Sorts Mill Gaudy' => "font-family: 'Sorts Mill Gaudy', cursive;",
'SpecialElite' => "font-family: 'Special Elite', cursive;",
'Tahoma' => "font-family: 'Tahoma';",
'TimesNewRoman' => "font-family: 'Times New Roman';",
'Ubuntu' => "font-family: 'Ubuntu', sans-serif;",
'Ultra' => "font-family: 'Ultra', serif;",
'VarelaRound' => "font-family: 'Varela Round', sans-serif;",
'Verdana' => "font-family: 'Verdana';",
'Vollkorn' => "font-family: 'Vollkorn', serif;",
);
if ( $font_name ) {
if ( isset( $fonts[ $font_name ] ) ) {
return $fonts[ $font_name ];
} else {
return false;
}
}
return $fonts;
}