File "Maintenance.php"

Full Path: /home/vantageo/public_html/wp-admin-20240915120854/wp-includes-20240915121038/IXR/ajax-search-for-woocommerce/includes/Analytics/Maintenance.php
File size: 1.27 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace DgoraWcas\Analytics;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Maintenance {
	const HOOK                         = 'dgwt_wcas_analytics_maintenance';
	const ANALYTICS_EXPIRATION_IN_DAYS = 30;

	public function init() {
		$this->schedule();
		$this->listenCron();
	}

	/**
	 * Listen to cron action
	 *
	 * @return void
	 */
	public function listenCron() {
		add_action( self::HOOK, [ $this, 'handleMaintenance' ] );
	}

	/**
	 * Schedule maintenance task
	 *
	 * @return void
	 */
	public function schedule() {
		if ( ! wp_next_scheduled( self::HOOK ) ) {
			wp_schedule_event( strtotime( 'tomorrow' ) + 2 * HOUR_IN_SECONDS, 'daily', self::HOOK );
		}
	}

	/**
	 * Unschedule maintenance task
	 *
	 * @return void
	 */
	public function unschedule() {
		$timestamp = wp_next_scheduled( self::HOOK );
		if ( $timestamp ) {
			wp_unschedule_event( $timestamp, self::HOOK );
		}
	}

	/**
	 * Handle maintenance task
	 *
	 * @return void
	 */
	public function handleMaintenance() {
		$expiration = self::ANALYTICS_EXPIRATION_IN_DAYS;

		if (
			defined( 'DGWT_WCAS_ANALYTICS_EXPIRATION_IN_DAYS' ) &&
			intval( DGWT_WCAS_ANALYTICS_EXPIRATION_IN_DAYS ) > 0
		) {
			$expiration = intval( DGWT_WCAS_ANALYTICS_EXPIRATION_IN_DAYS );
		}

		Database::wipeOldRecords( $expiration );
	}
}