aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/install/helper/iohandler
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/install/helper/iohandler')
-rw-r--r--phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php92
-rw-r--r--phpBB/phpbb/install/helper/iohandler/cli_iohandler.php9
-rw-r--r--phpBB/phpbb/install/helper/iohandler/factory.php2
-rw-r--r--phpBB/phpbb/install/helper/iohandler/iohandler_base.php8
-rw-r--r--phpBB/phpbb/install/helper/iohandler/iohandler_interface.php22
5 files changed, 113 insertions, 20 deletions
diff --git a/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php b/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php
index 1342ffa30f..8c62ec7bd0 100644
--- a/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php
+++ b/phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php
@@ -72,6 +72,11 @@ class ajax_iohandler extends iohandler_base
protected $download;
/**
+ * @var array
+ */
+ protected $redirect_url;
+
+ /**
* Constructor
*
* @param path_helper $path_helper
@@ -89,6 +94,7 @@ class ajax_iohandler extends iohandler_base
$this->nav_data = array();
$this->cookies = array();
$this->download = array();
+ $this->redirect_url = array();
$this->file_status = '';
parent::__construct();
@@ -131,6 +137,14 @@ class ajax_iohandler extends iohandler_base
*/
public function add_user_form_group($title, $form)
{
+ $this->form = $this->generate_form_render_data($title, $form);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function generate_form_render_data($title, $form)
+ {
$this->template->assign_block_vars('options', array(
'LEGEND' => $this->language->lang($title),
'S_LEGEND' => true,
@@ -189,15 +203,21 @@ class ajax_iohandler extends iohandler_base
'form_install' => 'installer_form.html',
));
- $this->form = $this->template->assign_display('form_install');
+ return $this->template->assign_display('form_install');
}
/**
* {@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
@@ -209,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();
+ }
+
+ if (!empty($this->logs))
+ {
+ $json_array['logs'] = $this->logs;
+ $this->logs = array();
+ }
- $this->errors = array();
- $this->warnings = array();
- $this->logs = array();
- $this->success = array();
- $this->download = 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))
{
@@ -273,6 +313,17 @@ class ajax_iohandler extends iohandler_base
$this->cookies = array();
}
+ if (!empty($this->redirect_url))
+ {
+ $json_array['redirect'] = $this->redirect_url;
+ $this->redirect_url = array();
+ }
+
+ if ($no_more_output)
+ {
+ $json_array['over'] = true;
+ }
+
return $json_array;
}
@@ -373,6 +424,15 @@ class ajax_iohandler extends iohandler_base
}
/**
+ * {@inheritdoc}
+ */
+ public function redirect($url, $use_ajax = false)
+ {
+ $this->redirect_url = array('url' => $url, 'use_ajax' => $use_ajax);
+ $this->send_response(true);
+ }
+
+ /**
* Callback function for language replacing
*
* @param array $matches
diff --git a/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php b/phpBB/phpbb/install/helper/iohandler/cli_iohandler.php
index 89f3594378..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)
{
}
@@ -289,4 +289,11 @@ class cli_iohandler extends iohandler_base
public function render_update_file_status($status_array)
{
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function redirect($url, $use_ajax = false)
+ {
+ }
}
diff --git a/phpBB/phpbb/install/helper/iohandler/factory.php b/phpBB/phpbb/install/helper/iohandler/factory.php
index 52d24e49b2..1e8395760a 100644
--- a/phpBB/phpbb/install/helper/iohandler/factory.php
+++ b/phpBB/phpbb/install/helper/iohandler/factory.php
@@ -75,7 +75,5 @@ class factory
throw new iohandler_not_implemented_exception();
break;
}
-
- throw new iohandler_not_implemented_exception();
}
}
diff --git a/phpBB/phpbb/install/helper/iohandler/iohandler_base.php b/phpBB/phpbb/install/helper/iohandler/iohandler_base.php
index 7271fe9bc0..fed4bc101f 100644
--- a/phpBB/phpbb/install/helper/iohandler/iohandler_base.php
+++ b/phpBB/phpbb/install/helper/iohandler/iohandler_base.php
@@ -170,6 +170,14 @@ abstract class iohandler_base implements iohandler_interface
}
/**
+ * {@inheritdoc}
+ */
+ public function generate_form_render_data($title, $form)
+ {
+ return '';
+ }
+
+ /**
* Localize message.
*
* Note: When an array is passed into the parameters below, it will be
diff --git a/phpBB/phpbb/install/helper/iohandler/iohandler_interface.php b/phpBB/phpbb/install/helper/iohandler/iohandler_interface.php
index 00aab3283e..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
@@ -124,6 +126,16 @@ interface iohandler_interface
public function add_user_form_group($title, $form);
/**
+ * Returns the rendering information for the form
+ *
+ * @param string $title Language variable with the title of the form
+ * @param array $form An array describing the required data (options etc)
+ *
+ * @return string Information to render the form
+ */
+ public function generate_form_render_data($title, $form);
+
+ /**
* Sets the number of tasks belonging to the installer in the current mode.
*
* @param int $task_count Number of tasks
@@ -175,6 +187,14 @@ interface iohandler_interface
public function add_download_link($route, $title, $msg = null);
/**
+ * Redirects the user to a new page
+ *
+ * @param string $url URL to redirect to
+ * @param bool $use_ajax Whether or not to use AJAX redirect
+ */
+ public function redirect($url, $use_ajax = false);
+
+ /**
* Renders the status of update files
*
* @param array $status_array Array containing files in groups to render