[ticket/11647] Always use & for URLs

Remove code for URLs separated with ;
Add test case for mix of & and & in URLs

PHPBB3-11647
This commit is contained in:
Vjacheslav Trushkin 2013-07-11 18:13:48 -04:00
parent 94fc0cccdc
commit f5c2119e7c
3 changed files with 9 additions and 16 deletions

View file

@ -40,7 +40,7 @@ class phpbb_template_asset
{ {
// Workaround for PHP 5.4.6 and older bug #62844 - add fake scheme and then remove it // Workaround for PHP 5.4.6 and older bug #62844 - add fake scheme and then remove it
$this->components = parse_url('http:' . $url); $this->components = parse_url('http:' . $url);
unset($this->components['scheme']); $this->components['scheme'] = '';
return; return;
} }
$this->components = parse_url($url); $this->components = parse_url($url);
@ -176,8 +176,7 @@ class phpbb_template_asset
$query = $this->components['query']; $query = $this->components['query'];
if (!preg_match('/(^|[&;])assets_version=/', $query)) if (!preg_match('/(^|[&;])assets_version=/', $query))
{ {
$separator = (strpos($query, '&') === false) && (strpos($query, ';') !== false) && preg_match('/^.*=.*;.*=.*$/', $query) ? ';' : '&'; $this->components['query'] = $query . '&assets_version=' . $version;
$this->components['query'] = $query . $separator . 'assets_version=' . $version;
} }
} }
} }

View file

@ -30,16 +30,12 @@ class phpbb_template_template_includejs_test extends phpbb_template_template_tes
), ),
array( array(
array('TEST' => 3), array('TEST' => 3),
'<script type="text/javascript" src="' . $this->test_path . '/templates/parent_and_child.js?test=1&assets_version=0"></script>', '<script type="text/javascript" src="' . $this->test_path . '/templates/parent_and_child.js?test=1&assets_version=0"></script>',
), ),
array( array(
array('TEST' => 4), array('TEST' => 4),
'<script type="text/javascript" src="' . $this->test_path . '/templates/parent_and_child.js?test=1&amp;assets_version=0"></script>', '<script type="text/javascript" src="' . $this->test_path . '/templates/parent_and_child.js?test=1&amp;assets_version=0"></script>',
), ),
array(
array('TEST' => 5),
'<script type="text/javascript" src="' . $this->test_path . '/templates/parent_and_child.js?test=1;assets_version=0"></script>',
),
array( array(
array('TEST' => 6), array('TEST' => 6),
'<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?assets_version=1"></script>', '<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?assets_version=1"></script>',
@ -68,10 +64,6 @@ class phpbb_template_template_includejs_test extends phpbb_template_template_tes
array('TEST' => 12), array('TEST' => 12),
'<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?test1=1&amp;test2=2&amp;assets_version=1#test3"></script>', '<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?test1=1&amp;test2=2&amp;assets_version=1#test3"></script>',
), ),
array(
array('TEST' => 13),
'<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?test1=1;test2=2;assets_version=1#test3"></script>',
),
array( array(
array('TEST' => 14), array('TEST' => 14),
'<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?test1=&quot;&amp;assets_version=1#test3"></script>', '<script type="text/javascript" src="' . $this->test_path . '/parent_templates/parent_only.js?test1=&quot;&amp;assets_version=1#test3"></script>',
@ -88,6 +80,10 @@ class phpbb_template_template_includejs_test extends phpbb_template_template_tes
array('TEST' => 17), array('TEST' => 17),
'<script type="text/javascript" src="//phpbb.com/b.js"></script>', '<script type="text/javascript" src="//phpbb.com/b.js"></script>',
), ),
array(
array('TEST' => 18),
'<script type="text/javascript" src="' . $this->test_path . '/templates/parent_and_child.js?test=1&test2=0&amp;assets_version=1"></script>',
),
); );
} }

View file

@ -6,8 +6,6 @@
<!-- INCLUDEJS parent_and_child.js?test=1&assets_version=0 --> <!-- INCLUDEJS parent_and_child.js?test=1&assets_version=0 -->
<!-- ELSEIF TEST === 4 --> <!-- ELSEIF TEST === 4 -->
<!-- INCLUDEJS parent_and_child.js?test=1&amp;assets_version=0 --> <!-- INCLUDEJS parent_and_child.js?test=1&amp;assets_version=0 -->
<!-- ELSEIF TEST === 5 -->
<!-- INCLUDEJS parent_and_child.js?test=1;assets_version=0 -->
<!-- ELSEIF TEST === 6 --> <!-- ELSEIF TEST === 6 -->
<!-- INCLUDEJS {PARENT} --> <!-- INCLUDEJS {PARENT} -->
<!-- ELSEIF TEST === 7 --> <!-- ELSEIF TEST === 7 -->
@ -24,8 +22,6 @@
<!-- INCLUDEJS {$TEST} --> <!-- INCLUDEJS {$TEST} -->
<!-- ELSEIF TEST === 12 --> <!-- ELSEIF TEST === 12 -->
<!-- INCLUDEJS parent_only.js?test1=1&amp;test2=2#test3 --> <!-- INCLUDEJS parent_only.js?test1=1&amp;test2=2#test3 -->
<!-- ELSEIF TEST === 13 -->
<!-- INCLUDEJS parent_only.js?test1=1;test2=2#test3 -->
<!-- ELSEIF TEST === 14 --> <!-- ELSEIF TEST === 14 -->
<!-- INCLUDEJS parent_only.js?test1=&quot;#test3 --> <!-- INCLUDEJS parent_only.js?test1=&quot;#test3 -->
<!-- ELSEIF TEST === 15 --> <!-- ELSEIF TEST === 15 -->
@ -34,5 +30,7 @@
<!-- INCLUDEJS http://phpbb.com/b.js?c=d&assets_version=2#f --> <!-- INCLUDEJS http://phpbb.com/b.js?c=d&assets_version=2#f -->
<!-- ELSEIF TEST === 17 --> <!-- ELSEIF TEST === 17 -->
<!-- INCLUDEJS //phpbb.com/b.js --> <!-- INCLUDEJS //phpbb.com/b.js -->
<!-- ELSEIF TEST === 18 -->
<!-- INCLUDEJS parent_and_child.js?test=1&test2=0 -->
<!-- ENDIF --> <!-- ENDIF -->
{$SCRIPTS} {$SCRIPTS}