public function Init()
 {
     $this->init_fs_hooks();
     if (!$this->fs->is_registered() && !is_admin()) {
         return;
     }
     if ($this->fs->is_registered() && !$this->account->is_registered()) {
         // Connected only with FS, therefore try to connect to RW.
         $this->connect_account($this->fs->get_user(), $this->fs->get_site());
     }
     // Load all extensions.
     require_once WP_RW__PLUGIN_LIB_DIR . 'rw-extension-abstract.php';
     require_once WP_RW__PLUGIN_LIB_DIR_EXT . 'rw-woocommerce.php';
     $this->LoadExtensionsDefaultOptions();
     $this->LogInitialData();
     // Run plugin setup.
     $continue = is_admin() ? $this->setup_on_dashboard() : $this->setup_on_site();
     if (!$continue) {
         return;
     }
     if ($this->fs->is_registered()) {
         $this->fs->add_submenu_link_item(__rw('faq'), rw_get_site_url('support/wordpress/#platform'), false, 'read', 25);
         //					add_action( 'init', array( &$this, 'LoadPlan' ) );
         // Clear cache has to be executed after LoadPlan, because clear
         // cache is has a condition that checks the plan.
         add_action('init', array(&$this, 'ClearCache'));
         add_action('init', array(&$this, 'SetupBuddyPress'));
         add_action('init', array(&$this, 'SetupBBPress'));
     }
     $this->errors = new WP_Error();
     $this->success = new WP_Error();
     /**
      * IMPORTANT:
      *   All scripts/styles must be enqueued from these actions,
      *   otherwise it will mass-up the layout of the admin's dashboard
      *   on RTL WP versions.
      */
     add_action('admin_enqueue_scripts', array(&$this, 'InitScriptsAndStyles'));
     // Enqueue site's styles
     add_action('wp_enqueue_scripts', array(&$this, 'init_site_styles'));
     $rw_languages = array();
     require_once WP_RW__PLUGIN_DIR . '/languages/dir.php';
     $this->languages = $rw_languages;
     $this->languages_short = array_keys($this->languages);
     add_action('plugins_loaded', array(&$this, 'rw_load_textdomain'));
 }