Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
helper.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 namespace phpbb\routing;
015
016 use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
017 use Symfony\Component\Routing\RequestContext;
018
019 /**
020 * Controller helper class, contains methods that do things for controllers
021 */
022 class helper
023 {
024 /**
025 * config object
026 * @var \phpbb\config\config
027 */
028 protected $config;
029
030 /**
031 * phpBB router
032 * @var \phpbb\routing\router
033 */
034 protected $router;
035
036 /**
037 * @var \phpbb\symfony_request
038 */
039 protected $symfony_request;
040
041 /**
042 * @var \phpbb\request\request_interface
043 */
044 protected $request;
045
046 /**
047 * @var \phpbb\filesystem The filesystem object
048 */
049 protected $filesystem;
050
051 /**
052 * phpBB root path
053 * @var string
054 */
055 protected $phpbb_root_path;
056
057 /**
058 * PHP file extension
059 * @var string
060 */
061 protected $php_ext;
062
063 /**
064 * Constructor
065 *
066 * @param \phpbb\config\config $config Config object
067 * @param \phpbb\routing\router $router phpBB router
068 * @param \phpbb\symfony_request $symfony_request Symfony Request object
069 * @param \phpbb\request\request_interface $request phpBB request object
070 * @param \phpbb\filesystem\filesystem $filesystem The filesystem object
071 * @param string $phpbb_root_path phpBB root path
072 * @param string $php_ext PHP file extension
073 */
074 public function __construct(\phpbb\config\config $config, \phpbb\routing\router $router, \phpbb\symfony_request $symfony_request, \phpbb\request\request_interface $request, \phpbb\filesystem\filesystem $filesystem, $phpbb_root_path, $php_ext)
075 {
076 $this->config = $config;
077 $this->router = $router;
078 $this->symfony_request = $symfony_request;
079 $this->request = $request;
080 $this->filesystem = $filesystem;
081 $this->phpbb_root_path = $phpbb_root_path;
082 $this->php_ext = $php_ext;
083 }
084
085 /**
086 * Generate a URL to a route
087 *
088 * @param string $route Name of the route to travel
089 * @param array $params String or array of additional url parameters
090 * @param bool $is_amp Is url using & (true) or & (false)
091 * @param string|bool $session_id Possibility to use a custom session id instead of the global one
092 * @param bool|string $reference_type The type of reference to be generated (one of the constants)
093 * @return string The URL already passed through append_sid()
094 */
095 public function route($route, array $params = array(), $is_amp = true, $session_id = false, $reference_type = UrlGeneratorInterface::ABSOLUTE_PATH)
096 {
097 $anchor = '';
098 if (isset($params['#']))
099 {
100 $anchor = '#' . $params['#'];
101 unset($params['#']);
102 }
103
104 $context = new RequestContext();
105 $context->fromRequest($this->symfony_request);
106
107 if ($this->config['force_server_vars'])
108 {
109 $context->setHost($this->config['server_name']);
110 $context->setScheme(substr($this->config['server_protocol'], 0, -3));
111 $context->setHttpPort($this->config['server_port']);
112 $context->setHttpsPort($this->config['server_port']);
113 $context->setBaseUrl(rtrim($this->config['script_path'], '/'));
114 }
115
116 $script_name = $this->symfony_request->getScriptName();
117 $page_name = substr($script_name, -1, 1) == '/' ? '' : utf8_basename($script_name);
118
119 $base_url = $context->getBaseUrl();
120
121 // Append page name if base URL does not contain it
122 if (!empty($page_name) && strpos($base_url, '/' . $page_name) === false)
123 {
124 $base_url .= '/' . $page_name;
125 }
126
127 // If enable_mod_rewrite is false we need to replace the current front-end by app.php, otherwise we need to remove it.
128 $base_url = str_replace('/' . $page_name, empty($this->config['enable_mod_rewrite']) ? '/app.' . $this->php_ext : '', $base_url);
129
130 // 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
131 if ($page_name !== 'app.php' && !$this->config['force_server_vars'])
132 {
133 if (empty($this->config['enable_mod_rewrite']))
134 {
135 $base_url = str_replace('/app.' . $this->php_ext, '/' . $this->phpbb_root_path . 'app.' . $this->php_ext, $base_url);
136 }
137 else
138 {
139 $base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2', $this->phpbb_root_path);
140 }
141 }
142
143 $base_url = $this->request->escape($this->filesystem->clean_path($base_url), true);
144
145 $context->setBaseUrl($base_url);
146
147 $this->router->setContext($context);
148 $route_url = $this->router->generate($route, $params, $reference_type);
149
150 if ($is_amp)
151 {
152 $route_url = str_replace(array('&', '&'), array('&', '&'), $route_url);
153 }
154
155 if ($reference_type === UrlGeneratorInterface::RELATIVE_PATH && empty($this->config['enable_mod_rewrite']))
156 {
157 $route_url = 'app.' . $this->php_ext . '/' . $route_url;
158 }
159
160 return append_sid($route_url . $anchor, false, $is_amp, $session_id, true);
161 }
162 }
163