Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.

Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401]

   1  <?php
   2  define('AJAX_SCRIPT', true);
   3  
   4  require_once('../../config.php');
   5  require_once ('lib.php');
   6  require_once($CFG->libdir . '/filelib.php');
   7  
   8  $concept  = optional_param('concept', '', PARAM_CLEAN);
   9  $courseid = optional_param('courseid', 0, PARAM_INT);
  10  $eid      = optional_param('eid', 0, PARAM_INT); // glossary entry id
  11  $displayformat = optional_param('displayformat',-1, PARAM_SAFEDIR);
  12  
  13  $url = new moodle_url('/mod/glossary/showentry.php');
  14  $url->param('concept', $concept);
  15  $url->param('courseid', $courseid);
  16  $url->param('eid', $eid);
  17  $url->param('displayformat', $displayformat);
  18  $PAGE->set_url($url);
  19  
  20  if ($CFG->forcelogin) {
  21      require_login();
  22  }
  23  
  24  if ($eid) {
  25      $entry = $DB->get_record('glossary_entries', array('id'=>$eid), '*', MUST_EXIST);
  26      $glossary = $DB->get_record('glossary', array('id'=>$entry->glossaryid), '*', MUST_EXIST);
  27      $cm = get_coursemodule_from_instance('glossary', $glossary->id, 0, false, MUST_EXIST);
  28      $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
  29      require_course_login($course, true, $cm);
  30      $entry->glossaryname = $glossary->name;
  31      $entry->cmid = $cm->id;
  32      $entry->courseid = $cm->course;
  33      $entries = array($entry);
  34  
  35  } else if ($concept) {
  36      $course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
  37      require_course_login($course);
  38      $entries = glossary_get_entries_search($concept, $courseid);
  39  
  40  } else {
  41      throw new \moodle_exception('invalidelementid');
  42  }
  43  
  44  if ($entries) {
  45      foreach ($entries as $key => $entry) {
  46          // Need to get the course where the entry is,
  47          // in order to check for visibility/approve permissions there
  48          $entrycourse = $DB->get_record('course', array('id' => $entry->courseid), '*', MUST_EXIST);
  49          $modinfo = get_fast_modinfo($entrycourse);
  50          // make sure the entry is visible
  51          if (empty($modinfo->cms[$entry->cmid]->uservisible)) {
  52              unset($entries[$key]);
  53              continue;
  54          }
  55          // make sure the entry is approved (or approvable by current user)
  56          if (!$entry->approved and ($USER->id != $entry->userid)) {
  57              $context = context_module::instance($entry->cmid);
  58              if (!has_capability('mod/glossary:approve', $context)) {
  59                  unset($entries[$key]);
  60                  continue;
  61              }
  62          }
  63  
  64          // Make sure entry is not autolinking itself.
  65          $GLOSSARY_EXCLUDEENTRY = $entry->id;
  66  
  67          $context = context_module::instance($entry->cmid);
  68          $definition = file_rewrite_pluginfile_urls($entry->definition, 'pluginfile.php', $context->id, 'mod_glossary', 'entry', $entry->id);
  69  
  70          $options = new stdClass();
  71          $options->para = false;
  72          $options->trusted = $entry->definitiontrust;
  73          $options->context = $context;
  74          $entries[$key]->definition = format_text($definition, $entry->definitionformat, $options);
  75  
  76          if (core_tag_tag::is_enabled('mod_glossary', 'glossary_entries')) {
  77              $entries[$key]->definition .= $OUTPUT->tag_list(
  78                  core_tag_tag::get_item_tags('mod_glossary', 'glossary_entries', $entry->id), null, 'glossary-tags');
  79          }
  80  
  81          $entries[$key]->attachments = '';
  82          if (!empty($entries[$key]->attachment)) {
  83              $attachments = glossary_print_attachments($entry, $cm, 'html');
  84              $entries[$key]->attachments = html_writer::tag('p', $attachments);
  85          }
  86  
  87          $entries[$key]->footer = "<p style=\"text-align:right\">&raquo;&nbsp;<a href=\"$CFG->wwwroot/mod/glossary/view.php?g=$entry->glossaryid\">".format_string($entry->glossaryname,true)."</a></p>";
  88          glossary_entry_view($entry, $modinfo->cms[$entry->cmid]->context);
  89      }
  90  }
  91  
  92  echo $OUTPUT->header();
  93  
  94  $result = new stdClass;
  95  $result->success = true;
  96  $result->entries = $entries;
  97  echo json_encode($result);
  98  
  99  echo $OUTPUT->footer();
 100