Twig \ Error \ SyntaxError
Unknown "money" filter in "mod_serviceisnlxd_order_form.html.twig" at line 16. Twig\Error\SyntaxError thrown with message "Unknown "money" filter in "mod_serviceisnlxd_order_form.html.twig" at line 16." Stacktrace: #46 Twig\Error\SyntaxError in /home/sdove/my.isnhosting.net/modules/Serviceisnlxd/templates/client/mod_serviceisnlxd_order_form.html.twig:16 #45 Twig\Parser:getFilter in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/ExpressionParser/Infix/FilterExpressionParser.php:47 #44 Twig\ExpressionParser\Infix\FilterExpressionParser:parse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php:396 #43 Twig\Parser:parseExpression in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php:186 #42 Twig\Parser:subparse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/TokenParser/IfTokenParser.php:42 #41 Twig\TokenParser\IfTokenParser:parse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php:230 #40 Twig\Parser:subparse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/TokenParser/ForTokenParser.php:43 #39 Twig\TokenParser\ForTokenParser:parse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php:230 #38 Twig\Parser:subparse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/TokenParser/IfTokenParser.php:42 #37 Twig\TokenParser\IfTokenParser:parse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php:230 #36 Twig\Parser:subparse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php:110 #35 Twig\Parser:parse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php:558 #34 Twig\Environment:parse in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php:589 #33 Twig\Environment:compileSource in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php:408 #32 Twig\Environment:loadTemplate in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php:370 #31 Twig\Environment:load in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php:495 #30 Twig\Environment:resolveTemplate in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Extension/CoreExtension.php:1513 #29 Twig\Extension\CoreExtension:include in /home/sdove/my.isnhosting.net/data/cache/8d/8d7a6bda1c66c2a85a3329ca089b5e25.php:235 #28 __TwigTemplate_029fd0b02319d94c5fe8b1cf8d3d2257:doDisplay in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:411 #27 Twig\Template:yield in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:366 #26 Twig\Template:display in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:381 #25 Twig\Template:render in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/TemplateWrapper.php:51 #24 Twig\TemplateWrapper:render in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Extension/CoreExtension.php:1522 #23 Twig\Extension\CoreExtension:include in /home/sdove/my.isnhosting.net/data/cache/98/9831053e71fc2b78d2fe9744cfb98a03.php:60 #22 __TwigTemplate_1d163f5f83157b4e345a7c89cbd7b6a6:doDisplay in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:411 #21 Twig\Template:yield in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:366 #20 Twig\Template:display in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:381 #19 Twig\Template:render in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/TemplateWrapper.php:51 #18 Twig\TemplateWrapper:render in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Extension/CoreExtension.php:1522 #17 Twig\Extension\CoreExtension:include in /home/sdove/my.isnhosting.net/data/cache/eb/eb375b1fc10ffb6fed7aec2b0e419ecc.php:149 #16 __TwigTemplate_dbbca1fb35eaae9515e54433a567844f:block_content in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:456 #15 Twig\Template:yieldBlock in /home/sdove/my.isnhosting.net/data/cache/27/27e9a4977b3fddd15126886aa890712d.php:648 #14 __TwigTemplate_e7e42f4b2632034e1b8ef5b763c375e0:block_body in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:456 #13 Twig\Template:yieldBlock in /home/sdove/my.isnhosting.net/data/cache/27/27e9a4977b3fddd15126886aa890712d.php:154 #12 __TwigTemplate_e7e42f4b2632034e1b8ef5b763c375e0:doDisplay in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:411 #11 Twig\Template:yield in /home/sdove/my.isnhosting.net/data/cache/eb/eb375b1fc10ffb6fed7aec2b0e419ecc.php:60 #10 __TwigTemplate_dbbca1fb35eaae9515e54433a567844f:doDisplay in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:411 #9 Twig\Template:yield in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:366 #8 Twig\Template:display in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php:381 #7 Twig\Template:render in /home/sdove/my.isnhosting.net/vendor/twig/twig/src/TemplateWrapper.php:51 #6 Twig\TemplateWrapper:render in /home/sdove/my.isnhosting.net/library/Box/AppClient.php:95 #5 Box_AppClient:render in /home/sdove/my.isnhosting.net/modules/Order/Controller/Client.php:40 #4 Box\Mod\Order\Controller\Client:get_products in [internal]:0 #3 ReflectionMethod:invokeArgs in /home/sdove/my.isnhosting.net/library/Box/App.php:268 #2 Box_App:executeShared in /home/sdove/my.isnhosting.net/library/Box/App.php:398 #1 Box_App:processRequest in /home/sdove/my.isnhosting.net/library/Box/App.php:183 #0 Box_App:run in /home/sdove/my.isnhosting.net/index.php:115
Stack frames (47)
46
Twig\Error\SyntaxError
/modules/Serviceisnlxd/templates/client/mod_serviceisnlxd_order_form.html.twig:16
45
Twig\Parser getFilter
/vendor/twig/twig/src/ExpressionParser/Infix/FilterExpressionParser.php:47
44
Twig\ExpressionParser\Infix\FilterExpressionParser parse
/vendor/twig/twig/src/Parser.php:396
43
Twig\Parser parseExpression
/vendor/twig/twig/src/Parser.php:186
42
Twig\Parser subparse
/vendor/twig/twig/src/TokenParser/IfTokenParser.php:42
41
Twig\TokenParser\IfTokenParser parse
/vendor/twig/twig/src/Parser.php:230
40
Twig\Parser subparse
/vendor/twig/twig/src/TokenParser/ForTokenParser.php:43
39
Twig\TokenParser\ForTokenParser parse
/vendor/twig/twig/src/Parser.php:230
38
Twig\Parser subparse
/vendor/twig/twig/src/TokenParser/IfTokenParser.php:42
37
Twig\TokenParser\IfTokenParser parse
/vendor/twig/twig/src/Parser.php:230
36
Twig\Parser subparse
/vendor/twig/twig/src/Parser.php:110
35
Twig\Parser parse
/vendor/twig/twig/src/Environment.php:558
34
Twig\Environment parse
/vendor/twig/twig/src/Environment.php:589
33
Twig\Environment compileSource
/vendor/twig/twig/src/Environment.php:408
32
Twig\Environment loadTemplate
/vendor/twig/twig/src/Environment.php:370
31
Twig\Environment load
/vendor/twig/twig/src/Environment.php:495
30
Twig\Environment resolveTemplate
/vendor/twig/twig/src/Extension/CoreExtension.php:1513
29
Twig\Extension\CoreExtension include
/data/cache/8d/8d7a6bda1c66c2a85a3329ca089b5e25.php:235
28
__TwigTemplate_029fd0b02319d94c5fe8b1cf8d3d2257 doDisplay
/vendor/twig/twig/src/Template.php:411
27
Twig\Template yield
/vendor/twig/twig/src/Template.php:366
26
Twig\Template display
/vendor/twig/twig/src/Template.php:381
25
Twig\Template render
/vendor/twig/twig/src/TemplateWrapper.php:51
24
Twig\TemplateWrapper render
/vendor/twig/twig/src/Extension/CoreExtension.php:1522
23
Twig\Extension\CoreExtension include
/data/cache/98/9831053e71fc2b78d2fe9744cfb98a03.php:60
22
__TwigTemplate_1d163f5f83157b4e345a7c89cbd7b6a6 doDisplay
/vendor/twig/twig/src/Template.php:411
21
Twig\Template yield
/vendor/twig/twig/src/Template.php:366
20
Twig\Template display
/vendor/twig/twig/src/Template.php:381
19
Twig\Template render
/vendor/twig/twig/src/TemplateWrapper.php:51
18
Twig\TemplateWrapper render
/vendor/twig/twig/src/Extension/CoreExtension.php:1522
17
Twig\Extension\CoreExtension include
/data/cache/eb/eb375b1fc10ffb6fed7aec2b0e419ecc.php:149
16
__TwigTemplate_dbbca1fb35eaae9515e54433a567844f block_content
/vendor/twig/twig/src/Template.php:456
15
Twig\Template yieldBlock
/data/cache/27/27e9a4977b3fddd15126886aa890712d.php:648
14
__TwigTemplate_e7e42f4b2632034e1b8ef5b763c375e0 block_body
/vendor/twig/twig/src/Template.php:456
13
Twig\Template yieldBlock
/data/cache/27/27e9a4977b3fddd15126886aa890712d.php:154
12
__TwigTemplate_e7e42f4b2632034e1b8ef5b763c375e0 doDisplay
/vendor/twig/twig/src/Template.php:411
11
Twig\Template yield
/data/cache/eb/eb375b1fc10ffb6fed7aec2b0e419ecc.php:60
10
__TwigTemplate_dbbca1fb35eaae9515e54433a567844f doDisplay
/vendor/twig/twig/src/Template.php:411
9
Twig\Template yield
/vendor/twig/twig/src/Template.php:366
8
Twig\Template display
/vendor/twig/twig/src/Template.php:381
7
Twig\Template render
/vendor/twig/twig/src/TemplateWrapper.php:51
6
Twig\TemplateWrapper render
/library/Box/AppClient.php:95
5
Box_AppClient render
/modules/Order/Controller/Client.php:40
4
Box\Mod\Order\Controller\Client get_products
[internal]:0
3
ReflectionMethod invokeArgs
/library/Box/App.php:268
2
Box_App executeShared
/library/Box/App.php:398
1
Box_App processRequest
/library/Box/App.php:183
0
Box_App run
/index.php:115
/home/sdove/my.isnhosting.net/modules/Serviceisnlxd/templates/client/mod_serviceisnlxd_order_form.html.twig
<div class="mb-3">
    <label class="form-label" for="hostname">Server Hostname <span class="text-danger">*</span></label>
    <div class="input-group">
        <input type="text" class="form-control" name="config[hostname]" id="hostname" required="required" placeholder="e.g. srv01.yourdomain.com">
    </div>
    <small class="form-hint">Enter a unique hostname for your new server.</small>
