A scalable, traceable job queue for background processing large queues of tasks in WordPress. Designed for distribution in WordPress plugins - no server access required.
-
-
-
-
-
- {{ content }}
-
-
-
-
-
- {% if site.google_analytics %}
-
- {% endif %}
-
-
\ No newline at end of file
diff --git a/includes/libraries/action-scheduler/docs/admin.md b/includes/libraries/action-scheduler/docs/admin.md
deleted file mode 100755
index 5ef0b56..0000000
--- a/includes/libraries/action-scheduler/docs/admin.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-description: Learn how to administer background jobs with the Action Scheduler job queue for WordPress.
----
-# Scheduled Actions Administration Screen
-
-Action Scheduler has a built in administration screen for monitoring, debugging and manually triggering scheduled actions.
-
-The administration interface is accesible through both:
-
-1. **Tools > Scheduled Actions**
-1. **WooCommerce > Status > Scheduled Actions**, when WooCommerce is installed.
-
-Among other tasks, from the admin screen you can:
-
-* run a pending action
-* view the scheduled actions with a specific status, like the all actions which have failed or are in-progress (https://cldup.com/NNTwE88Xl8.png).
-* view the log entries for a specific action to find out why it failed.
-* sort scheduled actions by hook name, scheduled date, claim ID or group name.
-
-Still have questions? Check out the [FAQ](/faq).
-
-
diff --git a/includes/libraries/action-scheduler/docs/android-chrome-192x192.png b/includes/libraries/action-scheduler/docs/android-chrome-192x192.png
deleted file mode 100755
index 86753db..0000000
Binary files a/includes/libraries/action-scheduler/docs/android-chrome-192x192.png and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/android-chrome-256x256.png b/includes/libraries/action-scheduler/docs/android-chrome-256x256.png
deleted file mode 100755
index 3e5f9b1..0000000
Binary files a/includes/libraries/action-scheduler/docs/android-chrome-256x256.png and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/api.md b/includes/libraries/action-scheduler/docs/api.md
deleted file mode 100755
index a0bbb5d..0000000
--- a/includes/libraries/action-scheduler/docs/api.md
+++ /dev/null
@@ -1,179 +0,0 @@
----
-description: Reference guide for background processing functions provided by the Action Scheduler job queue for WordPress.
----
-# API Reference
-
-Action Scheduler provides a range of functions for scheduling hooks to run at some time in the future on one or more occassions.
-
-To understand the scheduling functoins, it can help to think of them as extensions to WordPress' `do_action()` function that add the ability to delay and repeat when the hook will be triggered.
-
-## WP-Cron APIs vs. Action Scheduler APIs
-
-The Action Scheduler API functions are designed to mirror the WordPress [WP-Cron API functions](http://codex.wordpress.org/Category:WP-Cron_Functions).
-
-Functions return similar values and accept similar arguments to their WP-Cron counterparts. The notable differences are:
-
-* `as_schedule_single_action()` & `as_schedule_recurring_action()` will return the post ID of the scheduled action rather than boolean indicating whether the event was scheduled
-* `as_schedule_recurring_action()` takes an interval in seconds as the recurring interval rather than an arbitrary string
-* `as_schedule_single_action()` & `as_schedule_recurring_action()` can accept a `$group` parameter to group different actions for the one plugin together.
-* the `wp_` prefix is substituted with `as_` and the term `event` is replaced with `action`
-
-## API Function Availability
-
-As mentioned in the [Usage - Load Order](/usage/#load-order) section, Action Scheduler will initialize itself on the `'init'` hook with priority `1`. While API functions are loaded prior to this and call be called, they should not be called until after `'init'` with priority `1`, because each component, like the data store, has not yet been initialized.
-
-Do not use Action Scheduler API functions prior to `'init'` hook with priority `1`. Doing so could lead to unexpected results, like data being stored in the incorrect location.
-
-## Function Reference / `as_schedule_single_action()`
-
-### Description
-
-Schedule an action to run one time.
-
-### Usage
-
-```php
-as_schedule_single_action( $timestamp, $hook, $args, $group )
-````
-
-### Parameters
-
-- **$timestamp** (integer)(required) The Unix timestamp representing the date you want the action to run. Default: _none_.
-- **$hook** (string)(required) Name of the action hook. Default: _none_.
-- **$args** (array) Arguments to pass to callbacks when the hook triggers. Default: _`array()`_.
-- **$group** (array) The group to assign this job to. Default: _''_.
-
-### Return value
-
-(integer) the action's ID in the [posts](http://codex.wordpress.org/Database_Description#Table_Overview) table.
-
-
-## Function Reference / `as_schedule_recurring_action()`
-
-### Description
-
-Schedule an action to run repeatedly with a specified interval in seconds.
-
-### Usage
-
-```php
-as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args, $group )
-````
-
-### Parameters
-
-- **$timestamp** (integer)(required) The Unix timestamp representing the date you want the action to run. Default: _none_.
-- **$interval_in_seconds** (integer)(required) How long to wait between runs. Default: _none_.
-- **$hook** (string)(required) Name of the action hook. Default: _none_.
-- **$args** (array) Arguments to pass to callbacks when the hook triggers. Default: _`array()`_.
-- **$group** (array) The group to assign this job to. Default: _''_.
-
-### Return value
-
-(integer) the action's ID in the [posts](http://codex.wordpress.org/Database_Description#Table_Overview) table.
-
-
-## Function Reference / `as_schedule_cron_action()`
-
-### Description
-
-Schedule an action that recurs on a cron-like schedule.
-
-### Usage
-
-```php
-as_schedule_cron_action( $timestamp, $schedule, $hook, $args, $group )
-````
-
-### Parameters
-
-- **$timestamp** (integer)(required) The Unix timestamp representing the date you want the action to run. Default: _none_.
-- **$schedule** (string)(required) $schedule A cron-link schedule string, see http://en.wikipedia.org/wiki/Cron. Default: _none_.
-- **$hook** (string)(required) Name of the action hook. Default: _none_.
-- **$args** (array) Arguments to pass to callbacks when the hook triggers. Default: _`array()`_.
-- **$group** (array) The group to assign this job to. Default: _''_.
-
-### Return value
-
-(integer) the action's ID in the [posts](http://codex.wordpress.org/Database_Description#Table_Overview) table.
-
-
-## Function Reference / `as_unschedule_action()`
-
-### Description
-
-Cancel the next occurrence of a job.
-
-### Usage
-
-```php
-as_unschedule_action( $hook, $args, $group )
-````
-
-### Parameters
-
-- **$hook** (string)(required) Name of the action hook. Default: _none_.
-- **$args** (array) Arguments to pass to callbacks when the hook triggers. Default: _`array()`_.
-- **$group** (array) The group to assign this job to. Default: _''_.
-
-### Return value
-
-(null)
-
-
-## Function Reference / `as_next_scheduled_action()`
-
-### Description
-
-Returns the next timestamp for a scheduled action.
-
-### Usage
-
-```php
-as_next_scheduled_action( $hook, $args, $group )
-````
-
-### Parameters
-
-- **$hook** (string)(required) Name of the action hook. Default: _none_.
-- **$args** (array) Arguments to pass to callbacks when the hook triggers. Default: _`array()`_.
-- **$group** (array) The group to assign this job to. Default: _''_.
-
-### Return value
-
-(integer|boolean) The timestamp for the next occurrence, or false if nothing was found.
-
-
-## Function Reference / `as_get_scheduled_actions()`
-
-### Description
-
-Find scheduled actions.
-
-### Usage
-
-```php
-as_get_scheduled_actions( $args, $return_format )
-````
-
-### Parameters
-
-- **$args** (array) Arguments to search and filter results by. Possible arguments, with their default values:
- * `'hook' => ''` - the name of the action that will be triggered
- * `'args' => NULL` - the args array that will be passed with the action
- * `'date' => NULL` - the scheduled date of the action. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime().
- * `'date_compare' => '<=`' - operator for testing "date". accepted values are '!=', '>', '>=', '<', '<=', '='
- * `'modified' => NULL` - the date the action was last updated. Expects a DateTime object, a unix timestamp, or a string that can parsed with strtotime().
- * `'modified_compare' => '<='` - operator for testing "modified". accepted values are '!=', '>', '>=', '<', '<=', '='
- * `'group' => ''` - the group the action belongs to
- * `'status' => ''` - ActionScheduler_Store::STATUS_COMPLETE or ActionScheduler_Store::STATUS_PENDING
- * `'claimed' => NULL` - TRUE to find claimed actions, FALSE to find unclaimed actions, a string to find a specific claim ID
- * `'per_page' => 5` - Number of results to return
- * `'offset' => 0`
- * `'orderby' => 'date'` - accepted values are 'hook', 'group', 'modified', or 'date'
- * `'order' => 'ASC'`
-- **$return_format** (string) The format in which to return the scheduled actions: 'OBJECT', 'ARRAY_A', or 'ids'. Default: _'OBJECT'_.
-
-### Return value
-
-(array) Array of the actions matching the criteria specified with `$args`.
diff --git a/includes/libraries/action-scheduler/docs/apple-touch-icon.png b/includes/libraries/action-scheduler/docs/apple-touch-icon.png
deleted file mode 100755
index 1bc4975..0000000
Binary files a/includes/libraries/action-scheduler/docs/apple-touch-icon.png and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/assets/css/style.scss b/includes/libraries/action-scheduler/docs/assets/css/style.scss
deleted file mode 100755
index 67fe6b6..0000000
--- a/includes/libraries/action-scheduler/docs/assets/css/style.scss
+++ /dev/null
@@ -1,32 +0,0 @@
----
----
-
-@import "{{ site.theme }}";
-
-a {
- text-shadow: none;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-header h1 a {
- color: #b5e853;
-}
-
-.container {
- max-width: 700px;
-}
-
-footer {
- margin-top: 6em;
- padding: 1.6em 0;
- border-top: 1px dashed #b5e853;
-}
-
-.footer-image {
- text-align: center;
- padding-top: 1em;
-}
\ No newline at end of file
diff --git a/includes/libraries/action-scheduler/docs/browserconfig.xml b/includes/libraries/action-scheduler/docs/browserconfig.xml
deleted file mode 100755
index f6244e6..0000000
--- a/includes/libraries/action-scheduler/docs/browserconfig.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
- #151515
-
-
-
diff --git a/includes/libraries/action-scheduler/docs/faq.md b/includes/libraries/action-scheduler/docs/faq.md
deleted file mode 100755
index 38f07f5..0000000
--- a/includes/libraries/action-scheduler/docs/faq.md
+++ /dev/null
@@ -1,101 +0,0 @@
-## FAQ
-
-### Is it safe to release Action Scheduler in my plugin? Won't its functions conflict with another copy of the library?
-
-Action Scheduler is designed to be used and released in plugins. It avoids redeclaring public API functions when more than one copy of the library is being loaded by different plugins. It will also load only the most recent version of itself (by checking registered versions after all plugins are loaded on the `'plugins_loaded'` hook).
-
-To use it in your plugin, simply require the `action-scheduler/action-scheduler.php` file. Action Scheduler will take care of the rest.
-
-### I don't want to use WP-Cron. Does Action Scheduler depend on WP-Cron?
-
-By default, Action Scheduler is initiated by WP-Cron. However, it has no dependency on the WP-Cron system. You can initiate the Action Scheduler queue in other ways with just one or two lines of code.
-
-For example, you can start a queue directly by calling:
-
-```php
-ActionScheduler::runner()->run();
-```
-
-Or trigger the `'action_scheduler_run_queue'` hook and let Action Scheduler do it for you:
-
-```php
-do_action( 'action_scheduler_run_queue' );
-```
-
-Further customization can be done by extending the `ActionScheduler_Abstract_QueueRunner` class to create a custom Queue Runner. For an example of a customized queue runner, see the [`ActionScheduler_WPCLI_QueueRunner`](https://github.com/Prospress/action-scheduler/blob/master/classes/ActionScheduler_WPCLI_QueueRunner.php), which is used when running WP CLI.
-
-Want to create some other method for initiating Action Scheduler? [Open a new issue](https://github.com/Prospress/action-scheduler/issues/new), we'd love to help you with it.
-
-### I don't want to use WP-Cron, ever. Does Action Scheduler replace WP-Cron?
-
-By default, Action Scheduler is designed to work alongside WP-Cron and not change any of its behaviour. This helps avoid unexpectedly overriding WP-Cron on sites installing your plugin, which may have nothing to do with WP-Cron.
-
-However, we can understand why you might want to replace WP-Cron completely in environments within you control, especially as it gets you the advantages of Action Scheduler. This should be possible without too much code.
-
-You could use the `'schedule_event'` hook in WordPress to use Action Scheduler for only newly scheduled WP-Cron jobs and map the `$event` param to Action Scheduler API functions.
-
-Alternatively, you can use a combination of the `'pre_update_option_cron'` and `'pre_option_cron'` hooks to override all new and previously scheduled WP-Cron jobs (similar to the way [Cavalcade](https://github.com/humanmade/Cavalcade) does it).
-
-If you'd like to create a plugin to do this automatically and want to share your work with others, [open a new issue to let us know](https://github.com/Prospress/action-scheduler/issues/new), we'd love to help you with it.
-
-### Eww gross, Custom Post Types! That's _so_ 2010. Can I use a different storage scheme?
-
-Of course! Action Scheduler data storage is completely swappable, and always has been.
-
-You can store scheduled actions in custom tables in the WordPress site's database. Some sites using it already are. You can actually store them anywhere for that matter, like in a remote storage service from Amazon Web Services.
-
-To implement a custom store:
-
-1. extend the abstract `ActionScheduler_Store` class, being careful to implement each of its methods
-2. attach a callback to `'action_scheduler_store_class'` to tell Action Scheduler your class is the one which should be used to manage storage, e.g.
-
-```
-function eg_define_custom_store( $existing_storage_class ) {
- return 'My_Radical_Action_Scheduler_Store';
-}
-add_filter( 'action_scheduler_store_class', 'eg_define_custom_store', 10, 1 );
-```
-
-Take a look at the `ActionScheduler_wpPostStore` class for an example implementation of `ActionScheduler_Store`.
-
-If you'd like to create a plugin to do this automatically and release it publicly to help others, [open a new issue to let us know](https://github.com/Prospress/action-scheduler/issues/new), we'd love to help you with it.
-
-> Note: we're also moving Action Scheduler itself to use [custom tables for better scalability](https://github.com/Prospress/action-scheduler/issues/77).
-
-### Can I use a different storage scheme just for logging?
-
-Of course! Action Scheduler's logger is completely swappable, and always has been. You can also customise where logs are stored, and the storage mechanism.
-
-To implement a custom logger:
-
-1. extend the abstract `ActionScheduler_Logger` class, being careful to implement each of its methods
-2. attach a callback to `'action_scheduler_logger_class'` to tell Action Scheduler your class is the one which should be used to manage logging, e.g.
-
-```
-function eg_define_custom_logger( $existing_storage_class ) {
- return 'My_Radical_Action_Scheduler_Logger';
-}
-add_filter( 'action_scheduler_logger_class', 'eg_define_custom_logger', 10, 1 );
-```
-
-Take a look at the `ActionScheduler_wpCommentLogger` class for an example implementation of `ActionScheduler_Logger`.
-
-### I want to run Action Scheduler only on a dedicated application server in my cluster. Can I do that?
-
-Wow, now you're really asking the tough questions. In theory, yes, this is possible. The `ActionScheduler_QueueRunner` class, which is responsible for running queues, is swappable via the `'action_scheduler_queue_runner_class'` filter.
-
-Because of this, you can effectively customise queue running however you need. Whether that means tweaking minor things, like not using WP-Cron at all to initiate queues by overriding `ActionScheduler_QueueRunner::init()`, or completely changing how and where queues are run, by overriding `ActionScheduler_QueueRunner::run()`.
-
-### Is Action Scheduler safe to use on my production site?
-
-Yes, absolutely! Action Scheduler is actively used on tens of thousands of production sites already. Right now it's responsible for scheduling everything from emails to payments.
-
-In fact, every month, Action Scheduler processes millions of payments as part of the [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/) extension.
-
-It requires no setup, and won't override any WordPress APIs (unless you want it to).
-
-### How does Action Scheduler work on WordPress Multisite?
-
-Action Scheduler is designed to manage the scheduled actions on a single site. It has no special handling for running queues across multiple sites in a multisite network. That said, because it's storage and Queue Runner are completely swappable, it would be possible to write multisite handling classes to use with it.
-
-If you'd like to create a multisite plugin to do this and release it publicly to help others, [open a new issue to let us know](https://github.com/Prospress/action-scheduler/issues/new), we'd love to help you with it.
diff --git a/includes/libraries/action-scheduler/docs/favicon-16x16.png b/includes/libraries/action-scheduler/docs/favicon-16x16.png
deleted file mode 100755
index aa772d1..0000000
Binary files a/includes/libraries/action-scheduler/docs/favicon-16x16.png and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/favicon-32x32.png b/includes/libraries/action-scheduler/docs/favicon-32x32.png
deleted file mode 100755
index 773fb30..0000000
Binary files a/includes/libraries/action-scheduler/docs/favicon-32x32.png and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/favicon.ico b/includes/libraries/action-scheduler/docs/favicon.ico
deleted file mode 100755
index 3cdbb51..0000000
Binary files a/includes/libraries/action-scheduler/docs/favicon.ico and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/google14ef723abb376cd3.html b/includes/libraries/action-scheduler/docs/google14ef723abb376cd3.html
deleted file mode 100755
index f3bf171..0000000
--- a/includes/libraries/action-scheduler/docs/google14ef723abb376cd3.html
+++ /dev/null
@@ -1 +0,0 @@
-google-site-verification: google14ef723abb376cd3.html
\ No newline at end of file
diff --git a/includes/libraries/action-scheduler/docs/index.md b/includes/libraries/action-scheduler/docs/index.md
deleted file mode 100755
index 989f262..0000000
--- a/includes/libraries/action-scheduler/docs/index.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: Action Scheduler - Background Processing Job Queue for WordPress
----
-## WordPress Job Queue with Background Processing
-
-Action Scheduler is a library for triggering a WordPress hook to run at some time in the future. Each hook can be scheduled with unique data, to allow callbacks to perform operations on that data. The hook can also be scheduled to run on one or more occassions.
-
-Think of it like an extension to `do_action()` which adds the ability to delay and repeat a hook.
-
-It just so happens, this functionality also creates a robust job queue for background processing large queues of tasks in WordPress. With the additional of logging and an [administration interface](/admin/), that also provide tracability on your tasks processed in the background.
-
-### Battle-Tested Background Processing
-
-Every month, Action Scheduler processes millions of payments for [Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/), webhooks for [WooCommerce](https://wordpress.org/plugins/woocommerce/), as well as emails and other events for a range of other plugins.
-
-It's been seen on live sites processing queues in excess of 50,000 jobs and doing resource intensive operations, like processing payments and creating orders, in 10 concurrent queues at a rate of over 10,000 actions / hour without negatively impacting normal site operations.
-
-This is all possible on infrastructure and WordPress sites outside the control of the plugin author.
-
-Action Scheduler is specifically designed for distribution in WordPress plugins (and themes) - no server access required. If your plugin needs background processing, especially of large sets of tasks, Action Scheduler can help.
-
-### How it Works
-
-Action Scheduler uses a WordPress [custom post type](http://codex.wordpress.org/Post_Types), creatively named `scheduled-action`, to store the hook name, arguments and scheduled date for an action that should be triggered at some time in the future.
-
-The scheduler will attempt to run every minute by attaching itself as a callback to the `'action_scheduler_run_schedule'` hook, which is scheduled using WordPress's built-in [WP-Cron](http://codex.wordpress.org/Function_Reference/wp_cron) system.
-
-When triggered, Action Scheduler will check for posts of the `scheduled-action` type that have a `post_date` at or before this point in time i.e. actions scheduled to run now or at sometime in the past.
-
-### Batch Processing Background Jobs
-
-If there are actions to be processed, Action Scheduler will stake a unique claim for a batch of 20 actions and begin processing that batch. The PHP process spawned to run the batch will then continue processing batches of 20 actions until it times out or exhausts available memory.
-
-If your site has a large number of actions scheduled to run at the same time, Action Scheduler will process more than one batch at a time. Specifically, when the `'action_scheduler_run_schedule'` hook is triggered approximately one minute after the first batch began processing, a new PHP process will stake a new claim to a batch of actions which were not claimed by the previous process. It will then begin to process that batch.
-
-This will continue until all actions are processed using a maximum of 5 concurrent queues.
-
-### Housekeeping
-
-Before processing a batch, the scheduler will remove any existing claims on actions which have been sitting in a queue for more than five minutes.
-
-Action Scheduler will also trash any actions which were completed more than a month ago.
-
-If an action runs for more than 5 minutes, Action Scheduler will assume the action has timed out and will mark it as failed. However, if all callbacks attached to the action were to successfully complete sometime after that 5 minute timeout, its status would later be updated to completed.
-
-### Traceable Background Processing
-
-Did your background job run?
-
-Never be left wondering with Action Scheduler's built-in record keeping.
-
-All events for each action are logged in the [comments table](http://codex.wordpress.org/Database_Description#Table_Overview) and displayed in the [administration interface](/admin/).
-
-The events logged by default include when an action:
- * is created
- * starts
- * completes
- * fails
-
-If it fails with an error that can be recorded, that error will be recorded in the log and visible in administration interface, making it possible to trace what went wrong at some point in the past on a site you didn't have access to in the past.
-
-Actions can also be grouped together using a custom taxonomy named `action-group`.
-
-## Credits
-
-Developed and maintained by [Prospress](http://prospress.com/) in collaboration with [Flightless](https://flightless.us/).
-
-Collaboration is cool. We'd love to work with you to improve Action Scheduler. [Pull Requests](https://github.com/prospress/action-scheduler/pulls) welcome.
\ No newline at end of file
diff --git a/includes/libraries/action-scheduler/docs/mstile-150x150.png b/includes/libraries/action-scheduler/docs/mstile-150x150.png
deleted file mode 100755
index 3a3ed19..0000000
Binary files a/includes/libraries/action-scheduler/docs/mstile-150x150.png and /dev/null differ
diff --git a/includes/libraries/action-scheduler/docs/perf.md b/includes/libraries/action-scheduler/docs/perf.md
deleted file mode 100755
index 542792d..0000000
--- a/includes/libraries/action-scheduler/docs/perf.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: WordPress Background Processing at Scale - Action Scheduler Job Queue
-description: Learn how to do WordPress background processing at scale by tuning the Action Scheduler job queue's default WP Cron runner.
----
-# Background Processing at Scale
-
-Action Scheduler's default processing is designed to work reliably across all different hosting environments. In order to achieve that, the default processing thresholds are very conservative.
-
-Specifically, Action Scheduler will only process actions until:
-
-* 90% of available memory is used
-* processing another 3 actions would exceed 30 seconds of total request time, based on the average processing time for the current batch
-
-On sites with large queues, this can result in very slow processing time.
-
-While using [WP CLI to process queues](/wp-cli/) is the best approach to increasing processing speed, on occasion, that is not a viable option. In these cases, it's also possible to increase the processing thresholds in Action Scheduler to increase the rate at which actions are processed by the default WP Cron queue runner.
-
-## Increasing Time Limit
-
-By default, Action Scheduler will only process actions for a maximum of 30 seconds. This time limit minimises the risk of a script timeout on unknown hosting environments, some of which enforce 30 second timeouts.
-
-If you know your host supports longer than this time limit for web requests, you can increase this time limit. This allows more actions to be processed in each request and reduces the lag between processing each queue, greating speeding up the processing rate of scheduled actions.
-
-For example, the following snippet will increase the timelimit to 2 minutes (120 seconds):
-
-```php
-function eg_increase_time_limit( $time_limit ) {
- return 120;
-}
-add_filter( 'action_scheduler_queue_runner_time_limit', 'eg_increase_time_limit' );
-```
-
-Some of the known host time limits are:
-
-* 60 second on WP Engine
-* 120 seconds on Pantheon
-* 120 seconds on SiteGround
-
-## Increasing Batch Size
-
-By default, Action Scheduler will claim a batch of 25 actions. This small batch size is because the default time limit is only 30 seconds; however, if you know your actions are processing very quickly, e.g. taking microseconds not seconds, or that you have more than 30 second available to process each batch, increasing the batch size can improve performance.
-
-This is because claiming a batch has some overhead, so the less often a batch needs to be claimed, the faster actions can be processed.
-
-For example, to increase the batch size to 100, we can use the following function:
-
-```php
-function eg_increase_action_scheduler_batch_size( $batch_size ) {
- return 100;
-}
-add_filter( 'action_scheduler_queue_runner_batch_size', 'eg_increase_action_scheduler_batch_size' );
-```
-
-## Increasing Concurrent Batches
-
-By default, Action Scheduler will run up to 5 concurrent batches of actions. This is to prevent consuming all the available connections or processes on your webserver.
-
-However, your server may allow a large number of connection, for example, because it has a high value for Apache's `MaxClients` setting or PHP-FPM's `pm.max_children` setting.
-
-If this is the case, you can use the `'action_scheduler_queue_runner_concurrent_batches'` filter to increase the number of conncurrent batches allowed, and therefore speed up processing large numbers of actions scheduled to be processed simultaneously.
-
-For example, to increase the allowed number of concurrent queues to 10, we can use the following code:
-
-```php
-function eg_increase_action_scheduler_concurrent_batches( $concurrent_batches ) {
- return 10;
-}
-add_filter( 'action_scheduler_queue_runner_concurrent_batches', 'eg_increase_action_scheduler_concurrent_batches' );
-```
-
-## Increasing Initialisation Rate of Runners
-
-By default, Action scheduler initiates at most, one queue runner every time the `'action_scheduler_run_queue'` action is triggered by WP Cron.
-
-Because this action is only triggered at most once every minute, if a queue is only allowed to process for one minute, then there will never be more than one queue processing actions, greatly reducing the processing rate.
-
-To handle larger queues on more powerful servers, it's a good idea to initiate additional queue runners whenever the `'action_scheduler_run_queue'` action is run.
-
-That can be done by initiated additional secure requests to our server via loopback requests.
-
-The code below demonstrates how to create 5 loopback requests each time a queue begins
-
-```php
-/**
- * Trigger 5 additional loopback requests with unique URL params.
- */
-function eg_request_additional_runners() {
-
- // allow self-signed SSL certificates
- add_filter( 'https_local_ssl_verify', '__return_false', 100 );
-
- for ( $i = 0; $i < 5; $i++ ) {
- $response = wp_remote_post( admin_url( 'admin-ajax.php' ), array(
- 'method' => 'POST',
- 'timeout' => 45,
- 'redirection' => 5,
- 'httpversion' => '1.0',
- 'blocking' => false,
- 'headers' => array(),
- 'body' => array(
- 'action' => 'eg_create_additional_runners',
- 'instance' => $i,
- 'eg_nonce' => wp_create_nonce( 'eg_additional_runner_' . $i ),
- ),
- 'cookies' => array(),
- ) );
- }
-}
-add_action( 'action_scheduler_run_queue', 'eg_request_additional_runners', 0 );
-
-/**
- * Handle requests initiated by eg_request_additional_runners() and start a queue runner if the request is valid.
- */
-function eg_create_additional_runners() {
-
- if ( isset( $_POST['eg_nonce'] ) && isset( $_POST['instance'] ) && wp_verify_nonce( $_POST['eg_nonce'], 'eg_additional_runner_' . $_POST['instance'] ) ) {
- ActionScheduler_QueueRunner::instance()->run();
- }
-
- wp_die();
-}
-add_action( 'wp_ajax_nopriv_eg_create_additional_runners', 'eg_create_additional_runners', 0 );
-```
-
-## High Volume Plugin
-
-It's not necessary to add all of this code yourself, the folks at [Prospress](https://prospress.com) have created a handy plugin to get access to each of these increases - the [Action Scheduler - High Volume](https://github.com/prospress/action-scheduler-high-volume) plugin.
diff --git a/includes/libraries/action-scheduler/docs/safari-pinned-tab.svg b/includes/libraries/action-scheduler/docs/safari-pinned-tab.svg
deleted file mode 100755
index b67c32b..0000000
--- a/includes/libraries/action-scheduler/docs/safari-pinned-tab.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
diff --git a/includes/libraries/action-scheduler/docs/site.webmanifest b/includes/libraries/action-scheduler/docs/site.webmanifest
deleted file mode 100755
index de65106..0000000
--- a/includes/libraries/action-scheduler/docs/site.webmanifest
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "",
- "short_name": "",
- "icons": [
- {
- "src": "/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "/android-chrome-256x256.png",
- "sizes": "256x256",
- "type": "image/png"
- }
- ],
- "theme_color": "#ffffff",
- "background_color": "#ffffff",
- "display": "standalone"
-}
diff --git a/includes/libraries/action-scheduler/docs/usage.md b/includes/libraries/action-scheduler/docs/usage.md
deleted file mode 100755
index dda4ed7..0000000
--- a/includes/libraries/action-scheduler/docs/usage.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-description: Learn how to use the Action Scheduler background processing job queue for WordPress in your WordPress plugin.
----
-# Usage
-
-Using Action Scheduler requires:
-
-1. installing the library
-1. scheduling and action
-1. attaching a callback to that action
-
-## Scheduling an Action
-
-To schedule an action, call the [API function](/api/) for the desired schedule type passing in the required parameters.
-
-The example code below shows everything needed to schedule a function to run at midnight, if it's not already scheduled:
-
-```php
-require_once( plugin_dir_path( __FILE__ ) . '/libraries/action-scheduler/action-scheduler.php' );
-
-/**
- * Schedule an action with the hook 'eg_midnight_log' to run at midnight each day
- * so that our callback is run then.
- */
-function eg_log_action_data() {
- if ( false === as_next_scheduled_action( 'eg_midnight_log' ) ) {
- as_schedule_recurring_action( strtotime( 'midnight tonight' ), DAY_IN_SECONDS, 'eg_midnight_log' );
- }
-}
-add_action( 'init', 'eg_log_action_data' );
-
-/**
- * A callback to run when the 'eg_midnight_log' scheduled action is run.
- */
-function eg_log_action_data() {
- error_log( 'It is just after midnight on ' . date( 'Y-m-d' ) );
-}
-add_action( 'eg_midnight_log', 'eg_log_action_data' );
-```
-
-For more details on all available API functions, and the data they accept, refer to the [API Reference](/api/).
-
-## Installation
-
-There are two ways to install Action Scheduler:
-
-1. regular WordPress plugin; or
-1. a library within your plugin's codebase.
-
-### Usage as a Plugin
-
-Action Scheduler includes the necessary file headers to be used as a standard WordPress plugin.
-
-To install it as a plugin:
-
-1. Download the .zip archive of the latest [stable release](https://github.com/Prospress/action-scheduler/releases)
-1. Go to the **Plugins > Add New > Upload** administration screen on your WordPress site
-1. Select the archive file you just downloaded
-1. Click **Install Now**
-1. Click **Activate**
-
-Or clone the Git repository into your site's `wp-content/plugins` folder.
-
-Using Action Scheduler as a plugin can be handy for developing against newer versions, rather than having to update the subtree in your codebase. **When installed as a plugin, Action Scheduler does not provide any user interfaces for scheduling actions**. The only way to interact with Action Scheduler is via code.
-
-### Usage as a Library
-
-To use Action Scheduler as a library:
-
-1. include the Action Scheduler codebase
-1. load the library by including the `action-scheduler.php` file
-
-Using a [subtree in your plugin, theme or site's Git repository](https://www.atlassian.com/blog/git/alternatives-to-git-submodule-git-subtree) to include Action Scheduler is the recommended method. Composer can also be used.
-
-To include Action Scheduler as a git subtree:
-
-#### Step 1. Add the Repository as a Remote
-
-```
-git remote add -f subtree-action-scheduler https://github.com/Prospress/action-scheduler.git
-```
-
-Adding the subtree as a remote allows us to refer to it in short from via the name `subtree-action-scheduler`, instead of the full GitHub URL.
-
-#### Step 2. Add the Repo as a Subtree
-
-```
-git subtree add --prefix libraries/action-scheduler subtree-action-scheduler master --squash
-```
-
-This will add the `master` branch of Action Scheduler to your repository in the folder `libraries/action-scheduler`.
-
-You can change the `--prefix` to change where the code is included. Or change the `master` branch to a tag, like `2.1.0` to include only a stable version.
-
-#### Step 3. Update the Subtree
-
-To update Action Scheduler to a new version, use the commands:
-
-```
-git fetch subtree-action-scheduler master
-git subtree pull --prefix libraries/action-scheduler subtree-action-scheduler master --squash
-```
-
-### Loading Action Scheduler
-
-Regardless of how it is installed, to load Action Scheduler, you only need to include the `action-scheduler.php` file, e.g.
-
-```php
-
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see .
+ along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
@@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-.
+.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-.
\ No newline at end of file
+.
diff --git a/includes/wcs-compatibility-functions.php b/includes/wcs-compatibility-functions.php
index 41b0c76..353bbed 100755
--- a/includes/wcs-compatibility-functions.php
+++ b/includes/wcs-compatibility-functions.php
@@ -63,8 +63,13 @@ function wcs_help_tip( $tip, $allow_html = false ) {
* @return mixed
*/
function wcs_get_objects_property( $object, $property, $single = 'single', $default = null ) {
+ $value = ! is_null( $default ) ? $default : ( ( 'single' === $single ) ? null : array() );
+
+ if ( ! is_object( $object ) ) {
+ return $value;
+ }
+
$prefixed_key = wcs_maybe_prefix_key( $property );
- $value = ! is_null( $default ) ? $default : ( ( 'single' === $single ) ? null : array() );
$property_function_map = array(
'order_version' => 'version',
'order_currency' => 'currency',
diff --git a/languages/woocommerce-subscriptions.pot b/languages/woocommerce-subscriptions.pot
index 9087956..5d532cf 100755
--- a/languages/woocommerce-subscriptions.pot
+++ b/languages/woocommerce-subscriptions.pot
@@ -2,10 +2,10 @@
# This file is distributed under the same license as the WooCommerce Subscriptions package.
msgid ""
msgstr ""
-"Project-Id-Version: WooCommerce Subscriptions 2.5.3\n"
+"Project-Id-Version: WooCommerce Subscriptions 2.5.6\n"
"Report-Msgid-Bugs-To: "
"https://github.com/Prospress/woocommerce-subscriptions/issues\n"
-"POT-Creation-Date: 2019-03-20 06:30:32+00:00\n"
+"POT-Creation-Date: 2019-05-30 20:02:46+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -223,8 +223,8 @@ msgstr ""
#: includes/admin/class-wcs-admin-reports.php:46
#: includes/admin/class-wcs-admin-system-status.php:56
#: includes/admin/reports/class-wcs-report-subscription-events-by-date.php:688
-#: includes/class-wcs-query.php:115 includes/class-wcs-query.php:142
-#: includes/class-wcs-query.php:296
+#: includes/class-wcs-query.php:116 includes/class-wcs-query.php:143
+#: includes/class-wcs-query.php:297
#: includes/privacy/class-wcs-privacy-exporters.php:51
#: woocommerce-subscriptions.php:254 woocommerce-subscriptions.php:267
msgid "Subscriptions"
@@ -253,7 +253,7 @@ msgstr ""
#: includes/class-wc-product-subscription.php:72
#: includes/class-wc-product-variable-subscription.php:73
#: includes/class-wc-subscriptions-product.php:99
-#: woocommerce-subscriptions.php:578
+#: woocommerce-subscriptions.php:580
msgid "Sign Up Now"
msgstr ""
@@ -406,7 +406,7 @@ msgstr ""
#: includes/admin/class-wc-subscriptions-admin.php:1321
#: includes/upgrades/templates/wcs-about-2-0.php:35
#: includes/upgrades/templates/wcs-about.php:34
-#: woocommerce-subscriptions.php:1110
+#: woocommerce-subscriptions.php:1112
msgid "Settings"
msgstr ""
@@ -502,38 +502,38 @@ msgstr ""
msgid "Note that purchasing a subscription still requires an account."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:63
-#: includes/admin/class-wcs-admin-meta-boxes.php:67
+#: includes/admin/class-wcs-admin-meta-boxes.php:65
+#: includes/admin/class-wcs-admin-meta-boxes.php:69
#: templates/myaccount/related-orders.php:15
msgid "Related Orders"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:107
+#: includes/admin/class-wcs-admin-meta-boxes.php:109
msgid "Please enter a start date in the past."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:108
+#: includes/admin/class-wcs-admin-meta-boxes.php:110
msgid "Please enter a date at least one hour into the future."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:109
+#: includes/admin/class-wcs-admin-meta-boxes.php:111
msgid "Please enter a date after the trial end."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:110
-#: includes/admin/class-wcs-admin-meta-boxes.php:111
+#: includes/admin/class-wcs-admin-meta-boxes.php:112
+#: includes/admin/class-wcs-admin-meta-boxes.php:113
msgid "Please enter a date after the start date."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:112
+#: includes/admin/class-wcs-admin-meta-boxes.php:114
msgid "Please enter a date before the next payment."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:113
+#: includes/admin/class-wcs-admin-meta-boxes.php:115
msgid "Please enter a date after the next payment."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:114
+#: includes/admin/class-wcs-admin-meta-boxes.php:116
msgid ""
"Are you sure you want to process a renewal?\n"
"\n"
@@ -541,7 +541,7 @@ msgid ""
"are enabled)."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:124
+#: includes/admin/class-wcs-admin-meta-boxes.php:126
msgid ""
"Are you sure you want to retry payment for this renewal order?\n"
"\n"
@@ -549,31 +549,31 @@ msgid ""
"emails are enabled)."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:153
+#: includes/admin/class-wcs-admin-meta-boxes.php:159
msgid "Process renewal"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:157
+#: includes/admin/class-wcs-admin-meta-boxes.php:163
msgid "Create pending renewal order"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:159
+#: includes/admin/class-wcs-admin-meta-boxes.php:165
msgid "Create pending parent order"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:162
+#: includes/admin/class-wcs-admin-meta-boxes.php:169
msgid "Retry Renewal Payment"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:176
+#: includes/admin/class-wcs-admin-meta-boxes.php:183
msgid "Process renewal order action requested by admin."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:200
+#: includes/admin/class-wcs-admin-meta-boxes.php:207
msgid "Create pending renewal order requested by admin action."
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:229
+#: includes/admin/class-wcs-admin-meta-boxes.php:236
msgid "Create pending parent order requested by admin action."
msgstr ""
@@ -1062,7 +1062,7 @@ msgstr[1] ""
#: includes/admin/reports/class-wcs-report-dashboard.php:212
#. translators: 1$: count, 2$ and 3$ are opening and closing strong tags,
#. respectively.
-msgid "%2$s%$1s signup%3$s subscription signups this month"
+msgid "%2$s%1$s signup%3$s subscription signups this month"
msgid_plural "%2$s%1$s signups%3$s subscription signups this month"
msgstr[0] ""
msgstr[1] ""
@@ -1858,7 +1858,7 @@ msgid "That doesn't appear to be one of your subscriptions."
msgstr ""
#: includes/class-wc-subscriptions-change-payment-gateway.php:254
-#: includes/class-wcs-query.php:252
+#: includes/class-wcs-query.php:253
msgid "The payment method can not be changed for that subscription."
msgstr ""
@@ -1911,118 +1911,118 @@ msgstr ""
msgid "Error %d: Unable to create order. Please try again."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:151
+#: includes/class-wc-subscriptions-coupon.php:163
msgid "Sign Up Fee Discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:152
+#: includes/class-wc-subscriptions-coupon.php:164
msgid "Sign Up Fee % Discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:153
+#: includes/class-wc-subscriptions-coupon.php:165
msgid "Recurring Product Discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:154
+#: includes/class-wc-subscriptions-coupon.php:166
msgid "Recurring Product % Discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:444
+#: includes/class-wc-subscriptions-coupon.php:456
msgid ""
"Sorry, this coupon is only valid for an initial payment and the cart does "
"not require an initial payment."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:450
+#: includes/class-wc-subscriptions-coupon.php:462
msgid "Sorry, this coupon is only valid for new subscriptions."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:455
+#: includes/class-wc-subscriptions-coupon.php:467
msgid "Sorry, this coupon is only valid for subscription products."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:461
+#: includes/class-wc-subscriptions-coupon.php:473
#. translators: 1$: coupon code that is being removed
msgid "Sorry, the \"%1$s\" coupon is only valid for renewals."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:466
+#: includes/class-wc-subscriptions-coupon.php:478
msgid ""
"Sorry, this coupon is only valid for subscription products with a sign-up "
"fee."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:492
+#: includes/class-wc-subscriptions-coupon.php:504
msgid ""
"Sorry, recurring coupons can only be applied to subscriptions or "
"subscription orders."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:496
+#: includes/class-wc-subscriptions-coupon.php:508
#. translators: placeholder is coupon code
msgid ""
"Sorry, \"%s\" can only be applied to subscription parent orders which "
"contain a product with signup fees."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:499
+#: includes/class-wc-subscriptions-coupon.php:511
msgid "Sorry, only recurring coupons can be applied to subscriptions."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:681
+#: includes/class-wc-subscriptions-coupon.php:693
msgid "Renewal % discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:682
+#: includes/class-wc-subscriptions-coupon.php:694
msgid "Renewal product discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:683
+#: includes/class-wc-subscriptions-coupon.php:695
msgid "Renewal cart discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:684
+#: includes/class-wc-subscriptions-coupon.php:696
msgid "Initial payment discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:701
+#: includes/class-wc-subscriptions-coupon.php:713
msgid "Renewal Discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:704
+#: includes/class-wc-subscriptions-coupon.php:716
msgid "Discount"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:920
+#: includes/class-wc-subscriptions-coupon.php:932
msgid ""
"Sorry, it seems there are no available payment methods which support the "
"recurring coupon you are using. Please contact us if you require assistance "
"or wish to make alternate arrangements."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:935
+#: includes/class-wc-subscriptions-coupon.php:947
msgid "Active for x payments"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:936
+#: includes/class-wc-subscriptions-coupon.php:948
msgid "Unlimited payments"
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:937
+#: includes/class-wc-subscriptions-coupon.php:949
msgid ""
"Coupon will be limited to the given number of payments. It will then be "
"automatically removed from the subscription. \"Payments\" also includes the "
"initial subscription payment."
msgstr ""
-#: includes/class-wc-subscriptions-coupon.php:1069
+#: includes/class-wc-subscriptions-coupon.php:1081
#. translators: %d refers to the number of payments the coupon can be used for.
msgid "Active for %d payment"
msgid_plural "Active for %d payments"
msgstr[0] ""
msgstr[1] ""
-#: includes/class-wc-subscriptions-coupon.php:1073
+#: includes/class-wc-subscriptions-coupon.php:1085
msgid "Active for unlimited payments"
msgstr ""
@@ -2031,7 +2031,7 @@ msgid "Error: Unable to create renewal order with note \"%s\""
msgstr ""
#: includes/class-wc-subscriptions-manager.php:168
-#: includes/gateways/class-wc-subscriptions-payment-gateways.php:211
+#: includes/gateways/class-wc-subscriptions-payment-gateways.php:209
msgid "Subscription doesn't exist in scheduled action: %d"
msgstr ""
@@ -2533,33 +2533,33 @@ msgid "Weekly"
msgstr ""
#: includes/class-wcs-cart-initial-payment.php:59
-#: includes/class-wcs-cart-renewal.php:188
+#: includes/class-wcs-cart-renewal.php:191
msgid "That doesn't appear to be your order."
msgstr ""
-#: includes/class-wcs-cart-renewal.php:204
+#: includes/class-wcs-cart-renewal.php:207
msgid ""
"This order can no longer be paid because the corresponding subscription "
"does not require payment at this time."
msgstr ""
-#: includes/class-wcs-cart-renewal.php:221
+#: includes/class-wcs-cart-renewal.php:224
msgid "Complete checkout to renew your subscription."
msgstr ""
-#: includes/class-wcs-cart-renewal.php:302
+#: includes/class-wcs-cart-renewal.php:305
#. translators: placeholder is an item name
msgid ""
"The %s product has been deleted and can no longer be renewed. Please choose "
"a new product or contact us for assistance."
msgstr ""
-#: includes/class-wcs-cart-renewal.php:336
+#: includes/class-wcs-cart-renewal.php:339
#. translators: %s is subscription's number
msgid "Subscription #%s has not been added to the cart."
msgstr ""
-#: includes/class-wcs-cart-renewal.php:371
+#: includes/class-wcs-cart-renewal.php:374
msgid ""
"We couldn't find the original subscription for an item in your cart. The "
"item was removed."
@@ -2569,7 +2569,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: includes/class-wcs-cart-renewal.php:378
+#: includes/class-wcs-cart-renewal.php:381
msgid ""
"We couldn't find the original renewal order for an item in your cart. The "
"item was removed."
@@ -2579,7 +2579,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: includes/class-wcs-cart-renewal.php:653
+#: includes/class-wcs-cart-renewal.php:648
msgid "All linked subscription items have been removed from the cart."
msgstr ""
@@ -2619,26 +2619,26 @@ msgstr ""
msgid "Learn more"
msgstr ""
-#: includes/class-wcs-limiter.php:45
+#: includes/class-wcs-limiter.php:44
msgid "Limit subscription"
msgstr ""
-#: includes/class-wcs-limiter.php:47
+#: includes/class-wcs-limiter.php:46
#. translators: placeholders are opening and closing link tags
msgid ""
"Only allow a customer to have one subscription to this product. %sLearn "
"more%s."
msgstr ""
-#: includes/class-wcs-limiter.php:49
+#: includes/class-wcs-limiter.php:48
msgid "Do not limit"
msgstr ""
-#: includes/class-wcs-limiter.php:50
+#: includes/class-wcs-limiter.php:49
msgid "Limit to one active subscription"
msgstr ""
-#: includes/class-wcs-limiter.php:51
+#: includes/class-wcs-limiter.php:50
msgid "Limit to one of any status"
msgstr ""
@@ -2698,31 +2698,31 @@ msgid ""
"\"delete\". Updates are done on post meta directly."
msgstr ""
-#: includes/class-wcs-query.php:113
+#: includes/class-wcs-query.php:114
msgid "Subscriptions (page %d)"
msgstr ""
-#: includes/class-wcs-query.php:140
+#: includes/class-wcs-query.php:141
msgid "My Subscription"
msgstr ""
-#: includes/class-wcs-query.php:297
+#: includes/class-wcs-query.php:298
msgid "Endpoint for the My Account → Subscriptions page"
msgstr ""
-#: includes/class-wcs-query.php:305
+#: includes/class-wcs-query.php:306
msgid "View subscription"
msgstr ""
-#: includes/class-wcs-query.php:306
+#: includes/class-wcs-query.php:307
msgid "Endpoint for the My Account → View Subscription page"
msgstr ""
-#: includes/class-wcs-query.php:314
+#: includes/class-wcs-query.php:315
msgid "Subscription payment method"
msgstr ""
-#: includes/class-wcs-query.php:315
+#: includes/class-wcs-query.php:316
msgid "Endpoint for the My Account → Change Subscription Payment Method page"
msgstr ""
@@ -2761,13 +2761,13 @@ msgid ""
"subscriptions with no payment method in common."
msgstr ""
-#: includes/class-wcs-staging.php:37
+#: includes/class-wcs-staging.php:38
msgid ""
"Payment processing skipped - renewal order created on %sstaging site%s "
"under staging site lock. Live site is at %s"
msgstr ""
-#: includes/class-wcs-staging.php:52
+#: includes/class-wcs-staging.php:53
msgid "staging"
msgstr ""
@@ -2876,23 +2876,23 @@ msgstr ""
msgid "Complete checkout to renew now."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:247
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:248
#. translators: placeholder contains a link to the order's edit screen.
msgid "Customer successfully renewed early with order %s."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:250
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:251
#. translators: placeholder contains a link to the order's edit screen.
msgid ""
"Failed to update subscription dates after customer renewed early with order "
"%s."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:338
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:339
msgid "Order %s created to record early renewal."
msgstr ""
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:393
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:394
msgid "Cancel"
msgstr ""
@@ -3157,47 +3157,47 @@ msgid ""
"alternate arrangements."
msgstr ""
-#: includes/gateways/class-wc-subscriptions-payment-gateways.php:268
+#: includes/gateways/class-wc-subscriptions-payment-gateways.php:266
msgid "Supported features:"
msgstr ""
-#: includes/gateways/class-wc-subscriptions-payment-gateways.php:271
+#: includes/gateways/class-wc-subscriptions-payment-gateways.php:269
msgid "Subscription features:"
msgstr ""
-#: includes/gateways/class-wc-subscriptions-payment-gateways.php:275
+#: includes/gateways/class-wc-subscriptions-payment-gateways.php:273
msgid "Change payment features:"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:213
+#: includes/gateways/paypal/class-wcs-paypal.php:220
msgid "Unable to find order for PayPal billing agreement."
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:275
+#: includes/gateways/paypal/class-wcs-paypal.php:282
msgid "An error occurred, please try again or try an alternate form of payment."
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:379
+#: includes/gateways/paypal/class-wcs-paypal.php:386
#. translators: placeholders are PayPal API error code and PayPal API error
#. message
msgid "PayPal API error: (%d) %s"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:384
+#: includes/gateways/paypal/class-wcs-paypal.php:391
#. translators: placeholder is PayPal transaction status message
msgid "PayPal Transaction Held: %s"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:396
+#: includes/gateways/paypal/class-wcs-paypal.php:403
#. translators: placeholder is PayPal transaction status message
msgid "PayPal payment declined: %s"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:400
+#: includes/gateways/paypal/class-wcs-paypal.php:407
msgid "PayPal payment approved (ID: %s)"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:453
+#: includes/gateways/paypal/class-wcs-paypal.php:460
msgid ""
"Are you sure you want to change the payment method from PayPal standard?\n"
"\n"
@@ -3262,15 +3262,15 @@ msgstr ""
msgid "Open a ticket"
msgstr ""
-#: includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:269
+#: includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:274
msgid "PayPal Subscription ID:"
msgstr ""
-#: includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:296
+#: includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:300
msgid "Enable PayPal Standard for Subscriptions"
msgstr ""
-#: includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:304
+#: includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php:308
#. translators: Placeholders are the opening and closing link tags.
msgid ""
"Before enabling PayPal Standard for Subscriptions, please note, when using "
@@ -3298,7 +3298,7 @@ msgstr ""
msgid "expected clearing date %s"
msgstr ""
-#: includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-ipn-handler.php:114
+#: includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-ipn-handler.php:94
msgid "Billing agreement cancelled at PayPal."
msgstr ""
@@ -4950,47 +4950,47 @@ msgstr ""
msgid "Would you like to add a payment method now?"
msgstr ""
-#: woocommerce-subscriptions.php:493
+#: woocommerce-subscriptions.php:495
msgid ""
"A subscription renewal has been removed from your cart. Multiple "
"subscriptions can not be purchased at the same time."
msgstr ""
-#: woocommerce-subscriptions.php:499
+#: woocommerce-subscriptions.php:501
msgid ""
"A subscription has been removed from your cart. Due to payment gateway "
"restrictions, different subscription products can not be purchased at the "
"same time."
msgstr ""
-#: woocommerce-subscriptions.php:505
+#: woocommerce-subscriptions.php:507
msgid ""
"A subscription has been removed from your cart. Products and subscriptions "
"can not be purchased at the same time."
msgstr ""
-#: woocommerce-subscriptions.php:647 woocommerce-subscriptions.php:664
+#: woocommerce-subscriptions.php:649 woocommerce-subscriptions.php:666
#. translators: placeholder is a number, this is for the teens
#. translators: placeholder is a number, numbers ending in 4-9, 0
msgid "%sth"
msgstr ""
-#: woocommerce-subscriptions.php:652
+#: woocommerce-subscriptions.php:654
#. translators: placeholder is a number, numbers ending in 1
msgid "%sst"
msgstr ""
-#: woocommerce-subscriptions.php:656
+#: woocommerce-subscriptions.php:658
#. translators: placeholder is a number, numbers ending in 2
msgid "%snd"
msgstr ""
-#: woocommerce-subscriptions.php:660
+#: woocommerce-subscriptions.php:662
#. translators: placeholder is a number, numbers ending in 3
msgid "%srd"
msgstr ""
-#: woocommerce-subscriptions.php:690
+#: woocommerce-subscriptions.php:692
#. translators: 1$-2$: opening and closing tags, 3$-4$: link tags,
#. takes to woocommerce plugin on wp.org, 5$-6$: opening and closing link tags,
#. leads to plugins.php in admin
@@ -5000,7 +5000,7 @@ msgid ""
"%5$sinstall & activate WooCommerce »%6$s"
msgstr ""
-#: woocommerce-subscriptions.php:693
+#: woocommerce-subscriptions.php:695
#. translators: 1$-2$: opening and closing tags, 3$: minimum supported
#. WooCommerce version, 4$-5$: opening and closing link tags, leads to plugin
#. admin
@@ -5010,11 +5010,11 @@ msgid ""
"WooCommerce to version %3$s or newer »%5$s"
msgstr ""
-#: woocommerce-subscriptions.php:724
+#: woocommerce-subscriptions.php:726
msgid "Variable Subscription"
msgstr ""
-#: woocommerce-subscriptions.php:820
+#: woocommerce-subscriptions.php:822
msgid ""
"%1$sWarning!%2$s We can see the %1$sWooCommerce Subscriptions Early "
"Renewal%2$s plugin is active. Version %3$s of %1$sWooCommerce "
@@ -5023,11 +5023,11 @@ msgid ""
"avoid any conflicts."
msgstr ""
-#: woocommerce-subscriptions.php:823
+#: woocommerce-subscriptions.php:825
msgid "Installed Plugins"
msgstr ""
-#: woocommerce-subscriptions.php:892
+#: woocommerce-subscriptions.php:894
#. translators: 1$-2$: opening and closing tags. 3$-4$: opening and
#. closing link tags for learn more. Leads to duplicate site article on docs.
#. 5$-6$: Opening and closing link to production URL. 7$: Production URL .
@@ -5039,19 +5039,19 @@ msgid ""
"the site's URL. %3$sLearn more »%4$s."
msgstr ""
-#: woocommerce-subscriptions.php:901
+#: woocommerce-subscriptions.php:903
msgid "Quit nagging me (but don't enable automatic payments)"
msgstr ""
-#: woocommerce-subscriptions.php:906
+#: woocommerce-subscriptions.php:908
msgid "Enable automatic payments"
msgstr ""
-#: woocommerce-subscriptions.php:1112
+#: woocommerce-subscriptions.php:1114
msgid "Support"
msgstr ""
-#: woocommerce-subscriptions.php:1195
+#: woocommerce-subscriptions.php:1197
#. translators: placeholders are opening and closing tags. Leads to docs on
#. version 2
msgid ""
@@ -5062,14 +5062,14 @@ msgid ""
"2.0 »%s"
msgstr ""
-#: woocommerce-subscriptions.php:1210
+#: woocommerce-subscriptions.php:1212
msgid ""
"Warning! You are running version %s of WooCommerce Subscriptions plugin "
"code but your database has been upgraded to Subscriptions version 2.0. This "
"will cause major problems on your store."
msgstr ""
-#: woocommerce-subscriptions.php:1211
+#: woocommerce-subscriptions.php:1213
msgid ""
"Please upgrade the WooCommerce Subscriptions plugin to version 2.0 or newer "
"immediately. If you need assistance, after upgrading to Subscriptions v2.0, "
@@ -5183,12 +5183,12 @@ msgctxt "refers to live site"
msgid "Live"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:57
+#: includes/admin/class-wcs-admin-meta-boxes.php:59
msgctxt "meta box title"
msgid "Subscription Data"
msgstr ""
-#: includes/admin/class-wcs-admin-meta-boxes.php:59
+#: includes/admin/class-wcs-admin-meta-boxes.php:61
msgctxt "meta box title"
msgid "Schedule"
msgstr ""
@@ -5356,8 +5356,8 @@ msgstr ""
#: includes/admin/meta-boxes/views/html-related-orders-row.php:19
#: includes/class-wc-subscriptions-renewal-order.php:157
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:240
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:337
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:241
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:338
#: templates/myaccount/my-subscriptions.php:38
#: templates/myaccount/related-orders.php:44
#: templates/myaccount/related-subscriptions.php:32
@@ -5367,7 +5367,7 @@ msgstr ""
#: includes/class-wc-subscriptions-addresses.php:206
#: includes/class-wc-subscriptions-change-payment-gateway.php:776
-#: includes/class-wcs-query.php:109
+#: includes/class-wcs-query.php:110
msgctxt "hash before order number"
msgid "Subscription #%s"
msgstr ""
@@ -5524,7 +5524,7 @@ msgid "Subscription renewal payment retry:"
msgstr ""
#: includes/early-renewal/class-wcs-cart-early-renewal.php:150
-#: includes/early-renewal/class-wcs-cart-early-renewal.php:197
+#: includes/early-renewal/class-wcs-cart-early-renewal.php:198
msgctxt "used in order note as reason for why subscription status changed"
msgid "Customer requested to renew early:"
msgstr ""
@@ -5743,7 +5743,7 @@ msgctxt "input field placeholder for day field for annual subscriptions"
msgid "Day"
msgstr ""
-#: includes/class-wcs-cart-renewal.php:682
+#: includes/class-wcs-cart-renewal.php:677
msgctxt ""
"Used in WooCommerce by removed item notification: \"_All linked "
"subscription items were_ removed. Undo?\" Filter for item title."
@@ -5945,7 +5945,7 @@ msgctxt "default email subject for suspended emails sent to the admin"
msgid "[%s] Subscription Suspended"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:355
+#: includes/gateways/paypal/class-wcs-paypal.php:362
#: includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:208
#: includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:315
#: includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-api-request.php:326
@@ -5960,7 +5960,7 @@ msgctxt ""
msgid "#"
msgstr ""
-#: includes/gateways/paypal/class-wcs-paypal.php:619
+#: includes/gateways/paypal/class-wcs-paypal.php:626
msgctxt ""
"used in User Agent data sent to PayPal to help identify where a payment "
"came from"
@@ -6088,7 +6088,7 @@ msgid "2.5"
msgstr ""
#: includes/upgrades/templates/wcs-about-2-0.php:36
-#: woocommerce-subscriptions.php:1111
+#: woocommerce-subscriptions.php:1113
msgctxt "short for documents"
msgid "Docs"
msgstr ""
diff --git a/woocommerce-subscriptions.php b/woocommerce-subscriptions.php
index bf71c9a..af4e0ec 100755
--- a/woocommerce-subscriptions.php
+++ b/woocommerce-subscriptions.php
@@ -5,10 +5,10 @@
* Description: Sell products and services with recurring payments in your WooCommerce Store.
* Author: Prospress Inc.
* Author URI: https://prospress.com/
- * Version: 2.5.3
+ * Version: 2.5.6
*
* WC requires at least: 3.0
- * WC tested up to: 3.5
+ * WC tested up to: 3.6
* Woo: 27147:6115e6d7e297b623a169fdcf5728b224
*
* Copyright 2017 Prospress, Inc. (email : freedoms@prospress.com)
@@ -113,7 +113,7 @@ class WC_Subscriptions {
public static $plugin_file = __FILE__;
- public static $version = '2.5.3';
+ public static $version = '2.5.6';
public static $wc_minimum_supported_version = '3.0';
@@ -484,7 +484,9 @@ class WC_Subscriptions {
// If the product is sold individually or if the cart doesn't already contain this product, empty the cart.
if ( ( $product && $product->is_sold_individually() ) || ! WC()->cart->find_product_in_cart( $cart_item_id ) ) {
+ $coupons = WC()->cart->get_applied_coupons();
WC()->cart->empty_cart();
+ WC()->cart->set_applied_coupons( $coupons );
}
} elseif ( $is_subscription && wcs_cart_contains_renewal() && ! $multiple_subscriptions_possible && ! $manual_renewals_enabled ) {