File "functions.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/packages/action-scheduler/functions.php
File size: 4.94 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

function as_enqueue_async_action($hook, $args = array(), $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return 0;
    }
    return ActionScheduler::factory()->async($hook, $args, $group);
}
function as_schedule_single_action($timestamp, $hook, $args = array(), $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return 0;
    }
    return ActionScheduler::factory()->single($hook, $args, $timestamp, $group);
}
function as_schedule_recurring_action($timestamp, $interval_in_seconds, $hook, $args = array(), $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return 0;
    }
    return ActionScheduler::factory()->recurring($hook, $args, $timestamp, $interval_in_seconds, $group);
}
function as_schedule_cron_action($timestamp, $schedule, $hook, $args = array(), $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return 0;
    }
    return ActionScheduler::factory()->cron($hook, $args, $timestamp, $schedule, $group);
}
function as_unschedule_action($hook, $args = array(), $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return 0;
    }
    $params = array('hook' => $hook, 'status' => ActionScheduler_Store::STATUS_PENDING, 'orderby' => 'date', 'order' => 'ASC', 'group' => $group);
    if (is_array($args)) {
        $params['args'] = $args;
    }
    $action_id = ActionScheduler::store()->query_action($params);
    if ($action_id) {
        ActionScheduler::store()->cancel_action($action_id);
    }
    return $action_id;
}
function as_unschedule_all_actions($hook, $args = array(), $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return;
    }
    if (empty($args)) {
        if (!empty($hook) && empty($group)) {
            ActionScheduler_Store::instance()->cancel_actions_by_hook($hook);
            return;
        }
        if (!empty($group) && empty($hook)) {
            ActionScheduler_Store::instance()->cancel_actions_by_group($group);
            return;
        }
    }
    do {
        $unscheduled_action = as_unschedule_action($hook, $args, $group);
    } while (!empty($unscheduled_action));
}
function as_next_scheduled_action($hook, $args = null, $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return false;
    }
    $params = array('hook' => $hook, 'orderby' => 'date', 'order' => 'ASC', 'group' => $group);
    if (is_array($args)) {
        $params['args'] = $args;
    }
    $params['status'] = ActionScheduler_Store::STATUS_RUNNING;
    $action_id = ActionScheduler::store()->query_action($params);
    if ($action_id) {
        return true;
    }
    $params['status'] = ActionScheduler_Store::STATUS_PENDING;
    $action_id = ActionScheduler::store()->query_action($params);
    if (null === $action_id) {
        return false;
    }
    $action = ActionScheduler::store()->fetch_action($action_id);
    $scheduled_date = $action->get_schedule()->get_date();
    if ($scheduled_date) {
        return (int) $scheduled_date->format('U');
    } elseif (null === $scheduled_date) {
        return true;
    }
    return false;
}
function as_has_scheduled_action($hook, $args = null, $group = '')
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return false;
    }
    $query_args = array('hook' => $hook, 'status' => array(ActionScheduler_Store::STATUS_RUNNING, ActionScheduler_Store::STATUS_PENDING), 'group' => $group, 'orderby' => 'none');
    if (null !== $args) {
        $query_args['args'] = $args;
    }
    $action_id = ActionScheduler::store()->query_action($query_args);
    return $action_id !== null;
}
function as_get_scheduled_actions($args = array(), $return_format = OBJECT)
{
    if (!ActionScheduler::is_initialized(__FUNCTION__)) {
        return array();
    }
    $store = ActionScheduler::store();
    foreach (array('date', 'modified') as $key) {
        if (isset($args[$key])) {
            $args[$key] = as_get_datetime_object($args[$key]);
        }
    }
    $ids = $store->query_actions($args);
    if ($return_format == 'ids' || $return_format == 'int') {
        return $ids;
    }
    $actions = array();
    foreach ($ids as $action_id) {
        $actions[$action_id] = $store->fetch_action($action_id);
    }
    if ($return_format == ARRAY_A) {
        foreach ($actions as $action_id => $action_object) {
            $actions[$action_id] = get_object_vars($action_object);
        }
    }
    return $actions;
}
function as_get_datetime_object($date_string = null, $timezone = 'UTC')
{
    if (is_object($date_string) && $date_string instanceof DateTime) {
        $date = new ActionScheduler_DateTime($date_string->format('Y-m-d H:i:s'), new DateTimeZone($timezone));
    } elseif (is_numeric($date_string)) {
        $date = new ActionScheduler_DateTime('@' . $date_string, new DateTimeZone($timezone));
    } else {
        $date = new ActionScheduler_DateTime($date_string, new DateTimeZone($timezone));
    }
    return $date;
}