/** * Get the controller responsible for the request. * * @param String $src Project subfolder to look for controllers in. * @param Array $list List of controller names * @param Boolean $blacklist Whether to use the controller list as blacklist or whitelist * * @return String $controller Fully qualified name of the responsible controller. */ public function get_controller($src, $list = [], $blacklist = TRUE) { $name = $this->request->controller . 'controller'; if ($name == 'controller') { return ''; } if ($blacklist === TRUE && in_array($this->request->controller, $list)) { return ''; } elseif ($blacklist === FALSE && !in_array($this->request->controller, $list)) { return ''; } $matches = $this->fao->find_matches("/^.+\\/{$name}.php/i", $src); if (empty($matches) === TRUE) { return ''; } $search = ['.php', $src, '/']; $replace = ['', '', '\\']; return ltrim(str_replace($search, $replace, $matches[0]), '\\'); }