Passed
Push — master ( 2256c9...a580d9 )
by Fernando
02:21
created

scripts.php ➔ lsx_admin_scripts()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * LSX functions and definitions - Scripts.
4
 *
5
 * @package    lsx
6
 * @subpackage scripts
7
 */
8
9
if ( ! defined( 'ABSPATH' ) ) {
10
	exit;
11
}
12
13
if ( ! function_exists( 'lsx_scripts' ) ) :
14
15
	/**
16
	 * Enqueue scripts, fonts and styles.
17
	 *
18
	 * @package    lsx
19
	 * @subpackage scripts
20
	 */
21
	function lsx_scripts() {
22
		lsx_scripts_add_styles();
23
		lsx_scripts_add_fonts();
24
		lsx_scripts_add_scripts();
25
	}
26
27
endif;
28
29
add_action( 'wp_enqueue_scripts', 'lsx_scripts' );
30
31
if ( ! function_exists( 'lsx_admin_scripts' ) ) :
32
33
	/**
34
	 * Enqueue scripts (admin).
35
	 *
36
	 * @package    lsx
37
	 * @subpackage scripts
38
	 */
39
	function lsx_admin_scripts() {
40
		wp_enqueue_script( 'lsx-admin', get_template_directory_uri() . '/assets/js/admin/lsx-admin.js', array( 'jquery' ), LSX_VERSION, true );
41
	}
42
43
endif;
44
45
add_action( 'admin_enqueue_scripts', 'lsx_admin_scripts' );
46
47
if ( ! function_exists( 'lsx_scripts_add_styles' ) ) :
48
49
	/**
50
	 * Enqueue styles.
51
	 *
52
	 * @package    lsx
53
	 * @subpackage scripts
54
	 */
55
	function lsx_scripts_add_styles() {
56
		wp_register_style( 'fontawesome', get_template_directory_uri() . '/assets/css/vendor/font-awesome.css', array(), LSX_VERSION );
57
		wp_style_add_data( 'fontawesome', 'rtl', 'replace' );
58
59
		wp_register_style( 'bootstrap', get_template_directory_uri() . '/assets/css/vendor/bootstrap.css', array(), LSX_VERSION );
60
		wp_style_add_data( 'bootstrap', 'rtl', 'replace' );
61
62
		wp_enqueue_style( 'slick', get_template_directory_uri() . '/assets/css/vendor/slick.css', array(), LSX_VERSION, null );
63
		wp_enqueue_style( 'slick-lightbox', get_template_directory_uri() . '/assets/css/vendor/slick-lightbox.css', array( 'slick' ), LSX_VERSION, null );
64
65
		wp_enqueue_style( 'lsx_main_style', get_template_directory_uri() . '/style.css', array(), LSX_VERSION );
66
		wp_enqueue_style( 'lsx_main', get_template_directory_uri() . '/assets/css/lsx.css', array( 'lsx_main_style', 'fontawesome', 'bootstrap', 'slick', 'slick-lightbox' ), LSX_VERSION );
67
		wp_style_add_data( 'lsx_main', 'rtl', 'replace' );
68
	}
69
70
endif;
71
72
if ( ! function_exists( 'lsx_scripts_add_fonts' ) ) :
73
74
	/**
75
	 * Enqueue fonts.
76
	 *
77
	 * @package    lsx
78
	 * @subpackage scripts
79
	 */
