font-icons-manager_deprecated.php
3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
namespace Getwid;
class FontIconsManager {
/**
* @var array
*/
private $fonts;
public function __construct() {
add_action( 'init', [ $this, 'extendFontIcons' ] );
add_filter( 'getwid/editor_blocks_js/localize_data', [ $this, 'setIconsListLocalizeData' ] );
}
public function getFonts() {
return $this->fonts;
}
public function extendFontIcons() {
$this->registerFontAwesome();
do_action( 'getwid/icons-manager/init', $this );
}
private function registerFontAwesome() {
// Register Font Awesome by default
$this->registerFont( 'fontawesome', [
'icons' => require( GETWID_PLUGIN_DIR . 'includes/data-list/font-awesome-icon-list.php' ),
'style' => 'fontawesome-free',
'enqueue_callback' => [ $this, 'enqueueFontAwesome' ],
'callback_priority' => 10,
] );
}
public function enqueueFontAwesome(){
wp_enqueue_style(
'fontawesome-free',
getwid_get_plugin_url( 'vendors/fontawesome-free/css/all.min.css' ),
null,
'5.5.0'
);
}
/**
* @param string $fontName
* @param array $args {
* Optional. Array of icon font arguments. Any arguments may be defined, however the
* ones described below are supported by default. Default empty array.
*
* @type array $icons Array of categories that contains icons
* @type array $style Handle of style
* }
*/
public function registerFont( $fontName, $args ) {
$this->fonts[ $fontName ] = [
'icons' => ! empty( $args['icons'] ) ? $args['icons'] : [],
'style' => ! empty( $args['style'] ) ? $args['style'] : '',
'enqueue_callback' => ! empty( $args['enqueue_callback'] ) ? $args['enqueue_callback'] : null,
'callback_priority' => ! empty( $args['callback_priority'] ) ? $args['callback_priority'] : 10,
];
// Register the enqueue hook
if ( !is_null( $this->fonts[ $fontName ][ 'enqueue_callback' ] ) ) {
add_action(
'enqueue_block_assets',
$this->fonts[ $fontName ][ 'enqueue_callback' ],
$this->fonts[ $fontName ][ 'callback_priority' ]
);
}
}
/**
* @param string $fontName
*/
public function deregisterFont( $fontName ) {
if ( isset( $this->fonts[ $fontName ] ) ) {
// Deregister the enqueue hook
if ( !is_null( $this->fonts[ $fontName ][ 'enqueue_callback' ] ) ) {
remove_action(
'enqueue_block_assets',
$this->fonts[ $fontName ][ 'enqueue_callback' ],
$this->fonts[ $fontName ][ 'callback_priority' ]
);
}
unset ( $this->fonts[ $fontName ] );
}
}
/**
* @return array
*/
private function getCategorizedIconList() {
$iconsByFonts = array_values( array_column( $this->fonts, 'icons' ) );
$buff_arr = [];
foreach($iconsByFonts as $iconsArrs){
if(!empty($iconsArrs)){
$buff_arr = array_merge($buff_arr, $iconsArrs);
}
}
return count( $iconsByFonts ) > 1 ? $buff_arr : current( $iconsByFonts );
}
/**
* @param array $localizeData
*
* @return array
*/
public function setIconsListLocalizeData( $localizeData ) {
$localizeData['settings']['iconList'] = $this->getCategorizedIconList();
return $localizeData;
}
}