Вход Регистрация
Файл: phpbb/controller/helper.php
Строк: 228
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/

namespace phpbbcontroller;

use 
SymfonyComponentHttpFoundationResponse;
use 
SymfonyComponentRoutingGeneratorUrlGenerator;
use 
SymfonyComponentRoutingGeneratorUrlGeneratorInterface;
use 
SymfonyComponentRoutingRequestContext;

/**
* Controller helper class, contains methods that do things for controllers
*/
class helper
{
    
/**
    * Template object
    * @var phpbbtemplatetemplate
    */
    
protected $template;

    
/**
    * User object
    * @var phpbbuser
    */
    
protected $user;

    
/**
    * config object
    * @var phpbbconfigconfig
    */
    
protected $config;

    
/* @var phpbbsymfony_request */
    
protected $symfony_request;

    
/**
    * @var phpbbfilesystem The filesystem object
    */
    
protected $filesystem;

    
/**
    * phpBB root path
    * @var string
    */
    
protected $phpbb_root_path;

    
/**
    * PHP file extension
    * @var string
    */
    
protected $php_ext;

    
/**
    * Constructor
    *
    * @param phpbbtemplatetemplate $template Template object
    * @param phpbbuser $user User object
    * @param phpbbconfigconfig $config Config object
    * @param phpbbcontrollerprovider $provider Path provider
    * @param phpbbextensionmanager $manager Extension manager object
    * @param phpbbsymfony_request $symfony_request Symfony Request object
    * @param phpbbfilesystem $filesystem The filesystem object
    * @param string $phpbb_root_path phpBB root path
    * @param string $php_ext PHP file extension
    */
    
public function __construct(phpbbtemplatetemplate $templatephpbbuser $userphpbbconfigconfig $configphpbbcontrollerprovider $providerphpbbextensionmanager $managerphpbbsymfony_request $symfony_requestphpbbfilesystem $filesystem$phpbb_root_path$php_ext)
    {
        
$this->template $template;
        
$this->user $user;
        
$this->config $config;
        
$this->symfony_request $symfony_request;
        
$this->filesystem $filesystem;
        
$this->phpbb_root_path $phpbb_root_path;
        
$this->php_ext $php_ext;
        
$provider->find_routing_files($manager->get_finder());
        
$this->route_collection $provider->find($phpbb_root_path)->get_routes();
    }

    
/**
    * Automate setting up the page and creating the response object.
    *
    * @param string $template_file The template handle to render
    * @param string $page_title The title of the page to output
    * @param int $status_code The status code to be sent to the page header
    * @param bool $display_online_list Do we display online users list
    *
    * @return Response object containing rendered page
    */
    
public function render($template_file$page_title ''$status_code 200$display_online_list false)
    {
        
page_header($page_title$display_online_list);

        
$this->template->set_filenames(array(
            
'body'    => $template_file,
        ));

        
page_footer(truefalsefalse);

        return new 
Response($this->template->assign_display('body'), $status_code);
    }

    
/**
    * Generate a URL to a route
    *
    * @param string    $route        Name of the route to travel
    * @param array    $params        String or array of additional url parameters
    * @param bool    $is_amp        Is url using &amp; (true) or & (false)
    * @param string|bool        $session_id    Possibility to use a custom session id instead of the global one
    * @param bool|string        $reference_type The type of reference to be generated (one of the constants)
    * @return string The URL already passed through append_sid()
    */
    
public function route($route, array $params = array(), $is_amp true$session_id false$reference_type UrlGeneratorInterface::ABSOLUTE_PATH)
    {
        
$anchor '';
        if (isset(
$params['#']))
        {
            
$anchor '#' $params['#'];
            unset(
$params['#']);
        }

        
$context = new RequestContext();
        
$context->fromRequest($this->symfony_request);

        
$script_name $this->symfony_request->getScriptName();
        
$page_name substr($script_name, -11) == '/' '' utf8_basename($script_name);

        
$base_url $context->getBaseUrl();

        
// If enable_mod_rewrite is false we need to replace the current front-end by app.php, otherwise we need to remove it.
        
$base_url str_replace('/' $page_name, empty($this->config['enable_mod_rewrite']) ? '/app.' $this->php_ext ''$base_url);

        
// We need to update the base url to move to the directory of the app.php file if the current script is not app.php
        
if ($page_name !== 'app.php')
        {
            if (empty(
$this->config['enable_mod_rewrite']))
            {
                
$base_url str_replace('/app.' $this->php_ext'/' $this->phpbb_root_path 'app.' $this->php_ext$base_url);
            }
            else
            {
                
$base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2'$this->phpbb_root_path);
            }
        }

        
$base_url $this->filesystem->clean_path($base_url);

        
$context->setBaseUrl($base_url);

        
$url_generator = new UrlGenerator($this->route_collection$context);
        
$route_url $url_generator->generate($route$params$reference_type);

        if (
$is_amp)
        {
            
$route_url str_replace(array('&amp;''&'), array('&''&amp;'), $route_url);
        }

        if (
$reference_type === UrlGeneratorInterface::RELATIVE_PATH && empty($this->config['enable_mod_rewrite']))
        {
            
$route_url 'app.' $this->php_ext '/' $route_url;
        }

        return 
append_sid($route_url $anchorfalse$is_amp$session_idtrue);
    }

    
/**
    * Output an error, effectively the same thing as trigger_error
    *
    * @param string $message The error message
    * @param int $code The error code (e.g. 404, 500, 503, etc.)
    * @return Response A Response instance
    */
    
public function error($message$code 500)
    {
        
$this->template->assign_vars(array(
            
'MESSAGE_TEXT'    => $message,
            
'MESSAGE_TITLE'    => $this->user->lang('INFORMATION'),
        ));

        return 
$this->render('message_body.html'$this->user->lang('INFORMATION'), $code);
    }

    
/**
    * Return the current url
    *
    * @return string
    */
    
public function get_current_url()
    {
        return 
generate_board_url(true) . $this->symfony_request->getRequestUri();
    }
}
Онлайн: 0
Реклама