/**
  * Constructs and initialize Pronamic WordPress Extensions plugin
  *
  * @param string $file
  */
 private function __construct($file)
 {
     $this->file = $file;
     $this->dir_path = plugin_dir_path($file);
     // Includes
     foreach (glob($this->dir_path . 'includes/*.php') as $filename) {
         require_once $filename;
     }
     // Actions
     add_action('init', array($this, 'init'));
     add_action('plugins_loaded', array($this, 'plugins_loaded'));
     add_action('admin_bar_menu', array($this, 'admin_bar_menu'), 100);
     // Filters
     add_filter('wp_headers', array($this, 'wp_headers'));
     // Admin
     if (is_admin()) {
         Pronamic_WP_ClientPlugin_Admin::get_instance($this);
     }
     // Updater
     $this->updater = Pronamic_WP_ClientPlugin_Updater::get_instance($this);
 }
 /**
  * Return an instance of this class.
  *
  * @since 1.1.0
  *
  * @return object A single instance of this class.
  */
 public static function get_instance($plugin = false)
 {
     // If the single instance hasn't been set, set it now.
     if (null === self::$instance) {
         self::$instance = new self($plugin);
     }
     return self::$instance;
 }