| 1 |
<?php |
| 2 |
|
| 3 |
namespace WPCoder\Publisher; |
| 4 |
|
| 5 |
defined( 'ABSPATH' ) || exit; |
| 6 |
|
| 7 |
use WPCoder\Dashboard\FolderManager; |
| 8 |
use WPCoder\Optimization\CSSMinifier; |
| 9 |
use WPCoder\WPCoder; |
| 10 |
|
| 11 |
class EnqueueStyle { |
| 12 |
|
| 13 |
public static function init( $result ) { |
| 14 |
$param = maybe_unserialize( $result->param ); |
| 15 |
|
| 16 |
self::include_styles( $result ); |
| 17 |
|
| 18 |
if ( ! empty( $result->css_code ) && empty( $param['inline_css'] ) ) { |
| 19 |
self::include_style( $result->id, $param, $result ); |
| 20 |
} |
| 21 |
|
| 22 |
} |
| 23 |
|
| 24 |
public static function inline($result ): void { |
| 25 |
if ( is_admin() ) { |
| 26 |
return; |
| 27 |
} |
| 28 |
|
| 29 |
if(empty($result->css_code)) { |
| 30 |
return; |
| 31 |
} |
| 32 |
|
| 33 |
$param = maybe_unserialize( $result->param ); |
| 34 |
|
| 35 |
if(empty( $param['inline_css'])) { |
| 36 |
return; |
| 37 |
} |
| 38 |
|
| 39 |
$css = $result->css_code; |
| 40 |
|
| 41 |
if ( ! empty( $param['minified_css'] ) ) { |
| 42 |
$css = CSSMinifier::minify( $css ); |
| 43 |
} |
| 44 |
|
| 45 |
$slug = WPCoder::SLUG . '-style-' . $result->id . '-inline'; |
| 46 |
echo '<style id="' . esc_attr( $slug ) . '">' . wp_kses_post( $css ) . '</style>'; |
| 47 |
} |
| 48 |
|
| 49 |
private static function include_style( $id, $param, $result ) { |
| 50 |
$url = FolderManager::get_style_url( $result ); |
| 51 |
$time = ! empty( $param['time'] ) ? $param['time'] : time(); |
| 52 |
|
| 53 |
wp_enqueue_style( WPCoder::SLUG . '-style-' . $id, $url, null, WPCoder::info('version') . '_' . $time ); |
| 54 |
} |
| 55 |
|
| 56 |
private static function include_styles( $result ) { |
| 57 |
$styles = self::get_styles( $result ); |
| 58 |
if ( empty( $styles ) ) { |
| 59 |
return; |
| 60 |
} |
| 61 |
|
| 62 |
foreach ( $styles as $style ) { |
| 63 |
if ( empty( $style['att'] ) ) { |
| 64 |
wp_enqueue_style( $style['slug'], $style['url'], null, $style['ver'] ); |
| 65 |
} |
| 66 |
} |
| 67 |
} |
| 68 |
|
| 69 |
private static function get_styles( $result ): array { |
| 70 |
$styles = []; |
| 71 |
|
| 72 |
$param = maybe_unserialize( $result->param ); |
| 73 |
|
| 74 |
$count = ! empty( $param['include'] ) ? count( $param['include'] ) : 0; |
| 75 |
$time = ! empty( $param['time'] ) ? $param['time'] : time(); |
| 76 |
|
| 77 |
if ( $count < 1 ) { |
| 78 |
return $styles; |
| 79 |
} |
| 80 |
|
| 81 |
for ( $i = 0; $i < $count; $i ++ ) { |
| 82 |
if ( $param['include'][ $i ] === 'css' && ! empty( $param['include_file'][ $i ] ) ) { |
| 83 |
$styles[] = [ |
| 84 |
'url' => $param['include_file'][ $i ], |
| 85 |
'slug' => WPCoder::SLUG . '-' . $result->id . '-css-' . $i, |
| 86 |
'ver' => WPCoder::info('version') . '_' . $time, |
| 87 |
]; |
| 88 |
} |
| 89 |
} |
| 90 |
|
| 91 |
return $styles; |
| 92 |
} |
| 93 |
|
| 94 |
} |