Accessing Course Files via PHP and MySQL

Re: Accessing Course Files via PHP and MySQL

by Frank Troglauer -
Number of replies: 1

I seem to have solved the problem. The issue with my old code is it was adding the itemid to the url and that was causing an invalid url. By doing some searching of other examples I found an article discussing the code in this github repo, for the flexibase theme, that helped with the solution. 

https://github.com/roelmann/moodle-theme_flexibase/blob/master/renderers/course_renderer.php#L171-L189

And the code. The course_get_overviewfiles function was borrowed from 


function course_get_overviewfiles($courseid) {
  global $CFG;
  if (empty($CFG->courseoverviewfileslimit)) {
      return array();
  }
  require_once($CFG->libdir. '/filestorage/file_storage.php');
  require_once($CFG->dirroot. '/course/lib.php');
  $fs = get_file_storage();
  $context = context_course::instance($courseid);
  $files = $fs->get_area_files($context->id, 'course', 'overviewfiles', false, 'filename', false);
  if (count($files)) {
      $overviewfilesoptions = course_overviewfiles_options($courseid);
      $acceptedtypes = $overviewfilesoptions['accepted_types'];
      if ($acceptedtypes !== '*') {
          // Filter only files with allowed extensions.
          require_once($CFG->libdir. '/filelib.php');
          foreach ($files as $key => $file) {
              if (!file_extension_in_typegroup($file->get_filename(), $acceptedtypes)) {
                  unset($files[$key]);
              }
          }
      }
      if (count($files) > $CFG->courseoverviewfileslimit) {
          // Return no more than $CFG->courseoverviewfileslimit files.
          $files = array_slice($files, 0, $CFG->courseoverviewfileslimit, true);
      }
  }
  return $files;
}
function course_image($courseid)
{
    global $CFG, $DB;
    $course_overview_files = course_get_overviewfiles($courseid);
    if($course_overview_files == null)
    {
        //Use default image
        return "images/course_default.png";
    }
    else if(is_array($course_overview_files) && count($course_overview_files) > 0)
    {
        $url = '';
        foreach($course_overview_files as $key=>$file)
        {
            if(strpos($file->get_filename(), 'CoursePhoto') !== false)
            {
                $isimage = $file->is_valid_image();
                $url = file_encode_url(
                    "$CFG->wwwroot/pluginfile.php",
                   '/'. $file->get_contextid(). '/'. $file->get_component(). '/'. $file->get_filearea(). $file->get_filepath(). $file->get_filename(),
                   !$isimage
                );
                break;
            }
        }
        // echo "<img src='$url'>";
        // echo "file exists = ". file_exists($url);
        //Last check to ensure it exists, otherwise use default image
        if($url != '')
        {
            return $url;
        }
        else
        {
            //Use default image
            return "images/course_default.png";
        }
    }
}