( ! ) Fatal error: Class 'eHungry\classes\Util\BitmaskSet' not found in /home/deploy/EHungry-2-joel/Web/classes/Bitmasks/OrderTemplatePlatforms.php on line 4
Call Stack
#TimeMemoryFunctionLocation
10.0001400264{main}( ).../index.php:0
20.02047281144require( '/home/deploy/EHungry-2-joel/Web/controllers/customer.php' ).../index.php:30
30.03668414248spl_autoload_call ( ).../customer.php:618
40.03668414328Composer\Autoload\ClassLoader->loadClass( ).../customer.php:618
50.03668414328Composer\Autoload\includeFile( ).../ClassLoader.php:428
60.03678415312include( '/home/deploy/EHungry-2-joel/Web/classes/Bitmasks/OrderTemplatePlatforms.php' ).../ClassLoader.php:571
Whoops! There was an error.
Whoops \ Exception \ ErrorException (E_ERROR)
Class 'eHungry\classes\Util\BitmaskSet' not found Whoops\Exception\ErrorException thrown with message "Class 'eHungry\classes\Util\BitmaskSet' not found" Stacktrace: #6 Whoops\Exception\ErrorException in /home/deploy/EHungry-2-joel/Web/classes/Bitmasks/OrderTemplatePlatforms.php:4 #5 in /home/deploy/EHungry-2-joel/PHP/vendor/composer/ClassLoader.php:571 #4 Composer\Autoload\includeFile in /home/deploy/EHungry-2-joel/PHP/vendor/composer/ClassLoader.php:428 #3 Composer\Autoload\ClassLoader:loadClass in /home/deploy/EHungry-2-joel/Web/controllers/customer.php:618 #2 spl_autoload_call in /home/deploy/EHungry-2-joel/Web/controllers/customer.php:618 #1 in /home/deploy/EHungry-2-joel/Web/index.php:30 #0 {main} in /home/deploy/EHungry-2-joel/Web/index.php:0
Stack frames (7)
6
Whoops
\
Exception
\
ErrorException
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
classes
/
Bitmasks
/
OrderTemplatePlatforms.php
4
5
/
vendor
/
composer
/
ClassLoader.php
571
4
Composer
\
Autoload
\
includeFile
/
vendor
/
composer
/
ClassLoader.php
428
3
Composer
\
Autoload
\
ClassLoader
loadClass
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
controllers
/
customer.php
618
2
spl_autoload_call
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
controllers
/
customer.php
618
1
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
index.php
30
0
{main}
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
index.php
0
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
classes
/
Bitmasks
/
OrderTemplatePlatforms.php
<?php
namespace eHungry\classes\Bitmasks;
 
class OrderTemplatePlatforms extends \eHungry\classes\Util\BitmaskSet {
    const DOT = 1; // Direct Order Template; everything except springroll
    const MOT = 2; // Marketplace Order Template; springroll
 
    public static function normalizeBitName(int $value, string $name): string {
        switch ($value) {
            case self::DOT:
                $out = 'DOT - Direct Order Template';
                break;
            case self::MOT:
                $out = 'MOT - Springroll';
                break;
            default:
                $out = parent::normalizeBitName($value, $name);
        }
 
        return $out;
    }
 
    public static function currentOrderingPlatform(bool $isSpringRoll): int {
        return ($isSpringRoll? self::MOT : self::DOT);
    }
}
 
Arguments
  1. "Class 'eHungry\classes\Util\BitmaskSet' not found"
    
/
home
/
deploy
/
EHungry-2-joel
/
PHP
/
vendor
/
composer
/
ClassLoader.php
        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
            return $file;
        }
 
        return false;
    }
}
 
/**
 * Scope isolated include.
 *
 * Prevents access to $this/self from included files.
 *
 * @param  string $file
 * @return void
 * @private
 */
function includeFile($file)
{
    include $file;
}
 
/
home
/
deploy
/
EHungry-2-joel
/
PHP
/
vendor
/
composer
/
ClassLoader.php
     */
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));
 
        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }
 
    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            includeFile($file);
 
            return true;
        }
 
        return null;
    }
 
    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
controllers
/
customer.php
    }
}
 
if (isset($_SESSION['_CORDOVA_APP']) && $_SESSION['_CORDOVA_APP'] && strstr($account->getEnabledModules(), (string)APP_MODULE)) {
    $_REQUEST['_CORDOVA_APP'] = true;
}
 
$template_id = isset($_REQUEST['_CORDOVA_APP']) && $_REQUEST['_CORDOVA_APP']? Template::DEFAULT_ID : ($account->template_id?: Template::DEFAULT_ID);
$template = new Template($template_id);
$version = $template->version ?: 3;
if (!apache_note('AppVersion')) {
    apache_note('AppVersion', $version);
}
 
$templateName = $template->getFolderName();
$_REQUEST['_VERSION'] = $version;
$showCart = false;
 
