File "class-jet-elements-control-icon.php"
Full path: /home/dora/public_html/wp-content/plugins/jet-elements/includes/controls/class-jet-elements-control-icon.php
File size: 2.49 KB
MIME-type: --
Charset: utf-8
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
/**
* A Font Icon select box.
*
* @property array $icons A list of font-icon classes. [ 'class-name' => 'nicename', ... ]
* Default Font Awesome icons. @see Control_Icon::get_icons().
* @property array $include list of classes to include form the $icons property
* @property array $exclude list of classes to exclude form the $icons property
*
* @since 1.0.0
*/
class Jet_Elements_Control_Icon extends Elementor\Control_Icon {
public function get_type() {
return 'icon';
}
/**
* Get icons list
*
* @return array
*/
public static function get_icons_set() {
$icon_data = jet_elements_tools()->get_theme_icons_data();
// Prepare icons array
if ( ! empty( $icon_data['icons'] ) ) {
$icons = $icon_data['icons'];
} elseif ( file_exists( $icon_data['file'] ) ) {
$icons = self::get_icons_from_path( $icon_data['file'] );
} else {
return self::get_icons();
}
$keys = $icons;
array_walk( $keys, array( __CLASS__, 'prepare_prefixes' ), $icon_data['format'] );
$icons = array_combine( $keys, $icons );
return $icons;
}
/**
* Prepare keys
*
* @param [type] &$item [description]
* @param [type] $index [description]
* @param [type] $prefix [description]
* @return [type] [description]
*/
public static function prepare_prefixes( &$item, $index, $prefix ) {
$item = sprintf( $prefix, $item );
}
/**
* Get default icons list
*
* @return array
*/
public static function get_default_icons() {
if ( ! defined( 'ELEMENTOR_ASSETS_URL' ) ) {
return array();
}
$fileurl = ELEMENTOR_ASSETS_URL . 'lib/font-awesome/css/font-awesome.min.css';
$filepath = str_replace( home_url(), ABSPATH, $fileurl );
if ( ! file_exists( $filepath ) ) {
return array();
}
return self::get_icons_from_path( $filepath );
}
/**
* Get icons set from path
*
* @param string $path Path to icons file.
* @return array
*/
public static function get_icons_from_path( $path ) {
$key = md5( $path );
$cached = wp_cache_get( $key );
if ( $cached ) {
return $cached;
}
ob_start();
include $path;
$result = ob_get_clean();
preg_match_all( '/\.([-_a-zA-Z0-9]+):before[, {]/', $result, $icons );
if ( ! is_array( $icons ) || empty( $icons[1] ) ) {
return;
}
wp_cache_add( $key, $icons[1] );
return $icons[1];
}
protected function get_default_settings() {
return [
'options' => self::get_icons_set(),
];
}
}