PluginProbe
Search Atlas SEO – OTTO AI SEO Automation for WordPress / 2.7.1
Search Atlas SEO – OTTO AI SEO Automation for WordPress v2.7.1
2.7.1 2.7.2 2.7.0 2.6.26 2.6.25 2.6.24 2.6.23 2.6.22 2.6.21 2.6.20 2.6.19 2.6.18 2.6.17 2.6.16 2.6.15 2.6.14 2.6.13 2.6.12 2.6.11 2.6.10 2.6.9 2.6.8 2.6.7 2.6.6 2.6.5 All 141 releases
← All changes | includes/class-metasync-debug-manager.php +34 -22 2.6.25 → 2.7.1 View file →
@@ -72,9 +72,12 @@
72 72 *
73 73 * @param Metasync_Admin $admin The admin instance (needed for header/nav rendering).
74 74 */
75 75 public function metasync_display_error_log($admin) {
76 - $log_file = WP_CONTENT_DIR . '/metasync_data/plugin_errors.log';
76 + $log_file = Metasync_Data_Store::file_path('plugin_errors.log');
77 + if (false === $log_file) {
78 + $log_file = '';
79 + }
77 80 if (!Metasync::current_user_has_plugin_access()) {
78 81 return;
79 82 }
80 83
@@ -234,9 +237,9 @@
234 237 * Update wp-config.php debug constants.
235 238 */
236 239 public function metasync_update_wp_config() {
237 240 $wp_config_path = ABSPATH . 'wp-config.php';
238 - if (file_exists($wp_config_path) && is_writable($wp_config_path)) {
241 + if (file_exists($wp_config_path) && wp_is_writable($wp_config_path)) {
239 242 $config_file = file_get_contents($wp_config_path);
240 243
241 244 $wp_debug_enabled = get_option('wp_debug_enabled', 'false') === 'true' ? 'true' : 'false';
242 245 if (preg_match("/define\s*\(\s*['\"]WP_DEBUG['\"]\s*,\s*.*?\s*\)\s*;/", $config_file)) {
@@ -258,8 +261,14 @@
258 261 } else {
259 262 $config_file = str_replace("/* That's all, stop editing! Happy publishing. */", "define('WP_DEBUG_DISPLAY', $wp_debug_display_enabled);\n\n/* That's all, stop editing! Happy publishing. */", $config_file);
260 263 }
261 264
265 + // ABSPATH is intentional and verified: the Debug Mode feature
266 + // toggles WP_DEBUG constants in wp-config.php itself, the one
267 + // file whose location ABSPATH exists to describe. It is not a
268 + // plugin-directory or generated-content write, so it stays here
269 + // (Plugin Check's ABSPATHDetected warning is a false positive —
270 + // wp-config.php cannot live in the uploads directory).
262 271 file_put_contents($wp_config_path, $config_file);
263 272 } else {
264 273 wp_die('The wp-config.php file is not writable. Please check the file permissions.');
265 274 }
@@ -751,9 +760,9 @@
751 760 {
752 761 if (isset($_POST['metasync_debug_mode_action_advanced'])) {
753 762 if (!wp_verify_nonce($_POST['metasync_debug_mode_nonce_advanced'], 'metasync_debug_mode_action_advanced')) {
754 763 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&debug_error=1');
755 - wp_redirect($redirect_url);
764 + wp_safe_redirect($redirect_url);
756 765 exit;
757 766 }
758 767
759 768 if (!current_user_can('manage_options')) {
@@ -761,9 +770,9 @@
761 770 }
762 771
763 772 if (!class_exists('Metasync_Debug_Mode_Manager')) {
764 773 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&debug_error=1&msg=manager_not_available');
765 - wp_redirect($redirect_url);
774 + wp_safe_redirect($redirect_url);
766 775 exit;
767 776 }
768 777
769 778 $debug_manager = Metasync_Debug_Mode_Manager::get_instance();
@@ -800,9 +809,9 @@
800 809 $redirect_url = add_query_arg('debug_error', '1', $redirect_url);
801 810 break;
802 811 }
803 812
804 - wp_redirect($redirect_url);
813 + wp_safe_redirect($redirect_url);
805 814 exit;
806 815 }
807 816 }
808 817
@@ -816,27 +825,30 @@
816 825 }
817 826
818 827 if (isset($_POST['clear_log'])) {
819 828 if (wp_verify_nonce($_POST['clear_log_nonce'], 'metasync_clear_log_nonce')) {
820 - $log_file = WP_CONTENT_DIR . '/metasync_data/plugin_errors.log';
829 + $data_dir = Metasync_Data_Store::base_dir();
830 + $log_file = Metasync_Data_Store::file_path('plugin_errors.log');
821 831
822 - if (file_exists($log_file)) {
832 + if (false !== $log_file && file_exists($log_file)) {
823 833 file_put_contents($log_file, '');
824 834
825 - $backup_files = glob(WP_CONTENT_DIR . '/metasync_data/plugin_errors.log.old.*');
826 - if ($backup_files) {
827 - foreach ($backup_files as $backup_file) {
828 - @unlink($backup_file);
835 + if (false !== $data_dir) {
836 + $backup_files = glob($data_dir . '/plugin_errors.log.old.*');
837 + if ($backup_files) {
838 + foreach ($backup_files as $backup_file) {
839 + @wp_delete_file($backup_file);
840 + }
829 841 }
830 842 }
831 843 }
832 844
833 845 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&log_cleared=1');
834 - wp_redirect($redirect_url);
846 + wp_safe_redirect($redirect_url);
835 847 exit;
836 848 } else {
837 849 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&clear_error=1');
838 - wp_redirect($redirect_url);
850 + wp_safe_redirect($redirect_url);
839 851 exit;
840 852 }
841 853 }
842 854
@@ -844,18 +856,18 @@
844 856 if (wp_verify_nonce($_POST['clear_error_summary_nonce'], 'metasync_clear_error_summary_nonce')) {
845 857 if (class_exists('Metasync_Error_Logger')) {
846 858 Metasync_Error_Logger::clear_error_summary();
847 859 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&error_summary_cleared=1');
848 - wp_redirect($redirect_url);
860 + wp_safe_redirect($redirect_url);
849 861 exit;
850 862 } else {
851 863 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&error_summary_error=1');
852 - wp_redirect($redirect_url);
864 + wp_safe_redirect($redirect_url);
853 865 exit;
854 866 }
855 867 } else {
856 868 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&error_summary_error=1');
857 - wp_redirect($redirect_url);
869 + wp_safe_redirect($redirect_url);
858 870 exit;
859 871 }
860 872 }
861 873 }
@@ -935,13 +947,13 @@
935 947 'triggered_by' => 'settings_reset_action'
936 948 ), 'info');
937 949
938 950 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&settings_cleared=1');
939 - wp_redirect($redirect_url);
951 + wp_safe_redirect($redirect_url);
940 952 exit;
941 953 } else {
942 954 $redirect_url = admin_url('admin.php?page=' . $this->get_page_slug() . '&tab=advanced&clear_settings_error=1');
943 - wp_redirect($redirect_url);
955 + wp_safe_redirect($redirect_url);
944 956 exit;
945 957 }
946 958 }
947 959 }
@@ -956,9 +968,9 @@
956 968 public function get_error_log_content()
957 969 {
958 970 $execution_time = $this->get_execution_setting('max_execution_time');
959 971 if (function_exists('set_time_limit')) {
960 - @set_time_limit($execution_time);
972 + @set_time_limit($execution_time); // phpcs:ignore Squiz.PHP.DiscouragedFunctions.Discouraged -- runtime PHP setting with no WordPress API
961 973 }
962 974
963 975 $log_file = WP_CONTENT_DIR . '/debug.log';
964 976
@@ -990,9 +1002,9 @@
990 1002 public function get_log_tail($file_path, $lines = null)
991 1003 {
992 1004 $execution_time = $this->get_execution_setting('max_execution_time');
993 1005 if (function_exists('set_time_limit')) {
994 - @set_time_limit($execution_time);
1006 + @set_time_limit($execution_time); // phpcs:ignore Squiz.PHP.DiscouragedFunctions.Discouraged -- runtime PHP setting with no WordPress API
995 1007 }
996 1008
997 1009 if ($lines === null) {
998 1010 $lines = $this->get_execution_setting('log_batch_size');
@@ -997,9 +1009,9 @@
997 1009 if ($lines === null) {
998 1010 $lines = $this->get_execution_setting('log_batch_size');
999 1011 }
1000 1012
1001 - $handle = fopen($file_path, 'r');
1013 + $handle = fopen($file_path, 'r'); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen -- streaming file I/O; WP_Filesystem cannot return a raw stream handle
1002 1014 if (!$handle) {
1003 1015 return false;
1004 1016 }
1005 1017
@@ -1028,9 +1040,9 @@
1028 1040 if (!empty($line) && $line_count < $lines) {
1029 1041 array_unshift($result_lines, strrev($line));
1030 1042 }
1031 1043
1032 - fclose($handle);
1044 + fclose($handle); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose -- operates on a native stream handle
1033 1045
1034 1046 return implode("\n", $result_lines);
1035 1047 }
1036 1048 }