mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-13 02:46:29 +00:00
Merge branch '2.x' into 3.x
* 2.x: Replace strtolower() with strtr() when dealing with method names
This commit is contained in:
@@ -638,7 +638,7 @@ class ExpressionParser
|
||||
$stream->expect(/* Token::NAME_TYPE */ 5, null, 'Only variables can be assigned to');
|
||||
}
|
||||
$value = $token->getValue();
|
||||
if (\in_array(strtolower($value), ['true', 'false', 'none', 'null'])) {
|
||||
if (\in_array(strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), ['true', 'false', 'none', 'null'])) {
|
||||
throw new SyntaxError(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext());
|
||||
}
|
||||
$targets[] = new AssignNameExpression($value, $token->getLine());
|
||||
|
||||
@@ -1457,7 +1457,7 @@ function twig_get_attribute(Environment $env, Source $source, $object, $item, ar
|
||||
if (!isset($cache[$class])) {
|
||||
$methods = get_class_methods($object);
|
||||
sort($methods);
|
||||
$lcMethods = array_map('strtolower', $methods);
|
||||
$lcMethods = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, $methods);
|
||||
$classCache = [];
|
||||
foreach ($methods as $i => $method) {
|
||||
$classCache[$method] = $method;
|
||||
@@ -1496,7 +1496,7 @@ function twig_get_attribute(Environment $env, Source $source, $object, $item, ar
|
||||
$call = false;
|
||||
if (isset($cache[$class][$item])) {
|
||||
$method = $cache[$class][$item];
|
||||
} elseif (isset($cache[$class][$lcItem = strtolower($item)])) {
|
||||
} elseif (isset($cache[$class][$lcItem = strtr($item, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')])) {
|
||||
$method = $cache[$class][$lcItem];
|
||||
} elseif (isset($cache[$class]['__call'])) {
|
||||
$method = $item;
|
||||
|
||||
@@ -50,7 +50,7 @@ final class SecurityPolicy implements SecurityPolicyInterface
|
||||
{
|
||||
$this->allowedMethods = [];
|
||||
foreach ($methods as $class => $m) {
|
||||
$this->allowedMethods[$class] = array_map('strtolower', \is_array($m) ? $m : [$m]);
|
||||
$this->allowedMethods[$class] = array_map(function ($value) { return strtr($value, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); }, \is_array($m) ? $m : [$m]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ final class SecurityPolicy implements SecurityPolicyInterface
|
||||
}
|
||||
|
||||
$allowed = false;
|
||||
$method = strtolower($method);
|
||||
$method = strtr($method, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
|
||||
foreach ($this->allowedMethods as $class => $methods) {
|
||||
if ($obj instanceof $class) {
|
||||
$allowed = \in_array($method, $methods);
|
||||
|
||||
Reference in New Issue
Block a user