PluginProbe
Meow Gallery / 4.2.6
Meow Gallery v4.2.6
5.5.4 5.5.3 5.5.2 5.5.1 5.5.0 5.4.9 5.4.8 5.4.7 4.1.5 4.1.6 4.1.7 4.1.8 4.1.9 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 All 156 releases
meow-gallery / common / helpers.php

helpers.php in Meow Gallery 4.2.6, at common/helpers.php

197 lines 5.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 // Originally created by matzeeable, modified by jordymeow
36 static function is_rest() {
37
38 // WP_REST_Request init.
39 $is_rest_request = defined('REST_REQUEST') && REST_REQUEST;
40 if ( $is_rest_request ) {
41 MeowCommon_Rest::init_once();
42 return true;
43 }
44
45 // Plain permalinks.
46 $prefix = rest_get_url_prefix();
47 $request_contains_rest = isset( $_GET['rest_route'] ) && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0;
48 if ( $request_contains_rest) {
49 MeowCommon_Rest::init_once();
50 return true;
51 }
52
53 // It can happen that WP_Rewrite is not yet initialized, so better to do it.
54 global $wp_rewrite;
55 if ( $wp_rewrite === null ) {
56 $wp_rewrite = new WP_Rewrite();
57 }
58 $rest_url = wp_parse_url( trailingslashit( rest_url() ) );
59 $current_url = wp_parse_url( add_query_arg( array() ) );
60 if ( !$rest_url || !$current_url )
61 return false;
62
63 // URL Path begins with wp-json.
64 if ( !empty( $current_url['path'] ) && !empty( $rest_url['path'] ) ) {
65 $request_contains_rest = strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
66 if ( $request_contains_rest) {
67 MeowCommon_Rest::init_once();
68 return true;
69 }
70 }
71
72 return false;
73 }
74
75 static function test_error( $error = 'timeout', $diceSides = 1 ) {
76 if ( rand( 1, $diceSides ) === 1 ) {
77 if ( $error === 'timeout' ) {
78 header("HTTP/1.0 408 Request Timeout");
79 die();
80 }
81 else {
82 trigger_error( "Error", E_USER_ERROR);
83 }
84 }
85 }
86
87 static function php_error_logs() {
88 $errorpath = ini_get( 'error_log' );
89 $output_lines = array();
90 if ( !empty( $errorpath ) && file_exists( $errorpath ) ) {
91 try {
92 $file = new SplFileObject( $errorpath, 'r' );
93 $file->seek( PHP_INT_MAX );
94 $last_line = $file->key();
95 $iterator = new LimitIterator( $file, $last_line > 3500 ? $last_line - 3500 : 0, $last_line );
96 $lines = iterator_to_array( $iterator );
97 $previous_line = null;
98 foreach ( $lines as $line ) {
99
100 // Parse the date
101 $date = '';
102 try {
103 $dateArr = [];
104 preg_match( '~^\[(.*?)\]~', $line, $dateArr );
105 if ( isset( $dateArr[0] ) ) {
106 $line = str_replace( $dateArr[0], '', $line );
107 $line = trim( $line );
108 $date = new DateTime( $dateArr[1] );
109 $date = get_date_from_gmt( $date->format('Y-m-d H:i:s'), 'Y-m-d H:i:s' );
110 }
111 else {
112 continue;
113 }
114 }
115 catch ( Exception $e ) {
116 continue;
117 }
118
119 // Parse the error
120 $type = '';
121 if ( preg_match( '/PHP Fatal error/', $line ) ) {
122 $line = trim( str_replace( 'PHP Fatal error:', '', $line ) );
123 $type = 'fatal';
124 }
125 else if ( preg_match( '/PHP Warning/', $line ) ) {
126 $line = trim( str_replace( 'PHP Warning:', '', $line ) );
127 $type = 'warning';
128 }
129 else if ( preg_match( '/PHP Notice/', $line ) ) {
130 $line = trim( str_replace( 'PHP Notice:', '', $line ) );
131 $type = 'notice';
132 }
133 else if ( preg_match( '/PHP Parse error/', $line ) ) {
134 $line = trim( str_replace( 'PHP Parse error:', '', $line ) );
135 $type = 'parse';
136 }
137 else if ( preg_match( '/PHP Exception/', $line ) ) {
138 $line = trim( str_replace( 'PHP Exception:', '', $line ) );
139 $type = 'exception';
140 }
141 else {
142 continue;
143 }
144
145 // Skip the error if is the same as before.
146 if ( $line !== $previous_line ) {
147 array_push( $output_lines, array( 'date' => $date, 'type' => $type, 'content' => $line ) );
148 $previous_line = $line;
149 }
150 }
151 }
152 catch ( OutOfBoundsException $e ) {
153 error_log( $e->getMessage() );
154 return array();
155 }
156 }
157 return $output_lines;
158
159 // else {
160 // $output_lines = array_reverse( $output_lines );
161 // $html = '';
162 // $previous = '';
163 // foreach ( $output_lines as $line ) {
164 // // Let's avoid similar errors, since it's not useful. We should also make this better
165 // // and not only theck this depending on tie.
166 // if ( preg_replace( '/\[.*\] PHP/', '', $previous ) !== preg_replace( '/\[.*\] PHP/', '', $line ) ) {
167 // $html .= $line;
168 // $previous = $line;
169 // }
170 // }
171 // return $html;
172 // }
173 }
174
175 static function timer_start( $timerName = 'default' ) {
176 MeowCommon_Helpers::$startQueries[ $timerName ] = get_num_queries();
177 MeowCommon_Helpers::$startTimes[ $timerName ] = microtime( true );
178 }
179
180 static function timer_elapsed( $timerName = 'default' ) {
181 return microtime( true ) - MeowCommon_Helpers::$startTimes[ $timerName ];
182 }
183
184 static function timer_log_elapsed( $timerName = 'default' ) {
185 $elapsed = MeowCommon_Helpers::timer_elapsed( $timerName );
186 $queries = get_num_queries() - MeowCommon_Helpers::$startQueries[ $timerName ];
187 error_log( $timerName . ": " . $elapsed . "ms (" . $queries . " queries)" );
188 }
189 }
190
191 // Asked by WP Security Team to remove this.
192
193 // if ( MeowCommon_Helpers::is_rest() ) {
194 // ini_set( 'display_errors', 0 );
195 // }
196 }
197