PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 0.6.7
AI Engine – The Chatbot, AI Framework & MCP for WordPress v0.6.7
3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / common / helpers.php
ai-engine / common Last commit date
img 3 years ago admin.php 3 years ago helpers.php 3 years ago issues.php 3 years ago ratings.php 3 years ago releases.txt 3 years ago rest.php 3 years ago
helpers.php
239 lines
1 <?php
2
3 if ( !class_exists( 'MeowCommon_Helpers' ) ) {
4
5 class MeowCommon_Helpers {
6
7 //public static $version = MeowCommon_Admin::version;
8 private static $startTimes = array();
9 private static $startQueries = array();
10
11 static function is_divi_builder() {
12 return isset( $_GET['et_fb'] ) && $_GET['et_fb'] === '1';
13 }
14
15 static function is_cornerstone_builder() {
16 return isset( $_GET['cs-render'] ) && $_GET['cs-render'] === '1';
17 }
18
19 static function is_pagebuilder_request() {
20 return self::is_divi_builder() || self::is_cornerstone_builder();
21 }
22
23 static function is_asynchronous_request() {
24 return self::is_ajax_request() || self::is_woocommerce_ajax_request() || self::is_rest();
25 }
26
27 static function is_ajax_request() {
28 return wp_doing_ajax();
29 }
30
31 static function is_woocommerce_ajax_request() {
32 return !empty( $_GET['wc-ajax'] );
33 }
34
35 // This function makes sure that only the allowed HTML element names,
36 // attribute names, attribute values, and HTML entities will occur in the given text string.
37 static function wp_kses( $html ) {
38 return wp_kses( $html, array(
39 'div' => array(
40 'class' => array(),
41 'data-rating-date' => array(),
42 'style' => array(),
43 ),
44 'p' => array(
45 'style' => array(),
46 ),
47 'h2' => array(
48 'class' => array(),
49 ),
50 'br' => array(),
51 'label' => array(),
52 'b' => array(),
53 'small' => array(),
54 'a' => array(
55 'href' => array(),
56 'target' => array(),
57 'class' => array(),
58 'style' => array(),
59 ),
60 'form' => array(
61 'method' => array(),
62 'action' => array(),
63 'class' => array(),
64 'style' => array(),
65 ),
66 'input' => array(
67 'type' => array(),
68 'checked' => array(),
69 'name' => array(),
70 'value' => array(),
71 'id' => array(),
72 'class' => array(),
73 ),
74 ) );
75 }
76
77 // Originally created by matzeeable, modified by jordymeow
78 static function is_rest() {
79
80 // WP_REST_Request init.
81 $is_rest_request = defined('REST_REQUEST') && REST_REQUEST;
82 if ( $is_rest_request ) {
83 MeowCommon_Rest::init_once();
84 return true;
85 }
86
87 // Plain permalinks.
88 $prefix = rest_get_url_prefix();
89 $request_contains_rest = isset( $_GET['rest_route'] ) && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0;
90 if ( $request_contains_rest) {
91 MeowCommon_Rest::init_once();
92 return true;
93 }
94
95 // It can happen that WP_Rewrite is not yet initialized, so better to do it.
96 global $wp_rewrite;
97 if ( $wp_rewrite === null ) {
98 $wp_rewrite = new WP_Rewrite();
99 }
100 $rest_url = wp_parse_url( trailingslashit( rest_url() ) );
101 $current_url = wp_parse_url( add_query_arg( array() ) );
102 if ( !$rest_url || !$current_url )
103 return false;
104
105 // URL Path begins with wp-json.
106 if ( !empty( $current_url['path'] ) && !empty( $rest_url['path'] ) ) {
107 $request_contains_rest = strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
108 if ( $request_contains_rest) {
109 MeowCommon_Rest::init_once();
110 return true;
111 }
112 }
113
114 return false;
115 }
116
117 static function test_error( $error = 'timeout', $diceSides = 1 ) {
118 if ( rand( 1, $diceSides ) === 1 ) {
119 if ( $error === 'timeout' ) {
120 header("HTTP/1.0 408 Request Timeout");
121 die();
122 }
123 else {
124 trigger_error( "Error", E_USER_ERROR);
125 }
126 }
127 }
128
129 static function php_error_logs() {
130 $errorpath = ini_get( 'error_log' );
131 $output_lines = array();
132 if ( !empty( $errorpath ) && file_exists( $errorpath ) ) {
133 try {
134 $file = new SplFileObject( $errorpath, 'r' );
135 $file->seek( PHP_INT_MAX );
136 $last_line = $file->key();
137 $iterator = new LimitIterator( $file, $last_line > 3500 ? $last_line - 3500 : 0, $last_line );
138 $lines = iterator_to_array( $iterator );
139 $previous_line = null;
140 foreach ( $lines as $line ) {
141
142 // Parse the date
143 $date = '';
144 try {
145 $dateArr = [];
146 preg_match( '~^\[(.*?)\]~', $line, $dateArr );
147 if ( isset( $dateArr[0] ) ) {
148 $line = str_replace( $dateArr[0], '', $line );
149 $line = trim( $line );
150 $date = new DateTime( $dateArr[1] );
151 $date = get_date_from_gmt( $date->format('Y-m-d H:i:s'), 'Y-m-d H:i:s' );
152 }
153 else {
154 continue;
155 }
156 }
157 catch ( Exception $e ) {
158 continue;
159 }
160
161 // Parse the error
162 $type = '';
163 if ( preg_match( '/PHP Fatal error/', $line ) ) {
164 $line = trim( str_replace( 'PHP Fatal error:', '', $line ) );
165 $type = 'fatal';
166 }
167 else if ( preg_match( '/PHP Warning/', $line ) ) {
168 $line = trim( str_replace( 'PHP Warning:', '', $line ) );
169 $type = 'warning';
170 }
171 else if ( preg_match( '/PHP Notice/', $line ) ) {
172 $line = trim( str_replace( 'PHP Notice:', '', $line ) );
173 $type = 'notice';
174 }
175 else if ( preg_match( '/PHP Parse error/', $line ) ) {
176 $line = trim( str_replace( 'PHP Parse error:', '', $line ) );
177 $type = 'parse';
178 }
179 else if ( preg_match( '/PHP Exception/', $line ) ) {
180 $line = trim( str_replace( 'PHP Exception:', '', $line ) );
181 $type = 'exception';
182 }
183 else {
184 continue;
185 }
186
187 // Skip the error if is the same as before.
188 if ( $line !== $previous_line ) {
189 array_push( $output_lines, array( 'date' => $date, 'type' => $type, 'content' => $line ) );
190 $previous_line = $line;
191 }
192 }
193 }
194 catch ( OutOfBoundsException $e ) {
195 error_log( $e->getMessage() );
196 return array();
197 }
198 }
199 return $output_lines;
200
201 // else {
202 // $output_lines = array_reverse( $output_lines );
203 // $html = '';
204 // $previous = '';
205 // foreach ( $output_lines as $line ) {
206 // // Let's avoid similar errors, since it's not useful. We should also make this better
207 // // and not only theck this depending on tie.
208 // if ( preg_replace( '/\[.*\] PHP/', '', $previous ) !== preg_replace( '/\[.*\] PHP/', '', $line ) ) {
209 // $html .= $line;
210 // $previous = $line;
211 // }
212 // }
213 // return $html;
214 // }
215 }
216
217 static function timer_start( $timerName = 'default' ) {
218 MeowCommon_Helpers::$startQueries[ $timerName ] = get_num_queries();
219 MeowCommon_Helpers::$startTimes[ $timerName ] = microtime( true );
220 }
221
222 static function timer_elapsed( $timerName = 'default' ) {
223 return microtime( true ) - MeowCommon_Helpers::$startTimes[ $timerName ];
224 }
225
226 static function timer_log_elapsed( $timerName = 'default' ) {
227 $elapsed = MeowCommon_Helpers::timer_elapsed( $timerName );
228 $queries = get_num_queries() - MeowCommon_Helpers::$startQueries[ $timerName ];
229 error_log( $timerName . ": " . $elapsed . "ms (" . $queries . " queries)" );
230 }
231 }
232
233 // Asked by WP Security Team to remove this.
234
235 // if ( MeowCommon_Helpers::is_rest() ) {
236 // ini_set( 'display_errors', 0 );
237 // }
238 }
239