mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
MDL-73532 navigation: Modify methods that extend the setting nav
Introduces some changes to the exising _extend_settings_navigation() methods that utilize the global $PAGE object. In order to accomodate the changes done for the secondary navigation for single activity courses, the methods that extend the settings navigation can no longer rely on the $PAGE object, instead the more reliabe way to obtain this infomation is through the get_page() method from settings_navigation class.
This commit is contained in:
parent
bf27303955
commit
4a9c83ac9e
19 changed files with 132 additions and 145 deletions
|
@ -5473,29 +5473,29 @@ function forum_get_extra_capabilities() {
|
|||
* @param navigation_node $forumnode The node to add module settings to
|
||||
*/
|
||||
function forum_extend_settings_navigation(settings_navigation $settingsnav, navigation_node $forumnode) {
|
||||
global $USER, $PAGE, $CFG, $DB, $OUTPUT;
|
||||
global $USER, $CFG;
|
||||
|
||||
if (empty($PAGE->cm->context)) {
|
||||
$PAGE->cm->context = context_module::instance($PAGE->cm->instance);
|
||||
if (empty($settingsnav->get_page()->cm->context)) {
|
||||
$settingsnav->get_page()->cm->context = context_module::instance($settingsnav->get_page()->cm->instance);
|
||||
}
|
||||
|
||||
$vaultfactory = mod_forum\local\container::get_vault_factory();
|
||||
$managerfactory = mod_forum\local\container::get_manager_factory();
|
||||
$legacydatamapperfactory = mod_forum\local\container::get_legacy_data_mapper_factory();
|
||||
$forumvault = $vaultfactory->get_forum_vault();
|
||||
$forumentity = $forumvault->get_from_id($PAGE->cm->instance);
|
||||
$forumentity = $forumvault->get_from_id($settingsnav->get_page()->cm->instance);
|
||||
$forumobject = $legacydatamapperfactory->get_forum_data_mapper()->to_legacy_object($forumentity);
|
||||
|
||||
$params = $PAGE->url->params();
|
||||
$params = $settingsnav->get_page()->url->params();
|
||||
if (!empty($params['d'])) {
|
||||
$discussionid = $params['d'];
|
||||
}
|
||||
|
||||
// For some actions you need to be enrolled, being admin is not enough sometimes here.
|
||||
$enrolled = is_enrolled($PAGE->cm->context, $USER, '', false);
|
||||
$activeenrolled = is_enrolled($PAGE->cm->context, $USER, '', true);
|
||||
$enrolled = is_enrolled($settingsnav->get_page()->context, $USER, '', false);
|
||||
$activeenrolled = is_enrolled($settingsnav->get_page()->context, $USER, '', true);
|
||||
|
||||
$canmanage = has_capability('mod/forum:managesubscriptions', $PAGE->cm->context);
|
||||
$canmanage = has_capability('mod/forum:managesubscriptions', $settingsnav->get_page()->context);
|
||||
$subscriptionmode = \mod_forum\subscriptions::get_subscription_mode($forumobject);
|
||||
$cansubscribe = $activeenrolled && !\mod_forum\subscriptions::is_forcesubscribed($forumobject) &&
|
||||
(!\mod_forum\subscriptions::subscription_disabled($forumobject) || $canmanage);
|
||||
|
@ -5598,7 +5598,7 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi
|
|||
}
|
||||
}
|
||||
|
||||
if (has_capability('mod/forum:viewsubscribers', $PAGE->cm->context)) {
|
||||
if (has_capability('mod/forum:viewsubscribers', $settingsnav->get_page()->context)) {
|
||||
$url = new moodle_url('/mod/forum/subscribers.php', ['id' => $forumobject->id, 'edit' => 'off']);
|
||||
$forumnode->add(get_string('subscriptions', 'forum'), $url, navigation_node::TYPE_SETTING, null, 'forumsubscriptions');
|
||||
}
|
||||
|
@ -5608,7 +5608,7 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi
|
|||
$reportnames = array_keys(core_component::get_plugin_list('forumreport'));
|
||||
|
||||
foreach ($reportnames as $reportname) {
|
||||
if (has_capability("forumreport/{$reportname}:view", $PAGE->cm->context)) {
|
||||
if (has_capability("forumreport/{$reportname}:view", $settingsnav->get_page()->context)) {
|
||||
$reportlinkparams = [
|
||||
'courseid' => $forumobject->course,
|
||||
'forumid' => $forumobject->id,
|
||||
|
@ -5635,13 +5635,14 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi
|
|||
}
|
||||
}
|
||||
|
||||
if (!isloggedin() && $PAGE->course->id == SITEID) {
|
||||
if (!isloggedin() && $settingsnav->get_page()->course->id == SITEID) {
|
||||
$userid = guest_user()->id;
|
||||
} else {
|
||||
$userid = $USER->id;
|
||||
}
|
||||
|
||||
$hascourseaccess = ($PAGE->course->id == SITEID) || can_access_course($PAGE->course, $userid);
|
||||
$hascourseaccess = ($settingsnav->get_page()->course->id == SITEID) ||
|
||||
can_access_course($settingsnav->get_page()->course, $userid);
|
||||
$enablerssfeeds = !empty($CFG->enablerssfeeds) && !empty($CFG->forum_enablerssfeeds);
|
||||
|
||||
if ($enablerssfeeds && $forumobject->rsstype && $forumobject->rssarticles && $hascourseaccess) {
|
||||
|
@ -5656,7 +5657,8 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi
|
|||
$string = get_string('rsssubscriberssposts','forum');
|
||||
}
|
||||
|
||||
$url = new moodle_url(rss_get_url($PAGE->cm->context->id, $userid, "mod_forum", $forumobject->id));
|
||||
$url = new moodle_url(rss_get_url($settingsnav->get_page()->cm->context->id, $userid, "mod_forum",
|
||||
$forumobject->id));
|
||||
$forumnode->add($string, $url, settings_navigation::TYPE_SETTING, null, null, new pix_icon('i/rss', ''));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue