/**
  * Constructor
  */
 function __construct()
 {
     // Call install function on activation
     register_activation_hook(__FILE__, array($this, 'installPlugin'));
     // Store plugin basename
     self::$strPluginBasename = plugin_basename(__FILE__);
     // Load current settings
     self::loadSettings();
     // Upgrade?
     if (self::$aryGlobalSettings['revision'] < self::$intRevisionId) {
         $this->upgradePlugin();
     }
     // Settings changed?
     if (isset($_POST['action']) && $_POST['action'] == 'save_wp-piwik_settings') {
         $this->applySettings();
     } elseif (isset(self::$aryGlobalSettings['piwik_mode']) && self::$aryGlobalSettings['piwik_mode'] == 'php') {
         self::definePiwikConstants();
     }
     // Load language file
     load_plugin_textdomain('wp-piwik', false, dirname(self::$strPluginBasename) . "/languages/");
     // Add meta links to plugin details
     add_filter('plugin_row_meta', array($this, 'setPluginMeta'), 10, 2);
     // Register columns
     add_filter('screen_layout_columns', array(&$this, 'onScreenLayoutColumns'), 10, 2);
     // Add network admin menu if required
     if (is_plugin_active_for_network('wp-piwik/wp-piwik.php')) {
         add_action('network_admin_menu', array($this, 'buildNetworkAdminMenu'));
     }
     // Add admin menu
     add_action('admin_menu', array($this, 'buildAdminMenu'));
     // Register the callback been used if options of page been submitted and needs to be processed
     add_action('admin_post_save_wp-piwik_stats', array(&$this, 'onStatsPageSaveChanges'));
     // Register own post meta boxes
     add_action('load-post.php', array(&$this, 'postMetaboxes'));
     add_action('load-post-new.php', array(&$this, 'postMetaboxes'));
     // Add dashboard widget if enabled
     /* TODO: Use bitmask here */
     if (self::$aryGlobalSettings['dashboard_widget'] || self::$aryGlobalSettings['dashboard_chart'] || self::$aryGlobalSettings['dashboard_seo']) {
         add_action('wp_dashboard_setup', array($this, 'extendWordPressDashboard'));
     }
     // Add Toolbar graph if enabled
     if (self::$aryGlobalSettings['toolbar']) {
         add_action(is_admin() ? 'admin_head' : 'wp_head', array($this, 'loadToolbarRequirements'));
         add_action('admin_bar_menu', array(&$this, 'extendWordPressToolbar'), 1000);
     }
     // Enable shortcodes if enabled
     if (self::$aryGlobalSettings['shortcodes']) {
         add_shortcode('wp-piwik', array(&$this, 'shortcode'));
     }
     // Add tracking code to footer if enabled
     if (self::$aryGlobalSettings['add_tracking_code']) {
         add_action('wp_footer', array($this, 'footer'));
     }
 }