• File: Welcome.php
  • Full Path: /home/matthif/www/wp-content/plugins/optinmonster/OMAPI/Welcome.php
  • Date Modified: 01/24/2025 1:58 PM
  • File size: 4.81 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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_urlOMAPI_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_urlOMAPI_Urls::onboarding() ); ?>" title="<?php esc_attr_e'Learn More''optin-monster-api' ); ?>"><?php esc_html_e'Learn More &rarr;''optin-monster-api' ); ?></a></p>
        </div>
        <?php
    
}

}