PluginProbe
Code Engine – PHP Snippets, AI Functions & Automation for WordPress / 0.3.6
Code Engine – PHP Snippets, AI Functions & Automation for WordPress v0.3.6
0.5.7 0.5.6 0.5.5 0.5.4 0.5.3 0.5.2 0.5.1 0.5.0 0.4.9 0.4.8 0.4.7 0.4.6 trunk 0.0.1 0.0.2 0.2.8 0.2.9 0.3.0 0.3.1 0.3.2 0.3.3 0.3.4 0.3.5 0.3.6 0.3.7 All 33 releases
← All changes | common/helpers.php +228 -228 0.3.20.3.6 View file →
@@ -1,258 +1,258 @@
1 1 <?php
2 2
3 3 if ( !class_exists( 'MeowCommon_Helpers' ) ) {
4 4
5 - class MeowCommon_Helpers {
6 -
7 - //public static $version = MeowCommon_Admin::version;
8 - private static $startTimes = array();
9 - private static $startQueries = array();
5 + class MeowCommon_Helpers {
6 + //public static $version = MeowCommon_Admin::version;
7 + private static $startTimes = [];
8 + private static $startQueries = [];
10 9
11 - static function is_divi_builder() {
12 - return isset( $_GET['et_fb'] ) && $_GET['et_fb'] === '1';
13 - }
10 + public static function is_divi_builder() {
11 + return isset( $_GET['et_fb'] ) && $_GET['et_fb'] === '1';
12 + }
14 13
15 - static function is_beaver_builder() {
16 - return isset( $_GET['fl_builder'] );
17 - }
14 + public static function is_beaver_builder() {
15 + return isset( $_GET['fl_builder'] );
16 + }
18 17
19 - static function is_cornerstone_builder() {
20 - return isset( $_GET['cs-render'] ) && $_GET['cs-render'] === '1';
21 - }
18 + public static function is_cornerstone_builder() {
19 + return isset( $_GET['cs-render'] ) && $_GET['cs-render'] === '1';
20 + }
22 21
23 - static function is_pagebuilder_request() {
24 - return self::is_divi_builder() || self::is_cornerstone_builder() || self::is_beaver_builder();
25 - }
22 + public static function is_pagebuilder_request() {
23 + return self::is_divi_builder() || self::is_cornerstone_builder() || self::is_beaver_builder();
24 + }
26 25
27 - static function is_asynchronous_request() {
28 - return self::is_ajax_request() || self::is_woocommerce_ajax_request() || self::is_rest();
29 - }
26 + public static function is_asynchronous_request() {
27 + return self::is_ajax_request() || self::is_woocommerce_ajax_request() || self::is_rest();
28 + }
30 29
31 - static function is_ajax_request() {
32 - return wp_doing_ajax();
33 - }
30 + public static function is_ajax_request() {
31 + return wp_doing_ajax();
32 + }
34 33
35 - static function is_woocommerce_ajax_request() {
36 - return !empty( $_GET['wc-ajax'] );
37 - }
34 + public static function is_woocommerce_ajax_request() {
35 + return !empty( $_GET['wc-ajax'] );
36 + }
38 37
39 - // This function makes sure that only the allowed HTML element names,
40 - // attribute names, attribute values, and HTML entities will occur in the given text string.
41 - static function wp_kses( $html ) {
42 - return wp_kses( $html, array(
43 - 'style' => array(),
44 - 'script' => array(),
45 - 'div' => array(
46 - 'class' => array(),
47 - 'data-rating-date' => array(),
48 - 'style' => array(),
49 - ),
50 - 'img' => array(
51 - 'src' => array(),
52 - 'decoding' => array(),
53 - 'class' => array(),
54 - 'style' => array(),
55 - ),
56 - 'p' => array(
57 - 'style' => array(),
58 - ),
59 - 'h2' => array(
60 - 'class' => array(),
61 - ),
62 - 'br' => array(),
63 - 'label' => array(),
64 - 'b' => array(),
65 - 'small' => array(),
66 - 'a' => array(
67 - 'href' => array(),
68 - 'target' => array(),
69 - 'class' => array(),
70 - 'style' => array(),
71 - ),
72 - 'form' => array(
73 - 'method' => array(),
74 - 'action' => array(),
75 - 'class' => array(),
76 - 'style' => array(),
77 - ),
78 - 'input' => array(
79 - 'type' => array(),
80 - 'checked' => array(),
81 - 'name' => array(),
82 - 'value' => array(),
83 - 'id' => array(),
84 - 'class' => array(),
85 - ),
86 - ) );
87 - }
38 + // This function makes sure that only the allowed HTML element names,
39 + // attribute names, attribute values, and HTML entities will occur in the given text string.
40 + public static function wp_kses( $html ) {
41 + return wp_kses( $html, [
42 + 'style' => [],
43 + 'script' => [],
44 + 'div' => [
45 + 'class' => [],
46 + 'data-rating-date' => [],
47 + 'style' => [],
48 + ],
49 + 'img' => [
50 + 'src' => [],
51 + 'decoding' => [],
52 + 'class' => [],
53 + 'style' => [],
54 + ],
55 + 'p' => [
56 + 'style' => [],
57 + ],
58 + 'h2' => [
59 + 'class' => [],
60 + ],
61 + 'br' => [],
62 + 'label' => [],
63 + 'b' => [],
64 + 'small' => [],
65 + 'a' => [
66 + 'href' => [],
67 + 'target' => [],
68 + 'class' => [],
69 + 'style' => [],
70 + ],
71 + 'form' => [
72 + 'method' => [],
73 + 'action' => [],
74 + 'class' => [],
75 + 'style' => [],
76 + ],
77 + 'input' => [
78 + 'type' => [],
79 + 'checked' => [],
80 + 'name' => [],
81 + 'value' => [],
82 + 'id' => [],
83 + 'class' => [],
84 + ],
85 + ] );
86 + }
88 87
89 - // Diff between two strings
90 - static function diff( $first, $second ) {
91 - $first = explode( ' ', $first );
92 - $second = explode( ' ', $second );
93 - $diff = array_diff( $first, $second );
94 - return implode( ' ', $diff );
95 - }
96 -
97 - // Originally created by matzeeable, modified by jordymeow
98 - static function is_rest() {
88 + // Diff between two strings
89 + public static function diff( $first, $second ) {
90 + $first = explode( ' ', $first );
91 + $second = explode( ' ', $second );
92 + $diff = array_diff( $first, $second );
93 + return implode( ' ', $diff );
94 + }
99 95
100 - // WP_REST_Request init.
101 - $is_rest_request = defined('REST_REQUEST') && REST_REQUEST;
102 - if ( $is_rest_request ) {
103 - MeowCommon_Rest::init_once();
104 - return true;
105 - }
96 + // Originally created by matzeeable, modified by jordymeow
97 + public static function is_rest() {
106 98
107 - // Plain permalinks.
108 - $prefix = rest_get_url_prefix();
109 - $request_contains_rest = isset( $_GET['rest_route'] ) && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0;
110 - if ( $request_contains_rest) {
111 - MeowCommon_Rest::init_once();
112 - return true;
113 - }
99 + // WP_REST_Request init.
100 + $is_rest_request = defined( 'REST_REQUEST' ) && REST_REQUEST;
101 + if ( $is_rest_request ) {
102 + MeowCommon_Rest::init_once();
103 + return true;
104 + }
114 105
115 - // It can happen that WP_Rewrite is not yet initialized, so better to do it.
116 - global $wp_rewrite;
117 - if ( $wp_rewrite === null ) {
118 - $wp_rewrite = new WP_Rewrite();
119 - }
120 - $rest_url = wp_parse_url( trailingslashit( get_rest_url() ) );
121 - $current_url = wp_parse_url( add_query_arg( array() ) );
122 - if ( !$rest_url || !$current_url )
123 - return false;
106 + // Plain permalinks.
107 + $prefix = rest_get_url_prefix();
108 + $request_contains_rest = isset( $_GET['rest_route'] ) && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix, 0 ) === 0;
109 + if ( $request_contains_rest ) {
110 + MeowCommon_Rest::init_once();
111 + return true;
112 + }
124 113
125 - // URL Path begins with wp-json.
126 - if ( !empty( $current_url['path'] ) && !empty( $rest_url['path'] ) ) {
127 - $request_contains_rest = strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
128 - if ( $request_contains_rest) {
129 - MeowCommon_Rest::init_once();
130 - return true;
131 - }
132 - }
114 + // It can happen that WP_Rewrite is not yet initialized, so better to do it.
115 + global $wp_rewrite;
116 + if ( $wp_rewrite === null ) {
117 + $wp_rewrite = new WP_Rewrite();
118 + }
119 + $rest_url = wp_parse_url( trailingslashit( get_rest_url() ) );
120 + $current_url = wp_parse_url( add_query_arg( [] ) );
121 + if ( !$rest_url || !$current_url ) {
122 + return false;
123 + }
133 124
134 - return false;
135 - }
125 + // URL Path begins with wp-json.
126 + if ( !empty( $current_url['path'] ) && !empty( $rest_url['path'] ) ) {
127 + $request_contains_rest = strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
128 + if ( $request_contains_rest ) {
129 + MeowCommon_Rest::init_once();
130 + return true;
131 + }
132 + }
136 133
137 - static function test_error( $error = 'timeout', $diceSides = 1 ) {
138 - if ( mt_rand( 1, $diceSides ) === 1 ) {
139 - if ( $error === 'timeout' ) {
140 - header("HTTP/1.0 408 Request Timeout");
141 - die();
142 - }
143 - else {
144 - trigger_error( "Error", E_USER_ERROR);
145 - }
146 - }
147 - }
134 + return false;
135 + }
148 136
149 - static function php_error_logs() {
150 - $errorpath = ini_get( 'error_log' );
151 - $output_lines = array();
152 - if ( !empty( $errorpath ) && file_exists( $errorpath ) ) {
153 - try {
154 - $file = new SplFileObject( $errorpath, 'r' );
155 - $file->seek( PHP_INT_MAX );
156 - $last_line = $file->key();
157 - $iterator = new LimitIterator( $file, $last_line > 3500 ? $last_line - 3500 : 0, $last_line );
158 - $lines = iterator_to_array( $iterator );
159 - $previous_line = null;
160 - foreach ( $lines as $line ) {
137 + public static function test_error( $error = 'timeout', $diceSides = 1 ) {
138 + if ( mt_rand( 1, $diceSides ) === 1 ) {
139 + if ( $error === 'timeout' ) {
140 + header( 'HTTP/1.0 408 Request Timeout' );
141 + die();
142 + }
143 + else {
144 + trigger_error( 'Error', E_USER_ERROR );
145 + }
146 + }
147 + }
161 148
162 - // Parse the date
163 - $date = '';
164 - try {
165 - $dateArr = [];
166 - preg_match( '~^\[(.*?)\]~', $line, $dateArr );
167 - if ( isset( $dateArr[0] ) ) {
168 - $line = str_replace( $dateArr[0], '', $line );
169 - $line = trim( $line );
170 - $date = new DateTime( $dateArr[1] );
171 - $date = get_date_from_gmt( $date->format('Y-m-d H:i:s'), 'Y-m-d H:i:s' );
172 - }
173 - else {
174 - continue;
175 - }
176 - }
177 - catch ( Exception $e ) {
178 - continue;
179 - }
149 + public static function php_error_logs() {
150 + $errorpath = ini_get( 'error_log' );
151 + $output_lines = [];
152 + if ( !empty( $errorpath ) && file_exists( $errorpath ) ) {
153 + try {
154 + $file = new SplFileObject( $errorpath, 'r' );
155 + $file->seek( PHP_INT_MAX );
156 + $last_line = $file->key();
157 + $iterator = new LimitIterator( $file, $last_line > 3500 ? $last_line - 3500 : 0, $last_line );
158 + $lines = iterator_to_array( $iterator );
159 + $previous_line = null;
160 + foreach ( $lines as $line ) {
180 161
181 - // Parse the error
182 - $type = '';
183 - if ( preg_match( '/PHP Fatal error/', $line ) ) {
184 - $line = trim( str_replace( 'PHP Fatal error:', '', $line ) );
185 - $type = 'fatal';
186 - }
187 - else if ( preg_match( '/PHP Warning/', $line ) ) {
188 - $line = trim( str_replace( 'PHP Warning:', '', $line ) );
189 - $type = 'warning';
190 - }
191 - else if ( preg_match( '/PHP Notice/', $line ) ) {
192 - $line = trim( str_replace( 'PHP Notice:', '', $line ) );
193 - $type = 'notice';
194 - }
195 - else if ( preg_match( '/PHP Parse error/', $line ) ) {
196 - $line = trim( str_replace( 'PHP Parse error:', '', $line ) );
197 - $type = 'parse';
198 - }
199 - else if ( preg_match( '/PHP Exception/', $line ) ) {
200 - $line = trim( str_replace( 'PHP Exception:', '', $line ) );
201 - $type = 'exception';
202 - }
203 - else {
204 - continue;
205 - }
162 + // Parse the date
163 + $date = '';
164 + try {
165 + $dateArr = [];
166 + preg_match( '~^\[(.*?)\]~', $line, $dateArr );
167 + if ( isset( $dateArr[0] ) ) {
168 + $line = str_replace( $dateArr[0], '', $line );
169 + $line = trim( $line );
170 + $date = new DateTime( $dateArr[1] );
171 + $date = get_date_from_gmt( $date->format( 'Y-m-d H:i:s' ), 'Y-m-d H:i:s' );
172 + }
173 + else {
174 + continue;
175 + }
176 + }
177 + catch ( Exception $e ) {
178 + continue;
179 + }
206 180
207 - // Skip the error if is the same as before.
208 - if ( $line !== $previous_line ) {
209 - array_push( $output_lines, array( 'date' => $date, 'type' => $type, 'content' => $line ) );
210 - $previous_line = $line;
211 - }
212 - }
213 - }
214 - catch ( OutOfBoundsException $e ) {
215 - error_log( $e->getMessage() );
216 - return array();
217 - }
218 - }
219 - return $output_lines;
181 + // Parse the error
182 + $type = '';
183 + if ( preg_match( '/PHP Fatal error/', $line ) ) {
184 + $line = trim( str_replace( 'PHP Fatal error:', '', $line ) );
185 + $type = 'fatal';
186 + }
187 + else if ( preg_match( '/PHP Warning/', $line ) ) {
188 + $line = trim( str_replace( 'PHP Warning:', '', $line ) );
189 + $type = 'warning';
190 + }
191 + else if ( preg_match( '/PHP Notice/', $line ) ) {
192 + $line = trim( str_replace( 'PHP Notice:', '', $line ) );
193 + $type = 'notice';
194 + }
195 + else if ( preg_match( '/PHP Parse error/', $line ) ) {
196 + $line = trim( str_replace( 'PHP Parse error:', '', $line ) );
197 + $type = 'parse';
198 + }
199 + else if ( preg_match( '/PHP Exception/', $line ) ) {
200 + $line = trim( str_replace( 'PHP Exception:', '', $line ) );
201 + $type = 'exception';
202 + }
203 + else {
204 + continue;
205 + }
220 206
221 - // else {
222 - // $output_lines = array_reverse( $output_lines );
223 - // $html = '';
224 - // $previous = '';
225 - // foreach ( $output_lines as $line ) {
226 - // // Let's avoid similar errors, since it's not useful. We should also make this better
227 - // // and not only theck this depending on tie.
228 - // if ( preg_replace( '/\[.*\] PHP/', '', $previous ) !== preg_replace( '/\[.*\] PHP/', '', $line ) ) {
229 - // $html .= $line;
230 - // $previous = $line;
231 - // }
232 - // }
233 - // return $html;
234 - // }
235 - }
207 + // Skip the error if is the same as before.
208 + if ( $line !== $previous_line ) {
209 + array_push( $output_lines, [ 'date' => $date, 'type' => $type, 'content' => $line ] );
210 + $previous_line = $line;
211 + }
212 + }
213 + }
214 + catch ( OutOfBoundsException $e ) {
215 + error_log( $e->getMessage() );
216 + return [];
217 + }
218 + }
219 + return $output_lines;
236 220
237 - static function timer_start( $timerName = 'default' ) {
238 - MeowCommon_Helpers::$startQueries[ $timerName ] = get_num_queries();
239 - MeowCommon_Helpers::$startTimes[ $timerName ] = microtime( true );
240 - }
221 + // else {
222 + // $output_lines = array_reverse( $output_lines );
223 + // $html = '';
224 + // $previous = '';
225 + // foreach ( $output_lines as $line ) {
226 + // // Let's avoid similar errors, since it's not useful. We should also make this better
227 + // // and not only theck this depending on tie.
228 + // if ( preg_replace( '/\[.*\] PHP/', '', $previous ) !== preg_replace( '/\[.*\] PHP/', '', $line ) ) {
229 + // $html .= $line;
230 + // $previous = $line;
231 + // }
232 + // }
233 + // return $html;
234 + // }
235 + }
241 236
242 - static function timer_elapsed( $timerName = 'default' ) {
243 - return microtime( true ) - MeowCommon_Helpers::$startTimes[ $timerName ];
244 - }
237 + public static function timer_start( $timerName = 'default' ) {
238 + MeowCommon_Helpers::$startQueries[ $timerName ] = get_num_queries();
239 + MeowCommon_Helpers::$startTimes[ $timerName ] = microtime( true );
240 + }
245 241
246 - static function timer_log_elapsed( $timerName = 'default' ) {
247 - $elapsed = MeowCommon_Helpers::timer_elapsed( $timerName );
248 - $queries = get_num_queries() - MeowCommon_Helpers::$startQueries[ $timerName ];
249 - error_log( $timerName . ": " . $elapsed . "ms (" . $queries . " queries)" );
250 - }
251 - }
242 + public static function timer_elapsed( $timerName = 'default' ) {
243 + return microtime( true ) - MeowCommon_Helpers::$startTimes[ $timerName ];
244 + }
252 245
253 - // Asked by WP Security Team to remove this.
246 + public static function timer_log_elapsed( $timerName = 'default' ) {
247 + $elapsed = MeowCommon_Helpers::timer_elapsed( $timerName );
248 + $queries = get_num_queries() - MeowCommon_Helpers::$startQueries[ $timerName ];
249 + error_log( $timerName . ': ' . $elapsed . 'ms (' . $queries . ' queries)' );
250 + }
251 + }
254 252
255 - // if ( MeowCommon_Helpers::is_rest() ) {
256 - // ini_set( 'display_errors', 0 );
257 - // }
253 + // Asked by WP Security Team to remove this.
254 +
255 + // if ( MeowCommon_Helpers::is_rest() ) {
256 + // ini_set( 'display_errors', 0 );
257 + // }
258 258 }