98 lines
2.5 KiB
PHP
98 lines
2.5 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Help integration functions for embedding the HS Beacon for users that have opted in.
|
||
|
*
|
||
|
* @package EIO
|
||
|
* @since 3.5.1
|
||
|
*/
|
||
|
|
||
|
namespace EWWW;
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Embed HS Beacon to give users more help when they need it.
|
||
|
*
|
||
|
* @since 3.5.1
|
||
|
*/
|
||
|
class HS_Beacon extends Base {
|
||
|
|
||
|
/**
|
||
|
* Get things going
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
parent::__construct();
|
||
|
\add_action( 'admin_action_eio_opt_into_hs_beacon', array( $this, 'check_for_optin' ) );
|
||
|
\add_action( 'admin_action_eio_opt_out_of_hs_beacon', array( $this, 'check_for_optout' ) );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check for a new opt-in via the admin notice
|
||
|
*/
|
||
|
public function check_for_optin() {
|
||
|
$this->debug_message( '<b>' . __METHOD__ . '()</b>' );
|
||
|
$this->set_option( $this->prefix . 'enable_help', 1 );
|
||
|
$this->set_option( $this->prefix . 'enable_help_notice', 1 );
|
||
|
\wp_safe_redirect( \remove_query_arg( 'action', \wp_get_referer() ) );
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Check for a new opt-out via the admin notice
|
||
|
*/
|
||
|
public function check_for_optout() {
|
||
|
$this->debug_message( '<b>' . __METHOD__ . '()</b>' );
|
||
|
\delete_option( $this->prefix . 'enable_help' );
|
||
|
\delete_network_option( null, $this->prefix . 'enable_help' );
|
||
|
$this->set_option( $this->prefix . 'enable_help_notice', 1 );
|
||
|
\wp_safe_redirect( \remove_query_arg( 'action', \wp_get_referer() ) );
|
||
|
exit;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Display the admin notice to users that have not opted-in or out
|
||
|
*
|
||
|
* @access public
|
||
|
* @param string $network_class A string that indicates where this is being displayed.
|
||
|
* @return void
|
||
|
*/
|
||
|
public function admin_notice( $network_class = '' ) {
|
||
|
$this->debug_message( '<b>' . __METHOD__ . '()</b>' );
|
||
|
$hide_notice = $this->get_option( $this->prefix . 'enable_help_notice' );
|
||
|
if ( 'network-multisite-over' === $network_class ) {
|
||
|
return;
|
||
|
}
|
||
|
if ( 'network-singlesite' === $network_class ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( $hide_notice ) {
|
||
|
return;
|
||
|
}
|
||
|
if ( $this->get_option( $this->prefix . 'enable_help' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( ! \current_user_can( 'manage_options' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( ! \function_exists( 'is_plugin_active_for_network' ) && \is_multisite() ) {
|
||
|
// Need to include the plugin library for the is_plugin_active function.
|
||
|
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
||
|
}
|
||
|
if (
|
||
|
\is_multisite() &&
|
||
|
\is_plugin_active_for_network( \constant( \strtoupper( $this->prefix ) . 'PLUGIN_FILE_REL' ) ) &&
|
||
|
! \current_user_can( 'manage_network_options' )
|
||
|
) {
|
||
|
return;
|
||
|
}
|
||
|
if ( \strpos( __FILE__, 'plugins/easy' ) ) {
|
||
|
\easyio_notice_beacon();
|
||
|
}
|
||
|
}
|
||
|
}
|