HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/bookcc/public_html/wp-content/plugins/wp-mail-catcher/src/CronManager.php
<?php

namespace WpMailCatcher;

class CronManager
{
    public $currentIntervals = null;
    private $cronTasks = [];
    static private $instance = false;

    private function __construct()
    {
        add_filter('cron_schedules', [$this, 'addIntervals']);
    }

    public static function getInstance()
    {
        if (self::$instance == false) {
            self::$instance = new CronManager();
        }

        return self::$instance;
    }

    public function addTask($callback, $interval)
    {
        $identifier = GeneralHelper::$namespacePrefix . count($this->cronTasks);

        add_action($identifier, $callback);
        $this->cronTasks[] = $identifier;

        if (wp_next_scheduled($identifier)) {
            return;
        }

        if ($this->currentIntervals == null) {
            $this->currentIntervals = wp_get_schedules();
        }

        $nextRun = time() + $this->currentIntervals[$interval]['interval'];

        wp_schedule_event($nextRun, $interval, $identifier);
    }

    public function getTasks()
    {
        $cronTasks = _get_cron_array();
        $events = [];

        foreach ($cronTasks as $time => $cron) {
            foreach ($cron as $hook => $dings) {
                foreach ($dings as $sig => $data) {
                    if (strpos($hook, GeneralHelper::$namespacePrefix) === false) {
                        continue;
                    }

                    $events[] = [
                        'hook' => $hook,
                        'time' => $time,
                        'sig' => $sig,
                        'args' => $data['args'],
                        'schedule' => $data['schedule'],
                        'interval' => isset($data['interval']) ? $data['interval'] : null,
                        'nextRun' => isset($data['interval']) ? GeneralHelper::getHumanReadableTime($time, time(), '') : null,
                    ];
                }
            }
        }

        return $events;
    }

    public function clearTasks($task = null)
    {
        if ($task != null) {
            wp_clear_scheduled_hook($task);
            return;
        }

        foreach ($this->cronTasks as $task) {
            wp_clear_scheduled_hook($task);
        }
    }

    public function addIntervals($schedules)
    {
        $schedules['weekly'] = [
            'interval' => 604800,
            'display' => __('Once Weekly', 'WpMailCatcher')
        ];

        $schedules['monthly'] = [
            'interval' => 2635200,
            'display' => __('Once a month', 'WpMailCatcher')
        ];

        return $schedules;
    }
}