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 | uninstall.php +5 -5 2.6.25 → 2.7.1 View file →
@@ -79,9 +79,9 @@
79 79 'metasync_otto_bot_stats',
80 80 'metasync_otto_bot_logs',
81 81 );
82 82 foreach ( $tables as $table ) {
83 - $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}{$table}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- static table names, no user input.
83 + $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}{$table}" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery -- static table names, no user input.
84 84 }
85 85
86 86 // Plugin options and transients (transients live in the options table
87 87 // under _transient_/_transient_timeout_ prefixes when no object cache
@@ -93,9 +93,9 @@
93 93 '\_site\_transient\_metasync\_%',
94 94 '\_site\_transient\_timeout\_metasync\_%',
95 95 );
96 96 foreach ( $option_patterns as $option_pattern ) {
97 - $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $option_pattern ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- table name from core.
97 + $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->options} WHERE option_name LIKE %s", $option_pattern ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery -- table name from core.
98 98 }
99 99
100 100 // Per-post SEO values saved by the plugin (custom titles, meta
101 101 // descriptions, robots directives, schema, Open Graph, canonical URLs).
@@ -102,9 +102,9 @@
102 102 // Several metaboxes store their values without the leading underscore
103 103 // (metasync_common_robots, metasync_schema_markup, metasync_advance_robots,
104 104 // metasync_post, metasync_post_redirection_meta), so both prefixes are
105 105 // swept.
106 - $wpdb->query( "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE '\_metasync\_%' OR meta_key LIKE 'metasync\_%'" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- literal patterns, no user input.
106 + $wpdb->query( "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE '\_metasync\_%' OR meta_key LIKE 'metasync\_%'" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery -- literal patterns, no user input.
107 107
108 108 // On-disk data directory (error logs, zipped logs, cache artifacts).
109 109 $metasync_data_dir = WP_CONTENT_DIR . '/metasync_data';
110 110 if ( is_dir( $metasync_data_dir ) ) {
@@ -129,12 +129,12 @@
129 129 $path = $dir . '/' . $entry;
130 130 if ( is_dir( $path ) ) {
131 131 metasync_uninstall_rrmdir( $path );
132 132 } else {
133 - @unlink( $path ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- best-effort cleanup on uninstall.
133 + @wp_delete_file( $path ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- best-effort cleanup on uninstall.
134 134 }
135 135 }
136 - @rmdir( $dir ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- best-effort cleanup on uninstall.
136 + @rmdir( $dir ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_system_operations_rmdir -- best-effort cleanup on uninstall; WP_Filesystem would prompt for FTP credentials on non-direct hosts.
137 137 }
138 138
139 139 if ( is_multisite() ) {
140 140 $metasync_uninstall_site_ids = get_sites( array( 'fields' => 'ids', 'number' => 0 ) );