PluginProbe ʕ •ᴥ•ʔ
Permalink Manager Lite / 2.5.0
Permalink Manager Lite v2.5.0
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 1 year ago permalink-manager-admin-functions.php 1 year ago permalink-manager-core-functions.php 1 year ago permalink-manager-debug.php 1 year ago permalink-manager-gutenberg.php 1 year ago permalink-manager-helper-functions.php 1 year ago permalink-manager-permastructures-functions.php 1 year ago permalink-manager-uri-functions-post.php 1 year ago permalink-manager-uri-functions.php 1 year ago
permalink-manager-debug.php
182 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 self::debug_custom_fields();
21 }
22
23 /**
24 * Debug the WordPress query filtered in the Permalink_Manager_Core_Functions::detect_post(); function
25 *
26 * @param array $query
27 * @param array $old_query
28 * @param array $uri_parts
29 * @param array $pm_query
30 * @param string $content_type
31 *
32 * @return array
33 */
34 public function debug_query( $query, $old_query = null, $uri_parts = null, $pm_query = null, $content_type = null ) {
35 global $permalink_manager;
36
37 if ( isset( $_REQUEST['debug_url'] ) ) {
38 $debug_info['uri_parts'] = $uri_parts;
39 $debug_info['old_query_vars'] = $old_query;
40 $debug_info['new_query_vars'] = $query;
41 $debug_info['pm_query'] = ( ! empty( $pm_query['id'] ) ) ? $pm_query['id'] : "-";
42 $debug_info['content_type'] = ( ! empty( $content_type ) ) ? $content_type : "-";
43
44 // License key info
45 if ( class_exists( 'Permalink_Manager_Pro_Functions' ) ) {
46 $license_key = $permalink_manager->functions['pro-functions']->get_license_key();
47
48 // Mask the license key
49 $debug_info['license_key'] = preg_replace( '/([^-]+)-([^-]+)-([^-]+)-([^-]+)$/', '***-***-$3', $license_key );
50 }
51
52 // Plugin version
53 $debug_info['version'] = PERMALINK_MANAGER_VERSION;
54
55 self::display_debug_data( $debug_info );
56 }
57
58 return $query;
59 }
60
61 /**
62 * Debug the redirect controlled by Permalink_Manager_Core_Functions::new_uri_redirect_and_404();
63 *
64 * @param string $correct_permalink
65 * @param string $redirect_type
66 * @param mixed $queried_object
67 *
68 * @return string
69 */
70 public function debug_redirect( $correct_permalink, $redirect_type, $queried_object ) {
71 if ( isset( $_REQUEST['debug_redirect'] ) ) {
72 $debug_info['redirect_url'] = ( ! empty( $correct_permalink ) ) ? $correct_permalink : '-';
73 $debug_info['redirect_type'] = ( ! empty( $redirect_type ) ) ? $redirect_type : "-";
74
75 self::display_debug_data( $debug_info );
76 }
77
78 return $correct_permalink;
79 }
80
81 /**
82 * Debug wp_redirect() function used in 3rd party plugins
83 *
84 * @param string $url
85 * @param string $status
86 *
87 * @return string
88 */
89 public function debug_wp_redirect( $url, $status ) {
90 if ( isset( $_GET['debug_wp_redirect'] ) ) {
91 $debug_info['url'] = $url;
92 $debug_info['status'] = $status;
93 $debug_info['backtrace'] = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 10 );
94
95 self::display_debug_data( $debug_info );
96 }
97
98 return $url;
99 }
100
101 /**
102 * Display the list of all custom fields assigned to specific post
103 */
104 public static function debug_custom_fields() {
105 global $pagenow;
106
107 if ( ! isset( $_GET['debug_custom_fields'] ) ) {
108 return;
109 }
110
111 if ( $pagenow == 'post.php' && isset( $_GET['post'] ) ) {
112 $post_id = intval( $_GET['post'] );
113 $custom_fields = get_post_meta( $post_id );
114 }
115
116 if ( $pagenow == 'term.php' && isset( $_GET['tag_ID'] ) ) {
117 $term_id = intval( $_GET['tag_ID'] );
118
119 $custom_fields = get_term_meta( $term_id );
120 }
121
122 if ( isset ( $custom_fields ) ) {
123 self::display_debug_data( $custom_fields );
124 }
125 }
126
127 /**
128 * A helper function used to display the debug data in various functions
129 *
130 * @param mixed $debug_info
131 */
132 public static function display_debug_data( $debug_info ) {
133 $debug_txt = print_r( $debug_info, true );
134 $debug_txt = sprintf( "<pre style=\"display:block;\">%s</pre>", esc_html( $debug_txt ) );
135
136 wp_die( wp_kses_post( $debug_txt ) );
137 }
138
139 /**
140 * Generate a CSV file from array
141 *
142 * @param array $array
143 * @param string $filename
144 */
145 public static function output_csv( $array, $filename = 'debug.csv', $separator = ',' ) {
146 if ( count( $array ) == 0 ) {
147 return null;
148 }
149
150 // Disable caching
151 $now = gmdate( "D, d M Y H:i:s" );
152 header( "Expires: Tue, 03 Jul 2001 06:00:00 GMT" );
153 header( "Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate" );
154 header( "Last-Modified: {$now} GMT" );
155
156 // Force download
157 header( "Content-Type: application/force-download" );
158 header( "Content-Type: application/octet-stream" );
159 header( "Content-Type: application/download" );
160 header( 'Content-Type: text/csv' );
161
162 // Disposition / encoding on response body
163 header( "Content-Disposition: attachment;filename={$filename}" );
164 header( "Content-Transfer-Encoding: binary" );
165
166 ob_start();
167
168 $df = fopen( "php://output", 'w' );
169
170 fputcsv( $df, array_keys( reset( $array ) ) );
171 foreach ( $array as $row ) {
172 fputcsv( $df, $row, $separator );
173 }
174 fclose( $df );
175
176 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
177 echo ob_get_clean();
178 die();
179 }
180
181 }
182