aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/install/helper
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/install/helper')
-rw-r--r--phpBB/phpbb/install/helper/config.php20
-rw-r--r--phpBB/phpbb/install/helper/container_factory.php18
-rw-r--r--phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php63
-rw-r--r--phpBB/phpbb/install/helper/iohandler/cli_iohandler.php2
-rw-r--r--phpBB/phpbb/install/helper/iohandler/iohandler_interface.php4
5 files changed, 71 insertions, 36 deletions
diff --git a/phpBB/phpbb/install/helper/config.php b/phpBB/phpbb/install/helper/config.php
index f58925899b..94abf9ca0b 100644
--- a/phpBB/phpbb/install/helper/config.php
+++ b/phpBB/phpbb/install/helper/config.php
@@ -95,8 +95,9 @@ class config
$this->installer_config = array();
$this->system_data = array();
$this->progress_data = array(
- 'last_task_module_name' => '', // Stores the service name of the latest finished module
- 'last_task_name' => '', // Stores the service name of the latest finished task
+ 'last_task_module_neme' => '', // Stores the service name of the latest finished module
+ 'last_task_module_index' => 0, // Stores the index of the latest finished module
+ 'last_task_index' => 0, // Stores the index of the latest finished task
'max_task_progress' => 0,
'current_task_progress' => 0,
'_restart_points' => array(),
@@ -187,21 +188,23 @@ class config
/**
* Saves the latest executed task
*
- * @param string $task_service_name Name of the installer task service
+ * @param int $task_service_index Index of the installer task service in the module
*/
- public function set_finished_task($task_service_name)
+ public function set_finished_task($task_service_index)
{
- $this->progress_data['last_task_name'] = $task_service_name;
+ $this->progress_data['last_task_index'] = $task_service_index;
}
/**
* Set active module
*
* @param string $module_service_name Name of the installer module service
+ * @param int $module_service_index Index of the installer module service
*/
- public function set_active_module($module_service_name)
+ public function set_active_module($module_service_name, $module_service_index)
{
$this->progress_data['last_task_module_name'] = $module_service_name;
+ $this->progress_data['last_task_module_index'] = $module_service_index;
}
/**
@@ -391,6 +394,11 @@ class config
*/
public function set_finished_navigation_stage($nav_path)
{
+ if (isset($this->navigation_data['finished']) && in_array($nav_path, $this->navigation_data['finished']))
+ {
+ return;
+ }
+
$this->navigation_data['finished'][] = $nav_path;
}
diff --git a/phpBB/phpbb/install/helper/container_factory.php b/phpBB/phpbb/install/helper/container_factory.php
index 6c1ecd2d02..5cf4f8a283 100644
--- a/phpBB/phpbb/install/helper/container_factory.php
+++ b/phpBB/phpbb/install/helper/container_factory.php
@@ -13,7 +13,6 @@
namespace phpbb\install\helper;
-use phpbb\cache\driver\dummy;
use phpbb\install\exception\cannot_build_container_exception;
use phpbb\language\language;
use phpbb\request\request;
@@ -157,25 +156,20 @@ class container_factory
->with_environment('production')
->with_config($phpbb_config_php_file)
->with_config_path($config_path)
- ->without_cache()
->without_compiled_container()
->get_container();
// Setting request is required for the compatibility globals as those are generated from
// this container
- $this->container->register('request')->setSynthetic(true);
- $this->container->set('request', $this->request);
-
- $this->container->register('language')->setSynthetic(true);
- $this->container->set('language', $this->language);
-
- // Replace cache service, as config gets cached, and we don't want that when we are installing
- if (!is_dir($other_config_path))
+ if (!$this->container->isFrozen())
{
- $this->container->register('cache.driver')->setSynthetic(true);
- $this->container->set('cache.driver', new dummy());
+ $this->container->register('request')->setSynthetic(true);
+ $this->container->register('language')->setSynthetic(true);
}
+ $this->container->set('request', $this->request);
+ $this->container->set('language', $this->language);
+
$this->container->compile();
$phpbb_container = $this->container;
diff --git a/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php b/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php
index 31474ae4e9..8c62ec7bd0 100644
--- a/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php
+++ b/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php
@@ -209,9 +209,15 @@ class ajax_iohandler extends iohandler_base
/**
* {@inheritdoc}
*/
- public function send_response()
+ public function send_response($no_more_output = false)
{
- $json_data_array = $this->prepare_json_array();
+ $json_data_array = $this->prepare_json_array($no_more_output);
+
+ if (empty($json_data_array))
+ {
+ return;
+ }
+
$json_data = json_encode($json_data_array);
// Try to push content to the browser
@@ -223,23 +229,43 @@ class ajax_iohandler extends iohandler_base
/**
* Prepares iohandler's data to be sent out to the client.
*
+ * @param bool $no_more_output Whether or not there will be more output in this response
+ *
* @return array
*/
- protected function prepare_json_array()
+ protected function prepare_json_array($no_more_output = false)
{
- $json_array = array(
- 'errors' => $this->errors,
- 'warnings' => $this->warnings,
- 'logs' => $this->logs,
- 'success' => $this->success,
- 'download' => $this->download,
- );
+ $json_array = array();
+
+ if (!empty($this->errors))
+ {
+ $json_array['errors'] = $this->errors;
+ $this->errors = array();
+ }
+
+ if (!empty($this->warnings))
+ {
+ $json_array['warnings'] = $this->warnings;
+ $this->warnings = array();
+ }
- $this->errors = array();
- $this->warnings = array();
- $this->logs = array();
- $this->success = array();
- $this->download = array();
+ if (!empty($this->logs))
+ {
+ $json_array['logs'] = $this->logs;
+ $this->logs = array();
+ }
+
+ if (!empty($this->success))
+ {
+ $json_array['success'] = $this->success;
+ $this->success = array();
+ }
+
+ if (!empty($this->download))
+ {
+ $json_array['download'] = $this->download;
+ $this->download = array();
+ }
if (!empty($this->form))
{
@@ -293,6 +319,11 @@ class ajax_iohandler extends iohandler_base
$this->redirect_url = array();
}
+ if ($no_more_output)
+ {
+ $json_array['over'] = true;
+ }
+
return $json_array;
}
@@ -398,7 +429,7 @@ class ajax_iohandler extends iohandler_base
public function redirect($url, $use_ajax = false)
{
$this->redirect_url = array('url' => $url, 'use_ajax' => $use_ajax);
- $this->send_response();
+ $this->send_response(true);
}
/**
diff --git a/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php b/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
index 7945904524..94550d2db0 100644
--- a/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
+++ b/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
@@ -114,7 +114,7 @@ class cli_iohandler extends iohandler_base
/**
* {@inheritdoc}
*/
- public function send_response()
+ public function send_response($no_more_output = false)
{
}
diff --git a/phpBB/phpbb/install/helper/iohandler/iohandler_interface.php b/phpBB/phpbb/install/helper/iohandler/iohandler_interface.php
index 6b3839506f..f22f33d9cb 100644
--- a/phpBB/phpbb/install/helper/iohandler/iohandler_interface.php
+++ b/phpBB/phpbb/install/helper/iohandler/iohandler_interface.php
@@ -20,8 +20,10 @@ interface iohandler_interface
{
/**
* Renders or returns response message
+ *
+ * @param bool $no_more_output Whether or not there will be more output in this output unit
*/
- public function send_response();
+ public function send_response($no_more_output = false);
/**
* Returns input variable