PluginProbe ʕ •ᴥ•ʔ
Permalink Manager Lite / 2.5.2
Permalink Manager Lite v2.5.2
2.5.4 2.5.3.4 2.2.18 2.2.19.2 2.2.19.3 2.2.19.3.1 2.2.2 2.2.20 2.2.20.1 2.2.20.3 2.2.4 2.2.5 2.2.6 2.2.7.2 2.2.7.3 2.2.7.5 2.2.7.6 2.2.8.4 2.2.8.5 2.2.8.6 2.2.8.7 2.2.8.9 2.2.9.1 2.2.9.2 2.2.9.2.1 2.2.9.3 2.2.9.4 2.2.9.6 2.2.9.7 2.2.9.9 2.3.0 2.3.1.1 2.4.0 2.4.1 2.4.1.2 2.4.1.3 2.4.1.4 2.4.1.5 2.4.1.6 2.4.2 2.4.2.1 2.4.3 2.4.3.1 2.4.3.2 2.4.3.3 2.4.3.4 2.4.4 2.4.4.1 2.4.4.2 2.4.4.3 2.5.0 2.5.1 2.5.1.1 2.5.1.2 2.5.1.3 2.5.1.4 2.5.2 2.5.2.1 2.5.2.2 2.5.2.3 2.5.2.4 2.5.3 2.5.3.1 2.5.3.2 2.5.3.3 trunk 0.2 0.3 0.3.1 0.3.2 0.3.3 0.3.4 0.4 0.4.1 0.4.2 0.4.3 0.4.4 0.4.6 0.4.7 0.4.8 0.4.9 0.5.3 0.5.4 1.0.0 1.0.1 1.0.4 1.1.0 1.1.1 1.1.2 1.11.6.3 2.0.0 2.0.3 2.0.4 2.0.4.3 2.0.5.1 2.0.5.2 2.0.5.3 2.0.5.3.1 2.0.5.4 2.0.5.4a 2.0.5.5 2.0.5.6 2.0.5.6.1 2.0.5.7 2.0.5.9a 2.0.6.2.1 2.0.6.2a 2.0.6.3 2.1.0 2.1.1 2.1.2.4 2.2.0 2.2.1.1 2.2.1.2 2.2.11 2.2.12 2.2.13.1 2.2.14 2.2.15.1 2.2.16 2.2.17
permalink-manager / includes / core / permalink-manager-debug.php
permalink-manager / includes / core Last commit date
permalink-manager-actions.php 8 months ago permalink-manager-admin-functions.php 8 months ago permalink-manager-core-functions.php 8 months ago permalink-manager-debug.php 8 months ago permalink-manager-gutenberg.php 8 months ago permalink-manager-helper-functions.php 8 months ago permalink-manager-permastructures-functions.php 8 months ago permalink-manager-uri-functions-post.php 8 months ago permalink-manager-uri-functions.php 8 months ago
permalink-manager-debug.php
184 lines
1 <?php
2
3 /**
4 * Additional debug functions for "Permalink Manager Pro"
5 */
6 class Permalink_Manager_Debug_Functions {
7
8 public function __construct() {
9 add_action( 'init', array( $this, 'debug_data' ), 99 );
10 }
11
12 /**
13 * Map the debug functions to specific hooks
14 */
15 public function debug_data() {
16 add_filter( 'permalink_manager_filter_query', array( $this, 'debug_query' ), 9, 5 );
17 add_filter( 'permalink_manager_filter_redirect', array( $this, 'debug_redirect' ), 9, 3 );
18 add_filter( 'wp_redirect', array( $this, 'debug_wp_redirect' ), 9, 2 );
19
20 if ( current_user_can( 'manage_options' ) ) {
21 self::debug_custom_fields();
22 }
23 }
24
25 /**
26 * Debug the WordPress query filtered in the Permalink_Manager_Core_Functions::detect_post(); function
27 *
28 * @param array $query
29 * @param array $old_query
30 * @param array $uri_parts
31 * @param array $pm_query
32 * @param string $content_type
33 *
34 * @return array
35 */
36 public function debug_query( $query, $old_query = null, $uri_parts = null, $pm_query = null, $content_type = null ) {
37 global $permalink_manager;
38
39 if ( isset( $_REQUEST['debug_url'] ) ) {
40 $debug_info['uri_parts'] = $uri_parts;
41 $debug_info['old_query_vars'] = $old_query;
42 $debug_info['new_query_vars'] = $query;
43 $debug_info['pm_query'] = ( ! empty( $pm_query['id'] ) ) ? $pm_query['id'] : "-";
44 $debug_info['content_type'] = ( ! empty( $content_type ) ) ? $content_type : "-";
45
46 // License key info
47 if ( class_exists( 'Permalink_Manager_Pro_License' ) ) {
48 $license_key = $permalink_manager->functions['pro-license']->get_license_key();
49
50 // Mask the license key
51 $debug_info['license_key'] = preg_replace( '/([^-]+)-([^-]+)-([^-]+)-([^-]+)$/', '***-***-$3', $license_key );
52 }
53
54 // Plugin version
55 $debug_info['version'] = PERMALINK_MANAGER_VERSION;
56
57 self::display_debug_data( $debug_info );
58 }
59
60 return $query;
61 }
62
63 /**
64 * Debug the redirect controlled by Permalink_Manager_Core_Functions::new_uri_redirect_and_404();
65 *
66 * @param string $correct_permalink
67 * @param string $redirect_type
68 * @param mixed $queried_object
69 *
70 * @return string
71 */
72 public function debug_redirect( $correct_permalink, $redirect_type, $queried_object ) {
73 if ( isset( $_REQUEST['debug_redirect'] ) ) {
74 $debug_info['redirect_url'] = ( ! empty( $correct_permalink ) ) ? $correct_permalink : '-';
75 $debug_info['redirect_type'] = ( ! empty( $redirect_type ) ) ? $redirect_type : "-";
76
77 self::display_debug_data( $debug_info );
78 }
79
80 return $correct_permalink;
81 }
82
83 /**
84 * Debug wp_redirect() function used in 3rd party plugins
85 *
86 * @param string $url
87 * @param string $status
88 *
89 * @return string
90 */
91 public function debug_wp_redirect( $url, $status ) {
92 if ( isset( $_GET['debug_wp_redirect'] ) ) {
93 $debug_info['url'] = $url;
94 $debug_info['status'] = $status;
95 $debug_info['backtrace'] = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 10 );
96
97 self::display_debug_data( $debug_info );
98 }
99
100 return $url;
101 }
102
103 /**
104 * Display the list of all custom fields assigned to specific post
105 */
106 public static function debug_custom_fields() {
107 global $pagenow;
108
109 if ( ! isset( $_GET['debug_custom_fields'] ) ) {
110 return;
111 }
112
113 if ( $pagenow == 'post.php' && isset( $_GET['post'] ) ) {
114 $post_id = intval( $_GET['post'] );
115 $custom_fields = get_post_meta( $post_id );
116 }
117
118 if ( $pagenow == 'term.php' && isset( $_GET['tag_ID'] ) ) {
119 $term_id = intval( $_GET['tag_ID'] );
120
121 $custom_fields = get_term_meta( $term_id );
122 }
123
124 if ( isset ( $custom_fields ) ) {
125 self::display_debug_data( $custom_fields );
126 }
127 }
128
129 /**
130 * A helper function used to display the debug data in various functions
131 *
132 * @param mixed $debug_info
133 */
134 public static function display_debug_data( $debug_info ) {
135 $debug_txt = print_r( $debug_info, true );
136 $debug_txt = sprintf( "<pre style=\"display:block;\">%s</pre>", esc_html( $debug_txt ) );
137
138 wp_die( wp_kses_post( $debug_txt ) );
139 }
140
141 /**
142 * Generate a CSV file from array
143 *
144 * @param array $array
145 * @param string $filename
146 */
147 public static function output_csv( $array, $filename = 'debug.csv', $separator = ',' ) {
148 if ( count( $array ) == 0 ) {
149 return null;
150 }
151
152 // Disable caching
153 $now = gmdate( "D, d M Y H:i:s" );
154 header( "Expires: Tue, 03 Jul 2001 06:00:00 GMT" );
155 header( "Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate" );
156 header( "Last-Modified: {$now} GMT" );
157
158 // Force download
159 header( "Content-Type: application/force-download" );
160 header( "Content-Type: application/octet-stream" );
161 header( "Content-Type: application/download" );
162 header( 'Content-Type: text/csv' );
163
164 // Disposition / encoding on response body
165 header( "Content-Disposition: attachment;filename={$filename}" );
166 header( "Content-Transfer-Encoding: binary" );
167
168 ob_start();
169
170 $df = fopen( "php://output", 'w' );
171
172 fputcsv( $df, array_keys( reset( $array ) ) );
173 foreach ( $array as $row ) {
174 fputcsv( $df, $row, $separator );
175 }
176 fclose( $df );
177
178 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
179 echo ob_get_clean();
180 die();
181 }
182
183 }
184