/** * Return a list of page types * @param string $pagetype current page type * @param stdClass $parentcontext Block's parent context * @param stdClass $currentcontext Current context of block */ function question_pagetypelist($pagetype, $parentcontext, $currentcontext) { global $CFG; $types = array( 'question-*'=>get_string('page-question-x', 'question'), 'question-edit'=>get_string('page-question-edit', 'question'), 'question-category'=>get_string('page-question-category', 'question'), 'question-export'=>get_string('page-question-export', 'question'), 'question-import'=>get_string('page-question-import', 'question') ); if ($currentcontext->contextlevel == CONTEXT_COURSE) { require_once($CFG->dirroot . '/course/lib.php'); return array_merge(course_pagetypelist($pagetype, $parentcontext, $currentcontext), $types); } else { return $types; } }
/** * Generates a page type list for plugins * * @param string $pagetype * @param stdClass $parentcontext * @param stdClass $currentcontext * @return array */ function plugin_pagetypelist($pagetype, $parentcontext = null, $currentcontext = null) { global $CFG; // for modules $bits = explode('-', $pagetype); $plugintype = $bits[0]; $pluginname = $bits[1]; $directory = get_plugin_directory($plugintype, $pluginname); if (empty($directory)) { return array(); } $libfile = $directory.'/lib.php'; require_once($libfile); $function = $pluginname.'_pagetypelist'; if (!function_exists($function)) { return array(); } $patterns = $function($pagetype, $parentcontext, $currentcontext); if ($parentcontext->contextlevel == CONTEXT_COURSE) { // including course page type require_once("$CFG->dirroot/course/lib.php"); $patterns = array_merge(course_pagetypelist($pagetype, $parentcontext, $currentcontext), $patterns); } return $patterns; }