8000 Merge branch '2.3' into 2.4 · webmozart/symfony@af6d11c · GitHub
[go: up one dir, main page]

Skip to content

Commit af6d11c

Browse files
committed
Merge branch '2.3' into 2.4
* 2.3: Check headers sent before sending PHP response Fixed ACE domain checks on UrlValidator (symfony#10031) handle array root element
2 parents 69fa1da + 58f5f4a commit af6d11c

File tree

5 files changed

+46
-5
lines changed

5 files changed

+46
-5
lines changed

src/Symfony/Component/Debug/ExceptionHandler.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,11 @@ public function sendPhpResponse($exception)
9191
$exception = FlattenException::create($exception);
9292
}
9393

94-
header(sprintf('HTTP/1.0 %s', $exception->getStatusCode()));
95-
foreach ($exception->getHeaders() as $name => $value) {
96-
header($name.': '.$value, false);
94+
if (!headers_sent()) {
95+
header(sprintf('HTTP/1.0 %s', $exception->getStatusCode()));
96+
foreach ($exception->getHeaders() as $name => $value) {
97+
header($name.': '.$value, false);
98+
}
9799
}
98100

99101
echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception));

src/Symfony/Component/Validator/ConstraintViolation.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,14 @@ public function __construct($message, $messageTemplate, array $messageParameters
9595
*/
9696
public function __toString()
9797
{
98-
$class = (string) (is_object($this->root) ? get_class($this->root) : $this->root);
98+
if (is_object($this->root)) {
99+
$class = get_class($this->root);
100+
} elseif (is_array($this->root)) {
101+
$class = "Array";
102+
} else {
103+
$class = (string) $this->root;
104+
}
105+
99106
$propertyPath = (string) $this->propertyPath;
100107
$code = $this->code;
101108

src/Symfony/Component/Validator/Constraints/UrlValidator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class UrlValidator extends ConstraintValidator
2525
const PATTERN = '~^
2626
(%s):// # protocol
2727
(
28-
([\pL\pN\pS-]+\.)+[\pL]+ # a domain name
28+
([\pL\pN\pS-]+\.)+([\pL]|xn\-\-[\pL\pN-]+)+ # a domain name
2929
| # or
3030
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} # a IP address
3131
| # or

src/Symfony/Component/Validator/Tests/ConstraintViolationTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,23 @@ public function testToStringHandlesArrays()
3333

3434
$this->assertSame($expected, (string) $violation);
3535
}
36+
37+
public function testToStringHandlesArrayRoots()
38+
{
39+
$violation = new ConstraintViolation(
40+
'42 cannot be used here',
41+
'this is the message template',
42+
array(),
43+
array('some_value' => 42),
44+
'some_value',
45+
null
46+
);
47+
48+
$expected = <<<EOF
49+
Array.some_value:
50+
42 cannot be used here
51+
EOF;
52+
53+
$this->assertSame($expected, (string) $violation);
54+
}
3655
}

src/Symfony/Component/Validator/Tests/Constraints/UrlValidatorTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,28 @@ public function getValidUrls()
9191
array('http://[::1]:80/'),
9292
array('http://[1:2:3::4:5:6:7]/'),
9393
array('http://sãopaulo.com/'),
94+
array('http://xn--sopaulo-xwa.com/'),
9495
array('http://sãopaulo.com.br/'),
96+
array('http://xn--sopaulo-xwa.com.br/'),
9597
array('http://пример.испытание/'),
98+
array('http://xn--e1afmkfd.xn--80akhbyknj4f/'),
9699
array('http://مثال.إختبار/'),
100+
array('http://xn--mgbh0fb.xn--kgbechtv/'),
97101
array('http://例子.测试/'),
102+
array('http://xn--fsqu00a.xn--0zwm56d/'),
98103
array('http://例子.測試/'),
104+
array('http://xn--fsqu00a.xn--g6w251d/'),
99105
array('http://例え.テスト/'),
106+
array('http://xn--r8jz45g.xn--zckzah/'),
100107
array('http://مثال.آزمایشی/'),
108+
array('http://xn--mgbh0fb.xn--hgbk6aj7f53bba/'),
101109
array('http://실례.테스트/'),
110+
array('http://xn--9n2bp8q.xn--9t4b11yi5a/'),
102111
array('http://العربية.idn.icann.org/'),
112+
array('http://xn--ogb.idn.icann.org/'),
113+
array('http://xn--e1afmkfd.xn--80akhbyknj4f.xn--e1afmkfd/'),
114+
array('http://xn--espaa-rta.xn--ca-ol-fsay5a/'),
115+
array('http://xn--d1abbgf6aiiy.xn--p1ai/'),
103116
array('http://☎.com/'),
104117
);
105118
}

0 commit comments

Comments
 (0)
0