Skip to content
THIS IS DEV LEVEL 2
Joel's Test Cafe! 1304 Broad St Camden, SC 29020
 

Coupons

Whoops! There was an error.
Error
Call to undefined function eHungry\Services\isSsoDomain() Error thrown with message "Call to undefined function eHungry\Services\isSsoDomain()" Stacktrace: #13 Error in /home/deploy/EHungry-2-joel/Web/Services/Account.php:10 #12 eHungry\Services\Account:getAccountIdString in /home/deploy/EHungry-2-joel/Web/accountsettings/components.php:7 #11 AccountSettings\getUrl in /home/deploy/EHungry-2-joel/Web/accountsettings/coupons.php:324 #10 AccountSettings\CouponRoutes:couponItem in /home/deploy/EHungry-2-joel/Web/templates4.0/customer/coupons_block.php:24 #9 {closure} in /home/deploy/EHungry-2-joel/Web/eds/utils.php:71 #8 EDS\{closure} in [internal]:0 #7 array_map in /home/deploy/EHungry-2-joel/Web/eds/utils.php:72 #6 EDS\stringify_children in /home/deploy/EHungry-2-joel/Web/eds/components/collection.php:57 #5 EDS\Collection in /home/deploy/EHungry-2-joel/Web/templates4.0/customer/coupons_block.php:31 #4 include in /home/deploy/EHungry-2-joel/Web/templates4.0/customer/coupons.php:5 #3 include in /home/deploy/EHungry-2-joel/Web/view4.0/customer/category.php:5 #2 include in /home/deploy/EHungry-2-joel/Web/view4.0/customer/ordering3.php:14 #1 include_once in /home/deploy/EHungry-2-joel/Web/controllers/customer.php:884 #0 require in /home/deploy/EHungry-2-joel/Web/index.php:30
Stack frames (14)
13
Error
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
Services
/
Account.php
10
12
eHungry
\
Services
\
Account
getAccountIdString
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
accountsettings
/
components.php
7
11
AccountSettings
\
getUrl
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
accountsettings
/
coupons.php
324
10
AccountSettings
\
CouponRoutes
couponItem
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
templates4.0
/
customer
/
coupons_block.php
24
9
{closure}
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
eds
/
utils.php
71
8
EDS
\
{closure}
[internal]
0
7
array_map
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
eds
/
utils.php
72
6
EDS
\
stringify_children
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
eds
/
components
/
collection.php
57
5
EDS
\
Collection
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
templates4.0
/
customer
/
coupons_block.php
31
4
include
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
templates4.0
/
customer
/
coupons.php
5
3
include
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
view4.0
/
customer
/
category.php
5
2
include
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
view4.0
/
customer
/
ordering3.php
14
1
include_once
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
controllers
/
customer.php
884
0
require
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
index.php
30
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
Services
/
Account.php
<?
namespace eHungry\Services;
 
class Account {
    // Account ID string (e.g. `classicpizza`)
    private static $account_id_string = null;
 
    public static function getAccountIdString() {
        if (static::$account_id_string === null) {
            if (isSpringroll() || isPaymentDomain() || isSsoDomain()) {
                static::$account_id_string = '';
            } else {
                static::$account_id_string = head(array_filter(explode('/', $_SERVER['REQUEST_URI'])));
                if (!TEST_ENV) {
                    $custom_domain = \CustomDomain::getForDomain(HN_Current);
                    if ($custom_domain) {
                        $account = new \Account($custom_domain->account_id);
                        if ($account->hasPermission(WHITELABEL)) {
                            static::$account_id_string = $account->url_tag;
                        }
                    }
                }
            }
        }
 
        return static::$account_id_string;
    }
 
    // Account ID (e.g. `1234`)
    private static $account_id = null;
 
