????JFIF??x?x????'
| Server IP : 172.67.174.47  /  Your IP : 216.73.216.83 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././home/./tempvsty/peekmysite.com/wp-content/plugins/wpforms-lite/src/Migrations/ | 
| Upload File : | 
<?php
namespace WPForms\Migrations;
use WPForms\Tasks\Meta;
use WPForms\Tasks\Tasks;
/**
 * Class v1.7.5 upgrade.
 *
 * @since 1.7.5
 *
 * @noinspection PhpUnused
 */
class Upgrade175 extends UpgradeBase {
	/**
	 * Delete all task meta of not active tasks.
	 *
	 * @since 1.7.5
	 *
	 * @noinspection ElvisOperatorCanBeUsedInspection
	 *
	 * @return bool|null Upgrade result:
	 *                   true  - the upgrade completed successfully,
	 *                   false - in the case of failure,
	 *                   null  - upgrade started but not yet finished (background task).
	 */
	public function run() {
		global $wpdb;
		if ( ! $this->as_tables_exist() ) {
			return true;
		}
		$group = Tasks::GROUP;
		$sql   = "SELECT DISTINCT a.args FROM {$wpdb->prefix}actionscheduler_actions a
					JOIN {$wpdb->prefix}actionscheduler_groups g ON g.group_id = a.group_id
					WHERE g.slug = '$group' AND a.status IN ( 'pending', 'in-progress' )";
		// phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
		$results = $wpdb->get_results( $sql, 'ARRAY_A' );
		// phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.NotPrepared
		$results  = $results ? $results : [];
		$meta_ids = [];
		foreach ( $results as $result ) {
			$args = isset( $result['args'] ) ? json_decode( $result['args'], true ) : null;
			if ( $args && ! empty( $args['tasks_meta_id'] ) ) {
				$meta_ids[] = $args['tasks_meta_id'];
			}
		}
		$table_name = Meta::get_table_name();
		$not_in     = $meta_ids ? wpforms_wpdb_prepare_in( $meta_ids ) : '0';
		// phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
		$wpdb->query( "DELETE FROM $table_name WHERE id NOT IN ( $not_in )" );
		// phpcs:enable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching
		return true;
	}
	/**
	 * Check whether AS tables exist.
	 *
	 * @since 1.7.6
	 *
	 * @return bool
	 */
	private function as_tables_exist() {
		global $wpdb;
		$required_tables = [
			$wpdb->prefix . 'actionscheduler_actions',
			$wpdb->prefix . 'actionscheduler_groups',
		];
		// phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
		$tables    = $wpdb->get_col( "SHOW TABLES LIKE '{$wpdb->prefix}actionscheduler%'" );
		$intersect = array_values( array_intersect( $tables, $required_tables ) );
		sort( $intersect );
		sort( $required_tables );
		return $intersect === $required_tables;
	}
}