/** * Given an action, find the controller and method responsible for * handling the action. * * In addition, send some extra variables to the controller * and initialize it. * * @param string $action * @return array */ public function resolve_controller_callback($action) { /** @var $controller \mod_hsuforum\controller\controller_abstract */ list($controller, $method) = $this->router->route_action($action); $controller->set_renderer($this->renderer); $controller->init($action); return array($controller, $method); }
require_once dirname(dirname(__DIR__)) . '/config.php'; require_once __DIR__ . '/lib.php'; require_once __DIR__ . '/classes/controller/kernel.php'; require_once __DIR__ . '/classes/controller/router.php'; require_once __DIR__ . '/classes/controller/export_controller.php'; require_once __DIR__ . '/classes/controller/posters_controller.php'; require_once __DIR__ . '/classes/controller/flag_controller.php'; require_once __DIR__ . '/classes/controller/posts_controller.php'; require_once __DIR__ . '/classes/controller/edit_controller.php'; global $PAGE, $DB; $contextid = required_param('contextid', PARAM_INT); $action = optional_param('action', 'view', PARAM_ALPHAEXT); list($context, $course, $cm) = get_context_info_array($contextid); if (empty($cm)) { throw new coding_exception("Failed to find course module record with contextid of {$contextid}"); } $instance = $DB->get_record('hsuforum', array('id' => $cm->instance), '*', MUST_EXIST); require_login($course, true, $cm); $PAGE->set_title("{$course->shortname}: {$instance->name}"); $PAGE->set_heading($course->fullname); $PAGE->set_activity_record($instance); $PAGE->set_context($context); $PAGE->set_url('/mod/hsuforum/route.php', array('contextid' => $context->id, 'action' => $action)); $router = new router(); $router->add_controller(new posters_controller()); $router->add_controller(new flag_controller()); $router->add_controller(new posts_controller()); $router->add_controller(new export_controller()); $router->add_controller(new edit_controller()); $kernel = new kernel($router); $kernel->handle($action);