Moodle PHP Cross Reference Learning Management Systems

Source: /mod/resource/view.php - 116 lines - 4222 bytes - Text - Print

Description: Resource module version information

   1  <?php
   2  
   3  // This file is part of Moodle - http://moodle.org/
   4  //
   5  // Moodle is free software: you can redistribute it and/or modify
   6  // it under the terms of the GNU General Public License as published by
   7  // the Free Software Foundation, either version 3 of the License, or
   8  // (at your option) any later version.
   9  //
  10  // Moodle is distributed in the hope that it will be useful,
  11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13  // GNU General Public License for more details.
  14  //
  15  // You should have received a copy of the GNU General Public License
  16  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  17  
  18  /**
  19   * Resource module version information
  20   *
  21   * @package    mod_resource
  22   * @copyright  2009 Petr Skoda  {@link http://skodak.org}
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   */
  25  
  26  require('../../config.php');
  27  require_once($CFG->dirroot.'/mod/resource/locallib.php');
  28  require_once($CFG->libdir.'/completionlib.php');
  29  
  30  $id       = optional_param('id', 0, PARAM_INT); // Course Module ID
  31  $r        = optional_param('r', 0, PARAM_INT);  // Resource instance ID
  32  $redirect = optional_param('redirect', 0, PARAM_BOOL);
  33  
  34  if ($r) {
  35      if (!$resource = $DB->get_record('resource', array('id'=>$r))) {
  36          resource_redirect_if_migrated($r, 0);
  37          print_error('invalidaccessparameter');
  38      }
  39      $cm = get_coursemodule_from_instance('resource', $resource->id, $resource->course, false, MUST_EXIST);
  40  
  41  } else {
  42      if (!$cm = get_coursemodule_from_id('resource', $id)) {
  43          resource_redirect_if_migrated(0, $id);
  44          print_error('invalidcoursemodule');
  45      }
  46      $resource = $DB->get_record('resource', array('id'=>$cm->instance), '*', MUST_EXIST);
  47  }
  48  
  49  $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
  50  
  51  require_course_login($course, true, $cm);
  52  $context = context_module::instance($cm->id);
  53  require_capability('mod/resource:view', $context);
  54  
  55  $params = array(
  56      'context' => $context,
  57      'objectid' => $resource->id
  58  );
  59  $event = \mod_resource\event\course_module_viewed::create($params);
  60  $event->add_record_snapshot('course_modules', $cm);
  61  $event->add_record_snapshot('course', $course);
  62  $event->add_record_snapshot('resource', $resource);
  63  $event->trigger();
  64  
  65  // Update 'viewed' state if required by completion system
  66  $completion = new completion_info($course);
  67  $completion->set_module_viewed($cm);
  68  
  69  $PAGE->set_url('/mod/resource/view.php', array('id' => $cm->id));
  70  
  71  if ($resource->tobemigrated) {
  72      resource_print_tobemigrated($resource, $cm, $course);
  73      die;
  74  }
  75  
  76  $fs = get_file_storage();
  77  $files = $fs->get_area_files($context->id, 'mod_resource', 'content', 0, 'sortorder DESC, id ASC', false); // TODO: this is not very efficient!!
  78  if (count($files) < 1) {
  79      resource_print_filenotfound($resource, $cm, $course);
  80      die;
  81  } else {
  82      $file = reset($files);
  83      unset($files);
  84  }
  85  
  86  $resource->mainfile = $file->get_filename();
  87  $displaytype = resource_get_final_display_type($resource);
  88  if ($displaytype == RESOURCELIB_DISPLAY_OPEN || $displaytype == RESOURCELIB_DISPLAY_DOWNLOAD) {
  89      // For 'open' and 'download' links, we always redirect to the content - except
  90      // if the user just chose 'save and display' from the form then that would be
  91      // confusing
  92      if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], 'modedit.php') === false) {
  93          $redirect = true;
  94      }
  95  }
  96  
  97  if ($redirect) {
  98      // coming from course page or url index page
  99      // this redirect trick solves caching problems when tracking views ;-)
 100      $path = '/'.$context->id.'/mod_resource/content/'.$resource->revision.$file->get_filepath().$file->get_filename();
 101      $fullurl = moodle_url::make_file_url('/pluginfile.php', $path, $displaytype == RESOURCELIB_DISPLAY_DOWNLOAD);
 102      redirect($fullurl);
 103  }
 104  
 105  switch ($displaytype) {
 106      case RESOURCELIB_DISPLAY_EMBED:
 107          resource_display_embed($resource, $cm, $course, $file);
 108          break;
 109      case RESOURCELIB_DISPLAY_FRAME:
 110          resource_display_frame($resource, $cm, $course, $file);
 111          break;
 112      default:
 113          resource_print_workaround($resource, $cm, $course, $file);
 114          break;
 115  }
 116  

title

Description

title

Description

title

Description

title

title

Body