diff options
Diffstat (limited to 'phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php')
| -rw-r--r-- | phpBB/phpbb/install/helper/iohandler/ajax_iohandler.php | 63 | 
1 files changed, 47 insertions, 16 deletions
| 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);  	}  	/** | 
