PluginProbe ʕ •ᴥ•ʔ
Permalink Manager Lite / 2.4.3.3
Permalink Manager Lite v2.4.3.3
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 2 years ago permalink-manager-admin-functions.php 2 years ago permalink-manager-core-functions.php 2 years ago permalink-manager-debug.php 2 years ago permalink-manager-gutenberg.php 2 years ago permalink-manager-helper-functions.php 2 years ago permalink-manager-uri-functions-post.php 2 years ago permalink-manager-uri-functions.php 2 years ago
permalink-manager-debug.php
185 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 global $wp_query;
72
73 if ( isset( $_REQUEST['debug_redirect'] ) ) {
74 $debug_info['query_vars'] = $wp_query->query_vars;
75 $debug_info['redirect_url'] = ( ! empty( $correct_permalink ) ) ? $correct_permalink : '-';
76 $debug_info['redirect_type'] = ( ! empty( $redirect_type ) ) ? $redirect_type : "-";
77 $debug_info['queried_object'] = ( ! empty( $queried_object ) ) ? $queried_object : "-";
78
79 self::display_debug_data( $debug_info );
80 }
81
82 return $correct_permalink;
83 }
84
85 /**
86 * Debug wp_redirect() function used in 3rd party plugins
87 *
88 * @param string $url
89 * @param string $status
90 *
91 * @return string
92 */
93 public function debug_wp_redirect( $url, $status ) {
94 if ( isset( $_GET['debug_wp_redirect'] ) ) {
95 $debug_info['url'] = $url;
96 $debug_info['status'] = $status;
97 $debug_info['backtrace'] = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 10 );
98
99 self::display_debug_data( $debug_info );
100 }
101
102 return $url;
103 }
104
105 /**
106 * Display the list of all custom fields assigned to specific post
107 */
108 public static function debug_custom_fields() {
109 global $pagenow;
110
111 if ( ! isset( $_GET['debug_custom_fields'] ) ) {
112 return;
113 }
114
115 if ( $pagenow == 'post.php' && isset( $_GET['post'] ) ) {
116 $post_id = intval( $_GET['post'] );
117 $custom_fields = get_post_meta( $post_id );
118 }
119
120 if ( $pagenow == 'term.php' && isset( $_GET['tag_ID'] ) ) {
121 $term_id = intval( $_GET['tag_ID'] );
122
123 $custom_fields = get_term_meta( $term_id );
124 }
125
126 if ( isset ( $custom_fields ) ) {
127 self::display_debug_data( $custom_fields );
128 }
129 }
130
131 /**
132 * A helper function used to display the debug data in various functions
133 *
134 * @param mixed $debug_info
135 */
136 public static function display_debug_data( $debug_info ) {
137 $debug_txt = print_r( $debug_info, true );
138 $debug_txt = sprintf( "<pre style=\"display:block;\">%s</pre>", esc_html( $debug_txt ) );
139
140 wp_die( $debug_txt );
141 }
142
143 /**
144 * Generate a CSV file from array
145 *
146 * @param array $array
147 * @param string $filename
148 */
149 public static function output_csv( $array, $filename = 'debug.csv', $separator = ',' ) {
150 if ( count( $array ) == 0 ) {
151 return null;
152 }
153
154 // Disable caching
155 $now = gmdate( "D, d M Y H:i:s" );
156 header( "Expires: Tue, 03 Jul 2001 06:00:00 GMT" );
157 header( "Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate" );
158 header( "Last-Modified: {$now} GMT" );
159
160 // Force download
161 header( "Content-Type: application/force-download" );
162 header( "Content-Type: application/octet-stream" );
163 header( "Content-Type: application/download" );
164 header( 'Content-Type: text/csv' );
165
166 // Disposition / encoding on response body
167 header( "Content-Disposition: attachment;filename={$filename}" );
168 header( "Content-Transfer-Encoding: binary" );
169
170 ob_start();
171
172 $df = fopen( "php://output", 'w' );
173
174 fputcsv( $df, array_keys( reset( $array ) ) );
175 foreach ( $array as $row ) {
176 fputcsv( $df, $row, $separator );
177 }
178 fclose( $df );
179
180 echo ob_get_clean();
181 die();
182 }
183
184 }
185