From 98a2ef42f7fd22999641284019632c7f90297269 Mon Sep 17 00:00:00 2001 From: Prospress Inc Date: Fri, 31 May 2019 09:16:48 +0200 Subject: [PATCH] 2.5.6 --- changelog.txt | 25 + .../admin/class-wc-subscriptions-admin.php | 4 +- includes/admin/class-wcs-admin-meta-boxes.php | 25 +- .../reports/class-wcs-report-dashboard.php | 2 +- includes/class-wc-subscriptions-checkout.php | 4 +- includes/class-wc-subscriptions-coupon.php | 47 + includes/class-wc-subscriptions-switcher.php | 2 +- includes/class-wcs-cart-renewal.php | 30 +- includes/class-wcs-limiter.php | 19 +- includes/class-wcs-query.php | 20 +- includes/class-wcs-staging.php | 13 + .../class-wcs-cart-early-renewal.php | 80 +- ...lass-wc-subscriptions-payment-gateways.php | 8 +- includes/gateways/paypal/class-wcs-paypal.php | 44 + .../includes/admin/class-wcs-paypal-admin.php | 58 +- ...ypal-reference-transaction-ipn-handler.php | 65 +- .../action-scheduler/action-scheduler.php | 16 +- .../classes/ActionScheduler_AdminView.php | 2 +- .../ActionScheduler_WPCLI_QueueRunner.php | 17 +- .../ActionScheduler_wcSystemStatus.php | 20 +- .../classes/ActionScheduler_wpPostStore.php | 26 +- .../libraries/action-scheduler/composer.json | 2 +- .../libraries/action-scheduler/composer.lock | 2909 ----------------- .../libraries/action-scheduler/docs/CNAME | 1 - .../action-scheduler/docs/_config.yml | 7 - .../docs/_layouts/default.html | 57 - .../libraries/action-scheduler/docs/admin.md | 22 - .../docs/android-chrome-192x192.png | Bin 17032 -> 0 bytes .../docs/android-chrome-256x256.png | Bin 24599 -> 0 bytes .../libraries/action-scheduler/docs/api.md | 179 - .../docs/apple-touch-icon.png | Bin 8053 -> 0 bytes .../docs/assets/css/style.scss | 32 - .../action-scheduler/docs/browserconfig.xml | 9 - .../libraries/action-scheduler/docs/faq.md | 101 - .../action-scheduler/docs/favicon-16x16.png | Bin 1160 -> 0 bytes .../action-scheduler/docs/favicon-32x32.png | Bin 1937 -> 0 bytes .../action-scheduler/docs/favicon.ico | Bin 15086 -> 0 bytes .../docs/google14ef723abb376cd3.html | 1 - .../libraries/action-scheduler/docs/index.md | 68 - .../action-scheduler/docs/mstile-150x150.png | Bin 4246 -> 0 bytes .../libraries/action-scheduler/docs/perf.md | 127 - .../docs/safari-pinned-tab.svg | 40 - .../action-scheduler/docs/site.webmanifest | 19 - .../libraries/action-scheduler/docs/usage.md | 123 - .../libraries/action-scheduler/docs/wp-cli.md | 73 - .../libraries/action-scheduler/license.txt | 8 +- includes/wcs-compatibility-functions.php | 7 +- languages/woocommerce-subscriptions.pot | 240 +- woocommerce-subscriptions.php | 8 +- 49 files changed, 531 insertions(+), 4029 deletions(-) delete mode 100755 includes/libraries/action-scheduler/composer.lock delete mode 100755 includes/libraries/action-scheduler/docs/CNAME delete mode 100755 includes/libraries/action-scheduler/docs/_config.yml delete mode 100755 includes/libraries/action-scheduler/docs/_layouts/default.html delete mode 100755 includes/libraries/action-scheduler/docs/admin.md delete mode 100755 includes/libraries/action-scheduler/docs/android-chrome-192x192.png delete mode 100755 includes/libraries/action-scheduler/docs/android-chrome-256x256.png delete mode 100755 includes/libraries/action-scheduler/docs/api.md delete mode 100755 includes/libraries/action-scheduler/docs/apple-touch-icon.png delete mode 100755 includes/libraries/action-scheduler/docs/assets/css/style.scss delete mode 100755 includes/libraries/action-scheduler/docs/browserconfig.xml delete mode 100755 includes/libraries/action-scheduler/docs/faq.md delete mode 100755 includes/libraries/action-scheduler/docs/favicon-16x16.png delete mode 100755 includes/libraries/action-scheduler/docs/favicon-32x32.png delete mode 100755 includes/libraries/action-scheduler/docs/favicon.ico delete mode 100755 includes/libraries/action-scheduler/docs/google14ef723abb376cd3.html delete mode 100755 includes/libraries/action-scheduler/docs/index.md delete mode 100755 includes/libraries/action-scheduler/docs/mstile-150x150.png delete mode 100755 includes/libraries/action-scheduler/docs/perf.md delete mode 100755 includes/libraries/action-scheduler/docs/safari-pinned-tab.svg delete mode 100755 includes/libraries/action-scheduler/docs/site.webmanifest delete mode 100755 includes/libraries/action-scheduler/docs/usage.md delete mode 100755 includes/libraries/action-scheduler/docs/wp-cli.md diff --git a/changelog.txt b/changelog.txt index 725f9e9..30dfbc6 100755 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,30 @@ *** WooCommerce Subscriptions Changelog *** +2019.05.30 - version 2.5.6 +* Fix: Exclude core order properties from the meta copied from the subscription to early renewal orders. #PR3331 +* Tweak: Add the 'is-active' class to My Account > My Subscription menu item when user is on View Subscription page. PR#3328 + +2019.05.13 - version 2.5.5 +* New: Add support for admin users to re-display the staging site notice if it was previously hidden. PR#3321 +* Fix: Revert a fix released in 2.5.4 which attempted to implement a workaround for SiteGround's staging sites. PR#3323 reverts: PR#3285 + +2019.05.08 - version 2.5.4 +* Fix: Don't save empty product sale date ranges. Fixes an issue where the sale price appears in 1970 after a timezone offset change. PR#3283 +* Fix: Validate subscription coupon types for non subscription and non-signup fee products. Fixes an issue where subscription coupons limited to 1 use never apply to some mixed carts. PR#3280 +* Fix: Fix the PHP warnings that occur on the WP Dashboard page caused by incorrect use of args in a sprintf string. PR#3290 +* Fix: Maintain any cart coupons when emptying the cart because of the store's mixed checkout settings. PR#3291 +* Fix: Fix fatal errors when calling wcs_get_objects_property with a non-object parameter. PR#3308 +* Fix: Use the raw SERVER_ADMIN variable to generate site URL on SiteGround sites. This fixes issues where SiteGround hosted staging sites weren't being recognized as staging sites due to SiteGround's special handling of the site url stored in the DB. PR#3285 +* Fix: Don't check subscription limitation purchasability on admin screens. PR#3311 +* Fix: Pass the 4th param to callbacks on woocommerce_checkout_create_order_shipping_item. PR#3317 +* Fix: Remove order-specific e-mail actions from "Subscription actions" drop-down. PR#3299 +* Fix: Add the item subtotal tax when manually renewing where the prices included tax. Fixes an issue where if the store's tax rates change, customers renewing manually may get a strange item price. PR#3286 +* Tweak: Keep renewal orders "created_via" meta as "subscription" when paid via the checkout. PR#3301 +* Tweak: Remove cancelled PayPal Reference Transactions Billing Agreements from manual, non-PayPal, and ended subscriptions. Fixes an issue where a cancelled subscription is reactivated and attempts to use a cancelled billing agreement. PR#3263 +* Tweak: Increase the WC tested version to 3.6.0. PR#3313 +* Tweak: Update Action Scheduler to 2.2.4. PR#3312 +* New: Add a filter to allow 3rd parties to disable auto-switching. PR#3316 + 2019.03.20 - version 2.5.3 * New: Update Action Scheduler to version 2.2.1. PR#3266 * Fix: Display the subscription status names (rather than the raw status) in the edit subscription related orders table. PR#3272 diff --git a/includes/admin/class-wc-subscriptions-admin.php b/includes/admin/class-wc-subscriptions-admin.php index 5449821..0060855 100755 --- a/includes/admin/class-wc-subscriptions-admin.php +++ b/includes/admin/class-wc-subscriptions-admin.php @@ -467,8 +467,8 @@ class WC_Subscriptions_Admin { $site_offset = get_option( 'gmt_offset' ) * 3600; // Save the timestamps in UTC time, the way WC does it. - $date_from = ( isset( $_POST['_sale_price_dates_from'] ) ) ? wcs_date_to_time( $_POST['_sale_price_dates_from'] ) - $site_offset : ''; - $date_to = ( isset( $_POST['_sale_price_dates_to'] ) ) ? wcs_date_to_time( $_POST['_sale_price_dates_to'] ) - $site_offset : ''; + $date_from = ( ! empty( $_POST['_sale_price_dates_from'] ) ) ? wcs_date_to_time( $_POST['_sale_price_dates_from'] ) - $site_offset : ''; + $date_to = ( ! empty( $_POST['_sale_price_dates_to'] ) ) ? wcs_date_to_time( $_POST['_sale_price_dates_to'] ) - $site_offset : ''; $now = gmdate( 'U' ); diff --git a/includes/admin/class-wcs-admin-meta-boxes.php b/includes/admin/class-wcs-admin-meta-boxes.php index 12b4d61..b21035b 100755 --- a/includes/admin/class-wcs-admin-meta-boxes.php +++ b/includes/admin/class-wcs-admin-meta-boxes.php @@ -43,7 +43,9 @@ class WCS_Admin_Meta_Boxes { add_action( 'woocommerce_order_action_wcs_create_pending_renewal', __CLASS__ . '::create_pending_renewal_action_request', 10, 1 ); add_action( 'woocommerce_order_action_wcs_create_pending_parent', __CLASS__ . '::create_pending_parent_action_request', 10, 1 ); - add_filter( 'woocommerce_resend_order_emails_available', __CLASS__ . '::remove_order_email_actions', 0, 1 ); + if ( WC_Subscriptions::is_woocommerce_pre( '3.2' ) ) { + add_filter( 'woocommerce_resend_order_emails_available', __CLASS__ . '::remove_order_email_actions', 0, 1 ); + } add_action( 'woocommerce_order_action_wcs_retry_renewal_payment', __CLASS__ . '::process_retry_renewal_payment_action_request', 10, 1 ); } @@ -147,16 +149,21 @@ class WCS_Admin_Meta_Boxes { public static function add_subscription_actions( $actions ) { global $theorder; - if ( wcs_is_subscription( $theorder ) && ! $theorder->has_status( wcs_get_subscription_ended_statuses() ) ) { - - if ( $theorder->payment_method_supports( 'subscription_date_changes' ) && $theorder->has_status( 'active' ) ) { - $actions['wcs_process_renewal'] = esc_html__( 'Process renewal', 'woocommerce-subscriptions' ); + if ( wcs_is_subscription( $theorder ) ) { + if ( ! WC_Subscriptions::is_woocommerce_pre( '3.2' ) ) { + unset( $actions['send_order_details'], $actions['send_order_details_admin'] ); } - if ( count( $theorder->get_related_orders() ) > 0 ) { - $actions['wcs_create_pending_renewal'] = esc_html__( 'Create pending renewal order', 'woocommerce-subscriptions' ); - } else { - $actions['wcs_create_pending_parent'] = esc_html__( 'Create pending parent order', 'woocommerce-subscriptions' ); + if ( ! $theorder->has_status( wcs_get_subscription_ended_statuses() ) ) { + if ( $theorder->payment_method_supports( 'subscription_date_changes' ) && $theorder->has_status( 'active' ) ) { + $actions['wcs_process_renewal'] = esc_html__( 'Process renewal', 'woocommerce-subscriptions' ); + } + + if ( count( $theorder->get_related_orders() ) > 0 ) { + $actions['wcs_create_pending_renewal'] = esc_html__( 'Create pending renewal order', 'woocommerce-subscriptions' ); + } else { + $actions['wcs_create_pending_parent'] = esc_html__( 'Create pending parent order', 'woocommerce-subscriptions' ); + } } } else if ( self::can_renewal_order_be_retried( $theorder ) ) { $actions['wcs_retry_renewal_payment'] = esc_html__( 'Retry Renewal Payment', 'woocommerce-subscriptions' ); diff --git a/includes/admin/reports/class-wcs-report-dashboard.php b/includes/admin/reports/class-wcs-report-dashboard.php index 6e14f3e..1882983 100755 --- a/includes/admin/reports/class-wcs-report-dashboard.php +++ b/includes/admin/reports/class-wcs-report-dashboard.php @@ -209,7 +209,7 @@ class WCS_Report_Dashboard { signup_count, 'woocommerce-subscriptions' ), $report_data->signup_count, '', '' ) ); + echo wp_kses_post( sprintf( _n( '%2$s%1$s signup%3$s subscription signups this month', '%2$s%1$s signups%3$s subscription signups this month', $report_data->signup_count, 'woocommerce-subscriptions' ), $report_data->signup_count, '', '' ) ); ?> diff --git a/includes/class-wc-subscriptions-checkout.php b/includes/class-wc-subscriptions-checkout.php index 79ea7f4..1e0bd94 100755 --- a/includes/class-wc-subscriptions-checkout.php +++ b/includes/class-wc-subscriptions-checkout.php @@ -301,8 +301,8 @@ class WC_Subscriptions_Checkout { $item->save(); // We need the item ID for old hooks, this can be removed once support for WC < 3.0 is dropped wc_do_deprecated_action( 'woocommerce_subscriptions_add_recurring_shipping_order_item', array( $subscription->get_id(), $item->get_id(), $package_key ), '2.2.0', 'CRUD and woocommerce_checkout_create_subscription_shipping_item action instead' ); - do_action( 'woocommerce_checkout_create_order_shipping_item', $item, $package_key, $package ); // WC 3.0+ will also trigger the deprecated 'woocommerce_add_shipping_order_item' hook - do_action( 'woocommerce_checkout_create_subscription_shipping_item', $item, $package_key, $package ); + do_action( 'woocommerce_checkout_create_order_shipping_item', $item, $package_key, $package, $subscription ); // WC 3.0+ will also trigger the deprecated 'woocommerce_add_shipping_order_item' hook + do_action( 'woocommerce_checkout_create_subscription_shipping_item', $item, $package_key, $package, $subscription ); } } } diff --git a/includes/class-wc-subscriptions-coupon.php b/includes/class-wc-subscriptions-coupon.php index c7add64..6d44da5 100755 --- a/includes/class-wc-subscriptions-coupon.php +++ b/includes/class-wc-subscriptions-coupon.php @@ -40,6 +40,16 @@ class WC_Subscriptions_Coupon { 'recurring_percent' => 1, ); + /** + * Subscription sign up fee coupon types. + * + * @var array + */ + private static $sign_up_fee_coupons = array( + 'sign_up_fee_percent' => 1, + 'sign_up_fee' => 1, + ); + /** * Virtual renewal coupon types. * @@ -84,6 +94,8 @@ class WC_Subscriptions_Coupon { // Hook recurring coupon functionality. add_action( 'plugins_loaded', array( __CLASS__, 'maybe_add_recurring_coupon_hooks' ) ); + + add_filter( 'woocommerce_coupon_is_valid_for_product', array( __CLASS__, 'validate_subscription_coupon_for_product' ), 10, 3 ); } /** @@ -1196,6 +1208,41 @@ class WC_Subscriptions_Coupon { return $price; } + /** + * Validates a subscription coupon's use for a given product. + * + * @since 2.5.4 + * + * @param bool $is_valid Whether the coupon is valid for the product. + * @param WC_Product $product The product object. + * @param WC_Coupon $coupon The coupon object. + * + * @return bool Whether the coupon is valid for the product. + */ + public static function validate_subscription_coupon_for_product( $is_valid, $product, $coupon ) { + + // Exit early if the coupon is already invalid. + if ( ! $is_valid ) { + return $is_valid; + } + + $coupon_type = $coupon->get_discount_type(); + $is_recurring_coupon = isset( self::$recurring_coupons[ $coupon_type ] ); + $is_sign_up_fee_coupon = isset( self::$sign_up_fee_coupons[ $coupon_type ] ); + + // Recurring and sign up fee coupons are not valid for non-subscription products. + if ( ( $is_recurring_coupon || $is_sign_up_fee_coupon ) && ! WC_Subscriptions_Product::is_subscription( $product ) ) { + $is_valid = false; + } + + // Sign up fee coupons are not valid for products without a sign up fee. + if ( $is_sign_up_fee_coupon && 0 === WC_Subscriptions_Product::get_sign_up_fee( $product ) ) { + $is_valid = false; + } + + return $is_valid; + } + /** * Store how much discount each coupon grants. * diff --git a/includes/class-wc-subscriptions-switcher.php b/includes/class-wc-subscriptions-switcher.php index 50d416c..17e29d9 100755 --- a/includes/class-wc-subscriptions-switcher.php +++ b/includes/class-wc-subscriptions-switcher.php @@ -260,7 +260,7 @@ class WC_Subscriptions_Switcher { } } - if ( self::can_item_be_switched_by_user( $item, $subscription ) ) { + if ( apply_filters( 'wcs_initiate_auto_switch', self::can_item_be_switched_by_user( $item, $subscription ), $item, $subscription ) ) { wp_redirect( add_query_arg( 'auto-switch', 'true', self::get_switch_url( $item_id, $item, $subscription ) ) ); exit; } diff --git a/includes/class-wcs-cart-renewal.php b/includes/class-wcs-cart-renewal.php index 64a1d35..e06240c 100755 --- a/includes/class-wcs-cart-renewal.php +++ b/includes/class-wcs-cart-renewal.php @@ -63,6 +63,9 @@ class WCS_Cart_Renewal { // Apply renewal discounts as pseudo coupons add_action( 'woocommerce_setup_cart_for_subscription_renewal', array( $this, 'setup_discounts' ) ); + + // Work around WC changing the "created_via" meta to "checkout" regardless of its previous value during checkout. + add_action( 'woocommerce_checkout_create_order', array( $this, 'maybe_preserve_order_created_via' ), 0, 1 ); } /** @@ -403,16 +406,8 @@ class WCS_Cart_Renewal { $price = $item_to_renew['line_subtotal']; - if ( $_product->is_taxable() && wc_prices_include_tax() ) { - - if ( apply_filters( 'woocommerce_adjust_non_base_location_prices', true ) ) { - $base_tax_rates = WC_Tax::get_base_tax_rates( wcs_get_objects_property( $_product, 'tax_class' ) ); - } else { - $base_tax_rates = WC_Tax::get_rates( wcs_get_objects_property( $_product, 'tax_class' ) ); - } - - $base_taxes_on_item = WC_Tax::calc_tax( $price, $base_tax_rates, false, false ); - $price += array_sum( $base_taxes_on_item ); + if ( $_product->is_taxable() && $subscription->get_prices_include_tax() ) { + $price += $item_to_renew['subtotal_tax']; } $_product->set_price( $price / $item_to_renew['qty'] ); @@ -1383,6 +1378,21 @@ class WCS_Cart_Renewal { } } + /** + * Makes sure a renewal order's "created via" meta is not changed to "checkout" by WC during checkout. + * + * @param WC_Order $order + * @since 2.5.4 + */ + public function maybe_preserve_order_created_via( $order ) { + $changes = $order->get_changes(); + $current_data = $order->get_data(); + + if ( isset( $changes['created_via'], $current_data['created_via'] ) && 'subscription' === $current_data['created_via'] && 'checkout' === $changes['created_via'] && wcs_order_contains_renewal( $order ) ) { + $order->set_created_via( 'subscription' ); + } + } + /* Deprecated */ /** diff --git a/includes/class-wcs-limiter.php b/includes/class-wcs-limiter.php index e88ddf6..b6dbdea 100755 --- a/includes/class-wcs-limiter.php +++ b/includes/class-wcs-limiter.php @@ -16,17 +16,16 @@ class WCS_Limiter { public static function init() { - //Add limiting subscriptions options on edit product page + // Add limiting subscriptions options on edit product page add_action( 'woocommerce_product_options_advanced', __CLASS__ . '::admin_edit_product_fields' ); - add_filter( 'woocommerce_subscription_is_purchasable', __CLASS__ . '::is_purchasable_switch', 12, 2 ); - - add_filter( 'woocommerce_subscription_variation_is_purchasable', __CLASS__ . '::is_purchasable_switch', 12, 2 ); - - add_filter( 'woocommerce_subscription_is_purchasable', __CLASS__ . '::is_purchasable_renewal', 12, 2 ); - - add_filter( 'woocommerce_subscription_variation_is_purchasable', __CLASS__ . '::is_purchasable_renewal', 12, 2 ); - + // Only attach limited subscription purchasability logic on the front end. + if ( ! is_admin() ) { + add_filter( 'woocommerce_subscription_is_purchasable', __CLASS__ . '::is_purchasable_switch', 12, 2 ); + add_filter( 'woocommerce_subscription_variation_is_purchasable', __CLASS__ . '::is_purchasable_switch', 12, 2 ); + add_filter( 'woocommerce_subscription_is_purchasable', __CLASS__ . '::is_purchasable_renewal', 12, 2 ); + add_filter( 'woocommerce_subscription_variation_is_purchasable', __CLASS__ . '::is_purchasable_renewal', 12, 2 ); + } } /** @@ -215,7 +214,7 @@ class WCS_Limiter { $is_purchasable = true; // Restoring cart from session, so need to check the cart in the session (wcs_cart_contains_renewal() only checks the cart) - } elseif ( WC()->session->cart ) { + } elseif ( ! empty( WC()->session->cart ) ) { foreach ( WC()->session->cart as $cart_item_key => $cart_item ) { if ( $product->get_id() == $cart_item['product_id'] && ( isset( $cart_item['subscription_renewal'] ) || isset( $cart_item['subscription_resubscribe'] ) ) ) { $is_purchasable = true; diff --git a/includes/class-wcs-query.php b/includes/class-wcs-query.php index 7f49076..1e5976c 100755 --- a/includes/class-wcs-query.php +++ b/includes/class-wcs-query.php @@ -31,6 +31,7 @@ class WCS_Query extends WC_Query { add_filter( 'woocommerce_get_endpoint_url', array( $this, 'maybe_redirect_to_only_subscription' ), 10, 2 ); add_action( 'woocommerce_account_subscriptions_endpoint', array( $this, 'endpoint_content' ) ); + add_filter( 'woocommerce_account_menu_item_classes', array( $this, 'maybe_add_active_class' ), 10, 2 ); } $this->init_query_vars(); @@ -136,7 +137,7 @@ class WCS_Query extends WC_Query { return $menu_items; } - if ( 1 == count( wcs_get_users_subscriptions() ) && apply_filters( 'wcs_my_account_redirect_to_single_subscription', true ) ) { + if ( 1 === count( wcs_get_users_subscriptions() ) && apply_filters( 'wcs_my_account_redirect_to_single_subscription', true ) ) { $label = __( 'My Subscription', 'woocommerce-subscriptions' ); } else { $label = __( 'Subscriptions', 'woocommerce-subscriptions' ); @@ -356,4 +357,21 @@ class WCS_Query extends WC_Query { public function add_wcs_query_vars( $query_vars ) { return array_merge( $query_vars, $this->query_vars ); } + + /** + * Adds `is-active` class to Subscriptions label when we're viewing a single Subscription. + * + * @param array $classes The classes present in the current endpoint. + * @param string $endpoint The endpoint/label we're filtering. + * + * @return array + * @since 2.5.6 + */ + public function maybe_add_active_class( $classes, $endpoint ) { + if ( ! isset( $classes['is-active'] ) && 'subscriptions' === $endpoint && wcs_is_view_subscription_page() ) { + $classes[] = 'is-active'; + } + + return $classes; + } } diff --git a/includes/class-wcs-staging.php b/includes/class-wcs-staging.php index da28dd9..eab8f07 100755 --- a/includes/class-wcs-staging.php +++ b/includes/class-wcs-staging.php @@ -14,6 +14,7 @@ class WCS_Staging { public static function init() { add_action( 'woocommerce_generated_manual_renewal_order', array( __CLASS__, 'maybe_record_staging_site_renewal' ) ); add_filter( 'woocommerce_register_post_type_subscription', array( __CLASS__, 'maybe_add_menu_badge' ) ); + add_action( 'wp_loaded', array( __CLASS__, 'maybe_reset_admin_notice' ) ); } /** @@ -54,4 +55,16 @@ class WCS_Staging { return $subscription_order_type_data; } + + /** + * Handles admin requests to redisplay the staging site admin notice. + * + * @since 2.5.5 + */ + public static function maybe_reset_admin_notice() { + if ( isset( $_REQUEST['wcs_display_staging_notice'] ) && is_admin() && current_user_can( 'manage_options' ) ) { + delete_option( 'wcs_ignore_duplicate_siteurl_notice' ); + wp_safe_redirect( remove_query_arg( array( 'wcs_display_staging_notice' ) ) ); + } + } } diff --git a/includes/early-renewal/class-wcs-cart-early-renewal.php b/includes/early-renewal/class-wcs-cart-early-renewal.php index 8ca8607..446939a 100755 --- a/includes/early-renewal/class-wcs-cart-early-renewal.php +++ b/includes/early-renewal/class-wcs-cart-early-renewal.php @@ -158,16 +158,17 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal { * @since 2.5.2 */ public function copy_subscription_meta_to_order( $order ) { - $cart_item = $this->cart_contains(); - if ( ! $cart_item ) { - return; + if ( $this->cart_contains() ) { + // Get the subscription. + $subscription = $this->get_order(); + + if ( $subscription ) { + // Copy all meta, excluding core properties (totals etc), from the subscription to new renewal order + add_filter( 'wcs_renewal_order_meta', array( $this, 'exclude_core_order_meta_properties' ) ); + wcs_copy_order_meta( $subscription, $order, 'renewal_order' ); + remove_filter( 'wcs_renewal_order_meta', array( $this, 'exclude_core_order_meta_properties' ) ); + } } - - // Get the subscription. - $subscription = wcs_get_subscription( $cart_item[ $this->cart_item_key ]['subscription_id'] ); - - // Copy all meta from subscription to new renewal order - wcs_copy_order_meta( $subscription, $order, 'renewal_order' ); } /** @@ -415,4 +416,65 @@ class WCS_Cart_Early_Renewal extends WCS_Cart_Renewal { } } } + + /** + * Excludes core order meta properties from the meta copied from the subscription. + * + * Attached to the dynamic hook 'wcs_renewal_order_meta' which is triggered by wcs_copy_order_meta + * when copying meta from the subscription to the early renewal order. + * + * @since 2.5.6 + * + * @param array $order_meta The meta keys and values to copy from the subscription to the early renewal order. + * @return array The subscription meta to copy to the early renewal order. + */ + public function exclude_core_order_meta_properties( $order_meta ) { + + // Additional meta keys to exclude. These are in addition to the meta keys already excluded by wcs_copy_order_meta(). + $excluded_meta_keys = array( + '_customer_user' => 1, + '_order_currency' => 1, + '_prices_include_tax' => 1, + '_order_version' => 1, + '_shipping_first_name' => 1, + '_shipping_last_name' => 1, + '_shipping_company' => 1, + '_shipping_address_1' => 1, + '_shipping_address_2' => 1, + '_shipping_city' => 1, + '_shipping_state' => 1, + '_shipping_postcode' => 1, + '_shipping_country' => 1, + '_shipping_address_index' => 1, + '_billing_first_name' => 1, + '_billing_last_name' => 1, + '_billing_company' => 1, + '_billing_address_1' => 1, + '_billing_address_2' => 1, + '_billing_city' => 1, + '_billing_state' => 1, + '_billing_postcode' => 1, + '_billing_country' => 1, + '_billing_email' => 1, + '_billing_phone' => 1, + '_billing_address_index' => 1, + 'is_vat_exempt' => 1, + '_customer_ip_address' => 1, + '_customer_user_agent' => 1, + '_cart_discount' => 1, + '_cart_discount_tax' => 1, + '_order_shipping' => 1, + '_order_shipping_tax' => 1, + '_order_tax' => 1, + '_order_total' => 1, + ); + + foreach ( $order_meta as $index => $meta ) { + if ( isset( $excluded_meta_keys[ $meta['meta_key'] ] ) ) { + unset( $order_meta[ $index ] ); + } + } + + return $order_meta; + } } diff --git a/includes/gateways/class-wc-subscriptions-payment-gateways.php b/includes/gateways/class-wc-subscriptions-payment-gateways.php index 88ea101..d11849c 100755 --- a/includes/gateways/class-wc-subscriptions-payment-gateways.php +++ b/includes/gateways/class-wc-subscriptions-payment-gateways.php @@ -174,18 +174,16 @@ class WC_Subscriptions_Payment_Gateways { /** * Fire a gateway specific hook for when a subscription renewal payment is due. * + * @param WC_Order $renewal_order The renewal order to trigger the payment gateway hook for. * @since 2.1.0 */ public static function trigger_gateway_renewal_payment_hook( $renewal_order ) { - - $renewal_order_payment_method = wcs_get_objects_property( $renewal_order, 'payment_method' ); - - if ( ! empty( $renewal_order ) && $renewal_order->get_total() > 0 && ! empty( $renewal_order_payment_method ) ) { + if ( ! empty( $renewal_order ) && $renewal_order->get_total() > 0 && $renewal_order->get_payment_method() ) { // Make sure gateways are setup WC()->payment_gateways(); - do_action( 'woocommerce_scheduled_subscription_payment_' . $renewal_order_payment_method, $renewal_order->get_total(), $renewal_order ); + do_action( 'woocommerce_scheduled_subscription_payment_' . $renewal_order->get_payment_method(), $renewal_order->get_total(), $renewal_order ); } } diff --git a/includes/gateways/paypal/class-wcs-paypal.php b/includes/gateways/paypal/class-wcs-paypal.php index 0c42dbf..bfb5d44 100755 --- a/includes/gateways/paypal/class-wcs-paypal.php +++ b/includes/gateways/paypal/class-wcs-paypal.php @@ -30,6 +30,13 @@ class WCS_PayPal { /** @var Array cache of PayPal Standard settings in WooCommerce */ protected static $paypal_settings; + /** + * An internal cache of subscription IDs with a specific PayPal Standard Profile ID or Reference Transaction Billing Agreement. + * + * @var int[][] + */ + protected static $subscriptions_by_paypal_id = array(); + /** * Main PayPal Instance, ensures only one instance is/can be loaded * @@ -688,4 +695,41 @@ class WCS_PayPal { return $available_gateways; } + + /** + * Gets subscriptions with a given paypal subscription id. + * + * @since 2.5.4 + * @param string $paypal_id The PayPal Standard Profile ID or PayPal Reference Transactions Billing Agreement. + * @param string $return Optional. The type to return. Can be 'ids' to return subscription IDs or 'objects' to return WC_Subscription objects. Default 'ids'. + * @return WC_Subscription[]|int[] Subscriptions (objects or IDs) with the PayPal Profile ID or Billing Agreement stored in meta. + */ + public static function get_subscriptions_by_paypal_id( $paypal_id, $return = 'ids' ) { + + if ( ! isset( self::$subscriptions_by_paypal_id[ $paypal_id ] ) ) { + $subscription_ids = get_posts( array( + 'posts_per_page' => -1, + 'post_type' => 'shop_subscription', + 'post_status' => 'any', + 'fields' => 'ids', + 'meta_query' => array( + array( + 'key' => '_paypal_subscription_id', + 'compare' => '=', + 'value' => $paypal_id, + ), + ), + ) ); + + self::$subscriptions_by_paypal_id[ $paypal_id ] = array_combine( $subscription_ids, $subscription_ids ); + } + + if ( 'objects' === $return ) { + $subscriptions = array_filter( array_map( 'wcs_get_subscription', self::$subscriptions_by_paypal_id[ $paypal_id ] ) ); + } else { + $subscriptions = self::$subscriptions_by_paypal_id[ $paypal_id ]; + } + + return $subscriptions; + } } diff --git a/includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php b/includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php index 1376f30..8819b4c 100755 --- a/includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php +++ b/includes/gateways/paypal/includes/admin/class-wcs-paypal-admin.php @@ -248,35 +248,39 @@ class WCS_PayPal_Admin { * @param WC_Subscription $subscription */ public static function profile_link( $subscription ) { - if ( wcs_is_subscription( $subscription ) && ! $subscription->is_manual() && 'paypal' == $subscription->get_payment_method() ) { - - $paypal_profile_id = wcs_get_paypal_id( $subscription ); - - if ( ! empty( $paypal_profile_id ) ) { - - $url = ''; - - if ( false === wcs_is_paypal_profile_a( $paypal_profile_id, 'billing_agreement' ) ) { - // Standard subscription - $url = 'https://www.paypal.com/?cmd=_profile-recurring-payments&encrypted_profile_id=' . $paypal_profile_id; - } else if ( wcs_is_paypal_profile_a( $paypal_profile_id, 'billing_agreement' ) ) { - // Reference Transaction subscription - $url = 'https://www.paypal.com/?cmd=_profile-merchant-pull&encrypted_profile_id=' . $paypal_profile_id . '&mp_id=' . $paypal_profile_id . '&return_to=merchant&flag_flow=merchant'; - } - - echo '
'; - echo '

