laipower/wp-content/plugins/menu-icons/includes/library/font-awesome/font-awesome.php

123 lines
3.3 KiB
PHP

<?php
/**
* Font awesome 5 icons support.
*
* @package Menu_Icons
*/
final class Menu_Icons_Font_Awesome {
/**
* Font Awesome version
*
* @access static
* @var string
*/
public static $version = '5.15.4';
/**
* Init hooks.
*/
public static function init() {
add_filter( 'icon_picker_icon_type_stylesheet_uri', array( __CLASS__, '_icon_type_stylesheet_uri' ), 10, 3 );
add_filter( 'icon_picker_fa_items', array( __CLASS__, '_icon_picker_fa_items' ) );
add_filter( 'icon_picker_font_media_templates', array( __CLASS__, '_icon_picker_font_media_templates' ) );
}
/**
* Font Awesome's stylesheet.
*
* @param string $stylesheet_uri Icon type's stylesheet URI.
* @param string $icon_type_id Icon type's ID.
* @param Icon_Picker_Type_Font $icon_type Icon type's instance.
*
* @return string
*/
public static function _icon_type_stylesheet_uri( $stylesheet_uri, $icon_type_id, $icon_type ) {
if ( 'fa' === $icon_type_id ) {
$url = Menu_Icons::get( 'url' );
$stylesheet_uri = sprintf(
"{$url}css/fontawesome/css/all.min.css",
$icon_type->version
);
}
return $stylesheet_uri;
}
/**
* Icon picker fontawesome items.
*
* @param array $icons Icons.
* @return array Icons.
*/
public static function _icon_picker_fa_items( $icons ) {
if ( empty( $icons ) ) {
return $icons;
}
$deprecated_icons = array_search( 'fa-tripadvisor', array_column( $icons, 'id' ), true );
if ( false !== $deprecated_icons ) {
unset( $icons[ $deprecated_icons ] );
$icons = array_values( $icons );
}
$font_awesome = font_awesome_backward_compatible();
foreach ( $icons as $key => $icon ) {
$old_fa_icon = sprintf( 'fa-%s', $icons[ $key ]['id'] );
if ( array_key_exists( $old_fa_icon, $font_awesome ) ) {
$icons[ $key ]['id'] = trim( $font_awesome[ $old_fa_icon ] );
} else {
$icons[ $key ]['id'] = sprintf( 'fa %s', trim( $icons[ $key ]['id'] ) );
}
}
// Fa5 extra icons support.
$global_settins = get_option( 'menu-icons', false );
if ( ! empty( $global_settins['global']['fa5_extra_icons'] ) ) {
$fa5_extra_icons = $global_settins['global']['fa5_extra_icons'];
$fa5_extra_icons = explode( ',', $fa5_extra_icons );
$fa5_extra_icons = array_map( 'trim', $fa5_extra_icons );
if ( ! empty( $fa5_extra_icons ) ) {
foreach ( $fa5_extra_icons as $fa5_icon ) {
$icon_name = explode( '-', $fa5_icon );
$icon_name = end( $icon_name );
$icons[] = array(
'group' => 'all',
'id' => $fa5_icon,
'name' => $icon_name,
);
}
}
}
return $icons;
}
/**
* Icon picker font media template.
*
* @param string $template Media template.
* @return string Media template.
*/
public static function _icon_picker_font_media_templates( $template ) {
$templates = array(
'icon' => '<i class="_icon {{data.type}} {{ data.icon }}"></i>',
'item' => sprintf(
'<div class="attachment-preview js--select-attachment">
<div class="thumbnail">
<span class="_icon"><i class="{{"fa" == data.type ? "" : data.type}} {{ data.id }}"></i></span>
<div class="filename"><div>{{ data.name }}</div></div>
</div>
</div>
<a class="check" href="#" title="%s"><div class="media-modal-icon"></div></a>',
esc_attr__( 'Deselect', 'icon-picker' )
),
);
return $templates;
}
}