    public static function getAccountId($null_if_springroll = true) {
        if ($null_if_springroll && isSpringroll()) {
            return null;
        }
 
        $account_id_session_key = false;
        foreach (['customer_account_id', 'manager_account_id', 'account_id'] as $key) {
            if (isset($_SESSION[$key])) {
                $account_id_session_key = $key;
Arguments
  1. "Call to undefined function eHungry\Services\isSsoDomain()"
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
accountsettings
/
components.php
<?
namespace AccountSettings;
 
use eHungry\Bitmasks\OrderTemplatePlatforms;
 
function getUrl(string $url) {
    $account_id_string = \eHungry\Services\Account::getAccountIdString();
    return $account_id_string ? "/$account_id_string$url" : $url;
}
 
class Constants {
    public const BOX_STYLE = '
        border-radius: 0.75rem;
        border: 1px solid rgba(152, 141, 120, 0.55);
        background-color: white;
        box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.10);
    ';
}
 
// Page
function Page($attrs = [], $children = []) {
    $account = \eHungry\Services\Account::getAccount();
    $customer = \eHungry\Services\Auth::getCustomer();
    $loyaltyProgram = $account ? \eHungry\Loyalty\Program::getActiveForAccount($account->id) : null;
 
    $props = \EDS\defaults($attrs, ['class' => '', 'pending_orders' => null]);
    if (!$props['pending_orders']) {
        $props['pending_orders'] = \CustomerOrder::getPendingOrders($customer->id, $account ? $account->id : null) ?: [];
    }
    $number_of_pending_orders = count($props['pending_orders']);
    $pending_orders_text = $number_of_pending_orders . ' pending ' . ($number_of_pending_orders === 1 ? 'order' : 'orders');
 
    $pages = array_filter([
        // Profile info
        !$customer->isGuest()
            ? ['href' => getUrl('/account-settings/profile-info'), 'icon' => 'user', 'title' => 'Profile info']
            : null,
        // Orders
        [
            'href' => getUrl('/account-settings/orders'),
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
accountsettings
/
coupons.php
        $description = $coupon->brief_coupon_description ?: $coupon->description;
        $applied = $cart->getCoupon() && $cart->getCoupon()->id === $coupon->id;
        $GLOBALS['restaurant'] = $restaurant; // NOTE: Needed for `couponErrors`
        $errors = $applied ? $cart->couponErrors() : null;
 
        return \EDS\Coupon::coupon(
            \EDS\merge_attrs([
                'id' => "coupon-{$coupon->id}",
                'class' => 'h-100',
                'variant' => $errors ? 'warning' : ($applied ? 'success' : null),
                'header' => [
                    $name,
                    \EDS\Button([
                        'class' => 'float-end',
                        'variant' => 'outline-secondary',
                        'data-async-on-click' => true,
                        'data-async-before' => "$('[data-custom-popover]').popover('hide')",
                        'data-async-method' => 'post',
                        'data-async-action' => getUrl(
                            "/account-settings/coupons/$coupon->id" . ($applied ? '/remove?' : '/apply?') . http_build_query(array_merge(\EDS\pick($_REQUEST, ['form']), $attrs))
                        ),
                        'data-async-target' => '#coupons',
                        // Reloading the cart on pages where it doesn't exist causes the cart object to be recreated, leading to obscure bugs
                        'data-async-then' => in_array($_REQUEST['form'], ['home', 'mycoupons']) ? 'initPopovers()' : 'reloadCart({ data: { coupons: true } })',
                        'data-async-swap' => 'none',
                        'data-async-recaptcha' => !$customer,
                    ], $applied ? 'Remove' : 'Apply'),
                ],
                'footer' => $errors
                    ? '<div class="d-flex gap-2 justify-content-between">'
                        .
                        'Applied with restrictions'
                        .
                        \EDS\Coupon::showRestrictionsButton(['class' => 'text-white'], 'Show restrictions', $coupon, $errors)
                        .
                    '</div>'
                    : ($applied
                        ? (($discount = $cart->calculateCouponTotal()) > 0
                            ? 'Applied a discount of ' . intToMoneyString($discount)
                            : 'Applied'
Arguments
  1. "/account-settings/coupons/96923/apply?form=ordering3"
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
templates4.0
/
customer
/
coupons_block.php
<?=\EDS\Coupon::popoverTemplate()?>
 
<?=\EDS\Collection(
    [
        'title' => $_REQUEST['form'] === 'mycoupons'
            ? '<h1 class="eds-display-text-title-l mb-0">Coupon Box</h1><p class="mb-0">If there are any public coupons or specials for which you are eligible, they are shown in your coupon box.</p>'
            : '<h3 class="eds-display-text-title-m mb-0">Coupons</h3>',
        'gradient_color' => 'var(--bs-light)',
        'scroll_step' => "$(this).find('.coupon-item').width() + 12",
        'show_controls' => count($coupons) > 1,
        'breakout' => '0.75rem',
    ],
    function () use ($cart, $coupons, $customer, $restaurant) {
        ob_start();
        ?>
 
        <div class="d-flex gap-2p5">
            <? foreach ($coupons as $coupon) { ?>
                <div class="coupon-item" style="width: 80vw; max-width: 20rem">
                    <?=AccountSettings\CouponRoutes::couponItem([], $coupon, $cart, $customer, $restaurant)?>
                </div>
            <? } ?>
        </div>
 
        <?
        return ob_get_clean();
    }
)?>
 
Arguments
  1. []
    
  2. Coupon {}
    
  3. Cart {}
    
  4. null
    
  5. Restaurant {}
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
eds
/
utils.php
function stringify_attrs($attrs = []) {
    $stringified_attrs = '';
 
    foreach ($attrs as $key => $value) {
        if (is_bool($value)) {
            if ($value === true) {
                $stringified_attrs .= ' ' . $key;
            }
        } else if (!is_null($value)) {
            $stringified_value = $key === 'class' ? classes($value) : $value;
            $stringified_attrs .= ' ' . $key . '="' . htmlentities($stringified_value) . '"';
        }
    }
 
    return trim($stringified_attrs);
}
 
function stringify_children($children = []) {
    return trim(join(' ', array_map(function ($child) {
        return is_callable($child) && !is_string($child) ? $child() : $child;
    }, is_array($children) ? $children : [$children])));
}
 
function to_event_objects($events) {
    $event_objects = [];
    foreach ($events as $declaration => $handler) {
        $parts = explode(':', $declaration);
        $name = reset($parts);
        $modifiers = array_slice($parts, 1); // Inspired by https://vuejs.org/guide/essentials/event-handling
 
        // Handlers
        $handler_lines = array_filter([
            'event.stopPropagation()' => in_array('stop', $modifiers),
            'event.preventDefault()' => in_array('prevent', $modifiers),
            $handler,
        ]);
 
        // Options
        $options = array_filter([
            'once' => in_array('once', $modifiers),
[internal]
Arguments
  1. Closure {
      use: {
        $cart: Cart { …}
        $coupons: array:3 [
          0 => Coupon {}
          1 => Coupon {}
          2 => Coupon {}
        ]
        $customer: null
        $restaurant: Restaurant { …}
      }
    }
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
eds
/
utils.php
    $stringified_attrs = '';
 
    foreach ($attrs as $key => $value) {
        if (is_bool($value)) {
            if ($value === true) {
                $stringified_attrs .= ' ' . $key;
            }
        } else if (!is_null($value)) {
            $stringified_value = $key === 'class' ? classes($value) : $value;
            $stringified_attrs .= ' ' . $key . '="' . htmlentities($stringified_value) . '"';
        }
    }
 
    return trim($stringified_attrs);
}
 
function stringify_children($children = []) {
    return trim(join(' ', array_map(function ($child) {
        return is_callable($child) && !is_string($child) ? $child() : $child;
    }, is_array($children) ? $children : [$children])));
}
 
function to_event_objects($events) {
    $event_objects = [];
    foreach ($events as $declaration => $handler) {
        $parts = explode(':', $declaration);
        $name = reset($parts);
        $modifiers = array_slice($parts, 1); // Inspired by https://vuejs.org/guide/essentials/event-handling
 
        // Handlers
        $handler_lines = array_filter([
            'event.stopPropagation()' => in_array('stop', $modifiers),
            'event.preventDefault()' => in_array('prevent', $modifiers),
            $handler,
        ]);
 
        // Options
        $options = array_filter([
            'once' => in_array('once', $modifiers),
            'passive' => in_array('passive', $modifiers),
Arguments
  1. Closure {
      parameters: {
        $child: {}
      }
    }
    
  2. array:1 [
      0 => Closure {
        use: {
          $cart: Cart { …}
          $coupons: array:3 [
            0 => Coupon {}
            1 => Coupon {}
            2 => Coupon {}
          ]
          $customer: null
          $restaurant: Restaurant { …}
        }
      }
    ]
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
eds
/
components
/
collection.php
                    ['style' => 'padding-top: 2px; padding-right: 2px', 'variant' => 'outline-secondary', 'size' => 'small', 'shape' => 'circle', 'onclick' => "app.event.emit('scroll_to_previous_$id')", 'aria-label' => 'Scroll left'],
                    \EDS\Icon(['icon' => 'chevron-left'])
                )?>
                <?=\EDS\Button(
                    ['style' => 'padding-top: 2px; padding-left: 2px', 'variant' => 'outline-secondary', 'size' => 'small', 'shape' => 'circle', 'onclick' => "app.event.emit('scroll_to_next_$id')", 'aria-label' => 'Scroll right'],
                    \EDS\Icon(['icon' => 'chevron-right'])
                )?>
            <? } ?>
        </div>
 
        <div class="position-relative">
            <div
                class="css-scroll-hidden overflow-auto d-flex gap-3 py-2 <?=$props['padding']?>"
                style="<?=$props['breakout'] != null ? "max-width: 100vw; padding: 0 {$props['breakout']}" : 'max-width: calc(100vw - 2rem)'?>; scroll-behavior: smooth"
                data-event-on:scroll_to_previous_<?=$id?>="this.scrollLeft = (Math.ceil(this.scrollLeft / <?=$scroll_width?>) - 1) * <?=$scroll_width?>"
                data-event-on:scroll_to_next_<?=$id?>="this.scrollLeft = (Math.floor(this.scrollLeft / <?=$scroll_width?>) + 1) * <?=$scroll_width?>"
                data-event-on:document_ready="app.event.emit('scroll_<?=$id?>', this.scrollLeft / (this.scrollWidth - this.clientWidth))"
                onscroll="app.event.emit('scroll_<?=$id?>', this.scrollLeft / (this.scrollWidth - this.clientWidth))"
            >
                <?=\EDS\stringify_children($children)?>
            </div>
 
            <div
                class="eds_collection-fade position-absolute top-0 bottom-0 start-0 "
                style="background: linear-gradient(to right, <?=$props['gradient_color']?>, transparent);"
                data-event-on:scroll_<?=$id?>="(scrollRatio) => this.style.opacity = 10 * scrollRatio"
            ></div>
 
            <div
                class="eds_collection-fade position-absolute top-0 bottom-0 end-0"
                style="background: linear-gradient(to left, <?=$props['gradient_color']?>, transparent);"
                data-event-on:scroll_<?=$id?>="(scrollRatio) => this.style.opacity = 10 * (1 - scrollRatio)"
            ></div>
        </div>
    </div>
 
    <?
    return ob_get_clean();
}
 
Arguments
  1. Closure {
      use: {
        $cart: Cart { …}
        $coupons: array:3 [
          0 => Coupon {}
          1 => Coupon {}
          2 => Coupon {}
        ]
        $customer: null
        $restaurant: Restaurant { …}
      }
    }
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
templates4.0
/
customer
/
coupons_block.php
        'gradient_color' => 'var(--bs-light)',
        'scroll_step' => "$(this).find('.coupon-item').width() + 12",
        'show_controls' => count($coupons) > 1,
        'breakout' => '0.75rem',
    ],
    function () use ($cart, $coupons, $customer, $restaurant) {
        ob_start();
        ?>
 
        <div class="d-flex gap-2p5">
            <? foreach ($coupons as $coupon) { ?>
                <div class="coupon-item" style="width: 80vw; max-width: 20rem">
                    <?=AccountSettings\CouponRoutes::couponItem([], $coupon, $cart, $customer, $restaurant)?>
                </div>
            <? } ?>
        </div>
 
        <?
        return ob_get_clean();
    }
)?>
 
Arguments
  1. array:5 [
      "title" => "<h3 class="eds-display-text-title-m mb-0">Coupons</h3>"
      "gradient_color" => "var(--bs-light)"
      "scroll_step" => "$(this).find('.coupon-item').width() + 12"
      "show_controls" => true
      "breakout" => "0.75rem"
    ]
    
  2. Closure {
      use: {
        $cart: Cart { …}
        $coupons: array:3 [
          0 => Coupon {}
          1 => Coupon {}
          2 => Coupon {}
        ]
        $customer: null
        $restaurant: Restaurant { …}
      }
    }
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
templates4.0
/
customer
/
coupons.php
<?php
//if coupon box not hidden
if ($_REQUEST['form'] == 'mycoupons' || (!is_object($_REQUEST['_TEMPLATE_SETTINGS']['hide_coupons_box']) || !$_REQUEST['_TEMPLATE_SETTINGS']['hide_coupons_box']->getValue())) {
    if ($coupons || $_REQUEST['form'] == 'mycoupons') { ?>
        <? include(CORE_PATH. 'templates4.0/customer/coupons_block.php'); ?>
    <? }
}
 
Arguments
  1. "/home/deploy/EHungry-2-joel/Web/templates4.0/customer/coupons_block.php"
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
view4.0
/
customer
/
category.php
<main class="main_content menucategory_page pb-5" id="main">
    <div class="container">
        <? if (count($coupons) > 0) { ?>
            <section class="mb-3 pb-lg-3 mt-1 pt-3">
                <? include(CORE_PATH. 'templates4.0/customer/coupons.php'); ?>
            </section>
        <? } ?>
 
        <div class="row menu_wrapper menu_category_wrapper <?=count($menus) > 1 ? '' : 'menu_wrapper--no-menu-tabs'?>">
            <section class="col-xl-4 d-none d-xl-block">
                <?
                /*
                //this code block is for [ch24116] when functionality ready to be added
                <div class="category_box filter_category_box">
                    <div class="input-group">
                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
                        <input type="text" id="cart-custom-tip" class="form-control input-cart-custom-tip" name="custom_tip" placeholder="Search the menu...">
                    </div>
                    <div class="filters">
                        <div class="filter-header collapsed" data-toggle="collapse" href="#filterContents" role="button" aria-expanded="false" aria-controls="filterContents">
                            <span><i class="fa fa-filter filter-icon"></i> Additional filters</span><i class="fal fa-plus filter-toggle fa-lg"></i>
                        </div>
                        <div class="filter-content collapse" id="filterContents">
                            <div class="list-group" role="tablist">
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="all" checked /> <label for="all" class="css-label">All</label></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="new" checked /> <label for="new" class="css-label">New</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-new.svg" alt="New" checked /></span></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="favorite" checked /> <label for="favorite" class="css-label">Favorite</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-favorite.svg" alt="Favorite" checked /></span></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="vegatarian" checked /> <label for="vegetarian" class="css-label">Vegetarian</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-vegetarian.svg" alt="Vegetarian" checked /></span></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="spicy" checked /> <label for="spicy" class="css-label">Spicy</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-hot.svg" alt="Spicy" checked /></span></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="healthy" checked /> <label for="healthy" class="css-label">Healthy</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-healthy.svg" alt="Healthy" checked /></span></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="glutenfree" checked /> <label for="glutenfree" class="css-label">Gluten-free</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-glutenFree.svg" alt="Gluten-Free" checked /></span></a>
                                <a class="list-group-item list-group-item-action" href="#" role="button"><input type="checkbox" class="css-checkbox" id="raw" checked /> <label for="raw" class="css-label">Raw</label><span class="nos"><img src="/web/default4.0/images/icons/item-icon-raw.svg" alt="Raw" checked /></span></a>
                            </div>
                        </div>
                    </div>
                    <div class="collapse" id="collapseExample">
                        <div class="card card-body">
                            Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
                        </div>
                    </div>
Arguments
  1. "/home/deploy/EHungry-2-joel/Web/templates4.0/customer/coupons.php"
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
view4.0
/
customer
/
ordering3.php
<?
switch ($_REQUEST['ordering_level']) {
    case OrderingLevel::NONE:
        App::debugbarTime($timerLevel = 'ordering3: locationlist');
        include(CORE_PATH . 'templates4.0/customer/locationlist.php');
        break;
    case OrderingLevel::RESTAURANT:
    case OrderingLevel::MENU:
        App::debugbarTime($timerLevel = 'ordering3: menu');
        include(CORE_PATH . 'view4.0/customer/menu.php');
        break;
    case OrderingLevel::CATEGORY:
        App::debugbarTime($timerLevel = 'ordering3: category');
        include(CORE_PATH . 'view4.0/customer/category.php');
        break;
    case OrderingLevel::ITEM:
    case OrderingLevel::PRICE:
        App::debugbarTime($timerLevel = 'ordering3: menuitem');
        include(CORE_PATH . 'view4.0/customer/category.php');
        break;
}
 
if (isset($timerLevel)) {
    App::debugbarTime($timerLevel);
}
 
Arguments
  1. "/home/deploy/EHungry-2-joel/Web/view4.0/customer/category.php"
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
controllers
/
customer.php
if (!in_array($_REQUEST['form'], ['checkout', 'nosuchpage', 'validatecallback', 'viewdeliveryzone'])) {
    //TODO: probably need to add one more form here that is called ajax, callback seems to reset when it shouldnt
    unset($_SESSION['validation_data']);
}
 
$locs = $account->getActiveRestaurants('position');
$tab = MainNavigationTab::getAllForAccount($account->getId());
 
include_once(CORE_PATH.'lib/helpers/customer3.0.php');
 
if (!in_array($_REQUEST['form'], $viewContentOnly)) {
    App::debugbarTime('header');
    include_once(getLayoutPartPath('header'));
    App::debugbarTime('header');
}
 
App::debugbarTime("view '{$_REQUEST['form']}'");
$path = CORE_PATH.'view' . ($_REQUEST['_VERSION'] == 4 ? 4 : 3) . '.0/customer/'.$_REQUEST['form'].'.php';
if (is_readable($path)) {
    include_once($path);
}
App::debugbarTime("view '{$_REQUEST['form']}'");
 
if (!in_array($_REQUEST['form'], $viewContentOnly)) {
    App::debugbarTime('footer');
    include_once(getLayoutPartPath('footer'));
    App::debugbarTime('footer');
}
 
function getLayoutPartPath($part) {
    if (isset($_REQUEST['_CORDOVA_APP']) && $_REQUEST['_VERSION'] != 4) {
        $cart = Cart::getCurrent();
 
        //FIXME: it's technically possible to end up with $template = null
        if (!$_REQUEST['contentonly']) {
            $template = !isset($_REQUEST["altdoc"])? "app/$part" : "app/alt$part";
        }
    } else {
        $template = !isset($_REQUEST["altdoc"])? "customer/$part" : "customer/alt$part";
    }
Arguments
  1. "/home/deploy/EHungry-2-joel/Web/view4.0/customer/ordering3.php"
    
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
index.php
App::startTime();
 
ErrorHandlers::register();
 
// Global.php is the core setup file for the application
App::debugbarTime('Global.php');
require(dirname(__DIR__) . '/PHP/Global.php');
App::debugbarTime('Global.php');
/** @var string $controller The main controller - defined at /PHP/Global.php */
 
App::debugbarTime('Sentry - controller');
ErrorHandlers::sentryInit($controller); //doesn't always do much - not every controller has a Sentry project
App::debugbarTime('Sentry - controller');
 
App::debugbarTime("controller: $controller");
apache_note('AppController', $controller);
if (file_exists(CORE_PATH."lib/helpers/$controller.php")) {
    require CORE_PATH."lib/helpers/$controller.php";
}
require CORE_PATH."controllers/$controller.php";
App::debugbarTime("controller: $controller");
 
Arguments
  1. "/home/deploy/EHungry-2-joel/Web/controllers/customer.php"
    

Environment & details:

Key Value
aid
"order/breakfast/breakfast"
empty
empty
Key Value
PHPSESSID
"1e7vfoc4gfcm8bkinktci0gq4p"
Key Value
loc
"en_US"
customer_account_id
892
cart
Cart {}
restaurant_id
18757
status
array:2 [
  1 => []
  2 => array:1 [
    0 => "You must select a valid item."
  ]
]
menu_id
18795
app_banner_shown
true
eot
1781074958
Key Value
UNIQUE_ID
"aijTzuH1r3xrIVvqY_SplAAAAAc"
SCRIPT_URL
"/order/breakfast/breakfast"
SCRIPT_URI
"http://ehtest.zineer.com.2.joel.ehungry.net/order/breakfast/breakfast"
HTTP_HOST
"ehtest.zineer.com.2.joel.ehungry.net"
HTTP_X_REAL_IP
"216.73.217.165"
HTTP_X_CONFKEY
"Main_Domain:8993"
HTTP_SCHEME
"https"
HTTP_EHENV
"TODO"
HTTP_CONNECTION
"close"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
HTTP_ACCEPT_ENCODING
"gzip, br, zstd, deflate"
HTTP_REFERER
"https://ehtest.zineer.com.2.joel.ehungry.net/order/washington-dc/main/beef"
HTTP_COOKIE
"PHPSESSID=1e7vfoc4gfcm8bkinktci0gq4p"
PATH
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache/2.4.62 () mod_wsgi/4.6.5 Python/3.7 PHP/7.2.34"
SERVER_NAME
"ehtest.zineer.com.2.joel.ehungry.net"
SERVER_ADDR
"127.0.0.1"
SERVER_PORT
"80"
REMOTE_ADDR
"216.73.217.165"
DOCUMENT_ROOT
"/home/deploy/EHungry-2-joel/Web"
REQUEST_SCHEME
"http"
CONTEXT_PREFIX
""
CONTEXT_DOCUMENT_ROOT
"/home/deploy/EHungry-2-joel/Web"
SERVER_ADMIN
"root@localhost"
SCRIPT_FILENAME
"/home/deploy/EHungry-2-joel/Web/index.php"
REMOTE_PORT
"51700"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.0"
REQUEST_METHOD
"GET"
QUERY_STRING
"aid=joeltest"
REQUEST_URI
"/order/breakfast/breakfast"
SCRIPT_NAME
"/order/breakfast/breakfast"
PHP_SELF
"/order/breakfast/breakfast"
REQUEST_TIME_FLOAT
1781060558.033
REQUEST_TIME
1781060558
empty
0. Whoops\Handler\PrettyPageHandler