PluginProbe
WP Coder – Insert & Manage Code Snippets / 3.0.2
WP Coder – Insert & Manage Code Snippets v3.0.2
4.5.1 1.1 2.3.1 2.3.2 2.4.1 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1 3.1.1 3.2 3.2.1 3.3 3.4 3.5 3.5.1 All 39 releases
wp-coder / classes / Publisher / EnqueueScript.php

EnqueueScript.php in WP Coder – Insert & Manage Code Snippets 3.0.2, at classes/Publisher/EnqueueScript.php

142 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPCoder\Publisher;
4
5 defined( 'ABSPATH' ) || exit;
6
7 use WPCoder\Dashboard\DBManager;
8 use WPCoder\Dashboard\FolderManager;
9 use WPCoder\Optimization\Obfuscator;
10 use WPCoder\WOW_Plugin;
11
12 class EnqueueScript {
13
14 public static function init( $result ): void {
15 $param = maybe_unserialize( $result->param );
16 $js = wp_specialchars_decode( $result->js_code, ENT_QUOTES );
17
18 self::include_scripts( $result );
19
20 if ( ! empty( $js ) && ! empty( $param['inline_js'] ) ) {
21 self::print_style( $js, $param, $result );
22 }
23
24 if ( ! empty( $js ) && empty( $param['inline_js'] ) ) {
25 self::include_script( $result, $param );
26 }
27
28
29 add_filter( 'script_loader_tag', [ __CLASS__, 'add_attribute' ], 20, 2 );
30 }
31
32 public static function add_attribute( $tag, $handle ) {
33 $scripts = self::get_all_scripts();
34
35 if ( ! empty( $scripts[ $handle ] ) ) {
36 return str_replace( ' src', ' ' . $scripts[ $handle ] . ' src', $tag );
37 }
38
39 return $tag;
40 }
41
42 private static function print_style( $js, $param, $result ): void {
43 if ( is_admin() ) {
44 return;
45 }
46
47 $minified = ! empty( $param['minified_js'] ) ? $param['minified_js'] : 'obfuscate';
48
49 if ( $minified === 'obfuscate' ) {
50 $packer = new Obfuscator( $js, 'Normal', true, false );
51 $js = $packer->pack();
52 }
53 if ( $minified === 'minify' ) {
54 $packer = new Obfuscator( $js, 'None', true, false );
55 $js = $packer->pack();
56 }
57
58 $slug = WOW_Plugin::SLUG . '-js-' . $result->id . '-inline';
59 echo '<script id="' . esc_attr( $slug ) . '">' . $js . '</script>';
60 }
61
62 private static function include_script( $result, $param ): void {
63 $url = FolderManager::get_js_url( $result );
64 $time = ! empty( $param['time'] ) ? $param['time'] : time();
65 $dependency = ! empty( $param['jquery_dependency'] ) ? [] : [ 'jquery' ];
66 wp_enqueue_script( WOW_Plugin::SLUG . '-script-' . $result->id, $url, $dependency,
67 WOW_Plugin::VERSION . '_' . $time, true );
68 }
69
70 private static function include_scripts( $result ): void {
71 $scripts = self::get_scripts( $result );
72 if ( empty( $scripts ) ) {
73 return;
74 }
75
76 foreach ( $scripts as $script ) {
77 wp_enqueue_script( $script['slug'], $script['url'], [], $script['ver'], true );
78 }
79 }
80
81 private static function get_scripts( $result ): array {
82 $scripts = [];
83
84 $param = maybe_unserialize( $result->param );
85
86 $count = ! empty( $param['include'] ) ? count( $param['include'] ) : 0;
87 $time = ! empty( $param['time'] ) ? $param['time'] : time();
88
89 if ( $count < 1 ) {
90 return $scripts;
91 }
92
93 for ( $i = 0; $i < $count; $i ++ ) {
94 if ( $param['include'][ $i ] === 'js' && ! empty( $param['include_file'][ $i ] ) ) {
95 $scripts[] = [
96 'url' => $param['include_file'][ $i ],
97 'slug' => WOW_Plugin::SLUG . '-' . $result->id . '-js-' . $i,
98 'ver' => WOW_Plugin::VERSION . '_' . $time,
99 ];
100 }
101 }
102
103 return $scripts;
104 }
105
106 private static function get_all_scripts(): array {
107 $scripts = [];
108
109 $results = DBManager::get_all_data();
110
111 if ( empty( $results ) ) {
112 return $scripts;
113 }
114
115 foreach ( $results as $result ) {
116 $id = $result->id;
117 $param = maybe_unserialize( $result->param );
118
119 if ( ! empty( $param['js_attributes'] ) && ! empty( $result->js_code ) ) {
120 $scripts[ WOW_Plugin::SLUG . '-script-' . $id ] = $param['js_attributes'];
121 }
122
123
124 $count = ! empty( $param['include'] ) ? count( $param['include'] ) : 0;
125
126 if ( $count < 1 ) {
127 continue;
128 }
129
130 for ( $i = 0; $i < $count; $i ++ ) {
131 if ( $param['include'][ $i ] === 'js' && ! empty( $param['include_file'][ $i ] ) ) {
132 $attr = ! empty( $param['file_js_att'][ $i ] ) ? $param['file_js_att'][ $i ] : '';
133
134 $scripts[ WOW_Plugin::SLUG . '-' . $id . '-js-' . $i ] = $attr;
135 }
136 }
137 }
138
139 return $scripts;
140 }
141
142 }