/**
* Bootstraps MultilingualPress.
*
* @since 3.0.0
*
* @return bool Whether or not MultilingualPress was bootstrapped successfully.
*
* @throws BadMethodCallException if called on a MultilingualPress instance that has already been bootstrapped.
*/
public function bootstrap()
{
if ($this->is_bootstrapped) {
throw new BadMethodCallException('Cannot bootstrap a MultilingualPress instance that has already been bootstrapped.');
}
/**
* Fires right before MultilingualPress gets bootstrapped.
*
* Hook here to register custom service providers.
*
* @since 3.0.0
*
* @param static $multilingualpress MultilingualPress instance.
*/
do_action('multilingualpress.bootstrap', $this);
static::$container->lock();
// TODO: Eventually remove the following block.
class_exists('Mlp_Load_Controller') or (require __DIR__ . '/inc/autoload/Mlp_Load_Controller.php');
new \Mlp_Load_Controller(static::$container['multilingualpress.properties']->plugin_dir_path() . '/src/inc');
if (!$this->check_installation()) {
return false;
}
$this->bootstrap_service_providers();
$needs_modules = $this->needs_modules();
if ($needs_modules) {
/**
* Fires right before MultilingualPress registers any modules.
*
* @since 3.0.0
*/
do_action('multilingualpress.register_modules');
$this->register_modules();
}
unset($this->modules);
static::$container->bootstrap();
$this->is_bootstrapped = true;
// TODO: Remove as soon as the old front controller has been replaced completely.
class_exists('Multilingual_Press') or (require __DIR__ . '/inc/Multilingual_Press.php');
// TODO: Refactor according to new architecure.
$old_controller = new \Multilingual_Press(static::$container);
$old_controller->prepare_plugin_data();
if (!$needs_modules) {
return true;
}
load_plugin_textdomain('multilingual-press');
if (is_admin()) {
$this->bootstrap_admin();
} else {
$this->bootstrap_front_end();
}
// TODO: Refactor according to new architecure.
$old_controller->setup();
return true;
}