| @@ -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 ) ); |