/**
 * Include layout
 * 
 * Parameters:
 * 
 * - name - layout name
 * - module - module name
 *
 * @param array $params
 * @param Smarty $smarty
 * @return null
 */
function smarty_function_include_layout($params, &$smarty)
{
    $name = array_var($params, 'name');
    if (empty($name)) {
        return new InvalidParamError('name', $name, "'name' property is required for 'include_layout' helper", true);
    }
    // if
    $module = array_var($params, 'module');
    if (empty($module)) {
        return new InvalidParamError('module', $module, "'module' property is required for 'include_layout' helper", true);
    }
    // if
    return tpl_fetch(get_layout_path($name, $module));
}
 /**
  * Serve HTTP error
  *
  * If $only_headers is TRUE function returns only http header without any
  * fancy output
  *
  * @param integer $code
  * @param string $message
  * @param boolean $die
  * @param boolean $only_header
  * @param boolean $portal_error
  * @return null
  */
 function httpError($code, $message = null, $die = true, $only_headers = false, $portal_error = false)
 {
     if ($message === null) {
         $errors = array(100 => "HTTP/1.1 100 Continue", 101 => "HTTP/1.1 101 Switching Protocols", 200 => "HTTP/1.1 200 OK", 201 => "HTTP/1.1 201 Created", 202 => "HTTP/1.1 202 Accepted", 203 => "HTTP/1.1 203 Non-Authoritative Information", 204 => "HTTP/1.1 204 No Content", 205 => "HTTP/1.1 205 Reset Content", 206 => "HTTP/1.1 206 Partial Content", 300 => "HTTP/1.1 300 Multiple Choices", 301 => "HTTP/1.1 301 Moved Permanently", 302 => "HTTP/1.1 302 Found", 303 => "HTTP/1.1 303 See Other", 304 => "HTTP/1.1 304 Not Modified", 305 => "HTTP/1.1 305 Use Proxy", 307 => "HTTP/1.1 307 Temporary Redirect", 400 => "HTTP/1.1 400 Bad Request", 401 => "HTTP/1.1 401 Unauthorized", 402 => "HTTP/1.1 402 Payment Required", 403 => "HTTP/1.1 403 Forbidden", 404 => "HTTP/1.1 404 Not Found", 405 => "HTTP/1.1 405 Method Not Allowed", 406 => "HTTP/1.1 406 Not Acceptable", 407 => "HTTP/1.1 407 Proxy Authentication Required", 408 => "HTTP/1.1 408 Request Time-out", 409 => "HTTP/1.1 409 Conflict", 410 => "HTTP/1.1 410 Gone", 411 => "HTTP/1.1 411 Length Required", 412 => "HTTP/1.1 412 Precondition Failed", 413 => "HTTP/1.1 413 Request Entity Too Large", 414 => "HTTP/1.1 414 Request-URI Too Large", 415 => "HTTP/1.1 415 Unsupported Media Type", 416 => "HTTP/1.1 416 Requested range not satisfiable", 417 => "HTTP/1.1 417 Expectation Failed", 500 => "HTTP/1.1 500 Internal Server Error", 501 => "HTTP/1.1 501 Not Implemented", 502 => "HTTP/1.1 502 Bad Gateway", 503 => "HTTP/1.1 503 Service Unavailable", 504 => "HTTP/1.1 504 Gateway Time-out");
         $message = array_var($errors, $code);
         if (trim($message) == '') {
             $message = 'Unknown';
         }
         // if
     }
     // if
     if ($this->request->isApiCall()) {
         $only_headers = true;
     }
     // if
     header("HTTP/1.1 {$code} {$message}");
     if ($only_headers) {
         echo $message;
         if ($die) {
             die;
         }
         // if
     } else {
         $this->setLayout('error');
         if ($portal_error === false) {
             $template_path = get_template_path($code, 'error');
         } else {
             $template_path = get_template_path($code, 'portal_errors', PORTALS_MODULE);
         }
         // if
         if (!is_file($template_path)) {
             $template_path = get_template_path('default', 'error');
         }
         // if
         $this->smarty->assign(array('code' => $code, 'message' => $message));
         $this->renderLayout(get_layout_path('error'), $this->smarty->fetch($template_path), $die);
     }
     // if
 }
 /**
  * Return path of the layout file. File dnx throw exception
  *
  * @param void
  * @return string
  * @throws FileDnxError
  */
 function getLayoutPath()
 {
     $layout = $this->getLayout();
     if (is_array($layout)) {
         $path = get_layout_path($layout['layout'], $layout['module']);
     } elseif ($layout) {
         $path = get_layout_path($layout, $this->request->getModule());
     } else {
         $path = get_layout_path($this->getControllerName(), $this->request->getModule());
     }
     // if
     return is_file($path) ? $path : new FileDnxError($path);
 }