1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-24 12:03:21 +01:00

[feature/controller] Rework assign_display(), use exceptions instead of return

PHPBB3-10864
This commit is contained in:
David King 2012-11-13 09:43:53 -05:00
parent 4b6d538b06
commit ac29c7e9d9

View File

@ -219,30 +219,45 @@ class phpbb_template
* *
* @param string $handle Handle to operate on * @param string $handle Handle to operate on
* @param string $template_var Template variable to assign compiled handle to * @param string $template_var Template variable to assign compiled handle to
* @param bool $return_content If true return compiled handle, otherwise assign to $template_var * @param bool $return_contents If true return compiled handle, otherwise assign to $template_var
* @return bool|string false on failure, otherwise if $return_content is true return string of the compiled handle, otherwise return true * @return bool|string If $return_content is true return string of the compiled handle, otherwise return true
* @throws RuntimeException
*/ */
public function assign_display($handle, $template_var = '', $return_content = true) public function assign_display($handle, $template_var = '', $return_contents = true)
{ {
$contents = $this->return_display($handle); $contents = $this->return_display($handle);
if ($return_content === true || empty($template_var) || $contents === false) if (!$template_var)
{ {
return $contents; throw new RuntimeException($this->user->lang('TEMPLATE_CANNOT_BE_ASSIGNED')
} }
$this->assign_var($template_var, $contents); $this->assign_var($template_var, $contents);
return true; // If !$return_content evaluates to true, true will be returned
// Otherwise, the value of $contents will be returned
return !$return_contents ?: $contents;
} }
/**
* Return the compiled template code as a string
*
* @param string $handle Handle to operate on
* @return string Compiled template code; can be output directly to page
* @throws RuntimeException
*/
public function return_display($handle) public function return_display($handle)
{ {
ob_start(); ob_start();
$result = $this->display($handle); $result = $this->display($handle);
$contents = ob_get_clean(); $contents = ob_get_clean();
return $result === false ? $result : $contents; if ($result === false)
{
throw new RuntimeException($user->lang('TEMPLATE_HANDLE_NOT_FOUND'));
}
return $contents;
} }
/** /**