mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 06:18:28 +01:00
150 lines
4.3 KiB
PHP
150 lines
4.3 KiB
PHP
<?php
|
|
|
|
//***********************************
|
|
// qt_common.php
|
|
//***********************************
|
|
// This contains code common to mediagonal-modified questions
|
|
//
|
|
|
|
/**
|
|
* gets a list of all the media files for the given course
|
|
*
|
|
* @param int courseid
|
|
* @return array containing filenames
|
|
* @calledfrom type/<typename>/editquestion.php
|
|
* @package questionbank
|
|
* @subpackage importexport
|
|
*/
|
|
function get_course_media_files($courseid)
|
|
{
|
|
// this code lifted from mod/quiz/question.php and modified
|
|
global $CFG;
|
|
$images = null;
|
|
|
|
make_upload_directory("$course->id"); // Just in case
|
|
$coursefiles = get_directory_list("$CFG->dataroot/$courseid", $CFG->moddata);
|
|
foreach ($coursefiles as $filename) {
|
|
if (is_media_by_extension($filename)) {
|
|
$images["$filename"] = $filename;
|
|
}
|
|
}
|
|
return $images;
|
|
}
|
|
|
|
/**
|
|
* determines whether or not a file is an image, based on the file extension
|
|
*
|
|
* @param string $file the filename
|
|
* @return boolean
|
|
*/
|
|
function is_image_by_extension($file) {
|
|
$extensionsregex = '/\.(gif|jpg|jpeg|jpe|png|tif|tiff|bmp|xbm|rgb|svf)$/';
|
|
if (preg_match($extensionsregex, $file)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
/**
|
|
* determines whether or not a file is a media file, based on the file extension
|
|
*
|
|
* @param string $file the filename
|
|
* @return boolean
|
|
*/
|
|
function is_media_by_extension($file) {
|
|
$extensionsregex = '/\.(gif|jpg|jpeg|jpe|png|tif|tiff|bmp|xbm|rgb|svf|swf|mov|mpg|mpeg|wmf|avi|mpe|flv|mp3|ra|ram)$/';
|
|
if (preg_match($extensionsregex, $file)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* determines whether or not a file is a multimedia file, based on the file extension
|
|
*
|
|
* @param string $file the filename
|
|
* @return boolean
|
|
*/
|
|
function is_multimedia_by_extension($file) {
|
|
$extensionsregex = '/\.(swf|mov|mpg|mpeg|wmf|avi|mpe|flv)$/';
|
|
if (preg_match($extensionsregex, $file)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* determines whether or not a file is a multimedia file of a type php can get the dimension for, based on the file extension
|
|
*
|
|
* @param string $file the filename
|
|
* @return boolean
|
|
*/
|
|
function is_sizable_multimedia($file) {
|
|
$extensionsregex = '/\.(swf)$/';
|
|
if (preg_match($extensionsregex, $file)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* creates a media tag to use for choice media
|
|
*
|
|
* @param string $file the filename
|
|
* @param string $courseid the course id
|
|
* @param string $alt to specify the alt tag
|
|
* @return string either an image tag, or html for an embedded object
|
|
*/
|
|
function get_media_tag($file, $courseid = 0, $alt = 'media file', $width = 0, $height = 0) {
|
|
global $CFG;
|
|
|
|
// if it's a moodle library file, it will be served through file.php
|
|
if (substr(strtolower($file), 0, 7) == 'http://') {
|
|
$media = $file;
|
|
} else if ($CFG->slasharguments) { // Use this method if possible for better caching
|
|
$media = "{$CFG->wwwroot}/file.php/$courseid/$file";
|
|
} else {
|
|
$media = "{$CFG->wwwroot}/file.php?file=/$courseid/$file";
|
|
}
|
|
|
|
$ismultimedia = false;
|
|
if (!$isimage = is_image_by_extension($file)) {
|
|
$ismultimedia = is_multimedia_by_extension($file);
|
|
}
|
|
|
|
// if there is no known width and height, try to get one
|
|
if ($width == 0) {
|
|
if ($isimage || is_sizable_multimedia($file)) {
|
|
|
|
}
|
|
|
|
}
|
|
// create either an image link or a generic link.
|
|
// if the moodle multimedia filter is turned on, it'll catch multimedia content in the generic link
|
|
if (is_image_by_extension($file)) {
|
|
return "<img src=\"$media\" alt=\"$alt\" width=\"$width\" height=\"$height\" />";
|
|
}
|
|
else {
|
|
require_once("$CFG->dirroot/mod/quiz/format/qti/custommediafilter.php");
|
|
return custom_mediaplugin_filter('<a href="' . $media . '"></a>', $courseid, $width, $height);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* determines the x and y size of the given file
|
|
*
|
|
* @param string $file the filename
|
|
* @return array looks like array('x'=>171, 'y'=>323), or array('x'=>0, 'y'=>0) if size can't be determined
|
|
*/
|
|
function get_file_dimensions($file) {
|
|
$imginfo = @getimagesize($file);
|
|
if ($imginfo !== FALSE) {
|
|
return array('x'=>$imginfo[0], 'y'=>$imginfo[1]);
|
|
} else {
|
|
return array('x'=> 0, 'y'=> 0);
|
|
}
|
|
}
|
|
|
|
?>
|