Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
woocommerce
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php use Automattic\Jetpack\Constants; defined('ABSPATH') || exit; if (!class_exists('WC_Background_Process', false)) { include_once dirname(__FILE__) . '/abstracts/class-wc-background-process.php'; } class WC_Background_Emailer extends WC_Background_Process { public function __construct() { $this->prefix = 'wp_' . get_current_blog_id(); $this->action = 'wc_emailer'; add_action('shutdown', array($this, 'dispatch_queue'), 100); parent::__construct(); } protected function schedule_event() { if (!wp_next_scheduled($this->cron_hook_identifier)) { wp_schedule_event(time() + 10, $this->cron_interval_identifier, $this->cron_hook_identifier); } } protected function task($callback) { if (isset($callback['filter'], $callback['args'])) { try { WC_Emails::send_queued_transactional_email($callback['filter'], $callback['args']); } catch (Exception $e) { if (Constants::is_true('WP_DEBUG')) { trigger_error('Transactional email triggered fatal error for callback ' . esc_html($callback['filter']), E_USER_WARNING); } } } return false; } protected function close_http_connection() { if (session_id()) { session_write_close(); } wc_set_time_limit(0); if (is_callable('fastcgi_finish_request')) { fastcgi_finish_request(); } else { if (!headers_sent()) { header('Connection: close'); } @ob_end_flush(); flush(); } } public function dispatch_queue() { if (!empty($this->data)) { $this->close_http_connection(); $this->save()->dispatch(); } } protected function get_post_args() { if (property_exists($this, 'post_args')) { return $this->post_args; } $cookies = array(); foreach ($_COOKIE as $name => $value) { if ('PHPSESSID' === $name) { continue; } $cookies[] = new WP_Http_Cookie(array('name' => $name, 'value' => $value)); } return array('timeout' => 0.01, 'blocking' => false, 'body' => $this->data, 'cookies' => $cookies, 'sslverify' => apply_filters('https_local_ssl_verify', false)); } protected function handle() { $this->lock_process(); do { $batch = $this->get_batch(); if (empty($batch->data)) { break; } foreach ($batch->data as $key => $value) { $task = $this->task($value); if (false !== $task) { $batch->data[$key] = $task; } else { unset($batch->data[$key]); } $this->update($batch->key, $batch->data); if ($this->time_exceeded() || $this->memory_exceeded()) { break; } } if (empty($batch->data)) { $this->delete($batch->key); } } while (!$this->time_exceeded() && !$this->memory_exceeded() && !$this->is_queue_empty()); $this->unlock_process(); if (!$this->is_queue_empty()) { $this->dispatch(); } else { $this->complete(); } } }