[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@52.14.176.111: ~ $
<?php

/*
 * This file is part of Twig.
 *
 * (c) Fabien Potencier
 * (c) Armin Ronacher
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Twig\TokenParser;

use Twig\Error\SyntaxError;
use Twig\Node\IfNode;
use Twig\Node\Node;
use Twig\Token;

/**
 * Tests a condition.
 *
 *   {% if users %}
 *    <ul>
 *      {% for user in users %}
 *        <li>{{ user.username|e }}</li>
 *      {% endfor %}
 *    </ul>
 *   {% endif %}
 */
final class IfTokenParser extends AbstractTokenParser
{
    public function parse(Token $token)
    {
        $lineno = $token->getLine();
        $expr = $this->parser->getExpressionParser()->parseExpression();
        $stream = $this->parser->getStream();
        $stream->expect(/* Token::BLOCK_END_TYPE */ 3);
        $body = $this->parser->subparse([$this, 'decideIfFork']);
        $tests = [$expr, $body];
        $else = null;

        $end = false;
        while (!$end) {
            switch ($stream->next()->getValue()) {
                case 'else':
                    $stream->expect(/* Token::BLOCK_END_TYPE */ 3);
                    $else = $this->parser->subparse([$this, 'decideIfEnd']);
                    break;

                case 'elseif':
                    $expr = $this->parser->getExpressionParser()->parseExpression();
                    $stream->expect(/* Token::BLOCK_END_TYPE */ 3);
                    $body = $this->parser->subparse([$this, 'decideIfFork']);
                    $tests[] = $expr;
                    $tests[] = $body;
                    break;

                case 'endif':
                    $end = true;
                    break;

                default:
                    throw new SyntaxError(sprintf('Unexpected end of template. Twig was looking for the following tags "else", "elseif", or "endif" to close the "if" block started at line %d).', $lineno), $stream->getCurrent()->getLine(), $stream->getSourceContext());
            }
        }

        $stream->expect(/* Token::BLOCK_END_TYPE */ 3);

        return new IfNode(new Node($tests), $else, $lineno, $this->getTag());
    }

    public function decideIfFork(Token $token)
    {
        return $token->test(['elseif', 'else', 'endif']);
    }

    public function decideIfEnd(Token $token)
    {
        return $token->test(['endif']);
    }

    public function getTag()
    {
        return 'if';
    }
}

class_alias('Twig\TokenParser\IfTokenParser', 'Twig_TokenParser_If');

Filemanager

Name Type Size Permission Actions
AbstractTokenParser.php File 641 B 0644
ApplyTokenParser.php File 1.42 KB 0644
AutoEscapeTokenParser.php File 1.58 KB 0644
BlockTokenParser.php File 2.46 KB 0644
DeprecatedTokenParser.php File 1013 B 0644
DoTokenParser.php File 801 B 0644
EmbedTokenParser.php File 2.24 KB 0644
ExtendsTokenParser.php File 1.37 KB 0644
FilterTokenParser.php File 1.86 KB 0644
FlushTokenParser.php File 735 B 0644
ForTokenParser.php File 4.95 KB 0644
FromTokenParser.php File 1.67 KB 0644
IfTokenParser.php File 2.47 KB 0644
ImportTokenParser.php File 1.18 KB 0644
IncludeTokenParser.php File 1.62 KB 0644
MacroTokenParser.php File 1.89 KB 0644
SandboxTokenParser.php File 1.79 KB 0644
SetTokenParser.php File 2.05 KB 0644
SpacelessTokenParser.php File 1.53 KB 0644
TokenParserInterface.php File 1.12 KB 0644
UseTokenParser.php File 1.97 KB 0644
WithTokenParser.php File 1.29 KB 0644