'; - echo esc_html( __( 'PayPal Subscription ID:', 'woocommerce-subscriptions' ) ); - echo ''; - if ( ! empty( $url ) ) { - echo '' . esc_html( $paypal_profile_id ) . ''; - } else { - echo esc_html( $paypal_profile_id ); - } - echo '

'; - } + if ( ! wcs_is_subscription( $subscription ) || $subscription->is_manual() || 'paypal' != $subscription->get_payment_method() ) { + return; } + $paypal_profile_id = wcs_get_paypal_id( $subscription ); + + if ( empty( $paypal_profile_id ) ) { + return; + } + + $url = ''; + $domain = WCS_PayPal::get_option( 'testmode' ) === 'yes' ? 'sandbox.paypal' : 'paypal'; + + if ( false === wcs_is_paypal_profile_a( $paypal_profile_id, 'billing_agreement' ) ) { + // Standard subscription + $url = "https://www.{$domain}.com/?cmd=_profile-recurring-payments&encrypted_profile_id={$paypal_profile_id}"; + } elseif ( wcs_is_paypal_profile_a( $paypal_profile_id, 'billing_agreement' ) ) { + // Reference Transaction subscription + $url = "https://www.{$domain}.com/?cmd=_profile-merchant-pull&encrypted_profile_id={$paypal_profile_id}&mp_id={$paypal_profile_id}&return_to=merchant&flag_flow=merchant"; + } + + echo '
'; + echo '

