PluginProbe
WP Coder – Insert & Manage Code Snippets / 3.0.4
WP Coder – Insert & Manage Code Snippets v3.0.4
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.4, at classes/Publisher/EnqueueScript.php

150 lines 3.8 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::include_script( $result, $param );
22 }
23
24 add_filter( 'script_loader_tag', [ __CLASS__, 'add_attribute' ], 20, 2 );
25 }
26
27 public static function add_attribute( $tag, $handle ) {
28 $scripts = self::get_all_scripts();
29
30 if ( ! empty( $scripts[ $handle ] ) ) {
31 return str_replace( ' src', ' ' . $scripts[ $handle ] . ' src', $tag );
32 }
33
34 return $tag;
35 }
36
37 public static function inline( $result ): void {
38
39 if ( is_admin() ) {
40 return;
41 }
42
43 $param = maybe_unserialize( $result->param );
44 $js = wp_specialchars_decode( $result->js_code, ENT_QUOTES );
45
46 if ( empty( $param['inline_js'] ) ) {
47 return;
48 }
49
50 if ( empty( $js ) ) {
51 return;
52 }
53
54
55 $minified = ! empty( $param['minified_js'] ) ? $param['minified_js'] : 'obfuscate';
56
57 if ( $minified === 'obfuscate' ) {
58 $packer = new Obfuscator( $js, 'Normal', true, false );
59 $js = $packer->pack();
60 }
61 if ( $minified === 'minify' ) {
62 $packer = new Obfuscator( $js, 'None', true, false );
63 $js = $packer->pack();
64 }
65
66 $slug = WOW_Plugin::SLUG . '-js-' . $result->id . '-inline';
67 echo '<script id="' . esc_attr( $slug ) . '">' . $js . '</script>';
68 }
69
70 private static function include_script( $result, $param ): void {
71 $url = FolderManager::get_js_url( $result );
72 $time = ! empty( $param['time'] ) ? $param['time'] : time();
73 $dependency = ! empty( $param['jquery_dependency'] ) ? [] : [ 'jquery' ];
74 wp_enqueue_script( WOW_Plugin::SLUG . '-script-' . $result->id, $url, $dependency,
75 WOW_Plugin::VERSION . '_' . $time, true );
76 }
77
78 private static function include_scripts( $result ): void {
79 $scripts = self::get_scripts( $result );
80 if ( empty( $scripts ) ) {
81 return;
82 }
83
84 foreach ( $scripts as $script ) {
85 wp_enqueue_script( $script['slug'], $script['url'], [], $script['ver'], true );
86 }
87 }
88
89 private static function get_scripts( $result ): array {
90 $scripts = [];
91
92 $param = maybe_unserialize( $result->param );
93
94 $count = ! empty( $param['include'] ) ? count( $param['include'] ) : 0;
95 $time = ! empty( $param['time'] ) ? $param['time'] : time();
96
97 if ( $count < 1 ) {
98 return $scripts;
99 }
100
101 for ( $i = 0; $i < $count; $i ++ ) {
102 if ( $param['include'][ $i ] === 'js' && ! empty( $param['include_file'][ $i ] ) ) {
103 $scripts[] = [
104 'url' => $param['include_file'][ $i ],
105 'slug' => WOW_Plugin::SLUG . '-' . $result->id . '-js-' . $i,
106 'ver' => WOW_Plugin::VERSION . '_' . $time,
107 ];
108 }
109 }
110
111 return $scripts;
112 }
113
114 private static function get_all_scripts(): array {
115 $scripts = [];
116
117 $results = DBManager::get_all_data();
118
119 if ( empty( $results ) ) {
120 return $scripts;
121 }
122
123 foreach ( $results as $result ) {
124 $id = $result->id;
125 $param = maybe_unserialize( $result->param );
126
127 if ( ! empty( $param['js_attributes'] ) && ! empty( $result->js_code ) ) {
128 $scripts[ WOW_Plugin::SLUG . '-script-' . $id ] = $param['js_attributes'];
129 }
130
131
132 $count = ! empty( $param['include'] ) ? count( $param['include'] ) : 0;
133
134 if ( $count < 1 ) {
135 continue;
136 }
137
138 for ( $i = 0; $i < $count; $i ++ ) {
139 if ( $param['include'][ $i ] === 'js' && ! empty( $param['include_file'][ $i ] ) ) {
140 $attr = ! empty( $param['file_js_att'][ $i ] ) ? $param['file_js_att'][ $i ] : '';
141
142 $scripts[ WOW_Plugin::SLUG . '-' . $id . '-js-' . $i ] = $attr;
143 }
144 }
145 }
146
147 return $scripts;
148 }
149
150 }