<?php
/**
 * File: Extension_ImageService_Plugin.php
 *
 * @since 2.2.0
 *
 * @package W3TC
 *
 * phpcs:disable WordPress.WP.CronInterval
 */

namespace W3TC;

if ( ! defined( 'W3TC' ) ) {
	die();
}

/**
 * Extension_ImageService_Plugin
 *
 * @since 2.2.0
 */
class Extension_ImageService_Plugin {
	/**
	 * Image Service API object.
	 *
	 * @since 2.2.0
	 *
	 * @static
	 *
	 * @var Extension_ImageService_Api
	 */
	public static $api;

	/**
	 * Add hooks.
	 *
	 * @since 2.2.0
	 * @static
	 */
	public static function wp_loaded() {
		add_action(
			'w3tc_extension_load_admin',
			array(
				'\W3TC\Extension_ImageService_Plugin_Admin',
				'w3tc_extension_load_admin',
			)
		);

		// Cron event handling.
		require_once __DIR__ . '/Extension_ImageService_Cron.php';

		add_action(
			'w3tc_imageservice_cron',
			array(
				'\W3TC\Extension_ImageService_Cron',
				'run',
			)
		);

		add_filter(
			'cron_schedules',
			array(
				'\W3TC\Extension_ImageService_Cron',
				'add_schedule',
			)
		);

		Extension_ImageService_Cron::add_cron();
	}

	/**
	 * Get the Image Service API object.
	 *
	 * @since 2.2.0
	 *
	 * @return Extension_ImageService_Api
	 */
	public static function get_api() {
		if ( is_null( self::$api ) ) {
			require_once __DIR__ . '/Extension_ImageService_Api.php';
			self::$api = new Extension_ImageService_Api();
		}

		return self::$api;
	}
}

w3tc_add_action(
	'wp_loaded',
	array(
		'\W3TC\Extension_ImageService_Plugin',
		'wp_loaded',
	)
);