File "class-iconic-onboard.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/orderable/inc/vendor/iconic-onboard/class-iconic-onboard.php
File size: 5.32 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Onboard.
*
* @package iconic-onboard
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
if ( class_exists( 'Orderable_Onboard' ) ) {
return;
}
/**
* Orderable_Onboard.
*
* @class Orderable_Onboard
* @version 1.0.5
*/
class Orderable_Onboard {
/**
* Single instance of the Orderable_Onboard object.
*
* @var Orderable_Onboard
*/
public static $single_instance = null;
/**
* Slide Defaults.
*
* @var array $slide_defaults
*/
protected static $slide_defaults = array(
'title' => '',
'desc' => '',
'type' => 'text',
'default' => '',
'fields' => array(),
'choices' => array(),
'wait' => null,
'json_data' => array(),
);
/**
* Class args.
*
* @var array
*/
public static $args = array();
/**
* Path.
*
* @var string $path
*/
public static $path = null;
/**
* URL.
*
* @var string $url
*/
public static $url = null;
/**
* Creates/returns the single instance Orderable_Onboard object.
*
* @param array $args Configuration settings.
* - $args['plugin_slug'] A unique key for the plugin - Required.
* - $args['version'] Plugin version - Required.
* - $args['plugin_url'] Plugin URL - Required.
* - $args['plugin_path'] Plugin Path - Required.
*
* @return Orderable_Onboard
*/
public static function run( $args = array() ) {
if ( null === self::$single_instance ) {
self::$args = $args;
self::$single_instance = new self();
}
return self::$single_instance;
}
/**
* Construct.
*/
private function __construct() {
self::$path = self::$args['plugin_path'] . '/inc/vendor/iconic-onboard/';
self::$url = self::$args['plugin_url'] . '/inc/vendor/iconic-onboard/';
$this->load_classes();
$this->enqueue_assets();
$this->insert_modal_html();
}
/**
* Enqueue assets.
*/
private function enqueue_assets() {
add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
}
/**
* Insert Modal HTML.
*
* @return void
*/
private function insert_modal_html() {
add_action( 'wpsf_after_settings_' . self::$args['plugin_slug'], array( $this, 'modal_html' ) );
}
/**
* Load classes
*
* @return void
*/
private function load_classes() {
require self::$path . '/inc/class-ajax.php';
require self::$path . '/inc/class-settings.php';
Orderable_Onboard_Ajax::run( self::$args );
Orderable_Onboard_Settings::run( self::$args );
}
/**
* Enqueue admin scripts.
*/
public function admin_scripts() {
wp_enqueue_script( 'iconic-modal', self::$url . 'assets/vendor/iconic-modal/jquery.iconic-modal.js', array( 'jquery' ), self::$args['version'], true );
wp_enqueue_style( 'iconic-modal', self::$url . 'assets/vendor/iconic-modal/iconic-modal.css', array(), self::$args['version'] );
wp_enqueue_script( 'jquery-toggle-switch', self::$url . 'assets/vendor/jquery-toggles/jquery.toggleswitch.min.js', array( 'jquery' ), self::$args['version'], true );
wp_enqueue_style( 'jquery-toggle-switch', self::$url . 'assets/vendor/jquery-toggles/jquery.toggleswitch.min.css', array(), self::$args['version'] );
wp_enqueue_script( 'iconic-onboard-js', self::$url . 'assets/js/main.js', array( 'jquery' ), self::$args['version'], true );
wp_enqueue_style( 'iconic-onboard-css', self::$url . 'assets/css/main.css', array(), self::$args['version'] );
$localization_data = array(
'plugin_slug' => self::$args['plugin_slug'],
'nonce' => wp_create_nonce( 'iconic-onboard' ),
'i18n' => array(
'error_install_plugin' => __( 'Oops! There was an issue installing the required plugin. Please try again or contact support.', 'iconic-onboard' ),
),
);
wp_localize_script( 'iconic-onboard-js', 'iconic_onboarding_params', $localization_data );
}
/**
* Modal HTML.
*
* @return void
*/
public function modal_html() {
$fname = $this->get_admin_first_name();
$modal_class = '';
$args = apply_filters( 'iconic_onboard_args', self::$args );
$plugin_slug = $args['plugin_slug'];
$slides = $args['slides'];
$disable_skip = isset( $args['disable_skip'] ) && $args['disable_skip'] ? true : false;
$dismissed = get_option( $plugin_slug . '_onboard_dismiss_modal' );
$saved = get_option( $plugin_slug . '_onboard_save_modal' );
$defaults = self::$slide_defaults;
// If saved or dismissed.
if ( $dismissed || $saved ) {
$modal_class = 'iconic-onboard-modal--disable-auto-popup';
}
include self::$path . '/templates/admin/popup-slides.php';
}
/**
* Returns the first name of currently logged in user.
*
* @return false | string
*/
public static function get_admin_first_name() {
$user = wp_get_current_user();
if ( ! $user ) {
return false;
}
$fname = get_user_meta( $user->data->ID, 'first_name', true );
if ( empty( $fname ) ) {
return ucwords( $user->data->display_name );
} else {
return ucwords( $fname );
}
}
/**
* Get slug from path and associate it with the path.
*
* @param array $plugins Associative array of plugin files to paths.
* @param string $key Plugin relative path. Example: woocommerce/woocommerce.php.
*
* @return array
*/
public static function associate_plugin_file( $plugins, $key ) {
$path = explode( '/', $key );
$filename = end( $path );
$plugins[ $filename ] = $key;
return $plugins;
}
}