2022-01-12 06:46:33 +00:00
|
|
|
<?php
|
|
|
|
|
2022-02-21 09:47:28 +00:00
|
|
|
namespace Automattic\WooCommerce\Internal\Admin;
|
2022-01-12 06:46:33 +00:00
|
|
|
|
|
|
|
use Automattic\WooCommerce\Admin\Features\OnboardingTasks\Tasks\WooCommercePayments;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Class WCPayWelcomePage
|
|
|
|
*
|
|
|
|
* @package Automattic\WooCommerce\Admin\Features
|
|
|
|
*/
|
|
|
|
class WcPayWelcomePage {
|
|
|
|
|
|
|
|
const EXPERIMENT_NAME_BASE = 'woocommerce_payments_menu_promo_nz_ie_:yyyy_:mm';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WCPayWelcomePage constructor.
|
|
|
|
*/
|
|
|
|
public function __construct() {
|
|
|
|
add_action( 'admin_menu', array( $this, 'register_payments_welcome_page' ) );
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Registers the WooCommerce Payments welcome page.
|
|
|
|
*/
|
|
|
|
public function register_payments_welcome_page() {
|
|
|
|
global $menu;
|
|
|
|
|
|
|
|
// WC Payment must not be active.
|
|
|
|
if ( is_plugin_active( 'woocommerce-payments/woocommerce-payments.php' ) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! WooCommercePayments::is_supported() ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( 'yes' === get_option( 'wc_calypso_bridge_payments_dismissed', 'no' ) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! $this->should_add_the_menu() ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$menu_icon = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnNjciCiAgIHNvZGlwb2RpOmRvY25hbWU9IndjcGF5X21lbnVfaWNvbi5zdmciCiAgIHdpZHRoPSI4NTIiCiAgIGhlaWdodD0iNjg0IgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEgKGM0ZThmOWUsIDIwMjEtMDUtMjQpIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM3MSIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9Im5hbWVkdmlldzY5IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGZpdC1tYXJnaW4tdG9wPSIwIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMCIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIwIgogICAgIGlua3NjYXBlOnpvb209IjI1NiIKICAgICBpbmtzY2FwZTpjeD0iLTg0Ljg1NzQyMiIKICAgICBpbmtzY2FwZTpjeT0iLTgzLjI5NDkyMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEzMTIiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTA4MSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTE2IgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyMDIiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJzdmc2NyIgLz4KICA8cGF0aAogICAgIHRyYW5zZm9ybT0ic2NhbGUoLTEsIDEpIHRyYW5zbGF0ZSgtODUwLCAwKSIKICAgICBkPSJNIDc2OCw4NiBWIDU5OCBIIDg0IFYgODYgWiBtIDAsNTk4IGMgNDgsMCA4NCwtMzggODQsLTg2IFYgODYgQyA4NTIsMzggODE2LDAgNzY4LDAgSCA4NCBDIDM2LDAgMCwzOCAwLDg2IHYgNTEyIGMgMCw0OCAzNiw4NiA4NCw4NiB6IE0gMzg0LDEyOCB2IDQ0IGggLTg2IHYgODQgaCAxNzAgdiA0NCBIIDM0MCBjIC0yNCwwIC00MiwxOCAtNDIsNDIgdiAxMjggYyAwLDI0IDE4LDQyIDQyLDQyIGggNDQgdiA0NCBoIDg0IHYgLTQ0IGggODYgViA0MjggSCAzODQgdiAtNDQgaCAxMjggYyAyNCwwIDQyLC0xOCA0MiwtNDIgViAyMTQgYyAwLC0yNCAtMTgsLTQyIC00MiwtNDIgaCAtNDQgdiAtNDQgeiIKICAgICBmaWxsPSIjYTJhYWIyIgogICAgIGlkPSJwYXRoNjUiIC8+Cjwvc3ZnPgo=';
|
|
|
|
|
|
|
|
$menu_data = array(
|
|
|
|
'id' => 'wc-calypso-bridge-payments-welcome-page',
|
|
|
|
'title' => __( 'Payments', 'woocommerce-admin' ),
|
|
|
|
'path' => '/wc-pay-welcome-page',
|
|
|
|
'position' => '55.7',
|
|
|
|
'nav_args' => [
|
|
|
|
'title' => __( 'WooCommerce Payments', 'woocommerce-admin' ),
|
|
|
|
'is_category' => false,
|
|
|
|
'menuId' => 'plugins',
|
|
|
|
'is_top_level' => true,
|
|
|
|
],
|
|
|
|
'icon' => $menu_icon,
|
|
|
|
);
|
|
|
|
|
|
|
|
wc_admin_register_page( $menu_data );
|
|
|
|
|
|
|
|
// Registering a top level menu via wc_admin_register_page doesn't work when the new
|
|
|
|
// nav is enabled. The new nav disabled everything, except the 'WooCommerce' menu.
|
|
|
|
// We need to register this menu via add_menu_page so that it doesn't become a child of
|
|
|
|
// WooCommerce menu.
|
|
|
|
if ( 'yes' === get_option( 'woocommerce_navigation_enabled', 'no' ) ) {
|
|
|
|
$menu_with_nav_data = array(
|
|
|
|
__( 'Payments', 'woocommerce-admin' ),
|
|
|
|
__( 'Payments', 'woocommerce-admin' ),
|
|
|
|
'view_woocommerce_reports',
|
|
|
|
'admin.php?page=wc-admin&path=/wc-pay-welcome-page',
|
|
|
|
null,
|
|
|
|
$menu_icon,
|
|
|
|
55.7,
|
|
|
|
);
|
|
|
|
|
|
|
|
call_user_func_array( 'add_menu_page', $menu_with_nav_data );
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add badge.
|
|
|
|
foreach ( $menu as $index => $menu_item ) {
|
|
|
|
if ( 'wc-admin&path=/wc-pay-welcome-page' === $menu_item[2]
|
|
|
|
|| 'admin.php?page=wc-admin&path=/wc-pay-welcome-page' === $menu_item[2] ) {
|
|
|
|
//phpcs:ignore
|
|
|
|
$menu[ $index ][0] .= ' <span class="wcpay-menu-badge awaiting-mod count-1"><span class="plugin-count">1</span></span>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Checks if user is in the experiment.
|
|
|
|
*
|
|
|
|
* @return bool Whether the user is in the treatment group.
|
|
|
|
*/
|
|
|
|
private function should_add_the_menu() {
|
|
|
|
$anon_id = isset( $_COOKIE['tk_ai'] ) ? sanitize_text_field( wp_unslash( $_COOKIE['tk_ai'] ) ) : '';
|
|
|
|
$allow_tracking = 'yes' === get_option( 'woocommerce_allow_tracking' );
|
|
|
|
$abtest = new \WooCommerce\Admin\Experimental_Abtest(
|
|
|
|
$anon_id,
|
|
|
|
'woocommerce',
|
|
|
|
$allow_tracking
|
|
|
|
);
|
|
|
|
|
|
|
|
$date = new \DateTime( 'now', wp_timezone() );
|
|
|
|
$experiment_name = strtr(
|
|
|
|
self::EXPERIMENT_NAME_BASE,
|
|
|
|
array(
|
|
|
|
':yyyy' => $date->format( 'Y' ),
|
|
|
|
':mm' => $date->format( 'm' ),
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
return $abtest->get_variation( $experiment_name ) === 'treatment';
|
|
|
|
}
|
|
|
|
}
|