View file File name : Welcome.php Content :<?php /** * Welcome class. * * @since 1.1.4 * * @package OMAPI * @author Devin Vinson */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Welcome class. * * @since 1.1.4 */ class OMAPI_Welcome { /** * Holds the class object. * * @since 1.1.4.2 * * @var object */ public static $instance; /** * Path to the file. * * @since 1.1.4.2 * * @var string */ public $file = __FILE__; /** * Holds the base class object. * * @since 1.1.4.2 * * @var object */ public $base; /** * Primary class constructor. * * @since 1.1.4.2 */ public function __construct() { // If we are not in admin or admin ajax, return. if ( ! is_admin() ) { return; } // If user is in admin ajax or doing cron, return. if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) { return; } // If user is not logged in, return. if ( ! is_user_logged_in() ) { return; } // If user cannot manage_options, return. if ( ! OMAPI::get_instance()->can_access( 'welcome' ) ) { return; } // Set our object. $this->set(); // Maybe load a dashboard widget. add_action( 'admin_init', array( $this, 'redirect' ), 9999 ); add_action( 'wp_dashboard_setup', array( $this, 'dashboard_widget' ) ); } /** * Sets our object instance and base class instance. * * @since 1.1.4.2 */ public function set() { self::$instance = $this; $this->base = OMAPI::get_instance(); } /** * Onboarding redirect. * * This function checks if a new install or update has just occurred. If so, * then we redirect the user to the appropriate page. * * @since 2.6.0 */ public function redirect() { // Check if we should consider redirection. if ( ! get_transient( 'optin_monster_api_activation_redirect' ) ) { return; } // If we are redirecting, clear the transient so it only happens once. delete_transient( 'optin_monster_api_activation_redirect' ); // Check option to disable welcome redirect. if ( get_option( 'optin_monster_api_activation_redirect_disabled', false ) ) { return; } // Only do this for single site installs. // phpcs:ignore WordPress.Security.NonceVerification.Recommended if ( isset( $_GET['activate-multi'] ) || is_network_admin() ) { return; } // Don't initiate onboarding if they are already connected. if ( OMAPI_ApiKey::has_credentials() ) { return; } $goto = OMAPI_Urls::dashboard(); // Check if they haven't yet been welcomed. if ( 'welcomed' !== $this->base->get_option( 'welcome', 'status', 'none' ) ) { $options = $this->base->get_option(); $options['welcome']['status'] = 'welcomed'; update_option( 'optin_monster_api', $options ); $goto = OMAPI_Urls::wizard(); } wp_safe_redirect( $goto ); exit; } /** * Loads a dashboard widget if the user has not entered and verified API credentials. * * @since 1.1.5.1 */ public function dashboard_widget() { if ( OMAPI_ApiKey::has_credentials() ) { return; } wp_add_dashboard_widget( 'optin_monster_db_widget', esc_html__( 'Please Connect OptinMonster', 'optin-monster-api' ), array( $this, 'dashboard_widget_callback' ) ); global $wp_meta_boxes; $normal_dashboard = $wp_meta_boxes['dashboard']['normal']['core']; $example_widget_backup = array( 'optin_monster_db_widget' => $normal_dashboard['optin_monster_db_widget'] ); unset( $normal_dashboard['optin_monster_db_widget'] ); $sorted_dashboard = array_merge( $example_widget_backup, $normal_dashboard ); $wp_meta_boxes['dashboard']['normal']['core'] = $sorted_dashboard; } /** * Dashboard widget callback. * * @since 1.1.5.1 */ public function dashboard_widget_callback() { ?> <div class="optin-monster-db-widget" style="text-align:center;"> <p><img src="<?php echo plugins_url( '/assets/images/logo-om.png', OMAPI_FILE ); ?>" alt="<?php esc_attr_e( 'OptinMonster', 'optin-monster-api' ); ?>" width="300px" height="45px"></p> <h3 style="font-weight:normal;font-size:1.3em;"><?php esc_html_e( 'Please Connect OptinMonster', 'optin-monster-api' ); ?></h3> <p> <?php echo wp_kses_post( __( 'Instantly grow your email list, get more leads and increase sales with the <strong>#1 most powerful conversion optimization toolkit in the world.</strong>', 'optin-monster-api' ) ); ?> </p> <p><a href="<?php echo esc_url( OMAPI_Urls::onboarding() ); ?>" class="button button-primary" title="<?php esc_attr_e( 'Get Started', 'optin-monster-api' ); ?>"><?php esc_html_e( 'Get Started', 'optin-monster-api' ); ?></a><a style="margin-left:8px" href="<?php echo esc_url( OMAPI_Urls::onboarding() ); ?>" title="<?php esc_attr_e( 'Learn More', 'optin-monster-api' ); ?>"><?php esc_html_e( 'Learn More →', 'optin-monster-api' ); ?></a></p> </div> <?php } }