2019-03-08 18:59:32 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* WC Admin Action Scheduler Store.
|
|
|
|
*
|
|
|
|
* @package WooCommerce Admin/Classes
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class WC Admin Action Scheduler Store.
|
|
|
|
*/
|
|
|
|
class WC_Admin_ActionScheduler_WPPostStore extends ActionScheduler_wpPostStore {
|
|
|
|
/**
|
|
|
|
* Action scheduler job priority (lower numbers are claimed first).
|
|
|
|
*/
|
|
|
|
const JOB_PRIORITY = 30;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create the post array for storing actions as WP posts.
|
|
|
|
*
|
|
|
|
* For WC Admin actions, force a lower action claim
|
|
|
|
* priority by setting a high value for `menu_order`.
|
|
|
|
*
|
|
|
|
* @param ActionScheduler_Action $action Action.
|
|
|
|
* @param DateTime $scheduled_date Action schedule.
|
|
|
|
* @return array Post data array for usage in wp_insert_post().
|
|
|
|
*/
|
|
|
|
protected function create_post_array( ActionScheduler_Action $action, DateTime $scheduled_date = null ) {
|
|
|
|
$postdata = parent::create_post_array( $action, $scheduled_date );
|
|
|
|
|
|
|
|
if ( 0 === strpos( $postdata['post_title'], 'wc-admin_' ) ) {
|
|
|
|
$postdata['menu_order'] = self::JOB_PRIORITY;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $postdata;
|
|
|
|
}
|
2019-03-09 01:41:59 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Forcefully delete all pending WC Admin scheduled actions.
|
2019-03-13 17:48:38 +00:00
|
|
|
* Directly trashes items from in database for performance.
|
2019-05-13 02:30:07 +00:00
|
|
|
*
|
|
|
|
* @param array $action_types Array of actions to delete.
|
2019-03-09 01:41:59 +00:00
|
|
|
*/
|
2019-05-13 02:30:07 +00:00
|
|
|
public function clear_pending_wcadmin_actions( $action_types ) {
|
2019-03-09 01:41:59 +00:00
|
|
|
global $wpdb;
|
|
|
|
|
2019-03-13 17:48:38 +00:00
|
|
|
// Cancel all pending actions by trashing the posts.
|
|
|
|
// Action Scheduler will handle the cleanup.
|
2019-05-13 02:30:07 +00:00
|
|
|
foreach ( (array) $action_types as $action_type ) {
|
2019-03-13 17:48:38 +00:00
|
|
|
$wpdb->update(
|
|
|
|
$wpdb->posts,
|
|
|
|
array(
|
|
|
|
'post_status' => 'trash',
|
|
|
|
),
|
|
|
|
array(
|
|
|
|
'post_type' => 'scheduled-action',
|
|
|
|
'post_status' => 'pending',
|
|
|
|
'post_title' => $action_type,
|
|
|
|
)
|
|
|
|
);
|
2019-03-09 01:41:59 +00:00
|
|
|
}
|
|
|
|
}
|
2019-03-08 18:59:32 +00:00
|
|
|
}
|