Skip to content

Commit

Permalink
Merge branch 'MDL-76220-400' of https://github.com/ferranrecio/moodle
Browse files Browse the repository at this point in the history
…into MOODLE_400_STABLE
  • Loading branch information
snake committed Nov 16, 2022
2 parents c70361b + bc794a8 commit f2b007e
Showing 1 changed file with 48 additions and 52 deletions.
100 changes: 48 additions & 52 deletions mod/wiki/lib.php
Expand Up @@ -473,80 +473,76 @@ function wiki_search_form($cm, $search = '', $subwiki = null) {
return $OUTPUT->render_from_template('core/search_input', $data);
}

function wiki_extend_navigation(navigation_node $navref, $course, $module, $cm) {
global $CFG, $PAGE, $USER;
/**
* Extends the global navigation tree by adding wiki nodes if there is a relevant content
*
* This can be called by an AJAX request so do not rely on $PAGE as it might not be set up properly.
*
* @param navigation_node $navref An object representing the navigation tree node of the workshop module instance
* @param stdClass $course the course object
* @param stdClass $instance the activity record object
* @param cm_info $cm the course module object
*/
function wiki_extend_navigation(navigation_node $navref, stdClass $course, stdClass $instance, cm_info $cm) {
global $CFG, $USER;

require_once($CFG->dirroot . '/mod/wiki/locallib.php');

$context = context_module::instance($cm->id);
$url = $PAGE->url;
$userid = 0;
if ($module->wikimode == 'individual') {
$userid = $USER->id;
}
$userid = ($instance->wikimode == 'individual') ? $USER->id : 0;
$gid = groups_get_activity_group($cm) ?: 0;

if (!$wiki = wiki_get_wiki($cm->instance)) {
return false;
}

if (!$gid = groups_get_activity_group($cm)) {
$gid = 0;
}
if (!$subwiki = wiki_get_subwiki_by_group($cm->instance, $gid, $userid)) {
return null;
} else {
$swid = $subwiki->id;
return;
}

$pageid = $url->param('pageid');
$cmid = $url->param('id');
if (empty($pageid) && !empty($cmid)) {
$pageid = optional_param('pageid', null, PARAM_INT);
if (empty($pageid)) {
// wiki main page
$page = wiki_get_page_by_title($swid, $wiki->firstpagetitle);
$page = wiki_get_page_by_title($subwiki->id, $instance->firstpagetitle);
$pageid = $page->id;
}

if (wiki_can_create_pages($context)) {
$link = new moodle_url('/mod/wiki/create.php', array('action' => 'new', 'swid' => $swid));
$node = $navref->add(get_string('newpage', 'wiki'), $link, navigation_node::TYPE_SETTING);
$link = new moodle_url('/mod/wiki/create.php', ['action' => 'new', 'swid' => $subwiki->id]);
$navref->add(get_string('newpage', 'wiki'), $link, navigation_node::TYPE_SETTING);
}

if (empty($pageid)) {
return;
}

if (is_numeric($pageid)) {
$canviewpage = has_capability('mod/wiki:viewpage', $context);

if (has_capability('mod/wiki:viewpage', $context)) {
$link = new moodle_url('/mod/wiki/view.php', array('pageid' => $pageid));
$node = $navref->add(get_string('view', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
if ($canviewpage) {
$link = new moodle_url('/mod/wiki/view.php', ['pageid' => $pageid]);
$navref->add(get_string('view', 'wiki'), $link, navigation_node::TYPE_SETTING);
}

if (wiki_user_can_edit($subwiki)) {
$link = new moodle_url('/mod/wiki/edit.php', array('pageid' => $pageid));
$node = $navref->add(get_string('edit', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
if (wiki_user_can_edit($subwiki)) {
$link = new moodle_url('/mod/wiki/edit.php', ['pageid' => $pageid]);
$navref->add(get_string('edit', 'wiki'), $link, navigation_node::TYPE_SETTING);
}

if (has_capability('mod/wiki:viewcomment', $context)) {
$link = new moodle_url('/mod/wiki/comments.php', array('pageid' => $pageid));
$node = $navref->add(get_string('comments', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
if (has_capability('mod/wiki:viewcomment', $context)) {
$link = new moodle_url('/mod/wiki/comments.php', ['pageid' => $pageid]);
$navref->add(get_string('comments', 'wiki'), $link, navigation_node::TYPE_SETTING);
}

if (has_capability('mod/wiki:viewpage', $context)) {
$link = new moodle_url('/mod/wiki/history.php', array('pageid' => $pageid));
$node = $navref->add(get_string('history', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
if ($canviewpage) {
$link = new moodle_url('/mod/wiki/history.php', ['pageid' => $pageid]);
$navref->add(get_string('history', 'wiki'), $link, navigation_node::TYPE_SETTING);

if (has_capability('mod/wiki:viewpage', $context)) {
$link = new moodle_url('/mod/wiki/map.php', array('pageid' => $pageid));
$node = $navref->add(get_string('map', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
$link = new moodle_url('/mod/wiki/map.php', ['pageid' => $pageid]);
$navref->add(get_string('map', 'wiki'), $link, navigation_node::TYPE_SETTING);

if (has_capability('mod/wiki:viewpage', $context)) {
$link = new moodle_url('/mod/wiki/files.php', array('pageid' => $pageid));
$node = $navref->add(get_string('files', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
$link = new moodle_url('/mod/wiki/files.php', ['pageid' => $pageid]);
$navref->add(get_string('files', 'wiki'), $link, navigation_node::TYPE_SETTING);
}

if (has_capability('mod/wiki:managewiki', $context)) {
$link = new moodle_url('/mod/wiki/admin.php', array('pageid' => $pageid));
$node = $navref->add(get_string('admin', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
if (has_capability('mod/wiki:managewiki', $context)) {
$link = new moodle_url('/mod/wiki/admin.php', ['pageid' => $pageid]);
$navref->add(get_string('admin', 'wiki'), $link, navigation_node::TYPE_SETTING);
}
}
/**
Expand Down

0 comments on commit f2b007e

Please sign in to comment.