/**
  * Main PP_Customizer_Customizer_Admin Instance
  *
  * Ensures only one instance of PP_Customizer_Customizer_Admin is loaded or can be loaded.
  *
  * @since 1.0.0
  * @static
  * @return Main PP_Customizer_Customizer_Admin instance
  */
 public static function instance()
 {
     if (is_null(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
 /**
  * Retrieve the settings fields details
  * @access  public
  * @param  string $section field section.
  * @since   1.0.0
  * @return  array        Settings fields.
  */
 public function get_settings_fields($section)
 {
     $settings_fields = array();
     // Declare the default settings fields.
     switch ($section) {
         case 'pp-cc-fields':
             if ($this->customizeManager != null) {
                 $customizeManager = $this->customizeManager;
             } else {
                 if (isset($GLOBALS['wp_customize'])) {
                     $customizeManager = $GLOBALS['wp_customize'];
                 } else {
                     if (!class_exists('WP_Customize_Manager')) {
                         require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
                         // Init Customize class
                         $customizeManager = new WP_Customize_Manager();
                         // this is to initialize some data fields using this method
                         $customizeManager->setup_theme();
                     } else {
                         //					$customizeManager = new WP_Customize_Manager;
                         //
                         //					// this is to initialize some data fields using this method
                         //					$customizeManager->setup_theme();
                         return array();
                     }
                 }
             }
             remove_action('customize_register', array(PP_Customizer_Customizer_Admin::instance(), 'customize_register'), 100);
             do_action('customize_register', $customizeManager);
             add_action('customize_register', array(PP_Customizer_Customizer_Admin::instance(), 'customize_register'), 100);
             $temp = array();
             foreach ($customizeManager->panels() as $key => $panel) {
                 $temp[$key] = $panel;
             }
             foreach ($customizeManager->sections() as $key => $section) {
                 if (isset($section->panel) && $section->panel != null) {
                     continue;
                 }
                 $temp[$key] = $section;
             }
             uasort($temp, function ($a, $b) {
                 return $a->priority - $b->priority;
             });
             foreach ($temp as $key => $value) {
                 $settings_fields[$key] = array('name' => $value->title, 'type' => 'checkbox', 'default' => 'true', 'section' => 'pp-cc-fields', 'description' => 'Enabled');
             }
             break;
         case 'standard-fields':
             $settings_fields['text'] = array('name' => __('Example Text Input', 'pp-customizer-customizer'), 'type' => 'text', 'default' => '', 'section' => 'standard-fields', 'description' => __('Place the field description text here.', 'pp-customizer-customizer'));
             $settings_fields['textarea'] = array('name' => __('Example Textarea', 'pp-customizer-customizer'), 'type' => 'textarea', 'default' => '', 'section' => 'standard-fields', 'description' => __('Place the field description text here.', 'pp-customizer-customizer'));
             $settings_fields['checkbox'] = array('name' => __('Example Checkbox', 'pp-customizer-customizer'), 'type' => 'checkbox', 'default' => '', 'section' => 'standard-fields', 'description' => __('Place the field description text here.', 'pp-customizer-customizer'));
             $settings_fields['radio'] = array('name' => __('Example Radio Buttons', 'pp-customizer-customizer'), 'type' => 'radio', 'default' => '', 'section' => 'standard-fields', 'options' => array('one' => __('One', 'pp-customizer-customizer'), 'two' => __('Two', 'pp-customizer-customizer'), 'three' => __('Three', 'pp-customizer-customizer')), 'description' => __('Place the field description text here.', 'pp-customizer-customizer'));
             $settings_fields['select'] = array('name' => __('Example Select', 'pp-customizer-customizer'), 'type' => 'select', 'default' => '', 'section' => 'standard-fields', 'options' => array('one' => __('One', 'pp-customizer-customizer'), 'two' => __('Two', 'pp-customizer-customizer'), 'three' => __('Three', 'pp-customizer-customizer')), 'description' => __('Place the field description text here.', 'pp-customizer-customizer'));
             break;
         case 'special-fields':
             $settings_fields['select_taxonomy'] = array('name' => __('Example Taxonomy Selector', 'pp-customizer-customizer'), 'type' => 'select_taxonomy', 'default' => '', 'section' => 'special-fields', 'description' => __('Place the field description text here.', 'pp-customizer-customizer'));
             break;
         default:
             # code...
             break;
     }
     return (array) apply_filters('pp-customizer-customizer-settings-fields', $settings_fields);
 }
 /**
  * Constructor function.
  * @access  public
  * @since   1.0.0
  * @return  void
  */
 public function __construct()
 {
     $this->token = 'pp-customizer-customizer';
     $this->plugin_url = plugin_dir_url(__FILE__);
     $this->plugin_path = plugin_dir_path(__FILE__);
     $this->version = '1.0.0';
     // Admin - Start
     require_once 'classes/class-pp-customizer-customizer-settings.php';
     $this->settings = PP_Customizer_Customizer_Settings::instance();
     if (is_admin()) {
         require_once 'classes/class-pp-customizer-customizer-admin.php';
         $this->admin = PP_Customizer_Customizer_Admin::instance();
     }
     // Post Types - End
     register_activation_hook(__FILE__, array($this, 'install'));
     add_action('init', array($this, 'load_plugin_textdomain'));
 }