'; + echo esc_html( __( 'PayPal Subscription ID:', 'woocommerce-subscriptions' ) ); + echo ''; + + if ( ! empty( $url ) ) { + echo '' . esc_html( $paypal_profile_id ) . ''; + } else { + echo esc_html( $paypal_profile_id ); + } + + echo '

'; } /** diff --git a/includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-ipn-handler.php b/includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-ipn-handler.php index 1d5f9f7..80ed3a2 100755 --- a/includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-ipn-handler.php +++ b/includes/gateways/paypal/includes/class-wcs-paypal-reference-transaction-ipn-handler.php @@ -51,6 +51,7 @@ class WCS_PayPal_Reference_Transaction_IPN_Handler extends WCS_PayPal_Standard_I case 'mp_cancel': $this->cancel_subscriptions( $transaction_details['mp_id'] ); + $this->remove_billing_agreement_from_subscriptions( $transaction_details['mp_id'] ); break; case 'merch_pmt' : @@ -84,50 +85,44 @@ class WCS_PayPal_Reference_Transaction_IPN_Handler extends WCS_PayPal_Standard_I } /** - * Find all subscription with a given billing agreement ID and cancel them becasue that billing agreement has been + * Find all subscription with a given billing agreement ID and cancel them because that billing agreement has been * cancelled at PayPal, and therefore, no future payments can be charged. * * @since 2.0 */ protected function cancel_subscriptions( $billing_agreement_id ) { - - $subscription_ids = get_posts( array( - 'posts_per_page' => -1, - 'post_type' => 'shop_subscription', - 'post_status' => 'any', - 'fields' => 'ids', - 'orderby' => 'date', - 'order' => 'DESC', - 'meta_query' => array( - array( - 'key' => '_paypal_subscription_id', - 'compare' => '=', - 'value' => $billing_agreement_id, - ), - ), - ) ); - - if ( empty( $subscription_ids ) ) { - return; - } - $note = esc_html__( 'Billing agreement cancelled at PayPal.', 'woocommerce-subscriptions' ); - foreach ( $subscription_ids as $subscription_id ) { + foreach ( WCS_PayPal::get_subscriptions_by_paypal_id( $billing_agreement_id, 'objects' ) as $subscription ) { + $is_paypal_subscription = ! $subscription->is_manual() && 'paypal' === $subscription->get_payment_method(); - $subscription = wcs_get_subscription( $subscription_id ); - - // Only cancel valid subscriptions using PayPal as the payment method that have not yet been ended - if ( false == $subscription || $subscription->is_manual() || 'paypal' != $subscription->get_payment_method() || $subscription->has_status( wcs_get_subscription_ended_statuses() ) ) { - continue; - } - - try { - $subscription->cancel_order( $note ); - WC_Gateway_Paypal::log( sprintf( 'Subscription %s Cancelled: %s', $subscription_id, $note ) ); - } catch ( Exception $e ) { - WC_Gateway_Paypal::log( sprintf( 'Unable to cancel subscription %s: %s', $subscription_id, $e->getMessage() ) ); + // Cancel PayPal subscriptions which haven't ended yet. + if ( $is_paypal_subscription && ! $subscription->has_status( wcs_get_subscription_ended_statuses() ) ) { + try { + $subscription->cancel_order( $note ); + WC_Gateway_Paypal::log( sprintf( 'Subscription %s Cancelled: %s', $subscription->get_id(), $note ) ); + } catch ( Exception $e ) { + WC_Gateway_Paypal::log( sprintf( 'Unable to cancel subscription %s: %s', $subscription->get_id(), $e->getMessage() ) ); + } } } } + + /** + * Removes a billing agreement from all subscriptions. + * + * @since 2.5.4 + * @param string $billing_agreement_id The billing agreement to remove. + */ + protected function remove_billing_agreement_from_subscriptions( $billing_agreement_id ) { + foreach ( WCS_PayPal::get_subscriptions_by_paypal_id( $billing_agreement_id, 'objects' ) as $subscription ) { + if ( 'paypal' === $subscription->get_payment_method() ) { + $subscription->set_payment_method(); + } + + $subscription->delete_meta_data( '_paypal_subscription_id' ); + $subscription->update_meta_data( '_cancelled_paypal_billing_agreement', $billing_agreement_id ); + $subscription->save(); + } + } } diff --git a/includes/libraries/action-scheduler/action-scheduler.php b/includes/libraries/action-scheduler/action-scheduler.php index ce8fee4..8c3117d 100755 --- a/includes/libraries/action-scheduler/action-scheduler.php +++ b/includes/libraries/action-scheduler/action-scheduler.php @@ -1,14 +1,14 @@ register( '2.2.1', 'action_scheduler_initialize_2_dot_2_dot_1' ); + $versions->register( '2.2.4', 'action_scheduler_initialize_2_dot_2_dot_4' ); } - function action_scheduler_initialize_2_dot_2_dot_1() { + function action_scheduler_initialize_2_dot_2_dot_4() { require_once( 'classes/ActionScheduler.php' ); ActionScheduler::init( __FILE__ ); } diff --git a/includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php b/includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php index 91d8b18..d87861e 100755 --- a/includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php +++ b/includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php @@ -40,7 +40,7 @@ class ActionScheduler_AdminView extends ActionScheduler_AdminView_Deprecated { public function system_status_report() { $table = new ActionScheduler_wcSystemStatus( ActionScheduler::store() ); - $table->print(); + $table->render(); } /** diff --git a/includes/libraries/action-scheduler/classes/ActionScheduler_WPCLI_QueueRunner.php b/includes/libraries/action-scheduler/classes/ActionScheduler_WPCLI_QueueRunner.php index f58b718..c5689b5 100755 --- a/includes/libraries/action-scheduler/classes/ActionScheduler_WPCLI_QueueRunner.php +++ b/includes/libraries/action-scheduler/classes/ActionScheduler_WPCLI_QueueRunner.php @@ -112,11 +112,7 @@ class ActionScheduler_WPCLI_QueueRunner extends ActionScheduler_Abstract_QueueRu $this->process_action( $action_id ); $this->progress_bar->tick(); - - // Free up memory after every 50 items - if ( 0 === $this->progress_bar->current() % 50 ) { - $this->stop_the_insanity(); - } + $this->maybe_stop_the_insanity(); } $completed = $this->progress_bar->current(); @@ -207,4 +203,15 @@ class ActionScheduler_WPCLI_QueueRunner extends ActionScheduler_Abstract_QueueRu call_user_func( array( $wp_object_cache, '__remoteset' ) ); // important } } + + /** + * Maybe trigger the stop_the_insanity() method to free up memory. + */ + protected function maybe_stop_the_insanity() { + // The value returned by progress_bar->current() might be padded. Remove padding, and convert to int. + $current_iteration = intval( trim( $this->progress_bar->current() ) ); + if ( 0 === $current_iteration % 50 ) { + $this->stop_the_insanity(); + } + } } diff --git a/includes/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php b/includes/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php index ec7f5a4..3213d7c 100755 --- a/includes/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php +++ b/includes/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php @@ -21,7 +21,7 @@ class ActionScheduler_wcSystemStatus { * * Helpful to identify issues, like a clogged queue. */ - public function print() { + public function render() { $action_counts = $this->store->action_counts(); $status_labels = $this->store->get_status_labels(); $oldest_and_newest = $this->get_oldest_and_newest( array_keys( $status_labels ) ); @@ -126,4 +126,22 @@ class ActionScheduler_wcSystemStatus { post_title; $args = json_decode( $post->post_content, true ); - - // Handle args that do not decode properly. - if ( JSON_ERROR_NONE !== json_last_error() || ! is_array( $args ) ) { - throw ActionScheduler_InvalidActionException::from_decoding_args( $post->ID ); - } + $this->validate_args( $args, $post->ID ); $schedule = get_post_meta( $post->ID, self::SCHEDULE_META_KEY, true ); if ( empty( $schedule ) || ! is_a( $schedule, 'ActionScheduler_Schedule' ) ) { @@ -788,4 +784,24 @@ class ActionScheduler_wpPostStore extends ActionScheduler_Store { $taxonomy_registrar = new ActionScheduler_wpPostStore_TaxonomyRegistrar(); $taxonomy_registrar->register(); } + + /** + * Validate that we could decode action arguments. + * + * @param mixed $args The decoded arguments. + * @param int $action_id The action ID. + * + * @throws ActionScheduler_InvalidActionException When the decoded arguments are invalid. + */ + private function validate_args( $args, $action_id ) { + // Ensure we have an array of args. + if ( ! is_array( $args ) ) { + throw ActionScheduler_InvalidActionException::from_decoding_args( $action_id ); + } + + // Validate JSON decoding if possible. + if ( function_exists( 'json_last_error' ) && JSON_ERROR_NONE !== json_last_error() ) { + throw ActionScheduler_InvalidActionException::from_decoding_args( $action_id ); + } + } } diff --git a/includes/libraries/action-scheduler/composer.json b/includes/libraries/action-scheduler/composer.json index 4df2c2d..a3b2c4a 100755 --- a/includes/libraries/action-scheduler/composer.json +++ b/includes/libraries/action-scheduler/composer.json @@ -6,6 +6,6 @@ "minimum-stability": "dev", "require": {}, "require-dev": { - "wp-cli/wp-cli": "^1.3" + "wp-cli/wp-cli": "1.5.1" } } diff --git a/includes/libraries/action-scheduler/composer.lock b/includes/libraries/action-scheduler/composer.lock deleted file mode 100755 index de44d81..0000000 --- a/includes/libraries/action-scheduler/composer.lock +++ /dev/null @@ -1,2909 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "content-hash": "f4556531e7b95173d1b769b3d7350926", - "packages": [], - "packages-dev": [ - { - "name": "composer/ca-bundle", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "b17e6153cb7f33c7e44eb59578dc12eee5dc8e12" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b17e6153cb7f33c7e44eb59578dc12eee5dc8e12", - "reference": "b17e6153cb7f33c7e44eb59578dc12eee5dc8e12", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0" - }, - "suggest": { - "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "time": "2017-03-06T11:59:08+00:00" - }, - { - "name": "composer/composer", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "82c27a68bc5cb76f3d00b82c27496e3cdbb6d4ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/82c27a68bc5cb76f3d00b82c27496e3cdbb6d4ff", - "reference": "82c27a68bc5cb76f3d00b82c27496e3cdbb6d4ff", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.0", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", - "seld/cli-prompt": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0", - "symfony/filesystem": "^2.7 || ^3.0", - "symfony/finder": "^2.7 || ^3.0", - "symfony/process": "^2.7 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "time": "2017-08-09T14:23:46+00:00" - }, - { - "name": "composer/semver", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "7ea669582e6396857cf6d1c0a6cd2728f4e7e383" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/7ea669582e6396857cf6d1c0a6cd2728f4e7e383", - "reference": "7ea669582e6396857cf6d1c0a6cd2728f4e7e383", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "time": "2017-05-15T12:49:06+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "2603a0d7ddc00a015deb576fa5297ca43dee6b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/2603a0d7ddc00a015deb576fa5297ca43dee6b1c", - "reference": "2603a0d7ddc00a015deb576fa5297ca43dee6b1c", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "time": "2017-04-03T19:08:52+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.x-dev", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "36ed4d935f8f5eb958dbd29e1fa5a241ec3ece4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/36ed4d935f8f5eb958dbd29e1fa5a241ec3ece4d", - "reference": "36ed4d935f8f5eb958dbd29e1fa5a241ec3ece4d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.22" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2017-06-23T11:43:36+00:00" - }, - { - "name": "mustache/mustache", - "version": "v2.12.0", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/mustache.php.git", - "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e", - "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~1.11", - "phpunit/phpunit": "~3.7|~4.0|~5.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Mustache": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "A Mustache implementation in PHP.", - "homepage": "https://github.com/bobthecow/mustache.php", - "keywords": [ - "mustache", - "templating" - ], - "time": "2017-07-11T12:54:05+00:00" - }, - { - "name": "nb/oxymel", - "version": "v0.1.0", - "source": { - "type": "git", - "url": "https://github.com/nb/oxymel.git", - "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nb/oxymel/zipball/cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", - "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "type": "library", - "autoload": { - "psr-0": { - "Oxymel": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nikolay Bachiyski", - "email": "nb@nikolay.bg", - "homepage": "http://extrapolate.me/" - } - ], - "description": "A sweet XML builder", - "homepage": "https://github.com/nb/oxymel", - "keywords": [ - "xml" - ], - "time": "2013-02-24T15:01:54+00:00" - }, - { - "name": "psr/container", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "2cc4a01788191489dc7459446ba832fa79a216a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/2cc4a01788191489dc7459446ba832fa79a216a7", - "reference": "2cc4a01788191489dc7459446ba832fa79a216a7", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-06-28T15:35:32+00:00" - }, - { - "name": "psr/log", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, - { - "name": "ramsey/array_column", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/array_column.git", - "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/array_column/zipball/f8e52eb28e67eb50e613b451dd916abcf783c1db", - "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db", - "shasum": "" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "0.8.*", - "phpunit/phpunit": "~4.5", - "satooshi/php-coveralls": "0.6.*", - "squizlabs/php_codesniffer": "~2.2" - }, - "type": "library", - "autoload": { - "files": [ - "src/array_column.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "homepage": "http://benramsey.com" - } - ], - "description": "Provides functionality for array_column() to projects using PHP earlier than version 5.5.", - "homepage": "https://github.com/ramsey/array_column", - "keywords": [ - "array", - "array_column", - "column" - ], - "time": "2015-03-20T22:07:39+00:00" - }, - { - "name": "rmccue/requests", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/rmccue/Requests.git", - "reference": "87932f52ffad70504d93f04f15690cf16a089546" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546", - "reference": "87932f52ffad70504d93f04f15690cf16a089546", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "require-dev": { - "requests/test-server": "dev-master" - }, - "type": "library", - "autoload": { - "psr-0": { - "Requests": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Ryan McCue", - "homepage": "http://ryanmccue.info" - } - ], - "description": "A HTTP library written in PHP, for human beings.", - "homepage": "http://github.com/rmccue/Requests", - "keywords": [ - "curl", - "fsockopen", - "http", - "idna", - "ipv6", - "iri", - "sockets" - ], - "time": "2016-10-13T00:11:37+00:00" - }, - { - "name": "seld/cli-prompt", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\CliPrompt\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", - "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" - ], - "time": "2017-03-18T11:32:45+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", - "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "time": "2017-06-18T15:11:04+00:00" - }, - { - "name": "seld/phar-utils", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phra" - ], - "time": "2015-10-13T18:44:15+00:00" - }, - { - "name": "symfony/config", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "d668d8c0502d2b485c00d107db65fdbc56c26282" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/d668d8c0502d2b485c00d107db65fdbc56c26282", - "reference": "d668d8c0502d2b485c00d107db65fdbc56c26282", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" - }, - "require-dev": { - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/finder": "~3.3|~4.0", - "symfony/yaml": "~3.0|~4.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2017-08-05T17:34:46+00:00" - }, - { - "name": "symfony/console", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "0e283478c2d68c9bf9cc52592ad1ef1834083a85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0e283478c2d68c9bf9cc52592ad1ef1834083a85", - "reference": "0e283478c2d68c9bf9cc52592ad1ef1834083a85", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-kernel": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2017-08-10T07:07:17+00:00" - }, - { - "name": "symfony/debug", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "50bda5b4b8641616d45254c6855bcd45f2f64187" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/50bda5b4b8641616d45254c6855bcd45f2f64187", - "reference": "50bda5b4b8641616d45254c6855bcd45f2f64187", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2017-08-10T07:07:17+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "aaee88765cb21a838e8da26d6acda4ca2ae3a2ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/aaee88765cb21a838e8da26d6acda4ca2ae3a2ea", - "reference": "aaee88765cb21a838e8da26d6acda4ca2ae3a2ea", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/container": "^1.0" - }, - "conflict": { - "symfony/config": "<3.3.1", - "symfony/finder": "<3.3", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2017-08-10T19:43:00+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "cd8b015f859e6b60933324db00067c2f060b4d18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/cd8b015f859e6b60933324db00067c2f060b4d18", - "reference": "cd8b015f859e6b60933324db00067c2f060b4d18", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "conflict": { - "symfony/dependency-injection": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2017-08-03T09:34:20+00:00" - }, - { - "name": "symfony/filesystem", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "e4d366b620c8b6e2d4977c154f6a1d5b416db4dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e4d366b620c8b6e2d4977c154f6a1d5b416db4dd", - "reference": "e4d366b620c8b6e2d4977c154f6a1d5b416db4dd", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2017-08-03T09:34:20+00:00" - }, - { - "name": "symfony/finder", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "bf0450cfe7282c5f06539c4733ba64273e91e918" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/bf0450cfe7282c5f06539c4733ba64273e91e918", - "reference": "bf0450cfe7282c5f06539c4733ba64273e91e918", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2017-08-03T09:34:20+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", - "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2017-06-14T15:44:48+00:00" - }, - { - "name": "symfony/process", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "9794f948d9af3be0157185051275d78b24d68b92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9794f948d9af3be0157185051275d78b24d68b92", - "reference": "9794f948d9af3be0157185051275d78b24d68b92", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2017-08-03T09:34:20+00:00" - }, - { - "name": "symfony/translation", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "62bb068e004874bbe39624101e1aae70ca7c05cd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/62bb068e004874bbe39624101e1aae70ca7c05cd", - "reference": "62bb068e004874bbe39624101e1aae70ca7c05cd", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/intl": "^2.8.18|^3.2.5|~4.0", - "symfony/yaml": "~3.3|~4.0" - }, - "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2017-08-03T12:04:31+00:00" - }, - { - "name": "symfony/yaml", - "version": "3.4.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "1395ddba6f65bf46cdf1d80d59223cbab8ff3ccc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/1395ddba6f65bf46cdf1d80d59223cbab8ff3ccc", - "reference": "1395ddba6f65bf46cdf1d80d59223cbab8ff3ccc", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-08-04T13:29:48+00:00" - }, - { - "name": "wp-cli/autoload-splitter", - "version": "v0.1.5", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/autoload-splitter.git", - "reference": "fb4302da26390811d2631c62b42b75976d224bb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/autoload-splitter/zipball/fb4302da26390811d2631c62b42b75976d224bb8", - "reference": "fb4302da26390811d2631c62b42b75976d224bb8", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1" - }, - "type": "composer-plugin", - "extra": { - "class": "WP_CLI\\AutoloadSplitter\\ComposerPlugin" - }, - "autoload": { - "psr-4": { - "WP_CLI\\AutoloadSplitter\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alain Schlesser", - "email": "alain.schlesser@gmail.com", - "homepage": "https://www.alainschlesser.com" - } - ], - "description": "Composer plugin for splitting a generated autoloader into two distinct parts.", - "homepage": "https://wp-cli.org", - "time": "2017-08-03T08:40:16+00:00" - }, - { - "name": "wp-cli/cache-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/cache-command.git", - "reference": "485f7cc6630ecabe22bbf9fa9e827958e95a2d21" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/485f7cc6630ecabe22bbf9fa9e827958e95a2d21", - "reference": "485f7cc6630ecabe22bbf9fa9e827958e95a2d21", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "cache", - "transient" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "cache-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage object and transient caches.", - "homepage": "https://github.com/wp-cli/cache-command", - "time": "2017-08-04T11:37:19+00:00" - }, - { - "name": "wp-cli/checksum-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/checksum-command.git", - "reference": "88ccde2e82de5c2232842a9fccc2e6ade232dec6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/88ccde2e82de5c2232842a9fccc2e6ade232dec6", - "reference": "88ccde2e82de5c2232842a9fccc2e6ade232dec6", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "checksum core" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "checksum-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Verify WordPress core checksums.", - "homepage": "https://github.com/wp-cli/checksum-command", - "time": "2017-08-09T23:34:29+00:00" - }, - { - "name": "wp-cli/config-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/config-command.git", - "reference": "ca83ade8fb2d059b561744610947e38123b10c22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/config-command/zipball/ca83ade8fb2d059b561744610947e38123b10c22", - "reference": "ca83ade8fb2d059b561744610947e38123b10c22", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "config", - "config create", - "config get", - "config path" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "config-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage the wp-config.php file.", - "homepage": "https://github.com/wp-cli/config-command", - "time": "2017-08-04T23:41:35+00:00" - }, - { - "name": "wp-cli/core-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/core-command.git", - "reference": "fb743dab792e21b57163c5c0f563987d1471c152" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/core-command/zipball/fb743dab792e21b57163c5c0f563987d1471c152", - "reference": "fb743dab792e21b57163c5c0f563987d1471c152", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "core check-update", - "core download", - "core install", - "core is-installed", - "core multisite-convert", - "core multisite-install", - "core update", - "core update-db", - "core version" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "core-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Download, install, update and manage a WordPress install.", - "homepage": "https://github.com/wp-cli/core-command", - "time": "2017-08-04T12:31:18+00:00" - }, - { - "name": "wp-cli/cron-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/cron-command.git", - "reference": "92114b695ab0253bb705d9bd3e6d2fb47b51fad2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/92114b695ab0253bb705d9bd3e6d2fb47b51fad2", - "reference": "92114b695ab0253bb705d9bd3e6d2fb47b51fad2", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "cron test", - "cron event delete", - "cron event list", - "cron event run", - "cron event schedule", - "cron schedule list" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "cron-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage WP-Cron events and schedules.", - "homepage": "https://github.com/wp-cli/cron-command", - "time": "2017-08-04T12:45:50+00:00" - }, - { - "name": "wp-cli/db-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/db-command.git", - "reference": "5c597abb642bcaf329e7da0801c69f4405d41c23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/db-command/zipball/5c597abb642bcaf329e7da0801c69f4405d41c23", - "reference": "5c597abb642bcaf329e7da0801c69f4405d41c23", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "db create", - "db drop", - "db reset", - "db check", - "db optimize", - "db prefix", - "db repair", - "db cli", - "db query", - "db export", - "db import", - "db search", - "db tables", - "db size" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "db-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Perform basic database operations using credentials stored in wp-config.php.", - "homepage": "https://github.com/wp-cli/db-command", - "time": "2017-08-04T23:21:46+00:00" - }, - { - "name": "wp-cli/entity-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/entity-command.git", - "reference": "d0cd99c14e4d01aad368328da97231df0c01f9dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/d0cd99c14e4d01aad368328da97231df0c01f9dc", - "reference": "d0cd99c14e4d01aad368328da97231df0c01f9dc", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "phpunit/phpunit": "^4.8", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "comment", - "comment meta", - "menu", - "menu item", - "menu location", - "network meta", - "option", - "option add", - "option delete", - "option get", - "option list", - "option update", - "post", - "post meta", - "post term", - "post-type", - "site", - "taxonomy", - "term", - "term meta", - "user", - "user meta", - "user term" - ] - }, - "autoload": { - "psr-4": { - "": "src/", - "WP_CLI\\": "src/WP_CLI" - }, - "files": [ - "entity-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage WordPress core entities.", - "homepage": "https://github.com/wp-cli/entity-command", - "time": "2017-08-11T11:53:04+00:00" - }, - { - "name": "wp-cli/eval-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/eval-command.git", - "reference": "e3d9502a4f8b8f582130dbb3b8ede76e17ac05a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/e3d9502a4f8b8f582130dbb3b8ede76e17ac05a4", - "reference": "e3d9502a4f8b8f582130dbb3b8ede76e17ac05a4", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "eval", - "eval-file" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "eval-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Execute arbitrary PHP code.", - "homepage": "https://github.com/wp-cli/eval-command", - "time": "2017-08-04T12:46:58+00:00" - }, - { - "name": "wp-cli/export-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/export-command.git", - "reference": "f5647155830d1275de4cb69cfb79748b9449b8ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/export-command/zipball/f5647155830d1275de4cb69cfb79748b9449b8ab", - "reference": "f5647155830d1275de4cb69cfb79748b9449b8ab", - "shasum": "" - }, - "require": { - "nb/oxymel": "~0.1.0", - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "export" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "export-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Export WordPress content to a WXR file.", - "homepage": "https://github.com/wp-cli/export-command", - "time": "2017-08-04T13:13:08+00:00" - }, - { - "name": "wp-cli/extension-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/extension-command.git", - "reference": "08bf48e842b9e1cb579b50cec1b6897cebf65bda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/08bf48e842b9e1cb579b50cec1b6897cebf65bda", - "reference": "08bf48e842b9e1cb579b50cec1b6897cebf65bda", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "plugin activate", - "plugin deactivate", - "plugin delete", - "plugin get", - "plugin install", - "plugin is-installed", - "plugin list", - "plugin path", - "plugin search", - "plugin status", - "plugin toggle", - "plugin uninstall", - "plugin update", - "theme activate", - "theme delete", - "theme disable", - "theme enable", - "theme get", - "theme install", - "theme is-installed", - "theme list", - "theme mod get", - "theme mod set", - "theme mod remove", - "theme path", - "theme search", - "theme status", - "theme update" - ] - }, - "autoload": { - "psr-4": { - "": "src/", - "WP_CLI\\": "src/WP_CLI" - }, - "files": [ - "extension-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage WordPress plugins and themes.", - "homepage": "https://github.com/wp-cli/extension-command", - "time": "2017-08-04T13:43:53+00:00" - }, - { - "name": "wp-cli/import-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/import-command.git", - "reference": "89d14aa4b8b621effbe7f9bacad2ea8a096598a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/import-command/zipball/89d14aa4b8b621effbe7f9bacad2ea8a096598a7", - "reference": "89d14aa4b8b621effbe7f9bacad2ea8a096598a7", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "bundled": true, - "commands": [ - "import" - ] - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "import-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Import content from a WXR file.", - "homepage": "https://github.com/wp-cli/import-command", - "time": "2017-08-04T13:45:57+00:00" - }, - { - "name": "wp-cli/language-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/language-command.git", - "reference": "aff3fb6c6d7698008c7e5d33a97b25457091ae1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/language-command/zipball/aff3fb6c6d7698008c7e5d33a97b25457091ae1b", - "reference": "aff3fb6c6d7698008c7e5d33a97b25457091ae1b", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "language core activate", - "language core install", - "language core list", - "language core uninstall", - "language core update" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "language-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage language packs.", - "homepage": "https://github.com/wp-cli/language-command", - "time": "2017-08-04T23:23:03+00:00" - }, - { - "name": "wp-cli/media-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/media-command.git", - "reference": "4a19de54a11c96b21c10719e2b7f9dd131c4261e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/media-command/zipball/4a19de54a11c96b21c10719e2b7f9dd131c4261e", - "reference": "4a19de54a11c96b21c10719e2b7f9dd131c4261e", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "media import", - "media regenerate" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "media-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Import new attachments or regenerate existing ones.", - "homepage": "https://github.com/wp-cli/media-command", - "time": "2017-08-05T04:54:48+00:00" - }, - { - "name": "wp-cli/mustangostang-spyc", - "version": "0.6.3", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/spyc.git", - "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", - "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "4.3.*@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.x-dev" - } - }, - "autoload": { - "psr-4": { - "Mustangostang\\": "src/" - }, - "files": [ - "includes/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "mustangostang", - "email": "vlad.andersen@gmail.com" - } - ], - "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)", - "homepage": "https://github.com/mustangostang/spyc/", - "time": "2017-04-25T11:26:20+00:00" - }, - { - "name": "wp-cli/package-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/package-command.git", - "reference": "744692180a4240ddc75a3196934cafe396dd9178" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/package-command/zipball/744692180a4240ddc75a3196934cafe396dd9178", - "reference": "744692180a4240ddc75a3196934cafe396dd9178", - "shasum": "" - }, - "require": { - "composer/composer": "^1.2.0", - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "package browse", - "package install", - "package list", - "package update", - "package uninstall" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "package-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage WP-CLI packages.", - "homepage": "https://github.com/wp-cli/package-command", - "time": "2017-08-07T12:21:11+00:00" - }, - { - "name": "wp-cli/php-cli-tools", - "version": "v0.11.6", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/php-cli-tools.git", - "reference": "d2a4e2eca9f1cd62a5d30f192d10f74e73eb3a05" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/d2a4e2eca9f1cd62a5d30f192d10f74e73eb3a05", - "reference": "d2a4e2eca9f1cd62a5d30f192d10f74e73eb3a05", - "shasum": "" - }, - "require": { - "php": ">= 5.3.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "cli": "lib/" - }, - "files": [ - "lib/cli/cli.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Logsdon", - "email": "jlogsdon@php.net", - "role": "Developer" - }, - { - "name": "Daniel Bachhuber", - "email": "daniel@handbuilt.co", - "role": "Maintainer" - } - ], - "description": "Console utilities for PHP", - "homepage": "http://github.com/wp-cli/php-cli-tools", - "keywords": [ - "cli", - "console" - ], - "time": "2017-08-04T10:42:04+00:00" - }, - { - "name": "wp-cli/rewrite-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/rewrite-command.git", - "reference": "e858feac8d3fe053e052d8af43c090ff0b2a4e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/e858feac8d3fe053e052d8af43c090ff0b2a4e8a", - "reference": "e858feac8d3fe053e052d8af43c090ff0b2a4e8a", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "rewrite flush", - "rewrite list", - "rewrite structure" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "rewrite-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage rewrite rules.", - "homepage": "https://github.com/wp-cli/rewrite-command", - "time": "2017-08-04T15:15:53+00:00" - }, - { - "name": "wp-cli/role-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/role-command.git", - "reference": "85ddf53525b14ab040830f385710f4493058d295" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/role-command/zipball/85ddf53525b14ab040830f385710f4493058d295", - "reference": "85ddf53525b14ab040830f385710f4493058d295", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "role create", - "role delete", - "role exists", - "role list", - "role reset", - "cap add", - "cap list", - "cap remove" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "role-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage user roles and capabilities.", - "homepage": "https://github.com/wp-cli/role-command", - "time": "2017-08-04T15:17:29+00:00" - }, - { - "name": "wp-cli/scaffold-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/scaffold-command.git", - "reference": "41f1e1aa41af76b70d6cf3d21d52995e854acf4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/41f1e1aa41af76b70d6cf3d21d52995e854acf4c", - "reference": "41f1e1aa41af76b70d6cf3d21d52995e854acf4c", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "scaffold", - "scaffold _s", - "scaffold child-theme", - "scaffold plugin", - "scaffold plugin-tests", - "scaffold post-type", - "scaffold taxonomy", - "scaffold theme-tests" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "scaffold-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Generate code for post types, taxonomies, plugins, child themes, etc.", - "homepage": "https://github.com/wp-cli/scaffold-command", - "time": "2017-08-11T08:07:10+00:00" - }, - { - "name": "wp-cli/search-replace-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/search-replace-command.git", - "reference": "3e7499a65354e3a322d4d1043123b3fa55ef4f12" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/3e7499a65354e3a322d4d1043123b3fa55ef4f12", - "reference": "3e7499a65354e3a322d4d1043123b3fa55ef4f12", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "search-replace" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/", - "WP_CLI\\": "src/WP_CLI" - }, - "files": [ - "search-replace-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Search/replace strings in the database.", - "homepage": "https://github.com/wp-cli/search-replace-command", - "time": "2017-08-08T16:41:49+00:00" - }, - { - "name": "wp-cli/server-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/server-command.git", - "reference": "ce93df07c33e716adbbd2d329c311a3c1dd3a0b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/server-command/zipball/ce93df07c33e716adbbd2d329c311a3c1dd3a0b0", - "reference": "ce93df07c33e716adbbd2d329c311a3c1dd3a0b0", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "server" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "server-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Launch PHP's built-in web server for this specific WordPress installation.", - "homepage": "https://github.com/wp-cli/server-command", - "time": "2017-08-04T15:19:26+00:00" - }, - { - "name": "wp-cli/shell-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/shell-command.git", - "reference": "70681666302cc193a1bd41bade9ecc61e74a8c83" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/70681666302cc193a1bd41bade9ecc61e74a8c83", - "reference": "70681666302cc193a1bd41bade9ecc61e74a8c83", - "shasum": "" - }, - "require": { - "wp-cli/wp-cli": "*" - }, - "require-dev": { - "behat/behat": "~2.5" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "shell" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/", - "WP_CLI\\": "src/WP_CLI" - }, - "files": [ - "shell-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Interactive PHP console.", - "homepage": "https://github.com/wp-cli/shell-command", - "time": "2017-08-04T15:21:52+00:00" - }, - { - "name": "wp-cli/super-admin-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/super-admin-command.git", - "reference": "b650836d13762c764df2bbe70ad34212c0b773cd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/b650836d13762c764df2bbe70ad34212c0b773cd", - "reference": "b650836d13762c764df2bbe70ad34212c0b773cd", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "super-admin add", - "super-admin list", - "super-admin remove" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "super-admin-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage super admins on WordPress multisite.", - "homepage": "https://github.com/wp-cli/super-admin-command", - "time": "2017-08-04T15:45:41+00:00" - }, - { - "name": "wp-cli/widget-command", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/widget-command.git", - "reference": "727af7c7b661031bc8c04ad176d4f24b862e3402" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/727af7c7b661031bc8c04ad176d4f24b862e3402", - "reference": "727af7c7b661031bc8c04ad176d4f24b862e3402", - "shasum": "" - }, - "require-dev": { - "behat/behat": "~2.5", - "wp-cli/wp-cli": "*" - }, - "type": "wp-cli-package", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "commands": [ - "widget add", - "widget deactivate", - "widget delete", - "widget list", - "widget move", - "widget reset", - "widget update", - "sidebar list" - ], - "bundled": true - }, - "autoload": { - "psr-4": { - "": "src/" - }, - "files": [ - "widget-command.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Bachhuber", - "email": "daniel@runcommand.io", - "homepage": "https://runcommand.io" - } - ], - "description": "Manage widgets and sidebars.", - "homepage": "https://github.com/wp-cli/widget-command", - "time": "2017-08-04T15:24:29+00:00" - }, - { - "name": "wp-cli/wp-cli", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/wp-cli/wp-cli.git", - "reference": "4ab0d99da0ad5e6ca39453ff5c82d4f06aecb086" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/4ab0d99da0ad5e6ca39453ff5c82d4f06aecb086", - "reference": "4ab0d99da0ad5e6ca39453ff5c82d4f06aecb086", - "shasum": "" - }, - "require": { - "composer/composer": "^1.2.0", - "composer/semver": "~1.0", - "mustache/mustache": "~2.4", - "php": ">=5.3.29", - "ramsey/array_column": "~1.1", - "rmccue/requests": "~1.6", - "symfony/config": "^2.7|^3.0", - "symfony/console": "^2.7|^3.0", - "symfony/debug": "^2.7|^3.0", - "symfony/dependency-injection": "^2.7|^3.0", - "symfony/event-dispatcher": "^2.7|^3.0", - "symfony/filesystem": "^2.7|^3.0", - "symfony/finder": "^2.7|^3.0", - "symfony/process": "^2.1|^3.0", - "symfony/translation": "^2.7|^3.0", - "symfony/yaml": "^2.7|^3.0", - "wp-cli/autoload-splitter": "^0.1.5", - "wp-cli/cache-command": "^1.0", - "wp-cli/checksum-command": "^1.0", - "wp-cli/config-command": "^1.0", - "wp-cli/core-command": "^1.0", - "wp-cli/cron-command": "^1.0", - "wp-cli/db-command": "^1.0", - "wp-cli/entity-command": "^1.0", - "wp-cli/eval-command": "^1.0", - "wp-cli/export-command": "^1.0", - "wp-cli/extension-command": "^1.0", - "wp-cli/import-command": "^1.0", - "wp-cli/language-command": "^1.0", - "wp-cli/media-command": "^1.0", - "wp-cli/mustangostang-spyc": "^0.6.3", - "wp-cli/package-command": "^1.0", - "wp-cli/php-cli-tools": "~0.11.2", - "wp-cli/rewrite-command": "^1.0", - "wp-cli/role-command": "^1.0", - "wp-cli/scaffold-command": "^1.0", - "wp-cli/search-replace-command": "^1.0", - "wp-cli/server-command": "^1.0", - "wp-cli/shell-command": "^1.0", - "wp-cli/super-admin-command": "^1.0", - "wp-cli/widget-command": "^1.0" - }, - "require-dev": { - "behat/behat": "2.5.*", - "phpunit/phpunit": "3.7.*", - "roave/security-advisories": "dev-master" - }, - "suggest": { - "psy/psysh": "Enhanced `wp shell` functionality" - }, - "bin": [ - "bin/wp.bat", - "bin/wp" - ], - "type": "library", - "extra": { - "autoload-splitter": { - "splitter-logic": "WP_CLI\\AutoloadSplitter", - "splitter-location": "php/WP_CLI/AutoloadSplitter.php", - "split-target-prefix-true": "autoload_commands", - "split-target-prefix-false": "autoload_framework" - } - }, - "autoload": { - "psr-0": { - "WP_CLI": "php" - }, - "psr-4": { - "": "php/commands/src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A command line interface for WordPress", - "homepage": "http://wp-cli.org", - "keywords": [ - "cli", - "wordpress" - ], - "time": "2017-08-08T14:28:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} diff --git a/includes/libraries/action-scheduler/docs/CNAME b/includes/libraries/action-scheduler/docs/CNAME deleted file mode 100755 index 3b480b5..0000000 --- a/includes/libraries/action-scheduler/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -actionscheduler.org \ No newline at end of file diff --git a/includes/libraries/action-scheduler/docs/_config.yml b/includes/libraries/action-scheduler/docs/_config.yml deleted file mode 100755 index fe521d9..0000000 --- a/includes/libraries/action-scheduler/docs/_config.yml +++ /dev/null @@ -1,7 +0,0 @@ -title: Action Scheduler - Job Queue for WordPress -description: A scalable, traceable job queue for background processing large queues of tasks in WordPress. Designed for distribution in WordPress plugins - no server access required. -theme: jekyll-theme-hacker -permalink: /:slug/ -plugins: - - jekyll-seo-tag - - jekyll-sitemap diff --git a/includes/libraries/action-scheduler/docs/_layouts/default.html b/includes/libraries/action-scheduler/docs/_layouts/default.html deleted file mode 100755 index 8e8a9c5..0000000 --- a/includes/libraries/action-scheduler/docs/_layouts/default.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - -{% seo %} - - - - -
-
-

Usage | Admin | WP-CLI | Background Processing at Scale | API | FAQ -

action-scheduler

-

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). - -![](https://cldup.com/5BA2BNB1sw.png) 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 86753dbcd990ac6080f3ef07d53dbbc538a023fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17032 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 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 3e5f9b1029d0d99763727a10537539943ae7404f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24599 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 X%N}reUp@_Z1?Zucfo8>hyQu#I?q2|H 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 1bc497520175a3fdf0c0f43a85db65219ae1ca07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8053 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 - - - - - #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 aa772d149406dc6659ad4d2f6b6b2a92bfe68b76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1160 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 diff --git a/includes/libraries/action-scheduler/docs/favicon.ico b/includes/libraries/action-scheduler/docs/favicon.ico deleted file mode 100755 index 3cdbb517ab61e63daa89208f9e8ffb4fa22efb95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 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 3a3ed191109e302730b66dd5853a6e6f5228e489..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4246 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 vc4t~porysI%tTMeKnHIJL;ov8p3XhMCKnraA1 '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 @@ - - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - 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 ) {