$_REQUEST['_TEMPLATE_SETTINGS'] = TemplateAccountSetting::getAllForAccountAndTemplate($account->getId(), $template->getId());
$currentOrderingPlatform = OrderTemplatePlatforms::currentOrderingPlatform(isSpringroll());
$activePromotion = $account->activePromotions($currentOrderingPlatform)->first();
if ($activePromotion && $activePromotion->url_tag && $_REQUEST["form"] == $activePromotion->url_tag) {
    $_REQUEST["form"] = "promotion";
}
 
$status = isValidPage($_REQUEST["form"]);
 
//v4 pages that can can be accessed without logging in
if ($_REQUEST['_VERSION'] == 4) {
    define('IS_EDIT', isset($_SESSION['edit_order_id']) && is_numeric($_SESSION['edit_order_id']));
 
    switch ($_REQUEST['form']) {
        case 'checkout':
        case 'mycoupons':
        case 'orderconfirmation':
        case 'validatecallback':
        case 'redirect':
        case 'mercurycomplete':
        case 'paypalcomplete':
            $status = 1;
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
controllers
/
customer.php
    }
}
 
if (isset($_SESSION['_CORDOVA_APP']) && $_SESSION['_CORDOVA_APP'] && strstr($account->getEnabledModules(), (string)APP_MODULE)) {
    $_REQUEST['_CORDOVA_APP'] = true;
}
 
$template_id = isset($_REQUEST['_CORDOVA_APP']) && $_REQUEST['_CORDOVA_APP']? Template::DEFAULT_ID : ($account->template_id?: Template::DEFAULT_ID);
$template = new Template($template_id);
$version = $template->version ?: 3;
if (!apache_note('AppVersion')) {
    apache_note('AppVersion', $version);
}
 
$templateName = $template->getFolderName();
$_REQUEST['_VERSION'] = $version;
$showCart = false;
 
$_REQUEST['_TEMPLATE_SETTINGS'] = TemplateAccountSetting::getAllForAccountAndTemplate($account->getId(), $template->getId());
$currentOrderingPlatform = OrderTemplatePlatforms::currentOrderingPlatform(isSpringroll());
$activePromotion = $account->activePromotions($currentOrderingPlatform)->first();
if ($activePromotion && $activePromotion->url_tag && $_REQUEST["form"] == $activePromotion->url_tag) {
    $_REQUEST["form"] = "promotion";
}
 
$status = isValidPage($_REQUEST["form"]);
 
//v4 pages that can can be accessed without logging in
if ($_REQUEST['_VERSION'] == 4) {
    define('IS_EDIT', isset($_SESSION['edit_order_id']) && is_numeric($_SESSION['edit_order_id']));
 
    switch ($_REQUEST['form']) {
        case 'checkout':
        case 'mycoupons':
        case 'orderconfirmation':
        case 'validatecallback':
        case 'redirect':
        case 'mercurycomplete':
        case 'paypalcomplete':
            $status = 1;
/
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");
 
/
home
/
deploy
/
EHungry-2-joel
/
Web
/
index.php
<? /** @noinspection PhpIncludeInspection - to avoid marking dynamic includes */
 
//TODO create a «root»/_bootstrap.php which can be used by .psysh.php, tests/bootstrap.php and Web/index.php
require(dirname(__DIR__).'/PHP/base_consts.php');
require(dirname(__DIR__).'/PHP/autoloader.php');
initializeAutoLoader();
 
//disabled for now since we already have our own Alerts infrastructure, and it's not worth it to append another cloud provider to the startup of every freaking request; it's also not possible to catch errors this early if we depend on database checks, but we'll leave it here in case we change our mind?
//ErrorHandlers::sentryInit(); //early catch of errors and failsafe for smaller controllers, not in Sentry
 
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");
 

Environment & details:

Key Value
aid
"restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
empty
empty
Key Value
PHPSESSID
"99308voh3cekm1nkifll6j9aj9"
Key Value
loc
"en_US"
customer_account_id
100028
cart
Cart {}
restaurant_id
13263
menu_id
16126
Key Value
UNIQUE_ID
"aWWcxpMVi3L2QRJaBUrfKAAAAAQ"
SCRIPT_URL
"/restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
SCRIPT_URI
"http://www.springroll.com.2.joel.ehungry.net/restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
HTTP_HOST
"www.springroll.com.2.joel.ehungry.net"
HTTP_X_REAL_IP
"216.73.216.9"
HTTP_X_CONFKEY
"Main_Domain:14844"
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_COOKIE
"PHPSESSID=99308voh3cekm1nkifll6j9aj9"
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
"www.springroll.com.2.joel.ehungry.net"
SERVER_ADDR
"127.0.0.1"
SERVER_PORT
"80"
REMOTE_ADDR
"216.73.216.9"
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
"55418"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.0"
REQUEST_METHOD
"GET"
QUERY_STRING
"aid=restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
REQUEST_URI
"/restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
SCRIPT_NAME
"/restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
PHP_SELF
"/restaurant/bamboohouseny/order/main-menu/appetizers/fried-vegetable-spring-roll"
REQUEST_TIME_FLOAT
1768266950.709
REQUEST_TIME
1768266950
empty
0. Whoops\Handler\PrettyPageHandler