boot(); } return self::$instance; } /** * Prevents direct construction. */ private function __construct() {} /** * Hooks every component once requirements are met. * * @return void */ private function boot() { if ( ! self::meets_requirements() ) { add_action( 'admin_notices', array( $this, 'requirements_notice' ) ); return; } Installer::init(); Profiles::init(); Privacy::init(); Posts::init(); Media::init(); Moderation::init(); Notifications::init(); \SpaceBay\Messages\Messages::init(); \SpaceBay\Auth\Auth::init(); \SpaceBay\Gamification\Gamification::init(); \SpaceBay\Events\Events::init(); Routes::init(); Portal::init(); if ( defined( 'WP_CLI' ) && WP_CLI ) { \SpaceBay\Cli\DemoCommand::register(); } if ( is_admin() ) { Menu::init(); PluginLinks::init(); } /** * Fires after SpaceBay has loaded all of its components. * * @since 1.0.0 */ do_action( 'spacebay_loaded' ); } /** * Checks the PHP and WordPress versions. * * @return bool */ public static function meets_requirements() { global $wp_version; return version_compare( PHP_VERSION, SPACEBAY_MIN_PHP, '>=' ) && version_compare( $wp_version, SPACEBAY_MIN_WP, '>=' ); } /** * Shows a notice when the server does not meet the requirements. * * @return void */ public function requirements_notice() { if ( ! current_user_can( 'activate_plugins' ) ) { return; } printf( '

%s

', esc_html( sprintf( /* translators: 1: Minimum PHP version, 2: Minimum WordPress version. */ __( 'SpaceBay needs PHP %1$s and WordPress %2$s or newer. Please update your server or WordPress to use SpaceBay.', 'spacebay' ), SPACEBAY_MIN_PHP, SPACEBAY_MIN_WP ) ) ); } }