| Server IP : 62.171.151.215 / Your IP : 216.73.217.53 Web Server : nginx/1.18.0 System : Linux vmi3128365 5.15.0-176-generic #186-Ubuntu SMP Fri Mar 13 11:01:42 UTC 2026 x86_64 User : alex ( 1000) PHP Version : 8.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /tmp/plugin-wordpress-seo/wordpress-seo/src/user-meta/infrastructure/ |
Upload File : |
<?php
namespace Yoast\WP\SEO\User_Meta\Infrastructure;
/**
* Repository going into the database to clean up.
*/
class Cleanup_Repository {
/**
* Deletes empty usermeta based on their meta_keys and returns the number of the deleted meta.
*
* @param array<string> $meta_keys The meta to be potentially deleted.
* @param int $limit The number of maximum deletions.
*
* @return int|false The number of rows that was deleted or false if the query failed.
*/
public function delete_empty_usermeta_query( $meta_keys, $limit ) {
global $wpdb;
// phpcs:disable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber -- Reason: we're passing an array instead.
$delete_query = $wpdb->prepare(
'DELETE FROM %i
WHERE meta_key IN ( ' . \implode( ', ', \array_fill( 0, \count( $meta_keys ), '%s' ) ) . ' )
AND meta_value = ""
ORDER BY user_id
LIMIT %d',
\array_merge( [ $wpdb->usermeta ], $meta_keys, [ $limit ] ),
);
// phpcs:enable
// phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches.
// phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way.
// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared -- Reason: Is it prepared already.
return $wpdb->query( $delete_query );
// phpcs:enable
}
}