File "ActionScheduler_ActionFactory.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/packages/action-scheduler/classes/ActionScheduler_ActionFactory.php
File
size: 3.5 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
class ActionScheduler_ActionFactory
{
public function get_stored_action($status, $hook, array $args = array(), ActionScheduler_Schedule $schedule = null, $group = '')
{
switch ($status) {
case ActionScheduler_Store::STATUS_PENDING:
$action_class = 'ActionScheduler_Action';
break;
case ActionScheduler_Store::STATUS_CANCELED:
$action_class = 'ActionScheduler_CanceledAction';
if (!is_null($schedule) && !is_a($schedule, 'ActionScheduler_CanceledSchedule') && !is_a($schedule, 'ActionScheduler_NullSchedule')) {
$schedule = new ActionScheduler_CanceledSchedule($schedule->get_date());
}
break;
default:
$action_class = 'ActionScheduler_FinishedAction';
break;
}
$action_class = apply_filters('action_scheduler_stored_action_class', $action_class, $status, $hook, $args, $schedule, $group);
$action = new $action_class($hook, $args, $schedule, $group);
return apply_filters('action_scheduler_stored_action_instance', $action, $hook, $args, $schedule, $group);
}
public function async($hook, $args = array(), $group = '')
{
$schedule = new ActionScheduler_NullSchedule();
$action = new ActionScheduler_Action($hook, $args, $schedule, $group);
return $this->store($action);
}
public function single($hook, $args = array(), $when = null, $group = '')
{
$date = as_get_datetime_object($when);
$schedule = new ActionScheduler_SimpleSchedule($date);
$action = new ActionScheduler_Action($hook, $args, $schedule, $group);
return $this->store($action);
}
public function recurring($hook, $args = array(), $first = null, $interval = null, $group = '')
{
if (empty($interval)) {
return $this->single($hook, $args, $first, $group);
}
$date = as_get_datetime_object($first);
$schedule = new ActionScheduler_IntervalSchedule($date, $interval);
$action = new ActionScheduler_Action($hook, $args, $schedule, $group);
return $this->store($action);
}
public function cron($hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '')
{
if (empty($schedule)) {
return $this->single($hook, $args, $base_timestamp, $group);
}
$date = as_get_datetime_object($base_timestamp);
$cron = CronExpression::factory($schedule);
$schedule = new ActionScheduler_CronSchedule($date, $cron);
$action = new ActionScheduler_Action($hook, $args, $schedule, $group);
return $this->store($action);
}
public function repeat($action)
{
$schedule = $action->get_schedule();
$next = $schedule->get_next(as_get_datetime_object());
if (is_null($next) || !$schedule->is_recurring()) {
throw new InvalidArgumentException(__('Invalid action - must be a recurring action.', 'woocommerce'));
}
$schedule_class = get_class($schedule);
$new_schedule = new $schedule($next, $schedule->get_recurrence(), $schedule->get_first_date());
$new_action = new ActionScheduler_Action($action->get_hook(), $action->get_args(), $new_schedule, $action->get_group());
return $this->store($new_action);
}
protected function store(ActionScheduler_Action $action)
{
$store = ActionScheduler_Store::instance();
return $store->save_action($action);
}
}