File "Tasks.php"

Full Path: /home/jovision/public_html/wp/wp-content/plugins/wpforms-lite/src/Admin/Dashboard/Tasks.php
File size: 1.44 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace WPForms\Admin\Dashboard;

use WPForms\Pro\Db\Dashboard\RollupRepository;
use WPForms\Pro\Tasks\Actions\DashboardBackfillTask;
use WPForms\Pro\Tasks\Actions\DashboardRollupTask;
use WPForms\Tasks\Actions\DashboardCacheRefreshTask;

/**
 * Dashboard background task registration.
 *
 * Feeds the Dashboard tasks into the Tasks manager through
 * `wpforms_tasks_get_tasks`, the same route every other feature uses, so the
 * manager instantiates them on its own schedule instead of the Loader having to
 * mirror its `init` timing.
 *
 * @since 2.0.2
 */
class Tasks {

	/**
	 * Bootstrap the registration.
	 *
	 * @since 2.0.2
	 */
	public function init(): void {

		$this->hooks();
	}

	/**
	 * Register hooks.
	 *
	 * @since 2.0.2
	 */
	private function hooks(): void {

		add_filter( 'wpforms_tasks_get_tasks', [ $this, 'register_tasks' ] );
	}

	/**
	 * Append the Dashboard tasks to the manager's class list.
	 *
	 * The rollup tasks read the Pro rollup tables directly, so they are only
	 * registered once those tables exist.
	 *
	 * @since 2.0.2
	 *
	 * @param array|mixed $tasks Task class list.
	 *
	 * @return array
	 */
	public function register_tasks( $tasks ): array {

		$tasks   = (array) $tasks;
		$tasks[] = DashboardCacheRefreshTask::class;

		if ( ! wpforms()->is_pro() || ! RollupRepository::tables_exist() ) {
			return $tasks;
		}

		$tasks[] = DashboardRollupTask::class;
		$tasks[] = DashboardBackfillTask::class;

		return $tasks;
	}
}