/**
  * Return an instance of this class.
  *
  * @since     1.0.0
  *
  * @return    object    A single instance of this class.
  */
 public static function get_instance()
 {
     // If the single instance hasn't been set, set it now.
     if (null == self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }
 /**
  * Initialize the plugin by loading admin scripts & styles and adding a
  * settings page and menu.
  *
  * @since     1.0.0
  */
 private function __construct()
 {
     $plugin = PopupsP::get_instance();
     $this->plugin_slug = $plugin->get_plugin_slug();
     //settings name
     $this->options_name = $this->plugin_slug . '_settings';
     $this->loadDependencies();
     // helper funcs
     if (class_exists('Spu_Helper')) {
         $this->helper = new Spu_Helper();
     }
     add_action('spu/settings_page/before', array($this, 'load_spu_settings'), 1);
     //Integrations
     add_action('admin_menu', array($this, 'add_integrations_menu'));
     //Add new effect
     add_action('spu/metaboxes/animations', array($this, 'add_animations'), 10, 1);
     //Add new positions
     add_action('spu/metaboxes/positions', array($this, 'add_positions'), 10, 1);
     //Add trigger action and value
     add_action('spu/metaboxes/trigger_options', array($this, 'add_trigger_actions'), 10, 1);
     add_action('spu/metaboxes/trigger_values', array($this, 'add_trigger_values'), 10, 1);
     // Add advanced closing methods
     add_action('spu/metaboxes/after_display_options', array($this, 'add_closing_methods'), 10, 1);
     // Add auto close timer
     add_action('spu/metaboxes/after_display_options', array($this, 'add_autoclose_timer'), 10, 1);
     // Thanks message
     #add_action( 'spu/metaboxes/after_display_options', array( $this, 'add_thanks_msg' ), 10, 1 );
     // Tracking events
     add_action('wp_ajax_track_spup', array($this, 'track_events'));
     add_action('wp_ajax_nopriv_track_spup', array($this, 'track_events'));
     // tracking events columns in cpt
     add_filter('manage_edit-spucpt_columns', array($this, 'set_custom_cpt_columns'), 10, 2);
     add_filter('post_row_actions', array($this, 'modify_title_row'), 10, 2);
     add_action('manage_spucpt_posts_custom_column', array($this, 'custom_columns'), 10, 2);
     // Reseting stats
     add_action('admin_init', array($this, 'reset_stats_action'));
     // Sanitize new options
     add_filter('spu/metaboxes/sanitized_options', array($this, 'sanitize_options'), 10, 1);
     //Add default values
     add_filter('spu/metaboxes/default_options', array($this, 'add_default_values'), 10, 1);
     // Support metabox
     add_filter('spu/metaboxes/support_metabox', array($this, 'support_metabox'), 10, 1);
     // Load admin style sheet and JavaScript.
     add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
     add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
     // Google UA settings
     add_action('spu/settings_page/before', array($this, 'google_ua_field'), 15);
     // Data Sampling
     if (!defined('SPUP_DISABLE_STATS')) {
         add_action('spu/settings_page/before', array($this, 'data_sampling_field'), 16);
     }
     // License & Updates
     add_action('spu/settings_page/before', array($this, 'license_field'));
     // We run early to active all the proccess of updates
     add_action('admin_init', array($this, 'handle_license'), 1);
     //Add our metaboxes
     add_action('add_meta_boxes', array($this, 'add_meta_boxes'));
     // Optin ajax
     add_action('wp_ajax_spu_get_optin_lists', array($this, 'ajax_get_optin_lists'));
     add_action('wp_ajax_spu_get_optin_list_segments', array($this, 'ajax_get_optin_list_segments'));
     // Optin styles
     add_action('admin_init', array($this, 'optin_editor_styles'));
     // Add integrations that don't require api keys
     add_action('spu/settings_page/integrations', array($this, 'add_custom_integrations'));
 }