2019-05-14 14:33:45 +00:00
|
|
|
<?php
|
|
|
|
/**
|
2019-05-14 22:08:13 +00:00
|
|
|
* Handle cron events.
|
2019-05-14 14:33:45 +00:00
|
|
|
* NOTE: DO NOT edit this file in WooCommerce core, this is generated from woocommerce-admin.
|
|
|
|
*/
|
|
|
|
|
2019-08-06 19:36:15 +00:00
|
|
|
namespace Automattic\WooCommerce\Admin;
|
|
|
|
|
2019-05-14 14:33:45 +00:00
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
|
2021-03-26 17:00:05 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Features\Features;
|
2021-01-08 01:10:07 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\AddingAndManangingProducts;
|
2021-01-07 06:49:29 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\ChoosingTheme;
|
2021-01-21 06:11:53 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\CustomizingProductCatalog;
|
2021-02-09 20:33:04 +00:00
|
|
|
use Automattic\WooCommerce\Admin\Notes\FirstDownlaodableProduct;
|
2021-01-07 06:39:04 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\InsightFirstProductAndPayment;
|
2020-10-28 17:12:14 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\MobileApp;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\NewSalesRecord;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\TrackingOptIn;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\OnboardingEmailMarketing;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\OnboardingPayments;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\PersonalizeStore;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\EUVATNumber;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\WooCommercePayments;
|
2021-06-04 01:57:25 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\MarketingJetpack;
|
2020-10-28 17:12:14 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\WooCommerceSubscriptions;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\MigrateFromShopify;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\LaunchChecklist;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\RealTimeOrderAlerts;
|
2020-06-05 01:51:25 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\RemoteInboxNotifications\DataSourcePoller;
|
|
|
|
use \Automattic\WooCommerce\Admin\RemoteInboxNotifications\RemoteInboxNotificationsEngine;
|
2021-01-13 00:09:22 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\MerchantEmailNotifications\MerchantEmailNotifications;
|
2020-10-28 17:12:14 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\InsightFirstSale;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\OnlineClothingStore;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\FirstProduct;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\CustomizeStoreWithBlocks;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\TestCheckout;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\EditProductsOnTheMove;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\PerformanceOnMobile;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\ManageOrdersOnTheGo;
|
2021-01-13 00:09:22 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\AddFirstProduct;
|
2021-03-26 00:07:20 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\NavigationNudge;
|
2021-08-31 04:39:04 +00:00
|
|
|
use Automattic\WooCommerce\Admin\Schedulers\MailchimpScheduler;
|
2021-11-02 05:01:31 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\CompleteStoreDetails;
|
|
|
|
use \Automattic\WooCommerce\Admin\Notes\UpdateStoreDetails;
|
2021-11-30 22:09:37 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\SetUpAdditionalPaymentTypes;
|
2022-01-12 06:46:33 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\PaymentsRemindMeLater;
|
2022-01-12 20:41:12 +00:00
|
|
|
use \Automattic\WooCommerce\Admin\Notes\MagentoMigration;
|
2019-08-06 19:36:15 +00:00
|
|
|
|
2019-05-14 14:33:45 +00:00
|
|
|
/**
|
2020-10-28 17:12:14 +00:00
|
|
|
* Events Class.
|
2019-05-14 14:33:45 +00:00
|
|
|
*/
|
2019-08-12 21:52:09 +00:00
|
|
|
class Events {
|
2019-05-14 14:33:45 +00:00
|
|
|
/**
|
|
|
|
* The single instance of the class.
|
|
|
|
*
|
|
|
|
* @var object
|
|
|
|
*/
|
|
|
|
protected static $instance = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
protected function __construct() {}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get class instance.
|
|
|
|
*
|
|
|
|
* @return object Instance.
|
|
|
|
*/
|
|
|
|
final public static function instance() {
|
|
|
|
if ( null === static::$instance ) {
|
|
|
|
static::$instance = new static();
|
|
|
|
}
|
|
|
|
return static::$instance;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Cron event handlers.
|
|
|
|
*/
|
|
|
|
public function init() {
|
2019-05-14 22:09:02 +00:00
|
|
|
add_action( 'wc_admin_daily', array( $this, 'do_wc_admin_daily' ) );
|
2019-05-14 14:33:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Daily events to run.
|
|
|
|
*
|
2020-09-28 04:35:10 +00:00
|
|
|
* Note: Order_Milestones::other_milestones is hooked to this as well.
|
2019-05-14 14:33:45 +00:00
|
|
|
*/
|
2019-06-12 02:37:45 +00:00
|
|
|
public function do_wc_admin_daily() {
|
2021-01-13 00:09:22 +00:00
|
|
|
$this->possibly_add_notes();
|
2021-11-16 04:51:53 +00:00
|
|
|
$this->possibly_delete_notes();
|
2021-01-13 00:09:22 +00:00
|
|
|
|
|
|
|
if ( $this->is_remote_inbox_notifications_enabled() ) {
|
2021-11-03 12:43:40 +00:00
|
|
|
DataSourcePoller::get_instance()->read_specs_from_data_sources();
|
2021-01-13 00:09:22 +00:00
|
|
|
RemoteInboxNotificationsEngine::run();
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( $this->is_merchant_email_notifications_enabled() ) {
|
|
|
|
MerchantEmailNotifications::run();
|
|
|
|
}
|
2021-08-31 04:39:04 +00:00
|
|
|
|
|
|
|
if ( Features::is_enabled( 'onboarding' ) ) {
|
|
|
|
( new MailchimpScheduler() )->run();
|
|
|
|
}
|
2021-01-13 00:09:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds notes that should be added.
|
|
|
|
*/
|
|
|
|
protected function possibly_add_notes() {
|
2020-10-28 17:12:14 +00:00
|
|
|
NewSalesRecord::possibly_add_note();
|
|
|
|
MobileApp::possibly_add_note();
|
|
|
|
TrackingOptIn::possibly_add_note();
|
|
|
|
OnboardingPayments::possibly_add_note();
|
|
|
|
PersonalizeStore::possibly_add_note();
|
|
|
|
WooCommercePayments::possibly_add_note();
|
|
|
|
EUVATNumber::possibly_add_note();
|
2021-06-04 01:57:25 +00:00
|
|
|
MarketingJetpack::possibly_add_note();
|
2020-10-28 17:12:14 +00:00
|
|
|
WooCommerceSubscriptions::possibly_add_note();
|
|
|
|
MigrateFromShopify::possibly_add_note();
|
|
|
|
InsightFirstSale::possibly_add_note();
|
|
|
|
LaunchChecklist::possibly_add_note();
|
|
|
|
OnlineClothingStore::possibly_add_note();
|
|
|
|
FirstProduct::possibly_add_note();
|
|
|
|
RealTimeOrderAlerts::possibly_add_note();
|
|
|
|
CustomizeStoreWithBlocks::possibly_add_note();
|
|
|
|
TestCheckout::possibly_add_note();
|
|
|
|
EditProductsOnTheMove::possibly_add_note();
|
|
|
|
PerformanceOnMobile::possibly_add_note();
|
|
|
|
ManageOrdersOnTheGo::possibly_add_note();
|
2021-01-07 06:49:29 +00:00
|
|
|
ChoosingTheme::possibly_add_note();
|
2021-01-07 06:39:04 +00:00
|
|
|
InsightFirstProductAndPayment::possibly_add_note();
|
2021-01-13 00:09:22 +00:00
|
|
|
AddFirstProduct::possibly_add_note();
|
2021-01-08 01:10:07 +00:00
|
|
|
AddingAndManangingProducts::possibly_add_note();
|
2021-01-21 06:11:53 +00:00
|
|
|
CustomizingProductCatalog::possibly_add_note();
|
2021-02-09 20:33:04 +00:00
|
|
|
FirstDownlaodableProduct::possibly_add_note();
|
2021-03-26 00:07:20 +00:00
|
|
|
NavigationNudge::possibly_add_note();
|
2021-11-02 05:01:31 +00:00
|
|
|
CompleteStoreDetails::possibly_add_note();
|
|
|
|
UpdateStoreDetails::possibly_add_note();
|
2022-01-12 06:46:33 +00:00
|
|
|
PaymentsRemindMeLater::possibly_add_note();
|
2022-01-12 20:41:12 +00:00
|
|
|
MagentoMigration::possibly_add_note();
|
2019-05-14 14:33:45 +00:00
|
|
|
}
|
2020-09-18 05:53:49 +00:00
|
|
|
|
2021-11-16 04:51:53 +00:00
|
|
|
/**
|
|
|
|
* Deletes notes that should be deleted.
|
|
|
|
*/
|
|
|
|
protected function possibly_delete_notes() {
|
|
|
|
NavigationNudge::delete_if_not_applicable();
|
2021-11-30 22:09:37 +00:00
|
|
|
SetUpAdditionalPaymentTypes::delete_if_not_applicable();
|
2022-01-12 06:46:33 +00:00
|
|
|
PaymentsRemindMeLater::delete_if_not_applicable();
|
2021-11-16 04:51:53 +00:00
|
|
|
}
|
|
|
|
|
2020-09-18 05:53:49 +00:00
|
|
|
/**
|
|
|
|
* Checks if remote inbox notifications are enabled.
|
|
|
|
*
|
|
|
|
* @return bool Whether remote inbox notifications are enabled.
|
|
|
|
*/
|
|
|
|
protected function is_remote_inbox_notifications_enabled() {
|
|
|
|
// Check if the feature flag is disabled.
|
2021-03-26 17:00:05 +00:00
|
|
|
if ( ! Features::is_enabled( 'remote-inbox-notifications' ) ) {
|
2020-09-18 05:53:49 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the site has opted out of marketplace suggestions.
|
|
|
|
if ( 'yes' !== get_option( 'woocommerce_show_marketplace_suggestions', 'yes' ) ) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// All checks have passed.
|
|
|
|
return true;
|
|
|
|
}
|
2021-01-13 00:09:22 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks if merchant email notifications are enabled.
|
|
|
|
*
|
|
|
|
* @return bool Whether merchant email notifications are enabled.
|
|
|
|
*/
|
|
|
|
protected function is_merchant_email_notifications_enabled() {
|
|
|
|
// Check if the feature flag is disabled.
|
2021-02-19 15:32:06 +00:00
|
|
|
if ( 'yes' !== get_option( 'woocommerce_merchant_email_notifications', 'no' ) ) {
|
2021-01-13 00:09:22 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// All checks have passed.
|
|
|
|
return true;
|
|
|
|
}
|
2019-05-14 14:33:45 +00:00
|
|
|
}
|