/** * @param $class */ public function autoload($class) { $directories = [APP_PATH . '/controllers', APP_PATH . '/models']; if (isset($this->action->controllerDir) && strlen($this->action->controllerDir)) { $controllerDirPath = APP_PATH . "/controllers/{$this->action->controllerDir}"; array_unshift($directories, $controllerDirPath); } $configDirectories = Config::get('autoload.directories'); if (is_array($configDirectories)) { $directories = array_merge($directories, $configDirectories); } if (is_array($configDirectories)) { foreach ($configDirectories as $key => $val) { $configDirectories[$key] = APP_PATH . "/{$val}/"; } $directories = array_merge($directories, $configDirectories); } $subdomain = Request::subdomain(); if ($subdomain !== null) { $subdomainDirectories = [APP_PATH . "/subdomains/{$subdomain}/controllers", APP_PATH . "/subdomains/{$subdomain}/models"]; if (isset($this->action->controllerDir) && strlen($this->action->controllerDir)) { array_unshift($subdomainDirectories, APP_PATH . "/subdomains/{$subdomain}/controllers/{$this->action->controllerDir}"); } $configSubdomainDirectories = Config::get('autoload.subdomainDirectories'); if (is_array($configSubdomainDirectories)) { foreach ($configSubdomainDirectories as $key => $val) { $configSubdomainDirectories[$key] = "/subdomains/{$subdomain}/{$val}/"; } $subdomainDirectories = array_merge($subdomainDirectories, $configSubdomainDirectories); } $directories = array_merge($subdomainDirectories, $directories); } $found = false; foreach ($directories as $dir) { $path = "{$dir}/{$class}.php"; if (is_file($path)) { $found = true; require_once $path; break; } } if ($found === false) { EventHandler::triggerEvent('whirlpool-class-not-found', $class); } }