Verzeichnisstruktur phpBB-3.1.0
- Veröffentlicht
- 27.10.2014
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 |
asset.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\template;
015
016 class asset
017 {
018 protected $components = array();
019
020 /** @var \phpbb\path_helper **/
021 protected $path_helper;
022
023 /**
024 * Constructor
025 *
026 * @param string $url URL
027 * @param \phpbb\path_helper $path_helper Path helper object
028 */
029 public function __construct($url, \phpbb\path_helper $path_helper)
030 {
031 $this->path_helper = $path_helper;
032
033 $this->set_url($url);
034 }
035
036 /**
037 * Set URL
038 *
039 * @param string $url URL
040 */
041 public function set_url($url)
042 {
043 if (version_compare(PHP_VERSION, '5.4.7') < 0 && substr($url, 0, 2) === '//')
044 {
045 // Workaround for PHP 5.4.6 and older bug #62844 - add fake scheme and then remove it
046 $this->components = parse_url('http:' . $url);
047 $this->components['scheme'] = '';
048 return;
049 }
050 $this->components = parse_url($url);
051 }
052
053 /**
054 * Convert URL components into string
055 *
056 * @param array $components URL components
057 * @return string URL
058 */
059 protected function join_url($components)
060 {
061 $path = '';
062 if (isset($components['scheme']))
063 {
064 $path = $components['scheme'] === '' ? '//' : $components['scheme'] . '://';
065 }
066
067 if (isset($components['user']) || isset($components['pass']))
068 {
069 if ($path === '' && !isset($components['port']))
070 {
071 $path = '//';
072 }
073 $path .= $components['user'];
074 if (isset($components['pass']))
075 {
076 $path .= ':' . $components['pass'];
077 }
078 $path .= '@';
079 }
080
081 if (isset($components['host']))
082 {
083 if ($path === '' && !isset($components['port']))
084 {
085 $path = '//';
086 }
087 $path .= $components['host'];
088 if (isset($components['port']))
089 {
090 $path .= ':' . $components['port'];
091 }
092 }
093
094 if (isset($components['path']))
095 {
096 $path .= $components['path'];
097 }
098
099 if (isset($components['query']))
100 {
101 $path .= '?' . $components['query'];
102 }
103
104 if (isset($components['fragment']))
105 {
106 $path .= '#' . $components['fragment'];
107 }
108
109 return $path;
110 }
111
112 /**
113 * Get URL
114 *
115 * @return string URL
116 */
117 public function get_url()
118 {
119 return $this->path_helper->update_web_root_path($this->join_url($this->components));
120 }
121
122 /**
123 * Checks if URL is local and relative
124 *
125 * @return boolean True if URL is local and relative
126 */
127 public function is_relative()
128 {
129 if (empty($this->components) || !isset($this->components['path']))
130 {
131 // Invalid URL
132 return false;
133 }
134 return !isset($this->components['scheme']) && !isset($this->components['host']) && substr($this->components['path'], 0, 1) !== '/';
135 }
136
137 /**
138 * Get path component of current URL
139 *
140 * @return string Path
141 */
142 public function get_path()
143 {
144 return isset($this->components['path']) ? $this->components['path'] : '';
145 }
146
147 /**
148 * Set path component
149 *
150 * @param string $path Path component
151 * @param boolean $urlencode If true, parts of path should be encoded with rawurlencode()
152 */
153 public function set_path($path, $urlencode = false)
154 {
155 if ($urlencode)
156 {
157 $paths = explode('/', $path);
158 foreach ($paths as &$dir)
159 {
160 $dir = rawurlencode($dir);
161 }
162 $path = implode('/', $paths);
163 }
164 $this->components['path'] = $path;
165 }
166
167 /**
168 * Add assets_version parameter to URL.
169 * Parameter will not be added if assets_version already exists in URL
170 *
171 * @param string $version Version
172 */
173 public function add_assets_version($version)
174 {
175 if (!isset($this->components['query']))
176 {
177 $this->components['query'] = 'assets_version=' . $version;
178 return;
179 }
180 $query = $this->components['query'];
181 if (!preg_match('/(^|[&;])assets_version=/', $query))
182 {
183 $this->components['query'] = $query . '&assets_version=' . $version;
184 }
185 }
186 }
187