array(
'toplevel_page_wp-defender',
'toplevel_page_wp-defender-network',
'defender_page_wdf-ip-lockout',
'defender_page_wdf-ip-lockout-network',
'defender-pro_page_wdf-ip-lockout',
'defender-pro_page_wdf-ip-lockout-network',
),
'extra_args' => array(
'register' => array(
'connect_ref' => self::PLUGIN_IDENTIFIER,
'utm_medium' => 'plugin',
'utm_source' => self::PLUGIN_IDENTIFIER,
),
),
);
// Get advanced params.
$page = defender_get_data_from_request( 'page', 'g' );
$view = defender_get_data_from_request( 'view', 'g' );
$res = $this->get_utm_tags( $page, $view );
if ( ! empty( $res['utm_campaign'] ) ) {
$options['extra_args']['register']['utm_campaign'] = $res['utm_campaign'];
}
if ( ! empty( $res['utm_content'] ) ) {
$options['extra_args']['register']['utm_content'] = $res['utm_content'];
}
Connector::get()->set_options( self::PLUGIN_IDENTIFIER, $options );
}
/**
* Gets the label for the button to connect the site to the Hub.
*
* @return string The label for the button.
*/
public function get_button_label(): string {
if ( $this->is_dash_installed() && ! $this->is_dash_activated() ) {
return __( 'Activate WPMU DEV Dashboard', 'defender-security' );
}
if ( $this->is_dash_activated() ) {
return __( 'Log in to WPMU DEV', 'defender-security' );
}
return __( 'Connect site for Full protection', 'defender-security' );
}
/**
* Modify text string vars.
*
* @param array $texts Vars.
* @param string $plugin Plugin identifier.
*
* @return array
*/
public static function customize_text_vars( $texts, $plugin ): array {
if ( self::PLUGIN_IDENTIFIER === $plugin ) {
$feature_name = self::get_feature_name();
$texts['create_account_desc'] = sprintf(
/* translators: 1. Feature name. 2. Opened tag. 3. Closed tag. */
esc_html__( 'Create a free account to connect your site to WPMU DEV and activate %1$s. %2$sIt`s fast, seamless, and free%3$s.', 'defender-security' ),
'' . __( 'Defender - ', 'defender-security' ) . $feature_name . '',
'',
''
);
$texts['login_desc'] = sprintf(
/* translators: %s: Feature name. */
esc_html__( 'Log in with your WPMU DEV account credentials to activate %s.', 'defender-security' ),
$feature_name
);
}
return $texts;
}
/**
* Get feature's name.
*
* @return string
*/
public static function get_feature_name(): string {
$feature_name = defender_get_data_from_request( 'module_name', 'g' );
if ( ! empty( $feature_name ) ) {
return $feature_name;
}
$view = defender_get_data_from_request( 'view', 'g' );
switch ( $view ) {
case 'blocklist':
return __( 'Custom IP Allow/Block list', 'defender-security' );
default:
return __( 'AntiBot Global Firewall', 'defender-security' );
}
}
/**
* Get UTM tags.
*
* @param string $page The page to load.
* @param string $view The view to load.
*
* @return array
*/
private function get_utm_tags( string $page = '', string $view = '' ): array {
$utm_campaign = '';
$utm_content = '';
if ( ! empty( $page ) ) {
switch ( $page ) {
// There are buttons on notice or widget on the Dashboard page.
case 'wp-defender':
$utm_content = ( 'dashboard' === $view )
? 'dashboard'
: 'onboarding';
$utm_campaign = ( 'dashboard' === $view )
? 'defender_dashboard'
: 'defender_onboarding';
break;
case 'wdf-ip-lockout':
$utm_content = ( 'blocklist' === $view )
? 'firewall_page_connect_site'
: 'feature_page';
$utm_campaign = ( 'blocklist' === $view )
? 'defender_firewall_centralip'
: 'defender_firewall_antibot';
break;
default:
break;
}
}
return array(
'utm_campaign' => $utm_campaign,
'utm_content' => $utm_content,
);
}
/**
* Retrieve the Hub connector URL.
*
* @param string $page Optional. The page to load. Default is empty string.
* @param string $view Optional. The view to load. Default is empty string.
*
* @return string
*/
public function get_url( string $page = '', string $view = '' ): string {
if ( $this->is_dash_activated() ) {
$args = array(
'page' => 'wpmudev',
'utm_source' => self::PLUGIN_IDENTIFIER,
'utm_medium' => 'plugin',
);
// Get advanced params.
$res = $this->get_utm_tags( $page, $view );
if ( ! empty( $res['utm_campaign'] ) ) {
$args['utm_campaign'] = $res['utm_campaign'];
}
if ( ! empty( $res['utm_content'] ) ) {
$args['utm_content'] = $res['utm_content'];
}
return add_query_arg( $args, network_admin_url( 'admin.php' ) );
}
$query = array(
'_def_nonce' => wp_create_nonce( self::CONNECTION_ACTION ),
);
if ( ! empty( $page ) ) {
$query['page'] = $page;
}
if ( ! empty( $view ) ) {
$query['view'] = $view;
}
return add_query_arg( $query, network_admin_url( 'admin.php' ) );
}
}