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:
Mihail Geshoski 2022-01-19 16:06:46 +08:00
parent bf27303955
commit 4a9c83ac9e
19 changed files with 132 additions and 145 deletions

View file

@ -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', ''));
}