80
	function lsx_scripts_add_fonts() {
81
		// Font data (full JSON)
82
83
		$data_fonts = get_transient( 'lsx_font_data' );
84
85
		if ( is_customize_preview() || false === $data_fonts ) {
86
			$data_fonts_file = get_template_directory() . '/assets/jsons/lsx-fonts.json';
87
			$data_fonts = lsx_file_get_contents( $data_fonts_file );
88
			$data_fonts = apply_filters( 'lsx_fonts_json', $data_fonts );
89
		}
90
91
		if ( ! empty( $data_fonts ) ) {
92
			set_transient( 'lsx_font_data', $data_fonts, ( 5 * 60 ) );
93
		}
94
95
		$data_fonts = '{' . $data_fonts . '}';
96
		$data_fonts = json_decode( $data_fonts, true );
97
98
		// Font data (saved)
99
100
		$font_saved = get_theme_mod( 'lsx_font', 'lora_noto_sans' );
101
102
		if ( isset( $data_fonts[ $font_saved ] ) ) {
103
			$font = $data_fonts[ $font_saved ];
104
		} else {
105
			$font = $data_fonts['lora_noto_sans'];
106
		}
107
108
		// Font declarations
109
110
		$font_declarations = get_transient( 'lsx_font_declarations' );
111
112
		if ( is_customize_preview() || false === $font_declarations ) {
113
			$font_declarations = array(
114
				'header' => '',
115
				'body' => '',
116
			);
117
118
			$fonts_to_load = array(
119
				'header' => $font['header'],
120
				'body' => $font['body'],
121
			);
122
123
			$font_declaration_placeholder_file = get_template_directory() . '/assets/css/lsx-fonts-placeholder.css';
124
			$font_declaration_placeholder = lsx_file_get_contents( $font_declaration_placeholder_file );
125
126
			foreach ( $fonts_to_load as $font_to_load_key => $font_to_load ) {
127
				$font_title = $font_to_load['title'];
128
				$font_title_sanitize = sanitize_title( $font_title );
129
130
				$font_data = explode( ':', $font_to_load['location'] );
131
				$font_weights = explode( ',', $font_data[1] );
132
133
				foreach ( $font_weights as $font_weight_key => $font_weight ) {
134
					$font_style = 'normal';
135
136
					if ( preg_match( '/^[0-9]+i$/', $font_weight ) ) {
137
						$font_style = 'italic';
138
						$font_weight = preg_replace( '/^([0-9]+)(i)$/', '$1', $font_weight );
139
					}
140
141
					$font_src = get_template_directory() . '/assets/fonts/' . $font_title_sanitize . '-' . $font_weight . '-' . $font_style;
142
					$font_src = apply_filters( 'lsx_fonts_src', $font_src, $font_title_sanitize, $font_weight, $font_style );
143
144
					$font_src_uri = get_template_directory_uri() . '/assets/fonts/' . $font_title_sanitize . '-' . $font_weight . '-' . $font_style;
145
					$font_src_uri = apply_filters( 'lsx_fonts_src_uri', $font_src_uri, $font_title_sanitize, $font_weight, $font_style );
146
147
					if ( file_exists( $font_src . '.ttf' ) && file_exists( $font_src . '.woff' ) ) {
148
						$font_declaration = $font_declaration_placeholder;
149
						$font_declaration = str_replace( '[font-family]', '\'' . $font_title . '\'', $font_declaration );
150
						$font_declaration = str_replace( '[font-style]', $font_style, $font_declaration );
151
						$font_declaration = str_replace( '[font-weight]', $font_weight, $font_declaration );
152
						$font_declaration = str_replace( '[font-src]', $font_src_uri, $font_declaration );
153
						$font_declaration = preg_replace( '/(\/\*# ).+( \*\/)/', '', $font_declaration );
154
155
						$font_declarations[ $font_to_load_key ] .= $font_declaration;
156
					}
157
				}
158
			}
159
160
			set_transient( 'lsx_font_declarations', $font_declarations, ( 24 * 60 * 60 ) );
161
		}
162
163
		$http_var = 'http';
164
165
		if ( is_ssl() ) {
166
			$http_var .= 's';
167
		}
168
169
		if ( ! empty( $font_declarations ) && is_array( $font_declarations ) ) {
170
			foreach ( $font_declarations as $font_declaration_key => $font_declaration ) {
171
				if ( ! empty( $font_declaration ) ) {
172
					wp_add_inline_style( 'lsx_main', $font_declaration );
173
				} else {
174
					wp_enqueue_style( 'lsx-' . $font_declaration_key . '-font', esc_url( $http_var . '://fonts.googleapis.com/css?family=' . $font[ $font_declaration_key ]['location'] ) );
175
				}
176
			}
177
		} else {
178
			wp_enqueue_style( 'lsx-header-font', esc_url( $http_var . '://fonts.googleapis.com/css?family=' . $font['header']['location'] ) );
179
			wp_enqueue_style( 'lsx-body-font', esc_url( $http_var . '://fonts.googleapis.com/css?family=' . $font['body']['location'] ) );
180
		}
181
182
		// Font styles
183
184
		$font_styles = get_transient( 'lsx_font_styles' );
185
186
		if ( is_customize_preview() || false === $font_styles ) {
187
			$font_styles = '';
188
189
			$css_fonts_file = get_template_directory() . '/assets/css/lsx-fonts.css';
190
			$css_fonts = lsx_file_get_contents( $css_fonts_file );
191
			$css_fonts = apply_filters( 'lsx_fonts_css', $css_fonts );
192
193
			if ( ! empty( $css_fonts ) ) {
194
				$font_styles = $css_fonts;
195
				$font_styles = str_replace( '[font-family-headings]', $font['header']['cssDeclaration'], $font_styles );
196
				$font_styles = str_replace( '[font-family-body]', $font['body']['cssDeclaration'], $font_styles );
197
				$font_styles = preg_replace( '/(\/\*# ).+( \*\/)/', '', $font_styles );
198
			}
199
200
			set_transient( 'lsx_font_styles', $font_styles, ( 24 * 60 * 60 ) );
201
		}
202
203
		if ( ! empty( $font_styles ) ) {
204
			wp_add_inline_style( 'lsx_main', $font_styles );
205
		}
206
	}