</div>
 
{# Filtered Period Selection - Only show paid cycles #}
<div class="mb-3">
    {% if product.pricing.type == 'recurrent' %}
        <label class="form-label" for="period">Billing Cycle</label>
        <select class="form-select" name="period" id="period" required="required">
            {% for code, details in product.pricing.recurrent %}
                {% if details.price > 0 %}
                    <option value="{{ code }}">{{ code|period_title }} - {{ details.price | money(product.currency) }}</option>
                {% endif %}
            {% endfor %}
        </select>
    {% elseif product.pricing.type == 'once' %}
        <input type="hidden" name="period" value="1M">
        <p class="text-muted">One-time payment: {{ product.pricing.once.price | money(product.currency) }}</p>
    {% else %}
        <input type="hidden" name="period" value="1M">
        <p class="text-muted">Free Product</p>
    {% endif %}
</div>
 
Arguments
  1. "Unknown "money" filter in "mod_serviceisnlxd_order_form.html.twig" at line 16."
    
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/ExpressionParser/Infix/FilterExpressionParser.php
 */
final class FilterExpressionParser extends AbstractExpressionParser implements InfixExpressionParserInterface, ExpressionParserDescriptionInterface
{
    use ArgumentsTrait;
 
    private $readyNodes = [];
 
    public function parse(Parser $parser, AbstractExpression $expr, Token $token): AbstractExpression
    {
        $stream = $parser->getStream();
        $token = $stream->expect(Token::NAME_TYPE);
        $line = $token->getLine();
 
        if (!$stream->test(Token::OPERATOR_TYPE, '(')) {
            $arguments = new EmptyNode();
        } else {
            $arguments = $this->parseNamedArguments($parser);
        }
 
        $filter = $parser->getFilter($token->getValue(), $line);
 
        $ready = true;
        if (!isset($this->readyNodes[$class = $filter->getNodeClass()])) {
            $this->readyNodes[$class] = (bool) (new \ReflectionClass($class))->getConstructor()->getAttributes(FirstClassTwigCallableReady::class);
        }
 
        if (!$ready = $this->readyNodes[$class]) {
            trigger_deprecation('twig/twig', '3.12', 'Twig node "%s" is not marked as ready for passing a "TwigFilter" in the constructor instead of its name; please update your code and then add #[FirstClassTwigCallableReady] attribute to the constructor.', $class);
        }
 
        return new $class($expr, $ready ? $filter : new ConstantExpression($filter->getName(), $line), $arguments, $line);
    }
 
    public function getName(): string
    {
        return '|';
    }
 
    public function getDescription(): string
    {
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php
        }
 
        return $this->expressionParser;
    }
 
    public function parseExpression(int $precedence = 0): AbstractExpression
    {
        $token = $this->getCurrentToken();
        if ($token->test(Token::OPERATOR_TYPE) && $ep = $this->parsers->getByName(PrefixExpressionParserInterface::class, $token->getValue())) {
            $this->getStream()->next();
            $expr = $ep->parse($this, $token);
            $this->checkPrecedenceDeprecations($ep, $expr);
        } else {
            $expr = $this->parsers->getByClass(LiteralExpressionParser::class)->parse($this, $token);
        }
 
        $token = $this->getCurrentToken();
        while ($token->test(Token::OPERATOR_TYPE) && ($ep = $this->parsers->getByName(InfixExpressionParserInterface::class, $token->getValue())) && $ep->getPrecedence() >= $precedence) {
            $this->getStream()->next();
            $expr = $ep->parse($this, $expr, $token);
            $this->checkPrecedenceDeprecations($ep, $expr);
            $token = $this->getCurrentToken();
        }
 
        return $expr;
    }
 
    public function getParent(): ?Node
    {
        trigger_deprecation('twig/twig', '3.12', 'Method "%s()" is deprecated.', __METHOD__);
 
        return $this->parent;
    }
 
    /**
     * @return bool
     */
    public function hasInheritance()
    {
        return $this->parent || 0 < \count($this->traits);
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php
        }
    }
 
    /**
     * @throws SyntaxError
     */
    public function subparse($test, bool $dropNeedle = false): Node
    {
        $lineno = $this->getCurrentToken()->getLine();
        $rv = [];
        while (!$this->stream->isEOF()) {
            switch (true) {
                case $this->stream->getCurrent()->test(Token::TEXT_TYPE):
                    $token = $this->stream->next();
                    $rv[] = new TextNode($token->getValue(), $token->getLine());
                    break;
 
                case $this->stream->getCurrent()->test(Token::VAR_START_TYPE):
                    $token = $this->stream->next();
                    $expr = $this->parseExpression();
                    $this->stream->expect(Token::VAR_END_TYPE);
                    $rv[] = new PrintNode($expr, $token->getLine());
                    break;
 
                case $this->stream->getCurrent()->test(Token::BLOCK_START_TYPE):
                    $this->stream->next();
                    $token = $this->getCurrentToken();
 
                    if (!$token->test(Token::NAME_TYPE)) {
                        throw new SyntaxError('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext());
                    }
 
                    if (null !== $test && $test($token)) {
                        if ($dropNeedle) {
                            $this->stream->next();
                        }
 
                        if (1 === \count($rv)) {
                            return $rv[0];
                        }
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/TokenParser/IfTokenParser.php
 *
 *   {% if users %}
 *    <ul>
 *      {% for user in users %}
 *        <li>{{ user.username|e }}</li>
 *      {% endfor %}
 *    </ul>
 *   {% endif %}
 *
 * @internal
 */
final class IfTokenParser extends AbstractTokenParser
{
    public function parse(Token $token): Node
    {
        $lineno = $token->getLine();
        $expr = $this->parser->parseExpression();
        $stream = $this->parser->getStream();
        $stream->expect(Token::BLOCK_END_TYPE);
        $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);
                    $else = $this->parser->subparse([$this, 'decideIfEnd']);
                    break;
 
                case 'elseif':
                    $expr = $this->parser->parseExpression();
                    $stream->expect(Token::BLOCK_END_TYPE);
                    $body = $this->parser->subparse([$this, 'decideIfFork']);
                    $tests[] = $expr;
                    $tests[] = $body;
                    break;
 
                case 'endif':
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php
                    if (!$subparser = $this->env->getTokenParser($token->getValue())) {
                        if (null !== $test) {
                            $e = new SyntaxError(\sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
 
                            $callable = (new ReflectionCallable(new TwigTest('decision', $test)))->getCallable();
                            if (\is_array($callable) && $callable[0] instanceof TokenParserInterface) {
                                $e->appendMessage(\sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $callable[0]->getTag(), $lineno));
                            }
                        } else {
                            $e = new SyntaxError(\sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
                            $e->addSuggestions($token->getValue(), array_keys($this->env->getTokenParsers()));
                        }
 
                        throw $e;
                    }
 
                    $this->stream->next();
 
                    $subparser->setParser($this);
                    $node = $subparser->parse($token);
                    if (!$node) {
                        trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);
                    } else {
                        $node->setNodeTag($subparser->getTag());
                        $rv[] = $node;
                    }
                    break;
 
                default:
                    throw new SyntaxError('The lexer or the parser ended up in an unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext());
            }
        }
 
        if (1 === \count($rv)) {
            return $rv[0];
        }
 
        return new Nodes($rv, $lineno);
    }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/TokenParser/ForTokenParser.php
 *   <ul>
 *    {% for user in users %}
 *      <li>{{ user.username|e }}</li>
 *    {% endfor %}
 *   </ul>
 *
 * @internal
 */
final class ForTokenParser extends AbstractTokenParser
{
    public function parse(Token $token): Node
    {
        $lineno = $token->getLine();
        $stream = $this->parser->getStream();
        $targets = $this->parseAssignmentExpression();
        $stream->expect(Token::OPERATOR_TYPE, 'in');
        $seq = $this->parser->parseExpression();
 
        $stream->expect(Token::BLOCK_END_TYPE);
        $body = $this->parser->subparse([$this, 'decideForFork']);
        if ('else' == $stream->next()->getValue()) {
            $elseLineno = $stream->getCurrent()->getLine();
            $stream->expect(Token::BLOCK_END_TYPE);
            $else = new ForElseNode($this->parser->subparse([$this, 'decideForEnd'], true), $elseLineno);
        } else {
            $else = null;
        }
        $stream->expect(Token::BLOCK_END_TYPE);
 
        if (\count($targets) > 1) {
            $keyTarget = $targets->getNode('0');
            $keyTarget = new AssignContextVariable($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine());
            $valueTarget = $targets->getNode('1');
        } else {
            $keyTarget = new AssignContextVariable('_key', $lineno);
            $valueTarget = $targets->getNode('0');
        }
        $valueTarget = new AssignContextVariable($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine());
 
        return new ForNode($keyTarget, $valueTarget, $seq, null, $body, $else, $lineno);
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php
                    if (!$subparser = $this->env->getTokenParser($token->getValue())) {
                        if (null !== $test) {
                            $e = new SyntaxError(\sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
 
                            $callable = (new ReflectionCallable(new TwigTest('decision', $test)))->getCallable();
                            if (\is_array($callable) && $callable[0] instanceof TokenParserInterface) {
                                $e->appendMessage(\sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $callable[0]->getTag(), $lineno));
                            }
                        } else {
                            $e = new SyntaxError(\sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
                            $e->addSuggestions($token->getValue(), array_keys($this->env->getTokenParsers()));
                        }
 
                        throw $e;
                    }
 
                    $this->stream->next();
 
                    $subparser->setParser($this);
                    $node = $subparser->parse($token);
                    if (!$node) {
                        trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);
                    } else {
                        $node->setNodeTag($subparser->getTag());
                        $rv[] = $node;
                    }
                    break;
 
                default:
                    throw new SyntaxError('The lexer or the parser ended up in an unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext());
            }
        }
 
        if (1 === \count($rv)) {
            return $rv[0];
        }
 
        return new Nodes($rv, $lineno);
    }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/TokenParser/IfTokenParser.php
 *
 *   {% if users %}
 *    <ul>
 *      {% for user in users %}
 *        <li>{{ user.username|e }}</li>
 *      {% endfor %}
 *    </ul>
 *   {% endif %}
 *
 * @internal
 */
final class IfTokenParser extends AbstractTokenParser
{
    public function parse(Token $token): Node
    {
        $lineno = $token->getLine();
        $expr = $this->parser->parseExpression();
        $stream = $this->parser->getStream();
        $stream->expect(Token::BLOCK_END_TYPE);
        $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);
                    $else = $this->parser->subparse([$this, 'decideIfEnd']);
                    break;
 
                case 'elseif':
                    $expr = $this->parser->parseExpression();
                    $stream->expect(Token::BLOCK_END_TYPE);
                    $body = $this->parser->subparse([$this, 'decideIfFork']);
                    $tests[] = $expr;
                    $tests[] = $body;
                    break;
 
                case 'endif':
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php
                    if (!$subparser = $this->env->getTokenParser($token->getValue())) {
                        if (null !== $test) {
                            $e = new SyntaxError(\sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
 
                            $callable = (new ReflectionCallable(new TwigTest('decision', $test)))->getCallable();
                            if (\is_array($callable) && $callable[0] instanceof TokenParserInterface) {
                                $e->appendMessage(\sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $callable[0]->getTag(), $lineno));
                            }
                        } else {
                            $e = new SyntaxError(\sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext());
                            $e->addSuggestions($token->getValue(), array_keys($this->env->getTokenParsers()));
                        }
 
                        throw $e;
                    }
 
                    $this->stream->next();
 
                    $subparser->setParser($this);
                    $node = $subparser->parse($token);
                    if (!$node) {
                        trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);
                    } else {
                        $node->setNodeTag($subparser->getTag());
                        $rv[] = $node;
                    }
                    break;
 
                default:
                    throw new SyntaxError('The lexer or the parser ended up in an unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext());
            }
        }
 
        if (1 === \count($rv)) {
            return $rv[0];
        }
 
        return new Nodes($rv, $lineno);
    }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Parser.php
        unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames'], $vars['lastEmbedIndex'], $vars['varNameSalt']);
        $this->stack[] = $vars;
 
        // node visitors
        if (null === $this->visitors) {
            $this->visitors = $this->env->getNodeVisitors();
        }
 
        $this->stream = $stream;
        $this->parent = null;
        $this->blocks = [];
        $this->macros = [];
        $this->traits = [];
        $this->blockStack = [];
        $this->importedSymbols = [[]];
        $this->embeddedTemplates = [];
        $this->expressionRefs = new \WeakMap();
 
        try {
            $body = $this->subparse($test, $dropNeedle);
 
            if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) {
                $body = new EmptyNode();
            }
        } catch (SyntaxError $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->stream->getSourceContext());
            }
 
            if (!$e->getTemplateLine()) {
                $e->setTemplateLine($this->getCurrentToken()->getLine());
            }
 
            throw $e;
        } finally {
            $this->expressionRefs = null;
        }
 
        $node = new ModuleNode(
            new BodyNode([$body]),
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php
    /**
     * @return void
     */
    public function setParser(Parser $parser)
    {
        $this->parser = $parser;
    }
 
    /**
     * Converts a token stream to a node tree.
     *
     * @throws SyntaxError When the token stream is syntactically or semantically wrong
     */
    public function parse(TokenStream $stream): ModuleNode
    {
        if (null === $this->parser) {
            $this->parser = new Parser($this);
        }
 
        return $this->parser->parse($stream);
    }
 
    /**
     * @return void
     */
    public function setCompiler(Compiler $compiler)
    {
        $this->compiler = $compiler;
    }
 
    /**
     * Compiles a node and returns the PHP code.
     */
    public function compile(Node $node): string
    {
        if (null === $this->compiler) {
            $this->compiler = new Compiler($this);
        }
 
        return $this->compiler->compile($node)->getSource();
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php
     * Compiles a node and returns the PHP code.
     */
    public function compile(Node $node): string
    {
        if (null === $this->compiler) {
            $this->compiler = new Compiler($this);
        }
 
        return $this->compiler->compile($node)->getSource();
    }
 
    /**
     * Compiles a template source code.
     *
     * @throws SyntaxError When there was an error during tokenizing, parsing or compiling
     */
    public function compileSource(Source $source): string
    {
        try {
            return $this->compile($this->parse($this->tokenize($source)));
        } catch (Error $e) {
            $e->setSourceContext($source);
            throw $e;
        } catch (\Exception $e) {
            throw new SyntaxError(\sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
        }
    }
 
    /**
     * @return void
     */
    public function setLoader(LoaderInterface $loader)
    {
        $this->loader = $loader;
    }
 
    public function getLoader(): LoaderInterface
    {
        return $this->loader;
    }
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php
    {
        $mainCls = $cls;
        if (null !== $index) {
            $cls .= '___'.$index;
        }
 
        if (isset($this->loadedTemplates[$cls])) {
            return $this->loadedTemplates[$cls];
        }
 
        if (!class_exists($cls, false)) {
            $key = $this->cache->generateKey($name, $mainCls);
 
            if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) {
                $this->cache->load($key);
            }
 
            if (!class_exists($cls, false)) {
                $source = $this->getLoader()->getSourceContext($name);
                $content = $this->compileSource($source);
                if (!isset($this->hotCache[$name])) {
                    $this->cache->write($key, $content);
                    $this->cache->load($key);
                }
 
                if (!class_exists($mainCls, false)) {
                    /* Last line of defense if either $this->bcWriteCacheFile was used,
                     * $this->cache is implemented as a no-op or we have a race condition
                     * where the cache was cleared between the above calls to write to and load from
                     * the cache.
                     */
                    eval('?>'.$content);
                }
 
                if (!class_exists($cls, false)) {
                    throw new RuntimeError(\sprintf('Failed to load Twig template "%s", index "%s": cache might be corrupted.', $name, $index), -1, $source);
                }
            }
        }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php
     * Loads a template.
     *
     * @param string|TemplateWrapper $name The template name
     *
     * @throws LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     */
    public function load($name): TemplateWrapper
    {
        if ($name instanceof TemplateWrapper) {
            return $name;
        }
        if ($name instanceof Template) {
            trigger_deprecation('twig/twig', '3.9', 'Passing a "%s" instance to "%s" is deprecated.', self::class, __METHOD__);
 
            return $name;
        }
 
        return new TemplateWrapper($this, $this->loadTemplate($this->getTemplateClass($name), $name));
    }
 
    /**
     * Loads a template internal representation.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @param string   $name  The template name
     * @param int|null $index The index if it is an embedded template
     *
     * @throws LoaderError  When the template cannot be found
     * @throws RuntimeError When a previously generated cache is corrupted
     * @throws SyntaxError  When an error occurred during compilation
     *
     * @internal
     */
    public function loadTemplate(string $cls, string $name, ?int $index = null): Template
    {
        $mainCls = $cls;
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Environment.php
    public function isTemplateFresh(string $name, int $time): bool
    {
        return $this->extensionSet->getLastModified() <= $time && $this->getLoader()->isFresh($name, $time);
    }
 
    /**
     * Tries to load a template consecutively from an array.
     *
     * Similar to load() but it also accepts instances of \Twig\TemplateWrapper
     * and an array of templates where each is tried to be loaded.
     *
     * @param string|TemplateWrapper|array<string|TemplateWrapper> $names A template or an array of templates to try consecutively
     *
     * @throws LoaderError When none of the templates can be found
     * @throws SyntaxError When an error occurred during compilation
     */
    public function resolveTemplate($names): TemplateWrapper
    {
        if (!\is_array($names)) {
            return $this->load($names);
        }
 
        $count = \count($names);
        foreach ($names as $name) {
            if ($name instanceof Template) {
                trigger_deprecation('twig/twig', '3.9', 'Passing a "%s" instance to "%s" is deprecated.', Template::class, __METHOD__);
 
                return new TemplateWrapper($this, $name);
            }
            if ($name instanceof TemplateWrapper) {
                return $name;
            }
 
            if (1 !== $count && !$this->getLoader()->exists($name)) {
                continue;
            }
 
            return $this->load($name);
        }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Extension/CoreExtension.php
     */
    public static function include(Environment $env, $context, $template, $variables = [], $withContext = true, $ignoreMissing = false, $sandboxed = false): string
    {
        $alreadySandboxed = false;
        $sandbox = null;
        if ($withContext) {
            $variables = array_merge($context, $variables);
        }
 
        if ($isSandboxed = $sandboxed && $env->hasExtension(SandboxExtension::class)) {
            $sandbox = $env->getExtension(SandboxExtension::class);
            if (!$alreadySandboxed = $sandbox->isSandboxed()) {
                $sandbox->enableSandbox();
            }
        }
 
        try {
            $loaded = null;
            try {
                $loaded = $env->resolveTemplate($template);
            } catch (LoaderError $e) {
                if (!$ignoreMissing) {
                    throw $e;
                }
 
                return '';
            }
 
            return $loaded->render($variables);
        } finally {
            if ($isSandboxed && !$alreadySandboxed) {
                $sandbox->disableSandbox();
            }
        }
    }
 
    /**
     * Returns a template content without rendering it.
     *
     * @param string $name          The template name
/home/sdove/my.isnhosting.net/data/cache/8d/8d7a6bda1c66c2a85a3329ca089b5e25.php
                                </div>
                            </div>
                            ";
                }
                // line 72
                yield "                        </div>
                    ";
                yield from [];
            })())) ? '' : new Markup($tmp, $this->env->getCharset());
            // line 74
            yield "
                    ";
            // line 75
            $context["tpl"] = (("mod_service" . CoreExtension::getAttribute($this->env, $this->source, ($context["product"] ?? null), "type", [], "any", false, false, false, 75)) . "_order_form.html.twig");
            // line 76
            yield "                    ";
            if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, ($context["guest"] ?? null), "system_template_exists", [["file" => ($context["tpl"] ?? null)]], "method", false, false, false, 76)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
                // line 77
                yield "                        ";
                yield Twig\Extension\CoreExtension::include($this->env, $context, ($context["tpl"] ?? null), ($context["product"] ?? null));
                yield "
                    ";
            } elseif ((CoreExtension::getAttribute($this->env, $this->source,             // line 78
($context["product"] ?? null), "form_id", [], "any", false, false, false, 78) && CoreExtension::getAttribute($this->env, $this->source, ($context["guest"] ?? null), "extension_is_on", [["mod" => "formbuilder"]], "method", false, false, false, 78))) {
                // line 79
                yield "                        ";
                yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["product_details"] ?? null), "html", null, true);
                yield "
                        ";
                // line 80
                $context["form"] = CoreExtension::getAttribute($this->env, $this->source, ($context["guest"] ?? null), "formbuilder_get", [["id" => CoreExtension::getAttribute($this->env, $this->source, ($context["product"] ?? null), "form_id", [], "any", false, false, false, 80)]], "method", false, false, false, 80);
                // line 81
                yield "                        ";
                yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_formbuilder_build.html.twig", ($context["product"] ?? null));
                yield "
                    ";
            } else {
                // line 83
                yield "                        ";
                yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["product_details"] ?? null), "html", null, true);
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function yield(array $context, array $blocks = []): iterable
    {
        $context += $this->env->getGlobals();
        $blocks = array_merge($this->blocks, $blocks);
 
        try {
            $this->ensureSecurityChecked();
            yield from $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            $e = new RuntimeError(\sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks(): array
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = []): void
    {
        foreach ($this->yield($context, $blocks) as $data) {
            echo $data;
        }
    }
 
    public function render(array $context): string
    {
        if (!$this->useYield) {
            $level = ob_get_level();
            if ($this->env->isDebug()) {
                ob_start();
            } else {
                ob_start(static function () { return ''; });
            }
            try {
                $this->display($context);
            } catch (\Throwable $e) {
                while (ob_get_level() > $level) {
                    ob_end_clean();
                }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
    }
 
    public function display(array $context, array $blocks = []): void
    {
        foreach ($this->yield($context, $blocks) as $data) {
            echo $data;
        }
    }
 
    public function render(array $context): string
    {
        if (!$this->useYield) {
            $level = ob_get_level();
            if ($this->env->isDebug()) {
                ob_start();
            } else {
                ob_start(static function () { return ''; });
            }
            try {
                $this->display($context);
            } catch (\Throwable $e) {
                while (ob_get_level() > $level) {
                    ob_end_clean();
                }
 
                throw $e;
            }
 
            return ob_get_clean();
        }
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/TemplateWrapper.php
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function stream(array $context = []): iterable
    {
        yield from $this->template->yield($context);
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function streamBlock(string $name, array $context = []): iterable
    {
        yield from $this->template->yieldBlock($name, $context);
    }
 
    public function render(array $context = []): string
    {
        return $this->template->render($context);
    }
 
    /**
     * @return void
     */
    public function display(array $context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        $this->template->display($context, \func_get_args()[1] ?? []);
    }
 
    public function hasBlock(string $name, array $context = []): bool
    {
        return $this->template->hasBlock($name, $context);
    }
 
    /**
     * @return string[] An array of defined template block names
     */
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Extension/CoreExtension.php
        if ($isSandboxed = $sandboxed && $env->hasExtension(SandboxExtension::class)) {
            $sandbox = $env->getExtension(SandboxExtension::class);
            if (!$alreadySandboxed = $sandbox->isSandboxed()) {
                $sandbox->enableSandbox();
            }
        }
 
        try {
            $loaded = null;
            try {
                $loaded = $env->resolveTemplate($template);
            } catch (LoaderError $e) {
                if (!$ignoreMissing) {
                    throw $e;
                }
 
                return '';
            }
 
            return $loaded->render($variables);
        } finally {
            if ($isSandboxed && !$alreadySandboxed) {
                $sandbox->disableSandbox();
            }
        }
    }
 
    /**
     * Returns a template content without rendering it.
     *
     * @param string $name          The template name
     * @param bool   $ignoreMissing Whether to ignore missing templates or not
     *
     * @internal
     */
    public static function source(Environment $env, $name, $ignoreMissing = false): string
    {
        $loader = $env->getLoader();
        try {
            return $loader->getSourceContext($name)->getCode();
/home/sdove/my.isnhosting.net/data/cache/98/9831053e71fc2b78d2fe9744cfb98a03.php
        // line 1
        $context["loader_nr"] = ((CoreExtension::getAttribute($this->env, $this->source, ($context["request"] ?? null), "loader", [], "any", true, true, false, 1)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, ($context["request"] ?? null), "loader", [], "any", false, false, false, 1), "8")) : ("8"));
        // line 2
        $context["loader_url"] = (("img/assets/loaders/loader" . ($context["loader_nr"] ?? null)) . ".gif");
        // line 3
        yield "
<div class=\"row\">
    <div class=\"col-md-12\">
        <div class=\"card border-0\" id=\"orderbutton\" style=\"margin-bottom: 0\">
            <div class=\"card-body p-1\">
                <div id=\"orderManager\" class=\"accordion\">
 
                    ";
        // line 10
        yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_orderbutton_choose_product.html.twig");
        yield "
 
                    ";
        // line 12
        yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_orderbutton_product_configuration.html.twig");
        yield "
 
                    ";
        // line 14
        if ((($tmp =  !($context["client"] ?? null)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
            // line 15
            yield "                        ";
            yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_orderbutton_client.html.twig");
            yield "
                    ";
        }
        // line 17
        yield "
                    ";
        // line 18
        yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_orderbutton_checkout.html.twig");
        yield "
 
                    <div class=\"accordion-item\">
                        <h3 class=\"accordion-header\">
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function yield(array $context, array $blocks = []): iterable
    {
        $context += $this->env->getGlobals();
        $blocks = array_merge($this->blocks, $blocks);
 
        try {
            $this->ensureSecurityChecked();
            yield from $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            $e = new RuntimeError(\sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks(): array
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = []): void
    {
        foreach ($this->yield($context, $blocks) as $data) {
            echo $data;
        }
    }
 
    public function render(array $context): string
    {
        if (!$this->useYield) {
            $level = ob_get_level();
            if ($this->env->isDebug()) {
                ob_start();
            } else {
                ob_start(static function () { return ''; });
            }
            try {
                $this->display($context);
            } catch (\Throwable $e) {
                while (ob_get_level() > $level) {
                    ob_end_clean();
                }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
    }
 
    public function display(array $context, array $blocks = []): void
    {
        foreach ($this->yield($context, $blocks) as $data) {
            echo $data;
        }
    }
 
    public function render(array $context): string
    {
        if (!$this->useYield) {
            $level = ob_get_level();
            if ($this->env->isDebug()) {
                ob_start();
            } else {
                ob_start(static function () { return ''; });
            }
            try {
                $this->display($context);
            } catch (\Throwable $e) {
                while (ob_get_level() > $level) {
                    ob_end_clean();
                }
 
                throw $e;
            }
 
            return ob_get_clean();
        }
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/TemplateWrapper.php
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function stream(array $context = []): iterable
    {
        yield from $this->template->yield($context);
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function streamBlock(string $name, array $context = []): iterable
    {
        yield from $this->template->yieldBlock($name, $context);
    }
 
    public function render(array $context = []): string
    {
        return $this->template->render($context);
    }
 
    /**
     * @return void
     */
    public function display(array $context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        $this->template->display($context, \func_get_args()[1] ?? []);
    }
 
    public function hasBlock(string $name, array $context = []): bool
    {
        return $this->template->hasBlock($name, $context);
    }
 
    /**
     * @return string[] An array of defined template block names
     */
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Extension/CoreExtension.php
        if ($isSandboxed = $sandboxed && $env->hasExtension(SandboxExtension::class)) {
            $sandbox = $env->getExtension(SandboxExtension::class);
            if (!$alreadySandboxed = $sandbox->isSandboxed()) {
                $sandbox->enableSandbox();
            }
        }
 
        try {
            $loaded = null;
            try {
                $loaded = $env->resolveTemplate($template);
            } catch (LoaderError $e) {
                if (!$ignoreMissing) {
                    throw $e;
                }
 
                return '';
            }
 
            return $loaded->render($variables);
        } finally {
            if ($isSandboxed && !$alreadySandboxed) {
                $sandbox->disableSandbox();
            }
        }
    }
 
    /**
     * Returns a template content without rendering it.
     *
     * @param string $name          The template name
     * @param bool   $ignoreMissing Whether to ignore missing templates or not
     *
     * @internal
     */
    public static function source(Environment $env, $name, $ignoreMissing = false): string
    {
        $loader = $env->getLoader();
        try {
            return $loader->getSourceContext($name)->getCode();
/home/sdove/my.isnhosting.net/data/cache/eb/eb375b1fc10ffb6fed7aec2b0e419ecc.php
        <div class=\"col-md-12\">
            <div class=\"card mb-4\">
                <div class=\"card-header py-3 py-3\">
                    <div class=\"d-flex justify-content-between align-items-center\">
                        <div class=\"w-100\">
                            <h1 class=\"mb-1\">";
        // line 23
        yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('FOSSBilling\Twig\Extension\FOSSBillingExtension')->trans("Products"), "html", null, true);
        yield "</h1>
                            ";
        // line 24
        yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_orderbutton_currency.html.twig");
        yield "
                        </div>
                    </div>
                </div>
                <div class=\"card-body overflow-hidden\">
                    ";
        // line 29
        yield Twig\Extension\CoreExtension::include($this->env, $context, "mod_orderbutton_content.html.twig");
        yield "
                </div>
            </div>
        </div>
    </div>
";
        yield from [];
    }
 
    // line 36
    /**
     * @return iterable<null|scalar|\Stringable>
     */
    public function block_sidebar2(array $context, array $blocks = []): iterable
    {
        $macros = $this->macros;
        // line 37
        yield "    ";
        yield Twig\Extension\CoreExtension::include($this->env, $context, "partial_currency.html.twig");
        yield "
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new \LogicException('A block must be a method on a \Twig\Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->ensureSecurityChecked();
                yield from $template->$block($context, $blocks);
            } catch (Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for \Twig\Error\LoaderError exceptions
                // see \Twig\Error\LoaderError
                if (-1 === $e->getTemplateLine()) {
                    $e->guess();
                }
 
                throw $e;
            } catch (\Throwable $e) {
                $e = new RuntimeError(\sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
                $e->guess();
 
                throw $e;
            }
        } elseif ($parent = $this->getParent($context)) {
            yield from $parent->unwrap()->yieldBlock($name, $context, array_merge($this->blocks, $blocks), false, $templateContext ?? $this);
/home/sdove/my.isnhosting.net/data/cache/27/27e9a4977b3fddd15126886aa890712d.php
        // line 178
        yield "                        <div class=\"content-block\" role=\"main\">
                            ";
        // line 179
        if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, ($context["settings"] ?? null), "show_breadcrumb", [], "any", false, false, false, 179)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
            // line 180
            yield "                                ";
            yield from $this->unwrap()->yieldBlock('breadcrumbs', $context, $blocks);
            // line 191
            yield "                            ";
        }
        // line 192
        yield "
                            ";
        // line 193
        yield $this->env->getRuntime('FOSSBilling\Twig\Extension\FOSSBillingExtension')->renderWidgets($this->env, "client.theme.content.before");
        yield "
                            ";
        // line 194
        yield from $this->unwrap()->yieldBlock('content', $context, $blocks);
        // line 195
        yield "                            ";
        yield $this->env->getRuntime('FOSSBilling\Twig\Extension\FOSSBillingExtension')->renderWidgets($this->env, "client.theme.content.after");
        yield "
 
                            ";
        // line 197
        yield Twig\Extension\CoreExtension::include($this->env, $context, "partial_message.html.twig");
        yield "
 
                            ";
        // line 199
        yield from $this->unwrap()->yieldBlock('content_after', $context, $blocks);
        // line 200
        yield "                        </div>
                    </section>
                    <div id=\"push\"></div>
                </div>
 
                ";
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
        if ($useBlocks && isset($blocks[$name])) {
            $template = $blocks[$name][0];
            $block = $blocks[$name][1];
        } elseif (isset($this->blocks[$name])) {
            $template = $this->blocks[$name][0];
            $block = $this->blocks[$name][1];
        } else {
            $template = null;
            $block = null;
        }
 
        // avoid RCEs when sandbox is enabled
        if (null !== $template && !$template instanceof self) {
            throw new \LogicException('A block must be a method on a \Twig\Template instance.');
        }
 
        if (null !== $template) {
            try {
                $template->ensureSecurityChecked();
                yield from $template->$block($context, $blocks);
            } catch (Error $e) {
                if (!$e->getSourceContext()) {
                    $e->setSourceContext($template->getSourceContext());
                }
 
                // this is mostly useful for \Twig\Error\LoaderError exceptions
                // see \Twig\Error\LoaderError
                if (-1 === $e->getTemplateLine()) {
                    $e->guess();
                }
 
                throw $e;
            } catch (\Throwable $e) {
                $e = new RuntimeError(\sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e);
                $e->guess();
 
                throw $e;
            }
        } elseif ($parent = $this->getParent($context)) {
            yield from $parent->unwrap()->yieldBlock($name, $context, array_merge($this->blocks, $blocks), false, $templateContext ?? $this);
/home/sdove/my.isnhosting.net/data/cache/27/27e9a4977b3fddd15126886aa890712d.php
        yield from $this->unwrap()->yieldBlock('head', $context, $blocks);
        // line 39
        yield "    ";
        yield from $this->unwrap()->yieldBlock('js', $context, $blocks);
        // line 40
        yield "</head>
 
<body class=\"";
        // line 42
        yield from $this->unwrap()->yieldBlock('body_class', $context, $blocks);
        yield "\">
 
";
        // line 44
        yield $this->env->getRuntime('FOSSBilling\Twig\Extension\FOSSBillingExtension')->renderWidgets($this->env, "client.theme.body.start");
        yield "
 
";
        // line 46
        yield from $this->unwrap()->yieldBlock('body', $context, $blocks);
        // line 259
        yield "
    ";
        // line 260
        if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, ($context["settings"] ?? null), "inject_javascript", [], "any", false, false, false, 260)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
            // line 261
            yield "        ";
            yield CoreExtension::getAttribute($this->env, $this->source, ($context["settings"] ?? null), "inject_javascript", [], "any", false, false, false, 261);
            yield "
    ";
        }
        // line 263
        yield "    ";
        yield Twig\Extension\CoreExtension::include($this->env, $context, "partial_pending_messages.html.twig", [], true, true);
        yield "
    ";
        // line 264
        if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, ($context["guest"] ?? null), "extension_is_on", [["mod" => "cookieconsent"]], "method", false, false, false, 264)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
            // line 265
            yield "        ";
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function yield(array $context, array $blocks = []): iterable
    {
        $context += $this->env->getGlobals();
        $blocks = array_merge($this->blocks, $blocks);
 
        try {
            $this->ensureSecurityChecked();
            yield from $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            $e = new RuntimeError(\sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
/home/sdove/my.isnhosting.net/data/cache/eb/eb375b1fc10ffb6fed7aec2b0e419ecc.php
        ];
    }
 
    protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
    {
        // line 1
        return $this->load((((($tmp = CoreExtension::getAttribute($this->env, $this->source, ($context["request"] ?? null), "ajax", [], "any", false, false, false, 1)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("layout_blank.html.twig") : ("layout_default.html.twig")), 1);
    }
 
    protected function doDisplay(array $context, array $blocks = []): iterable
    {
        $macros = $this->macros;
        // line 2
        $context["active_menu"] = "order";
        // line 7
        $context["loader_nr"] = ((CoreExtension::getAttribute($this->env, $this->source, ($context["request"] ?? null), "loader", [], "any", true, true, false, 7)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, ($context["request"] ?? null), "loader", [], "any", false, false, false, 7), "8")) : ("8"));
        // line 8
        $context["loader_url"] = (("img/assets/loaders/loader" . ($context["loader_nr"] ?? null)) . ".gif");
        // line 1
        yield from $this->getParent($context)->unwrap()->yield($context, array_merge($this->blocks, $blocks));
    }
 
    // line 4
    /**
     * @return iterable<null|scalar|\Stringable>
     */
    public function block_meta_title(array $context, array $blocks = []): iterable
    {
        $macros = $this->macros;
        yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('FOSSBilling\Twig\Extension\FOSSBillingExtension')->trans("Order"), "html", null, true);
        yield from [];
    }
 
    // line 5
    /**
     * @return iterable<null|scalar|\Stringable>
     */
    public function block_meta_description(array $context, array $blocks = []): iterable
    {
        $macros = $this->macros;
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function yield(array $context, array $blocks = []): iterable
    {
        $context += $this->env->getGlobals();
        $blocks = array_merge($this->blocks, $blocks);
 
        try {
            $this->ensureSecurityChecked();
            yield from $this->doDisplay($context, $blocks);
        } catch (Error $e) {
            if (!$e->getSourceContext()) {
                $e->setSourceContext($this->getSourceContext());
            }
 
            // this is mostly useful for \Twig\Error\LoaderError exceptions
            // see \Twig\Error\LoaderError
            if (-1 === $e->getTemplateLine()) {
                $e->guess();
            }
 
            throw $e;
        } catch (\Throwable $e) {
            $e = new RuntimeError(\sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e);
            $e->guess();
 
            throw $e;
        }
    }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
    {
        return $this;
    }
 
    /**
     * Returns all blocks.
     *
     * This method is for internal use only and should never be called
     * directly.
     *
     * @return array An array of blocks
     */
    public function getBlocks(): array
    {
        return $this->blocks;
    }
 
    public function display(array $context, array $blocks = []): void
    {
        foreach ($this->yield($context, $blocks) as $data) {
            echo $data;
        }
    }
 
    public function render(array $context): string
    {
        if (!$this->useYield) {
            $level = ob_get_level();
            if ($this->env->isDebug()) {
                ob_start();
            } else {
                ob_start(static function () { return ''; });
            }
            try {
                $this->display($context);
            } catch (\Throwable $e) {
                while (ob_get_level() > $level) {
                    ob_end_clean();
                }
 
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/Template.php
    }
 
    public function display(array $context, array $blocks = []): void
    {
        foreach ($this->yield($context, $blocks) as $data) {
            echo $data;
        }
    }
 
    public function render(array $context): string
    {
        if (!$this->useYield) {
            $level = ob_get_level();
            if ($this->env->isDebug()) {
                ob_start();
            } else {
                ob_start(static function () { return ''; });
            }
            try {
                $this->display($context);
            } catch (\Throwable $e) {
                while (ob_get_level() > $level) {
                    ob_end_clean();
                }
 
                throw $e;
            }
 
            return ob_get_clean();
        }
 
        $content = '';
        foreach ($this->yield($context) as $data) {
            $content .= $data;
        }
 
        return $content;
    }
 
    /**
/home/sdove/my.isnhosting.net/vendor/twig/twig/src/TemplateWrapper.php
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function stream(array $context = []): iterable
    {
        yield from $this->template->yield($context);
    }
 
    /**
     * @return iterable<scalar|\Stringable|null>
     */
    public function streamBlock(string $name, array $context = []): iterable
    {
        yield from $this->template->yieldBlock($name, $context);
    }
 
    public function render(array $context = []): string
    {
        return $this->template->render($context);
    }
 
    /**
     * @return void
     */
    public function display(array $context = [])
    {
        // using func_get_args() allows to not expose the blocks argument
        // as it should only be used by internal code
        $this->template->display($context, \func_get_args()[1] ?? []);
    }
 
    public function hasBlock(string $name, array $context = []): bool
    {
        return $this->template->hasBlock($name, $context);
    }
 
    /**
     * @return string[] An array of defined template block names
     */
/home/sdove/my.isnhosting.net/library/Box/AppClient.php
        $this->di['logger']->setChannel('routing')->info($e->getMessage());
 
        return $this->errorResponse($e, 404);
    }
 
    /**
     * @param string $fileName
     */
    #[Override]
    public function render($fileName, $variableArray = [], $ext = 'html.twig'): string
    {
        try {
            $template = $this->getTwig()->load(Path::changeExtension($fileName, $ext));
        } catch (Twig\Error\LoaderError $e) {
            $this->di['logger']->setChannel('routing')->info($e->getMessage());
 
            throw new FOSSBilling\InformationException('Page not found', null, 404);
        }
 
        return $template->render($variableArray);
    }
 
    /**
     * Get Twig environment for client area.
     */
    protected function getTwig(): Twig\Environment
    {
        $twigFactory = $this->di['twig_factory'];
 
        return $twigFactory->createClientEnvironment($this->debugBar);
    }
}
 
/home/sdove/my.isnhosting.net/modules/Order/Controller/Client.php
        $this->di = $di;
    }
 
    public function getDi(): ?\Pimple\Container
    {
        return $this->di;
    }
 
    public function register(\Box_App &$app): void
    {
        $app->get('/order', 'get_products', [], static::class);
        $app->get('/order/service', 'get_orders', [], static::class);
        $app->get('/order/:id', 'get_configure_product', ['id' => '[0-9]+'], static::class);
        $app->get('/order/:slug', 'get_configure_product_by_slug', ['slug' => '[a-z0-9-]+'], static::class);
        $app->get('/order/service/manage/:id', 'get_order', ['id' => '[0-9]+'], static::class);
    }
 
    public function get_products(\Box_App $app): string
    {
        return $app->render('mod_order_index');
    }
 
    public function get_configure_product_by_slug(\Box_App $app, $slug): string
    {
        $api = $this->di['api_guest'];
        $product = $api->product_get(['slug' => $slug]);
        $tpl = 'mod_service' . $product['type'] . '_order';
        if ($api->system_template_exists(['file' => $tpl . '.html.twig'])) {
            return $app->render($tpl, ['product' => $product]);
        }
 
        return $app->render('mod_order_product', ['product' => $product]);
    }
 
    public function get_configure_product(\Box_App $app, $id): string
    {
        $api = $this->di['api_guest'];
        $product = $api->product_get(['id' => $id]);
        $tpl = 'mod_service' . $product['type'] . '_order';
        if ($api->system_template_exists(['file' => $tpl . '.html.twig'])) {
[internal]
/home/sdove/my.isnhosting.net/library/Box/App.php
 
        $timeCollector->startMeasure('executeShared', 'Reflecting module controller (shared mapping)');
        $class = new $classname();
        if ($class instanceof InjectionAwareInterface) {
            $class->setDi($this->di);
        }
        $reflection = new ReflectionMethod($class::class, $methodName);
        $args = [];
        $args[] = $this; // first param always app instance
 
        foreach ($reflection->getParameters() as $param) {
            if (isset($params[$param->name])) {
                $args[$param->name] = $params[$param->name];
            } elseif ($param->isDefaultValueAvailable()) {
                $args[$param->name] = $param->getDefaultValue();
            }
        }
        $timeCollector->stopMeasure('executeShared');
 
        return $reflection->invokeArgs($class, $args);
    }
 
    protected function execute($methodName, $params, $classname = null): mixed
    {
        /** @var TimeDataCollector $timeCollector */
        $timeCollector = $this->debugBar->getCollector('time');
 
        $timeCollector->startMeasure('execute', 'Reflecting module controller');
 
        $reflection = new ReflectionMethod(static::class, $methodName);
        $args = [];
 
        foreach ($reflection->getParameters() as $param) {
            if (isset($params[$param->name])) {
                $args[$param->name] = $params[$param->name];
            } elseif ($param->isDefaultValueAvailable()) {
                $args[$param->name] = $param->getDefaultValue();
            }
        }
 
/home/sdove/my.isnhosting.net/library/Box/App.php
 
                    return $apiController->renderJson(null, $exc);
                }
 
                return $this->renderResponse('mod_system_maintenance', [], 503);
            }
        }
 
        /** @var TimeDataCollector $timeCollector */
        $timeCollector = $this->debugBar->getCollector('time');
 
        $timeCollector->startMeasure('sharedMapping', 'Checking shared mappings');
        $sharedCount = count($this->shared);
        for ($i = 0; $i < $sharedCount; ++$i) {
            $mapping = $this->shared[$i];
            $url = new Box_UrlHelper($mapping[0], $mapping[1], $mapping[3], $this->url, $this->getRequest()->getMethod());
            if ($url->match) {
                $timeCollector->stopMeasure('sharedMapping');
 
                return $this->normalizeResponse($this->executeShared($mapping[4], $mapping[2], $url->params));
            }
        }
        $timeCollector->stopMeasure('sharedMapping');
 
        // this class mappings
        $timeCollector->startMeasure('mapping', 'Checking mappings');
        $mappingsCount = count($this->mappings);
        for ($i = 0; $i < $mappingsCount; ++$i) {
            $mapping = $this->mappings[$i];
            $url = new Box_UrlHelper($mapping[0], $mapping[1], $mapping[3], $this->url, $this->getRequest()->getMethod());
            if ($url->match) {
                $timeCollector->stopMeasure('mapping');
 
                return $this->normalizeResponse($this->execute($mapping[2], $url->params));
            }
        }
        $timeCollector->stopMeasure('mapping');
 
        $e = new FOSSBilling\InformationException('Page :url not found', [':url' => $this->url], 404);
 
/home/sdove/my.isnhosting.net/library/Box/App.php
 
    public function run(): Response
    {
        /** @var TimeDataCollector $timeCollector */
        $timeCollector = $this->debugBar->getCollector('time');
 
        try {
            $timeCollector->startMeasure('registerModule', 'Registering module routes');
            $this->registerModule();
            $timeCollector->stopMeasure('registerModule');
 
            $timeCollector->startMeasure('init', 'Initializing the app');
            $this->init();
            $timeCollector->stopMeasure('init');
 
            $timeCollector->startMeasure('checkperm', 'Checking access to module');
            $this->checkPermission();
            $timeCollector->stopMeasure('checkperm');
 
            return $this->processRequest();
        } catch (AuthenticationRequiredException $e) {
            if ($e->getArea() === 'admin') {
                $this->di['set_return_uri'];
 
                return new RedirectResponse($this->di['url']->adminLink('staff/login'));
            }
 
            $this->di['set_return_uri'];
 
            return new RedirectResponse($this->di['url']->link('login'));
        } catch (EmailValidationRequiredException) {
            return new RedirectResponse($this->di['url']->link('client/profile'));
        } catch (HttpResponseException $e) {
            return $e->getResponse();
        }
    }
 
    /**
     * @param string $path
     */
/home/sdove/my.isnhosting.net/index.php
$timeCollector?->stopMeasure('translate');
 
// If HTTP error code has been passed, handle it.
if (!is_null($http_err_code)) {
    $http_err_code = intval($http_err_code);
    switch ($http_err_code) {
        case 404:
            $e = new FOSSBilling\Exception('Page :url not found', [':url' => $url], 404);
            $app->show404($e)->send();
 
            break;
        default:
            $e = new FOSSBilling\Exception('HTTP Error :err_code occurred while attempting to load :url', [':err_code' => $http_err_code, ':url' => $url], $http_err_code);
            (new Response($app->render('error', ['exception' => $e]), $http_err_code))->send();
    }
    exit;
}
 
// If no HTTP error passed, run the app.
$app->run()->send();
exit;
 

Environment & details:

Key Value
PHP Version
"8.3.29"
Error code
0
Instance ID
"36a7d63f-bbd3-40bb-9e0a-2a3777be3677"
Key Value
_url
"/order"
product
"43"
empty
empty
empty
Key Value
csrf_token
"a3a45599ec6b7ecb902c51e9b57b65bf72ed3c5e5a2c0dcd0614fc5d3f9ba23b"
Key Value
CONTEXT_DOCUMENT_ROOT
"/home/sdove/my.isnhosting.net"
CONTEXT_PREFIX
""
DOCUMENT_ROOT
"/home/sdove/my.isnhosting.net"
GATEWAY_INTERFACE
"CGI/1.1"
HTTPS
"on"
HTTP_ACCEPT
"*/*"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_AUTHORIZATION
""
HTTP_HOST
"my.isnhosting.net"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
PATH
"/bin:/usr/bin:/usr/local/php/bin"
PHPRC
"/home/sdove"
QUERY_STRING
"_url=/order&product=43"
REDIRECT_HTTPS
"on"
REDIRECT_HTTP_AUTHORIZATION
""
REDIRECT_QUERY_STRING
"_url=/order&product=43"
REDIRECT_SSL_TLS_SNI
"my.isnhosting.net"
REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"alVuLf9iaxPJ2qvAjfmqPQAAAMg"
REDIRECT_URL
"/order"
REMOTE_ADDR
"216.73.216.177"
REMOTE_PORT
"45443"
REQUEST_METHOD
"GET"
REQUEST_SCHEME
"https"
REQUEST_URI
"/order?product=43"
SCRIPT_FILENAME
"/home/sdove/my.isnhosting.net/index.php"
SCRIPT_NAME
"/index.php"
SERVER_ADDR
"10.180.40.100"
SERVER_ADMIN
"webmaster@my.isnhosting.net"
SERVER_NAME
"my.isnhosting.net"
SERVER_PORT
"443"
SERVER_PROTOCOL
"HTTP/1.1"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache/2.4.57 (Unix) OpenSSL/1.1.1k"
SSL_TLS_SNI
"my.isnhosting.net"
UNIQUE_ID
"alVuLf9iaxPJ2qvAjfmqPQAAAMg"
PHP_SELF
"/index.php"
REQUEST_TIME_FLOAT
1783983661.6423
REQUEST_TIME
1783983661
empty
0. Whoops\Handler\PrettyPageHandler