File "OnboardingProfile.php"
Full Path: /home/warrior1/public_html/wp-content/plugins/woocommerce/src/Internal/Admin/Onboarding/OnboardingProfile.php
File size: 3.1 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* WooCommerce Onboarding Setup Wizard
*/
namespace Automattic\WooCommerce\Internal\Admin\Onboarding;
use Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists;
use Automattic\WooCommerce\Admin\PageController;
use Automattic\WooCommerce\Admin\WCAdminHelper;
/**
* Contains backend logic for the onboarding profile and checklist feature.
*/
class OnboardingProfile {
/**
* Profile data option name.
*/
const DATA_OPTION = 'woocommerce_onboarding_profile';
/**
* Add onboarding actions.
*/
public static function init() {
add_action( 'woocommerce_updated', array( __CLASS__, 'maybe_mark_complete' ) );
add_action( 'update_option_' . self::DATA_OPTION, array( __CLASS__, 'trigger_complete' ), 10, 2 );
}
/**
* Trigger the woocommerce_onboarding_profile_completed action
*
* @param array $old_value Previous value.
* @param array $value Current value.
*/
public static function trigger_complete( $old_value, $value ) {
if ( isset( $old_value['completed'] ) && $old_value['completed'] ) {
return;
}
if ( ! isset( $value['completed'] ) || ! $value['completed'] ) {
return;
}
/**
* Action hook fired when the onboarding profile (or onboarding wizard,
* or profiler) is completed.
*
* @since 1.5.0
*/
do_action( 'woocommerce_onboarding_profile_completed' );
}
/**
* Check if the profiler still needs to be completed.
*
* @return bool
*/
public static function needs_completion() {
$onboarding_data = get_option( self::DATA_OPTION, array() );
$is_completed = isset( $onboarding_data['completed'] ) && true === $onboarding_data['completed'];
$is_skipped = isset( $onboarding_data['skipped'] ) && true === $onboarding_data['skipped'];
// @todo When merging to WooCommerce Core, we should set the `completed` flag to true during the upgrade progress.
// https://github.com/woocommerce/woocommerce-admin/pull/2300#discussion_r287237498.
return ! $is_completed && ! $is_skipped;
}
/**
* When updating WooCommerce, mark the profiler and task list complete.
*
* @todo The `maybe_enable_setup_wizard()` method should be revamped on onboarding enable in core.
* See https://github.com/woocommerce/woocommerce/blob/1ca791f8f2325fe2ee0947b9c47e6a4627366374/includes/class-wc-install.php#L341
*/
public static function maybe_mark_complete() {
// The install notice still exists so don't complete the profiler.
if ( ! class_exists( 'WC_Admin_Notices' ) || \WC_Admin_Notices::has_notice( 'install' ) ) {
return;
}
$onboarding_data = get_option( self::DATA_OPTION, array() );
// Don't make updates if the profiler is completed or skipped, but task list is potentially incomplete.
if (
( isset( $onboarding_data['completed'] ) && $onboarding_data['completed'] ) ||
( isset( $onboarding_data['skipped'] ) && $onboarding_data['skipped'] )
) {
return;
}
$onboarding_data['completed'] = true;
update_option( self::DATA_OPTION, $onboarding_data );
if ( ! WCAdminHelper::is_wc_admin_active_for( DAY_IN_SECONDS ) ) {
$task_list = TaskLists::get_list( 'setup' );
if ( ! $task_list ) {
return;
}
$task_list->hide();
}
}
}