207
208
endif;
209
210
if ( ! function_exists( 'lsx_scripts_add_scripts' ) ) :
211
212
	/**
213
	 * Enqueue scripts.
214
	 *
215
	 * @package    lsx
216
	 * @subpackage scripts
217
	 */
218
	function lsx_scripts_add_scripts() {
219
		if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
220
			wp_enqueue_script( 'comment-reply' );
221
		}
222
223
		wp_enqueue_script( 'platform', get_template_directory_uri() . '/assets/js/vendor/platform.min.js', array(), LSX_VERSION, false );
224
		wp_enqueue_script( 'bootstrap', get_template_directory_uri() . '/assets/js/vendor/bootstrap.min.js', array( 'jquery' ), LSX_VERSION, true );
225
226
		wp_enqueue_script( 'imagesLoaded', get_template_directory_uri() . '/assets/js/vendor/imagesloaded.pkgd.min.js', array( 'masonry' ), LSX_VERSION, true );
227
		wp_enqueue_script( 'scrolltofixed', get_template_directory_uri() . '/assets/js/vendor/jquery-scrolltofixed-min.js', array( 'jquery' ), LSX_VERSION, true );
228
		wp_enqueue_script( 'slick', get_template_directory_uri() . '/assets/js/vendor/slick.min.js', array( 'jquery' ), LSX_VERSION, true );
229
		wp_enqueue_script( 'slick-lightbox', get_template_directory_uri() . '/assets/js/vendor/slick-lightbox.min.js', array( 'jquery', 'slick' ), LSX_VERSION, true );
230
		wp_enqueue_script( 'picturefill', get_template_directory_uri() . '/assets/js/vendor/picturefill.min.js', array(), LSX_VERSION, true );
231
232
		wp_enqueue_script( 'lsx_script', get_template_directory_uri() . '/assets/js/lsx.min.js', array( 'jquery', 'platform', 'bootstrap', 'masonry', 'imagesLoaded', 'scrolltofixed', 'slick', 'slick-lightbox', 'picturefill' ), LSX_VERSION, true );
233
234
		$param_array = array(
235
			'columns' => apply_filters( 'lsx_archive_column_number', 3 ),
236
		);
237
238
		wp_localize_script( 'lsx_script', 'lsx_params', $param_array );
239
	}
240
241
endif;
242
243
if ( ! function_exists( 'lsx_scripts_child_theme' ) ) :
244
245
	/**
246
	 * Enqueue scripts and styles (for child theme).
247
	 *
248
	 * @package    lsx
249
	 * @subpackage scripts
250
	 */
251
	function lsx_scripts_child_theme() {
252
		if ( is_child_theme() && file_exists( get_stylesheet_directory() . '/assets/css/custom.css' ) ) {
253
			wp_enqueue_style( 'child-css', get_stylesheet_directory_uri() . '/assets/css/custom.css', array( 'lsx_main' ), LSX_VERSION );
254
			wp_style_add_data( 'child-css', 'rtl', 'replace' );
255
		}
256
	}
257
258
endif;
259
260
add_action( 'wp_enqueue_scripts', 'lsx_scripts_child_theme', 1999 );
261