mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
MDL-32247,MDL-32831,MDL-32900 Use correct url building of file type icons
- function get_mimetypes_array() now contains also information about filetype groups and language strings - use 'smart' human-readable mimetype description - never determine filetype group based on filetype icon image! remove function mimeinfo_from_icon() - get rid of class filetype_parser and file lib/filestorage/file_types.mm, replaced with functions file_get_typegroup(), file_extension_in_typegroup() and file_mimetype_in_typegroup() - support multiple icon sizes, not only 16 and 32 - retrieve filetype icon only using proper functions file_..._icon() from lib/filelib.php throughout the code - increase size of repository thumbnails to 90 and icons to 24 (will take effect when new icons exist)
This commit is contained in:
parent
8177b7b9f0
commit
559276b153
@ -60,9 +60,8 @@ if (!isset($args[0]) || !in_array($args[0], $alloweddirs)) {
|
||||
print_error('invalidarguments');
|
||||
}
|
||||
|
||||
// only serve some controlled extensions
|
||||
$allowedextensions = array('text/html', 'text/css', 'image/gif', 'application/x-javascript');
|
||||
if (!in_array(mimeinfo('type', $filepath), $allowedextensions)) {
|
||||
// only serve some controlled extensions/mimetypes
|
||||
if (!file_extension_in_typegroup($filepath, array('web_file', 'web_image'), true)) {
|
||||
print_error('invalidarguments');
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
require_once($CFG->libdir . '/filelib.php');
|
||||
|
||||
class block_activity_modules extends block_list {
|
||||
function init() {
|
||||
$this->title = get_string('pluginname', 'block_activity_modules');
|
||||
@ -50,7 +53,7 @@ class block_activity_modules extends block_list {
|
||||
|
||||
foreach ($modfullnames as $modname => $modfullname) {
|
||||
if ($modname === 'resources') {
|
||||
$icon = '<img src="'.$OUTPUT->pix_url('f/html') . '" class="icon" alt="" /> ';
|
||||
$icon = $OUTPUT->pix_icon(file_extension_icon('.htm'), '', 'moodle', array('class' => 'icon')). ' ';
|
||||
$this->content->items[] = '<a href="'.$CFG->wwwroot.'/course/resources.php?id='.$course->id.'">'.$icon.$modfullname.'</a>';
|
||||
} else {
|
||||
$icon = '<img src="'.$OUTPUT->pix_url('icon', $modname) . '" class="icon" alt="" /> ';
|
||||
|
@ -65,14 +65,13 @@ class block_private_files_renderer extends plugin_renderer_base {
|
||||
}
|
||||
$result = '<ul>';
|
||||
foreach ($dir['subdirs'] as $subdir) {
|
||||
$image = $this->output->pix_icon("f/folder", $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_folder_icon(), $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.s($subdir['dirname']).'</div> '.$this->htmllize_tree($tree, $subdir).'</li>';
|
||||
}
|
||||
foreach ($dir['files'] as $file) {
|
||||
$url = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'.$tree->context->id.'/user/private'.$file->get_filepath().$file->get_filename(), true);
|
||||
$filename = $file->get_filename();
|
||||
$icon = mimeinfo("icon", $filename);
|
||||
$image = $this->output->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_file_icon($file), $filename, 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.html_writer::link($url, $image.' '.$filename).'</div></li>';
|
||||
}
|
||||
$result .= '</ul>';
|
||||
|
@ -513,10 +513,7 @@ class blog_entry {
|
||||
$ffurl = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.SYSCONTEXTID.'/blog/attachment/'.$this->id.'/'.$filename);
|
||||
$mimetype = $file->get_mimetype();
|
||||
|
||||
$icon = mimeinfo_from_type("icon", $mimetype);
|
||||
$type = mimeinfo_from_type("type", $mimetype);
|
||||
|
||||
$image = $OUTPUT->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon'));
|
||||
$image = $OUTPUT->pix_icon(file_file_icon($file), $filename, 'moodle', array('class'=>'icon'));
|
||||
|
||||
if ($return == "html") {
|
||||
$output .= html_writer::link($ffurl, $image);
|
||||
@ -526,7 +523,7 @@ class blog_entry {
|
||||
$output .= "$strattachment $filename:\n$ffurl\n";
|
||||
|
||||
} else {
|
||||
if (in_array($type, array('image/gif', 'image/jpeg', 'image/png'))) { // Image attachments don't get printed as links
|
||||
if (file_mimetype_in_typegroup($file->get_mimetype(), 'web_image')) { // Image attachments don't get printed as links
|
||||
$imagereturn .= '<br /><img src="'.$ffurl.'" alt="" />';
|
||||
} else {
|
||||
$imagereturn .= html_writer::link($ffurl, $image);
|
||||
|
@ -1518,13 +1518,6 @@ function print_section($course, $section, $mods, $modnamesused, $absolute=false,
|
||||
//Accessibility: for files get description via icon, this is very ugly hack!
|
||||
$altname = '';
|
||||
$altname = $mod->modfullname;
|
||||
if (!empty($customicon)) {
|
||||
$archetype = plugin_supports('mod', $mod->modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER);
|
||||
if ($archetype == MOD_ARCHETYPE_RESOURCE) {
|
||||
$mimetype = mimeinfo_from_icon('type', $customicon);
|
||||
$altname = get_mimetype_description($mimetype);
|
||||
}
|
||||
}
|
||||
// Avoid unnecessary duplication: if e.g. a forum name already
|
||||
// includes the word forum (or Forum, etc) then it is unhelpful
|
||||
// to include that in the accessible description that is added.
|
||||
|
@ -70,10 +70,10 @@ switch ($action) {
|
||||
if ($child->is_directory()) {
|
||||
$fileitem['isdir'] = true;
|
||||
$fileitem['url'] = $url->out(false);
|
||||
$fileitem['icon'] = $OUTPUT->pix_icon('f/folder', get_string('icon'));
|
||||
$fileitem['icon'] = $OUTPUT->pix_icon(file_folder_icon(), get_string('icon'));
|
||||
} else {
|
||||
$fileitem['url'] = $child->get_url();
|
||||
$fileitem['icon'] = $OUTPUT->pix_icon('f/'.mimeinfo('icon', $child->get_visible_name()), get_string('icon'));
|
||||
$fileitem['icon'] = $OUTPUT->pix_icon(file_file_icon($child), get_string('icon'));
|
||||
}
|
||||
$tree[] = $fileitem;
|
||||
}
|
||||
|
@ -56,25 +56,31 @@ class core_files_renderer extends plugin_renderer_base {
|
||||
|
||||
$html .= $this->output->box_start();
|
||||
$table = new html_table();
|
||||
$table->head = array(get_string('filename', 'backup'), get_string('size'), get_string('modified'));
|
||||
$table->align = array('left', 'right', 'right');
|
||||
$table->head = array(get_string('name'), get_string('lastmodified'), get_string('size', 'repository'), get_string('type', 'repository'));
|
||||
$table->align = array('left', 'left', 'left', 'left');
|
||||
$table->width = '100%';
|
||||
$table->data = array();
|
||||
|
||||
foreach ($tree->tree as $file) {
|
||||
if (!empty($file['isdir'])) {
|
||||
$table->data[] = array(
|
||||
html_writer::link($file['url'], $this->output->pix_icon('f/folder', 'icon') . ' ' . $file['filename']),
|
||||
'',
|
||||
$file['filedate'],
|
||||
);
|
||||
} else {
|
||||
$table->data[] = array(
|
||||
html_writer::link($file['url'], $this->output->pix_icon('f/'.mimeinfo('icon', $file['filename']), get_string('icon')) . ' ' . $file['filename']),
|
||||
$file['filesize'],
|
||||
$file['filedate'],
|
||||
);
|
||||
$filedate = $filesize = $filetype = '';
|
||||
if ($file['filedate']) {
|
||||
$filedate = userdate($file['filedate'], get_string('strftimedatetimeshort', 'langconfig'));
|
||||
}
|
||||
if (empty($file['isdir'])) {
|
||||
if ($file['filesize']) {
|
||||
$filesize = display_size($file['filesize']);
|
||||
}
|
||||
$fileicon = file_file_icon($file, 24);
|
||||
$filetype = get_mimetype_description($file);
|
||||
} else {
|
||||
$fileicon = file_folder_icon(24);
|
||||
}
|
||||
$table->data[] = array(
|
||||
html_writer::link($file['url'], $this->output->pix_icon($fileicon, get_string('icon')) . ' ' . $file['filename']),
|
||||
$filedate,
|
||||
$filesize,
|
||||
$filetype
|
||||
);
|
||||
}
|
||||
|
||||
$html .= html_writer::table($table);
|
||||
@ -952,8 +958,9 @@ class files_tree_viewer implements renderable {
|
||||
$fileitem = array(
|
||||
'params' => $params,
|
||||
'filename' => $child->get_visible_name(),
|
||||
'filedate' => $filedate ? userdate($filedate) : '',
|
||||
'filesize' => $filesize ? display_size($filesize) : ''
|
||||
'mimetype' => $child->get_mimetype(),
|
||||
'filedate' => $filedate ? $filedate : '',
|
||||
'filesize' => $filesize ? $filesize : ''
|
||||
);
|
||||
$url = new moodle_url('/files/index.php', $params);
|
||||
if ($child->is_directory()) {
|
||||
|
@ -1049,6 +1049,7 @@ class grade_structure {
|
||||
*/
|
||||
public function get_element_icon(&$element, $spacerifnone=false) {
|
||||
global $CFG, $OUTPUT;
|
||||
require_once $CFG->libdir.'/filelib.php';
|
||||
|
||||
switch ($element['type']) {
|
||||
case 'item':
|
||||
@ -1114,7 +1115,7 @@ class grade_structure {
|
||||
|
||||
case 'category':
|
||||
$strcat = get_string('category', 'grades');
|
||||
return '<img src="'.$OUTPUT->pix_url('f/folder') . '" class="icon itemicon" ' .
|
||||
return '<img src="'.$OUTPUT->pix_url(file_folder_icon()) . '" class="icon itemicon" ' .
|
||||
'title="'.s($strcat).'" alt="'.s($strcat).'" />';
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,19 @@
|
||||
/**
|
||||
* Strings for component 'mimetypes', language 'en', branch 'MOODLE_20_STABLE'
|
||||
*
|
||||
* Strings are used to display human-readable name of mimetype. Some mimetypes share the same
|
||||
* string. The following attributes are passed in the parameter when processing the string:
|
||||
* $a->ext - filename extension in lower case
|
||||
* $a->EXT - filename extension, capitalized
|
||||
* $a->Ext - filename extension with first capital letter
|
||||
* $a->mimetype - file mimetype
|
||||
* $a->mimetype1 - first chunk of mimetype (before /)
|
||||
* $a->mimetype2 - second chunk of mimetype (after /)
|
||||
* $a->Mimetype, $a->MIMETYPE, $a->Mimetype1, $a->Mimetype2, $a->MIMETYPE1, $a->MIMETYPE2
|
||||
* - the same with capitalized first/all letters
|
||||
*
|
||||
* @see get_mimetypes_array()
|
||||
* @see get_mimetype_description()
|
||||
* @package mimetypes
|
||||
* @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
@ -25,15 +38,19 @@
|
||||
|
||||
$string['application/msword'] = 'Word document';
|
||||
$string['application/pdf'] = 'PDF document';
|
||||
$string['application/vnd.moodle.backup'] = 'Moodle backup';
|
||||
$string['application/vnd.ms-excel'] = 'Excel spreadsheet';
|
||||
$string['application/vnd.ms-powerpoint'] = 'Powerpoint presentation';
|
||||
$string['application/zip'] = 'zip archive';
|
||||
$string['audio/mp3'] = 'MP3 audio file';
|
||||
$string['audio/wav'] = 'sound file';
|
||||
$string['document/unknown'] = 'file';
|
||||
$string['image/bmp'] = 'uncompressed BMP image';
|
||||
$string['image/gif'] = 'GIF image';
|
||||
$string['image/jpeg'] = 'JPEG image';
|
||||
$string['image/png'] = 'PNG image';
|
||||
$string['text/plain'] = 'text file';
|
||||
$string['application/vnd.openxmlformats-officedocument.presentationml.presentation'] = 'Powerpoint presentation';
|
||||
$string['application/vnd.openxmlformats-officedocument.presentationml.slideshow'] = 'Powerpoint slideshow';
|
||||
$string['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'] = 'Excel spreadsheet';
|
||||
$string['application/vnd.openxmlformats-officedocument.spreadsheetml.template'] = 'Excel template';
|
||||
$string['application/vnd.openxmlformats-officedocument.wordprocessingml.document'] = 'Word document';
|
||||
$string['archive'] = 'Archive ({$a->EXT})';
|
||||
$string['audio'] = 'Audio file ({$a->EXT})';
|
||||
$string['default'] = '{$a->mimetype}';
|
||||
$string['document/unknown'] = 'File';
|
||||
$string['image'] = 'Image ({$a->MIMETYPE2})';
|
||||
$string['text/html'] = 'HTML document';
|
||||
$string['text/plain'] = 'Text file';
|
||||
$string['text/rtf'] = 'RTF document';
|
||||
|
652
lib/filelib.php
652
lib/filelib.php
@ -590,8 +590,6 @@ function file_get_drafarea_files($draftitemid, $filepath = '/') {
|
||||
$item->size = $filesize ? $filesize : null;
|
||||
$item->filesize = $filesize ? display_size($filesize) : '';
|
||||
|
||||
$icon = mimeinfo_from_type('icon', $file->get_mimetype());
|
||||
$item->icon = $OUTPUT->pix_url('f/' . $icon)->out();
|
||||
$item->sortorder = $file->get_sortorder();
|
||||
$item->author = $file->get_author();
|
||||
$item->license = $file->get_license();
|
||||
@ -605,25 +603,25 @@ function file_get_drafarea_files($draftitemid, $filepath = '/') {
|
||||
$item->refcount = $fs->search_references_count($source->original);
|
||||
}
|
||||
|
||||
// TODO MDL-32900 this is not the correct way to check that it is archive, use filetype_parser instead
|
||||
if ($icon == 'zip') {
|
||||
$item->type = 'zip';
|
||||
} else {
|
||||
$item->type = 'file';
|
||||
}
|
||||
|
||||
if ($file->is_directory()) {
|
||||
$item->filesize = 0;
|
||||
$item->icon = $OUTPUT->pix_url('f/folder')->out();
|
||||
$item->icon = $OUTPUT->pix_url(file_folder_icon(24))->out(false);
|
||||
$item->type = 'folder';
|
||||
$foldername = explode('/', trim($item->filepath, '/'));
|
||||
$item->fullname = trim(array_pop($foldername), '/');
|
||||
$item->thumbnail = $OUTPUT->pix_url('f/folder-32')->out(false);
|
||||
$item->thumbnail = $OUTPUT->pix_url(file_folder_icon(90))->out(false);
|
||||
} else {
|
||||
// do NOT use file browser here!
|
||||
$item->mimetype = get_mimetype_description($file);
|
||||
if (file_mimetype_in_typegroup($item->mimetype, 'archive')) {
|
||||
$item->type = 'zip';
|
||||
} else {
|
||||
$item->type = 'file';
|
||||
}
|
||||
$itemurl = moodle_url::make_draftfile_url($draftitemid, $item->filepath, $item->filename);
|
||||
$item->url = $itemurl->out();
|
||||
$item->thumbnail = $OUTPUT->pix_url(file_extension_icon($item->filename, 32))->out(false);
|
||||
$item->icon = $OUTPUT->pix_url(file_file_icon($file, 24))->out(false);
|
||||
$item->thumbnail = $OUTPUT->pix_url(file_file_icon($file, 90))->out(false);
|
||||
if ($imageinfo = $file->get_imageinfo()) {
|
||||
$item->realthumbnail = $itemurl->out(false, array('preview' => 'thumb', 'oid' => $file->get_timemodified()));
|
||||
$item->realicon = $itemurl->out(false, array('preview' => 'tinyicon', 'oid' => $file->get_timemodified()));
|
||||
@ -1323,7 +1321,32 @@ function download_file_content_write_handler($received, $ch, $data) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of information about file t ypes based on extensions
|
||||
* Returns a list of information about file types based on extensions.
|
||||
*
|
||||
* The following elements expected in value array for each extension:
|
||||
* 'type' - mimetype
|
||||
* 'icon' - location of the icon file. If value is FILENAME, then either pix/f/FILENAME.gif
|
||||
* or pix/f/FILENAME.png must be present in moodle and contain 16x16 filetype icon;
|
||||
* also files with bigger sizes under names
|
||||
* FILENAME-24, FILENAME-32, FILENAME-64, FILENAME-128, FILENAME-256 are recommended.
|
||||
* 'groups' (optional) - array of filetype groups this filetype extension is part of;
|
||||
* commonly used in moodle the following groups:
|
||||
* - web_image - image that can be included as <img> in HTML
|
||||
* - image - image that we can parse using GD to find it's dimensions, also used for portfolio format
|
||||
* - video - file that can be imported as video in text editor
|
||||
* - audio - file that can be imported as audio in text editor
|
||||
* - archive - we can extract files from this archive
|
||||
* - spreadsheet - used for portfolio format
|
||||
* - document - used for portfolio format
|
||||
* - presentation - used for portfolio format
|
||||
* 'string' (optional) - the name of the string from lang/en/mimetypes.php that displays
|
||||
* human-readable description for this filetype;
|
||||
* Function {@link get_mimetype_description()} first looks at the presence of string for
|
||||
* particular mimetype (value of 'type'), if not found looks for string specified in 'string'
|
||||
* attribute, if not found returns the value of 'type';
|
||||
* 'defaulticon' (boolean, optional) - used by function {@link file_mimetype_icon()} to find
|
||||
* an icon for mimetype. If an entry with 'defaulticon' is not found for a particular mimetype,
|
||||
* this function will return first found icon; Especially usefull for types such as 'text/plain'
|
||||
*
|
||||
* @category files
|
||||
* @return array List of information about file types based on extensions.
|
||||
@ -1331,57 +1354,57 @@ function download_file_content_write_handler($received, $ch, $data) {
|
||||
* from 'element name' to data. Current element names are 'type' and 'icon'.
|
||||
* Unknown types should use the 'xxx' entry which includes defaults.
|
||||
*/
|
||||
function get_mimetypes_array() {
|
||||
function &get_mimetypes_array() {
|
||||
static $mimearray = array (
|
||||
'xxx' => array ('type'=>'document/unknown', 'icon'=>'unknown'),
|
||||
'3gp' => array ('type'=>'video/quicktime', 'icon'=>'video'),
|
||||
'aac' => array ('type'=>'audio/aac', 'icon'=>'audio'),
|
||||
'ai' => array ('type'=>'application/postscript', 'icon'=>'image'),
|
||||
'aif' => array ('type'=>'audio/x-aiff', 'icon'=>'audio'),
|
||||
'aiff' => array ('type'=>'audio/x-aiff', 'icon'=>'audio'),
|
||||
'aifc' => array ('type'=>'audio/x-aiff', 'icon'=>'audio'),
|
||||
'3gp' => array ('type'=>'video/quicktime', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'aac' => array ('type'=>'audio/aac', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'ai' => array ('type'=>'application/postscript', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'aif' => array ('type'=>'audio/x-aiff', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'aiff' => array ('type'=>'audio/x-aiff', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'aifc' => array ('type'=>'audio/x-aiff', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'applescript' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'asc' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'asm' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'au' => array ('type'=>'audio/au', 'icon'=>'audio'),
|
||||
'avi' => array ('type'=>'video/x-ms-wm', 'icon'=>'avi'),
|
||||
'bmp' => array ('type'=>'image/bmp', 'icon'=>'image'),
|
||||
'au' => array ('type'=>'audio/au', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'avi' => array ('type'=>'video/x-ms-wm', 'icon'=>'avi', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'bmp' => array ('type'=>'image/bmp', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'c' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'cct' => array ('type'=>'shockwave/director', 'icon'=>'flash'),
|
||||
'cpp' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'cs' => array ('type'=>'application/x-csh', 'icon'=>'text'),
|
||||
'css' => array ('type'=>'text/css', 'icon'=>'text'),
|
||||
'csv' => array ('type'=>'text/csv', 'icon'=>'excel'),
|
||||
'dv' => array ('type'=>'video/x-dv', 'icon'=>'video'),
|
||||
'css' => array ('type'=>'text/css', 'icon'=>'text', 'groups'=>array('web_file')),
|
||||
'csv' => array ('type'=>'text/csv', 'icon'=>'excel', 'groups'=>array('spreadsheet')),
|
||||
'dv' => array ('type'=>'video/x-dv', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'dmg' => array ('type'=>'application/octet-stream', 'icon'=>'dmg'),
|
||||
|
||||
'doc' => array ('type'=>'application/msword', 'icon'=>'word'),
|
||||
'docx' => array ('type'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'icon'=>'docx'),
|
||||
'doc' => array ('type'=>'application/msword', 'icon'=>'word', 'groups'=>array('document')),
|
||||
'docx' => array ('type'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'icon'=>'docx', 'groups'=>array('document')),
|
||||
'docm' => array ('type'=>'application/vnd.ms-word.document.macroEnabled.12', 'icon'=>'docm'),
|
||||
'dotx' => array ('type'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'icon'=>'dotx'),
|
||||
'dotm' => array ('type'=>'application/vnd.ms-word.template.macroEnabled.12', 'icon'=>'dotm'),
|
||||
|
||||
'dcr' => array ('type'=>'application/x-director', 'icon'=>'flash'),
|
||||
'dif' => array ('type'=>'video/x-dv', 'icon'=>'video'),
|
||||
'dif' => array ('type'=>'video/x-dv', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'dir' => array ('type'=>'application/x-director', 'icon'=>'flash'),
|
||||
'dxr' => array ('type'=>'application/x-director', 'icon'=>'flash'),
|
||||
'eps' => array ('type'=>'application/postscript', 'icon'=>'pdf'),
|
||||
'fdf' => array ('type'=>'application/pdf', 'icon'=>'pdf'),
|
||||
'flv' => array ('type'=>'video/x-flv', 'icon'=>'video'),
|
||||
'f4v' => array ('type'=>'video/mp4', 'icon'=>'video'),
|
||||
'gif' => array ('type'=>'image/gif', 'icon'=>'image'),
|
||||
'gtar' => array ('type'=>'application/x-gtar', 'icon'=>'zip'),
|
||||
'tgz' => array ('type'=>'application/g-zip', 'icon'=>'zip'),
|
||||
'gz' => array ('type'=>'application/g-zip', 'icon'=>'zip'),
|
||||
'gzip' => array ('type'=>'application/g-zip', 'icon'=>'zip'),
|
||||
'flv' => array ('type'=>'video/x-flv', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'f4v' => array ('type'=>'video/mp4', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'gif' => array ('type'=>'image/gif', 'icon'=>'image', 'groups'=>array('image', 'web_image'), 'string'=>'image'),
|
||||
'gtar' => array ('type'=>'application/x-gtar', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'tgz' => array ('type'=>'application/g-zip', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'gz' => array ('type'=>'application/g-zip', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'gzip' => array ('type'=>'application/g-zip', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'h' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'hpp' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'hqx' => array ('type'=>'application/mac-binhex40', 'icon'=>'zip'),
|
||||
'hqx' => array ('type'=>'application/mac-binhex40', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'htc' => array ('type'=>'text/x-component', 'icon'=>'text'),
|
||||
'html' => array ('type'=>'text/html', 'icon'=>'html'),
|
||||
'html' => array ('type'=>'text/html', 'icon'=>'html', 'groups'=>array('web_file')),
|
||||
'xhtml'=> array ('type'=>'application/xhtml+xml', 'icon'=>'html'),
|
||||
'htm' => array ('type'=>'text/html', 'icon'=>'html'),
|
||||
'ico' => array ('type'=>'image/vnd.microsoft.icon', 'icon'=>'image'),
|
||||
'htm' => array ('type'=>'text/html', 'icon'=>'html', 'groups'=>array('web_file')),
|
||||
'ico' => array ('type'=>'image/vnd.microsoft.icon', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'ics' => array ('type'=>'text/calendar', 'icon'=>'text'),
|
||||
'isf' => array ('type'=>'application/inspiration', 'icon'=>'isf'),
|
||||
'ist' => array ('type'=>'application/inspiration.template', 'icon'=>'isf'),
|
||||
@ -1391,52 +1414,52 @@ function get_mimetypes_array() {
|
||||
'jcw' => array ('type'=>'text/xml', 'icon'=>'jcw'),
|
||||
'jmt' => array ('type'=>'text/xml', 'icon'=>'jmt'),
|
||||
'jmx' => array ('type'=>'text/xml', 'icon'=>'jmx'),
|
||||
'jpe' => array ('type'=>'image/jpeg', 'icon'=>'image'),
|
||||
'jpeg' => array ('type'=>'image/jpeg', 'icon'=>'image'),
|
||||
'jpg' => array ('type'=>'image/jpeg', 'icon'=>'image'),
|
||||
'jpe' => array ('type'=>'image/jpeg', 'icon'=>'image', 'groups'=>array('image', 'web_image'), 'string'=>'image'),
|
||||
'jpeg' => array ('type'=>'image/jpeg', 'icon'=>'image', 'groups'=>array('image', 'web_image'), 'string'=>'image'),
|
||||
'jpg' => array ('type'=>'image/jpeg', 'icon'=>'image', 'groups'=>array('image', 'web_image'), 'string'=>'image'),
|
||||
'jqz' => array ('type'=>'text/xml', 'icon'=>'jqz'),
|
||||
'js' => array ('type'=>'application/x-javascript', 'icon'=>'text'),
|
||||
'js' => array ('type'=>'application/x-javascript', 'icon'=>'text', 'groups'=>array('web_file')),
|
||||
'latex'=> array ('type'=>'application/x-latex', 'icon'=>'text'),
|
||||
'm' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'mbz' => array ('type'=>'application/vnd.moodle.backup', 'icon'=>'moodle'),
|
||||
'mov' => array ('type'=>'video/quicktime', 'icon'=>'video'),
|
||||
'movie'=> array ('type'=>'video/x-sgi-movie', 'icon'=>'video'),
|
||||
'm3u' => array ('type'=>'audio/x-mpegurl', 'icon'=>'audio'),
|
||||
'mp3' => array ('type'=>'audio/mp3', 'icon'=>'audio'),
|
||||
'mp4' => array ('type'=>'video/mp4', 'icon'=>'video'),
|
||||
'm4v' => array ('type'=>'video/mp4', 'icon'=>'video'),
|
||||
'm4a' => array ('type'=>'audio/mp4', 'icon'=>'audio'),
|
||||
'mpeg' => array ('type'=>'video/mpeg', 'icon'=>'video'),
|
||||
'mpe' => array ('type'=>'video/mpeg', 'icon'=>'video'),
|
||||
'mpg' => array ('type'=>'video/mpeg', 'icon'=>'video'),
|
||||
'mov' => array ('type'=>'video/quicktime', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'movie'=> array ('type'=>'video/x-sgi-movie', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'm3u' => array ('type'=>'audio/x-mpegurl', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'mp3' => array ('type'=>'audio/mp3', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'mp4' => array ('type'=>'video/mp4', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'm4v' => array ('type'=>'video/mp4', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'm4a' => array ('type'=>'audio/mp4', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'mpeg' => array ('type'=>'video/mpeg', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'mpe' => array ('type'=>'video/mpeg', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'mpg' => array ('type'=>'video/mpeg', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
|
||||
'odt' => array ('type'=>'application/vnd.oasis.opendocument.text', 'icon'=>'odt'),
|
||||
'ott' => array ('type'=>'application/vnd.oasis.opendocument.text-template', 'icon'=>'odt'),
|
||||
'oth' => array ('type'=>'application/vnd.oasis.opendocument.text-web', 'icon'=>'odt'),
|
||||
'odt' => array ('type'=>'application/vnd.oasis.opendocument.text', 'icon'=>'odt', 'groups'=>array('document')),
|
||||
'ott' => array ('type'=>'application/vnd.oasis.opendocument.text-template', 'icon'=>'odt', 'groups'=>array('document')),
|
||||
'oth' => array ('type'=>'application/vnd.oasis.opendocument.text-web', 'icon'=>'odt', 'groups'=>array('document')),
|
||||
'odm' => array ('type'=>'application/vnd.oasis.opendocument.text-master', 'icon'=>'odm'),
|
||||
'odg' => array ('type'=>'application/vnd.oasis.opendocument.graphics', 'icon'=>'odg'),
|
||||
'otg' => array ('type'=>'application/vnd.oasis.opendocument.graphics-template', 'icon'=>'odg'),
|
||||
'odp' => array ('type'=>'application/vnd.oasis.opendocument.presentation', 'icon'=>'odp'),
|
||||
'otp' => array ('type'=>'application/vnd.oasis.opendocument.presentation-template', 'icon'=>'odp'),
|
||||
'ods' => array ('type'=>'application/vnd.oasis.opendocument.spreadsheet', 'icon'=>'ods'),
|
||||
'ots' => array ('type'=>'application/vnd.oasis.opendocument.spreadsheet-template', 'icon'=>'ods'),
|
||||
'ods' => array ('type'=>'application/vnd.oasis.opendocument.spreadsheet', 'icon'=>'ods', 'groups'=>array('spreadsheet')),
|
||||
'ots' => array ('type'=>'application/vnd.oasis.opendocument.spreadsheet-template', 'icon'=>'ods', 'groups'=>array('spreadsheet')),
|
||||
'odc' => array ('type'=>'application/vnd.oasis.opendocument.chart', 'icon'=>'odc'),
|
||||
'odf' => array ('type'=>'application/vnd.oasis.opendocument.formula', 'icon'=>'odf'),
|
||||
'odb' => array ('type'=>'application/vnd.oasis.opendocument.database', 'icon'=>'odb'),
|
||||
'odi' => array ('type'=>'application/vnd.oasis.opendocument.image', 'icon'=>'odi'),
|
||||
'oga' => array ('type'=>'audio/ogg', 'icon'=>'audio'),
|
||||
'ogg' => array ('type'=>'audio/ogg', 'icon'=>'audio'),
|
||||
'ogv' => array ('type'=>'video/ogg', 'icon'=>'video'),
|
||||
'oga' => array ('type'=>'audio/ogg', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'ogg' => array ('type'=>'audio/ogg', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'ogv' => array ('type'=>'video/ogg', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
|
||||
'pct' => array ('type'=>'image/pict', 'icon'=>'image'),
|
||||
'pct' => array ('type'=>'image/pict', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'pdf' => array ('type'=>'application/pdf', 'icon'=>'pdf'),
|
||||
'php' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'pic' => array ('type'=>'image/pict', 'icon'=>'image'),
|
||||
'pict' => array ('type'=>'image/pict', 'icon'=>'image'),
|
||||
'png' => array ('type'=>'image/png', 'icon'=>'image'),
|
||||
'pic' => array ('type'=>'image/pict', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'pict' => array ('type'=>'image/pict', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'png' => array ('type'=>'image/png', 'icon'=>'image', 'groups'=>array('image', 'web_image'), 'string'=>'image'),
|
||||
|
||||
'pps' => array ('type'=>'application/vnd.ms-powerpoint', 'icon'=>'powerpoint'),
|
||||
'ppt' => array ('type'=>'application/vnd.ms-powerpoint', 'icon'=>'powerpoint'),
|
||||
'pps' => array ('type'=>'application/vnd.ms-powerpoint', 'icon'=>'powerpoint', 'groups'=>array('presentation')),
|
||||
'ppt' => array ('type'=>'application/vnd.ms-powerpoint', 'icon'=>'powerpoint', 'groups'=>array('presentation')),
|
||||
'pptx' => array ('type'=>'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'icon'=>'pptx'),
|
||||
'pptm' => array ('type'=>'application/vnd.ms-powerpoint.presentation.macroEnabled.12', 'icon'=>'pptm'),
|
||||
'potx' => array ('type'=>'application/vnd.openxmlformats-officedocument.presentationml.template', 'icon'=>'potx'),
|
||||
@ -1446,22 +1469,22 @@ function get_mimetypes_array() {
|
||||
'ppsm' => array ('type'=>'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', 'icon'=>'ppsm'),
|
||||
|
||||
'ps' => array ('type'=>'application/postscript', 'icon'=>'pdf'),
|
||||
'qt' => array ('type'=>'video/quicktime', 'icon'=>'video'),
|
||||
'ra' => array ('type'=>'audio/x-realaudio-plugin', 'icon'=>'audio'),
|
||||
'ram' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'audio'),
|
||||
'qt' => array ('type'=>'video/quicktime', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'ra' => array ('type'=>'audio/x-realaudio-plugin', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'ram' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'rhb' => array ('type'=>'text/xml', 'icon'=>'xml'),
|
||||
'rm' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'audio'),
|
||||
'rmvb' => array ('type'=>'application/vnd.rn-realmedia-vbr', 'icon'=>'video'),
|
||||
'rtf' => array ('type'=>'text/rtf', 'icon'=>'text'),
|
||||
'rm' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'rmvb' => array ('type'=>'application/vnd.rn-realmedia-vbr', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'rtf' => array ('type'=>'text/rtf', 'icon'=>'text', 'groups'=>array('document')),
|
||||
'rtx' => array ('type'=>'text/richtext', 'icon'=>'text'),
|
||||
'rv' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'video'),
|
||||
'rv' => array ('type'=>'audio/x-pn-realaudio-plugin', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'sh' => array ('type'=>'application/x-sh', 'icon'=>'text'),
|
||||
'sit' => array ('type'=>'application/x-stuffit', 'icon'=>'zip'),
|
||||
'sit' => array ('type'=>'application/x-stuffit', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'smi' => array ('type'=>'application/smil', 'icon'=>'text'),
|
||||
'smil' => array ('type'=>'application/smil', 'icon'=>'text'),
|
||||
'sqt' => array ('type'=>'text/xml', 'icon'=>'xml'),
|
||||
'svg' => array ('type'=>'image/svg+xml', 'icon'=>'image'),
|
||||
'svgz' => array ('type'=>'image/svg+xml', 'icon'=>'image'),
|
||||
'svg' => array ('type'=>'image/svg+xml', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'svgz' => array ('type'=>'image/svg+xml', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'swa' => array ('type'=>'application/x-director', 'icon'=>'flash'),
|
||||
'swf' => array ('type'=>'application/x-shockwave-flash', 'icon'=>'flash'),
|
||||
'swfl' => array ('type'=>'application/x-shockwave-flash', 'icon'=>'flash'),
|
||||
@ -1477,25 +1500,25 @@ function get_mimetypes_array() {
|
||||
'sxg' => array ('type'=>'application/vnd.sun.xml.writer.global', 'icon'=>'odt'),
|
||||
'sxm' => array ('type'=>'application/vnd.sun.xml.math', 'icon'=>'odt'),
|
||||
|
||||
'tar' => array ('type'=>'application/x-tar', 'icon'=>'zip'),
|
||||
'tif' => array ('type'=>'image/tiff', 'icon'=>'image'),
|
||||
'tiff' => array ('type'=>'image/tiff', 'icon'=>'image'),
|
||||
'tar' => array ('type'=>'application/x-tar', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive'),
|
||||
'tif' => array ('type'=>'image/tiff', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'tiff' => array ('type'=>'image/tiff', 'icon'=>'image', 'groups'=>array('image'), 'string'=>'image'),
|
||||
'tex' => array ('type'=>'application/x-tex', 'icon'=>'text'),
|
||||
'texi' => array ('type'=>'application/x-texinfo', 'icon'=>'text'),
|
||||
'texinfo' => array ('type'=>'application/x-texinfo', 'icon'=>'text'),
|
||||
'tsv' => array ('type'=>'text/tab-separated-values', 'icon'=>'text'),
|
||||
'txt' => array ('type'=>'text/plain', 'icon'=>'text'),
|
||||
'wav' => array ('type'=>'audio/wav', 'icon'=>'audio'),
|
||||
'webm' => array ('type'=>'video/webm', 'icon'=>'video'),
|
||||
'wmv' => array ('type'=>'video/x-ms-wmv', 'icon'=>'avi'),
|
||||
'asf' => array ('type'=>'video/x-ms-asf', 'icon'=>'avi'),
|
||||
'txt' => array ('type'=>'text/plain', 'icon'=>'text', 'defaulticon'=>true),
|
||||
'wav' => array ('type'=>'audio/wav', 'icon'=>'audio', 'groups'=>array('audio'), 'string'=>'audio'),
|
||||
'webm' => array ('type'=>'video/webm', 'icon'=>'video', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'wmv' => array ('type'=>'video/x-ms-wmv', 'icon'=>'avi', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'asf' => array ('type'=>'video/x-ms-asf', 'icon'=>'avi', 'groups'=>array('video'), 'string'=>'video'),
|
||||
'xdp' => array ('type'=>'application/pdf', 'icon'=>'pdf'),
|
||||
'xfd' => array ('type'=>'application/pdf', 'icon'=>'pdf'),
|
||||
'xfdf' => array ('type'=>'application/pdf', 'icon'=>'pdf'),
|
||||
|
||||
'xls' => array ('type'=>'application/vnd.ms-excel', 'icon'=>'excel'),
|
||||
'xls' => array ('type'=>'application/vnd.ms-excel', 'icon'=>'excel', 'groups'=>array('spreadsheet')),
|
||||
'xlsx' => array ('type'=>'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'icon'=>'xlsx'),
|
||||
'xlsm' => array ('type'=>'application/vnd.ms-excel.sheet.macroEnabled.12', 'icon'=>'xlsm'),
|
||||
'xlsm' => array ('type'=>'application/vnd.ms-excel.sheet.macroEnabled.12', 'icon'=>'xlsm', 'groups'=>array('spreadsheet')),
|
||||
'xltx' => array ('type'=>'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'icon'=>'xltx'),
|
||||
'xltm' => array ('type'=>'application/vnd.ms-excel.template.macroEnabled.12', 'icon'=>'xltm'),
|
||||
'xlsb' => array ('type'=>'application/vnd.ms-excel.sheet.binary.macroEnabled.12', 'icon'=>'xlsb'),
|
||||
@ -1503,7 +1526,7 @@ function get_mimetypes_array() {
|
||||
|
||||
'xml' => array ('type'=>'application/xml', 'icon'=>'xml'),
|
||||
'xsl' => array ('type'=>'text/xml', 'icon'=>'xml'),
|
||||
'zip' => array ('type'=>'application/zip', 'icon'=>'zip')
|
||||
'zip' => array ('type'=>'application/zip', 'icon'=>'zip', 'groups'=>array('archive'), 'string'=>'archive')
|
||||
);
|
||||
return $mimearray;
|
||||
}
|
||||
@ -1515,39 +1538,41 @@ function get_mimetypes_array() {
|
||||
*
|
||||
* @category files
|
||||
* @param string $element Desired information (usually 'icon'
|
||||
* for icon filename or 'type' for MIME type)
|
||||
* for icon filename or 'type' for MIME type. Can also be
|
||||
* 'icon24', ...32, 48, 64, 72, 80, 96, 128, 256)
|
||||
* @param string $filename Filename we're looking up
|
||||
* @return string Requested piece of information from array
|
||||
*/
|
||||
function mimeinfo($element, $filename) {
|
||||
global $CFG;
|
||||
$mimeinfo = get_mimetypes_array();
|
||||
$mimeinfo = & get_mimetypes_array();
|
||||
static $iconpostfixes = array(256=>'-256', 128=>'-128', 96=>'-96', 80=>'-80', 72=>'-72', 64=>'-64', 48=>'-48', 32=>'-32', 24=>'-24', 16=>'');
|
||||
|
||||
if (preg_match('/\.([a-z0-9]+)$/i', $filename, $match)) {
|
||||
if (isset($mimeinfo[strtolower($match[1])][$element])) {
|
||||
return $mimeinfo[strtolower($match[1])][$element];
|
||||
} else {
|
||||
if ($element == 'icon32') {
|
||||
if (isset($mimeinfo[strtolower($match[1])]['icon'])) {
|
||||
$filename = $mimeinfo[strtolower($match[1])]['icon'];
|
||||
} else {
|
||||
$filename = 'unknown';
|
||||
$filetype = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
|
||||
if (empty($filetype)) {
|
||||
$filetype = 'xxx'; // file without extension
|
||||
}
|
||||
if (preg_match('/^icon(\d*)$/', $element, $iconsizematch)) {
|
||||
$iconsize = max(array(16, (int)$iconsizematch[1]));
|
||||
$filenames = array($mimeinfo['xxx']['icon']);
|
||||
if ($filetype != 'xxx' && isset($mimeinfo[$filetype]['icon'])) {
|
||||
array_unshift($filenames, $mimeinfo[$filetype]['icon']);
|
||||
}
|
||||
// find the file with the closest size, first search for specific icon then for default icon
|
||||
foreach ($filenames as $filename) {
|
||||
foreach ($iconpostfixes as $size => $postfix) {
|
||||
$fullname = $CFG->dirroot.'/pix/f/'.$filename.$postfix;
|
||||
if ($iconsize >= $size && (file_exists($fullname.'.png') || file_exists($fullname.'.gif'))) {
|
||||
return $filename.$postfix;
|
||||
}
|
||||
$filename .= '-32';
|
||||
if (file_exists($CFG->dirroot.'/pix/f/'.$filename.'.png') or file_exists($CFG->dirroot.'/pix/f/'.$filename.'.gif')) {
|
||||
return $filename;
|
||||
} else {
|
||||
return 'unknown-32';
|
||||
}
|
||||
} else {
|
||||
return $mimeinfo['xxx'][$element]; // By default
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ($element == 'icon32') {
|
||||
return 'unknown-32';
|
||||
}
|
||||
} else if (isset($mimeinfo[$filetype][$element])) {
|
||||
return $mimeinfo[$filetype][$element];
|
||||
} else if (isset($mimeinfo['xxx'][$element])) {
|
||||
return $mimeinfo['xxx'][$element]; // By default
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1556,66 +1581,115 @@ function mimeinfo($element, $filename) {
|
||||
* the other way around.
|
||||
*
|
||||
* @category files
|
||||
* @param string $element Desired information (usually 'icon')
|
||||
* @param string $element Desired information ('extension', 'icon', 'icon-24', etc.)
|
||||
* @param string $mimetype MIME type we're looking up
|
||||
* @return string Requested piece of information from array
|
||||
*/
|
||||
function mimeinfo_from_type($element, $mimetype) {
|
||||
$mimeinfo = get_mimetypes_array();
|
||||
/* array of cached mimetype->extension associations */
|
||||
static $cached = array();
|
||||
$mimeinfo = & get_mimetypes_array();
|
||||
|
||||
foreach($mimeinfo as $values) {
|
||||
if ($values['type']==$mimetype) {
|
||||
if (isset($values[$element])) {
|
||||
return $values[$element];
|
||||
if (!array_key_exists($mimetype, $cached)) {
|
||||
$cached[$mimetype] = null;
|
||||
foreach($mimeinfo as $filetype => $values) {
|
||||
if ($values['type'] == $mimetype) {
|
||||
if ($cached[$mimetype] === null) {
|
||||
$cached[$mimetype] = $filetype;
|
||||
}
|
||||
if (!empty($values['defaulticon'])) {
|
||||
$cached[$mimetype] = $filetype;
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $mimeinfo['xxx'][$element]; // Default
|
||||
if ($cached[$mimetype] !== null && $cached[$mimetype] !== 'xxx') {
|
||||
if ($element = 'extension') {
|
||||
return $cached[$mimetype];
|
||||
} else {
|
||||
return mimeinfo($element, '.'.$cached[$mimetype]);
|
||||
}
|
||||
} else {
|
||||
return mimeinfo($element, '');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about a filetype based on the icon file.
|
||||
* Return the relative icon path for a given file
|
||||
*
|
||||
* @category files
|
||||
* @param string $element Desired information (usually 'icon')
|
||||
* @param string $icon Icon file name without extension
|
||||
* @param bool $all return all matching entries (defaults to false - best (by ext)/last match)
|
||||
* @return string Requested piece of information from array
|
||||
* Usage:
|
||||
* <code>
|
||||
* // $file - instance of stored_file or file_info
|
||||
* $icon = $OUTPUT->pix_url(file_file_icon($file))->out();
|
||||
* echo html_writer::empty_tag('img', array('src' => $icon, 'alt' => get_mimetype_description($file)));
|
||||
* </code>
|
||||
* or
|
||||
* <code>
|
||||
* echo $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file));
|
||||
* </code>
|
||||
*
|
||||
* @param stored_file|file_info|stdClass|array $file (in case of object attributes $file->filename
|
||||
* and $file->mimetype are expected)
|
||||
* @param int $size The size of the icon. Defaults to 16 can also be 24, 32, 64, 128, 256
|
||||
* @return string
|
||||
*/
|
||||
function mimeinfo_from_icon($element, $icon, $all=false) {
|
||||
$mimeinfo = get_mimetypes_array();
|
||||
function file_file_icon($file, $size = null) {
|
||||
if (!is_object($file)) {
|
||||
$file = (object)$file;
|
||||
}
|
||||
if (isset($file->filename)) {
|
||||
$filename = $file->filename;
|
||||
} else if (method_exists($file, 'get_filename')) {
|
||||
$filename = $file->get_filename();
|
||||
} else if (method_exists($file, 'get_visible_name')) {
|
||||
$filename = $file->get_visible_name();
|
||||
} else {
|
||||
$filename = '';
|
||||
}
|
||||
if (isset($file->mimetype)) {
|
||||
$mimetype = $file->mimetype;
|
||||
} else if (method_exists($file, 'get_mimetype')) {
|
||||
$mimetype = $file->get_mimetype();
|
||||
} else {
|
||||
$mimetype = '';
|
||||
}
|
||||
if ($filename && pathinfo($filename, PATHINFO_EXTENSION) &&
|
||||
(!$mimetype || mimeinfo('type', $filename) === $mimetype)) {
|
||||
// files with different extensions sharing the same mimetype (i.e. 'text/plain') may have different icons
|
||||
return file_extension_icon($filename, $size);
|
||||
} else {
|
||||
// if mimetype and extension do not match we assume that mimetype is more correct
|
||||
return file_mimetype_icon($mimetype, $size);
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match("/\/(.*)/", $icon, $matches)) {
|
||||
$icon = $matches[1];
|
||||
}
|
||||
// Try to get the extension
|
||||
$extension = '';
|
||||
if (($cutat = strrpos($icon, '.')) !== false && $cutat < strlen($icon)-1) {
|
||||
$extension = substr($icon, $cutat + 1);
|
||||
}
|
||||
$info = array($mimeinfo['xxx'][$element]); // Default
|
||||
foreach($mimeinfo as $key => $values) {
|
||||
if ($values['icon']==$icon) {
|
||||
if (isset($values[$element])) {
|
||||
$info[$key] = $values[$element];
|
||||
}
|
||||
//No break, for example for 'excel' we don't want 'csv'!
|
||||
/**
|
||||
* Return the relative icon path for a folder image
|
||||
*
|
||||
* Usage:
|
||||
* <code>
|
||||
* $icon = $OUTPUT->pix_url(file_folder_icon())->out();
|
||||
* echo html_writer::empty_tag('img', array('src' => $icon));
|
||||
* </code>
|
||||
* or
|
||||
* <code>
|
||||
* echo $OUTPUT->pix_icon(file_folder_icon(32));
|
||||
* </code>
|
||||
*
|
||||
* @param int $iconsize The size of the icon. Defaults to 16 can also be 24, 32, 48, 64, 72, 80, 96, 128, 256
|
||||
* @return string
|
||||
*/
|
||||
function file_folder_icon($iconsize = null) {
|
||||
global $CFG;
|
||||
static $iconpostfixes = array(256=>'-256', 128=>'-128', 96=>'-96', 80=>'-80', 72=>'-72', 64=>'-64', 48=>'-48', 32=>'-32', 24=>'-24', 16=>'');
|
||||
$iconsize = max(array(16, (int)$iconsize));
|
||||
foreach ($iconpostfixes as $size => $postfix) {
|
||||
$fullname = $CFG->dirroot.'/pix/f/folder'.$postfix;
|
||||
if ($iconsize >= $size && (file_exists($fullname.'.png') || file_exists($fullname.'.gif'))) {
|
||||
return 'f/folder'.$postfix;
|
||||
}
|
||||
}
|
||||
if ($all) {
|
||||
if (count($info) > 1) {
|
||||
array_shift($info); // take off document/unknown if we have better options
|
||||
}
|
||||
return array_values($info); // Keep keys out when requesting all
|
||||
}
|
||||
|
||||
// Requested only one, try to get the best by extension coincidence, else return the last
|
||||
if ($extension && isset($info[$extension])) {
|
||||
return $info[$extension];
|
||||
}
|
||||
|
||||
return array_pop($info); // Return last match (mimicking behaviour/comment inside foreach loop)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1626,27 +1700,19 @@ function mimeinfo_from_icon($element, $icon, $all=false) {
|
||||
*
|
||||
* <code>
|
||||
* $mimetype = 'image/jpg';
|
||||
* $icon = $OUTPUT->pix_url(file_mimetype_icon($mimetype));
|
||||
* echo '<img src="'.$icon.'" alt="'.$mimetype.'" />';
|
||||
* $icon = $OUTPUT->pix_url(file_mimetype_icon($mimetype))->out();
|
||||
* echo html_writer::empty_tag('img', array('src' => $icon, 'alt' => get_mimetype_description($mimetype)));
|
||||
* </code>
|
||||
*
|
||||
* @category files
|
||||
* @todo MDL-31074 When an $OUTPUT->icon method is available this function should be altered
|
||||
* to conform with that.
|
||||
* @param string $mimetype The mimetype to fetch an icon for
|
||||
* @param int $size The size of the icon. Not yet implemented
|
||||
* @param int $size The size of the icon. Defaults to 16 can also be 24, 32, 64, 128, 256
|
||||
* @return string The relative path to the icon
|
||||
*/
|
||||
function file_mimetype_icon($mimetype, $size = NULL) {
|
||||
global $CFG;
|
||||
|
||||
$icon = mimeinfo_from_type('icon', $mimetype);
|
||||
if ($size) {
|
||||
if (file_exists("$CFG->dirroot/pix/f/$icon-$size.png") or file_exists("$CFG->dirroot/pix/f/$icon-$size.gif")) {
|
||||
$icon = "$icon-$size";
|
||||
}
|
||||
}
|
||||
return 'f/'.$icon;
|
||||
return 'f/'.mimeinfo_from_type('icon'.$size, $mimetype);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1656,9 +1722,9 @@ function file_mimetype_icon($mimetype, $size = NULL) {
|
||||
* a return the full path to an icon.
|
||||
*
|
||||
* <code>
|
||||
* $filename = 'jpg';
|
||||
* $icon = $OUTPUT->pix_url(file_extension_icon($filename));
|
||||
* echo '<img src="'.$icon.'" alt="blah" />';
|
||||
* $filename = '.jpg';
|
||||
* $icon = $OUTPUT->pix_url(file_extension_icon($filename))->out();
|
||||
* echo html_writer::empty_tag('img', array('src' => $icon, 'alt' => '...'));
|
||||
* </code>
|
||||
*
|
||||
* @todo MDL-31074 When an $OUTPUT->icon method is available this function should be altered
|
||||
@ -1666,34 +1732,77 @@ function file_mimetype_icon($mimetype, $size = NULL) {
|
||||
* @todo MDL-31074 Implement $size
|
||||
* @category files
|
||||
* @param string $filename The filename to get the icon for
|
||||
* @param int $size The size of the icon. Defaults to null can also be 32
|
||||
* @param int $size The size of the icon. Defaults to 16 can also be 24, 32, 64, 128, 256
|
||||
* @return string
|
||||
*/
|
||||
function file_extension_icon($filename, $size = NULL) {
|
||||
global $CFG;
|
||||
|
||||
$icon = mimeinfo('icon', $filename);
|
||||
if ($size) {
|
||||
if (file_exists("$CFG->dirroot/pix/f/$icon-$size.png") or file_exists("$CFG->dirroot/pix/f/$icon-$size.gif")) {
|
||||
$icon = "$icon-$size";
|
||||
}
|
||||
}
|
||||
return 'f/'.$icon;
|
||||
return 'f/'.mimeinfo('icon'.$size, $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains descriptions for file types (e.g. 'Microsoft Word document') from the
|
||||
* mimetypes.php language file.
|
||||
*
|
||||
* @param string $mimetype MIME type (can be obtained using the mimeinfo function)
|
||||
* @param mixed $obj - instance of stored_file or file_info or array/stdClass with field
|
||||
* 'filename' and 'mimetype', or just a string with mimetype (though it is recommended to
|
||||
* have filename); In case of array/stdClass the field 'mimetype' is optional.
|
||||
* @param bool $capitalise If true, capitalises first character of result
|
||||
* @return string Text description
|
||||
*/
|
||||
function get_mimetype_description($mimetype, $capitalise=false) {
|
||||
if (get_string_manager()->string_exists($mimetype, 'mimetypes')) {
|
||||
$result = get_string($mimetype, 'mimetypes');
|
||||
function get_mimetype_description($obj, $capitalise=false) {
|
||||
if (is_object($obj) && method_exists($obj, 'get_filename') && method_exists($obj, 'get_mimetype')) {
|
||||
// this is an instance of stored_file
|
||||
$mimetype = $obj->get_mimetype();
|
||||
$filename = $obj->get_filename();
|
||||
} else if (is_object($obj) && method_exists($obj, 'get_visible_name') && method_exists($obj, 'get_mimetype')) {
|
||||
// this is an instance of file_info
|
||||
$mimetype = $obj->get_mimetype();
|
||||
$filename = $obj->get_visible_name();
|
||||
} else if (is_array($obj) || is_object ($obj)) {
|
||||
$obj = (array)$obj;
|
||||
if (!empty($obj['filename'])) {
|
||||
$filename = $obj['filename'];
|
||||
} else {
|
||||
$filename = '';
|
||||
}
|
||||
if (!empty($obj['mimetype'])) {
|
||||
$mimetype = $obj['mimetype'];
|
||||
} else {
|
||||
$mimetype = mimeinfo('type', $filename);
|
||||
}
|
||||
} else {
|
||||
$result = get_string('document/unknown','mimetypes');
|
||||
$mimetype = $obj;
|
||||
$filename = '';
|
||||
}
|
||||
$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
|
||||
if (empty($extension)) {
|
||||
$mimetypestr = mimeinfo_from_type('string', $mimetype);
|
||||
$extension = mimeinfo_from_type('extension', $mimetype);
|
||||
} else {
|
||||
$mimetypestr = mimeinfo('string', $filename);
|
||||
}
|
||||
$chunks = explode('/', $mimetype, 2);
|
||||
$chunks[] = '';
|
||||
$attr = array(
|
||||
'mimetype' => $mimetype,
|
||||
'ext' => $extension,
|
||||
'mimetype1' => $chunks[0],
|
||||
'mimetype2' => $chunks[1],
|
||||
);
|
||||
$a = array();
|
||||
foreach ($attr as $key => $value) {
|
||||
$a[$key] = $value;
|
||||
$a[strtoupper($key)] = strtoupper($value);
|
||||
$a[ucfirst($key)] = ucfirst($value);
|
||||
}
|
||||
if (get_string_manager()->string_exists($mimetype, 'mimetypes')) {
|
||||
$result = get_string($mimetype, 'mimetypes', (object)$a);
|
||||
} else if (get_string_manager()->string_exists($mimetypestr, 'mimetypes')) {
|
||||
$result = get_string($mimetypestr, 'mimetypes', (object)$a);
|
||||
} else if (get_string_manager()->string_exists('default', 'mimetypes')) {
|
||||
$result = get_string('default', 'mimetypes', (object)$a);
|
||||
} else {
|
||||
$result = $mimetype;
|
||||
}
|
||||
if ($capitalise) {
|
||||
$result=ucfirst($result);
|
||||
@ -1701,6 +1810,74 @@ function get_mimetype_description($mimetype, $capitalise=false) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns array of elements of type $element in type group(s)
|
||||
*
|
||||
* @param string $element name of the element we are interested in, usually 'type' or 'extension'
|
||||
* @param string|array $groups one group or array of groups/extensions/mimetypes
|
||||
* @return array
|
||||
*/
|
||||
function file_get_typegroup($element, $groups) {
|
||||
static $cached = array();
|
||||
if (!is_array($groups)) {
|
||||
$groups = array($groups);
|
||||
}
|
||||
if (!array_key_exists($element, $cached)) {
|
||||
$cached[$element] = array();
|
||||
}
|
||||
$result = array();
|
||||
foreach ($groups as $group) {
|
||||
if (!array_key_exists($group, $cached[$element])) {
|
||||
// retrieive and cache all elements of type $element for group $group
|
||||
$mimeinfo = & get_mimetypes_array();
|
||||
$cached[$element][$group] = array();
|
||||
foreach ($mimeinfo as $extension => $value) {
|
||||
$value['extension'] = $extension;
|
||||
if (empty($value[$element])) {
|
||||
continue;
|
||||
}
|
||||
if (($group === $extension || $group === $value['type'] ||
|
||||
(!empty($value['groups']) && in_array($group, $value['groups']))) &&
|
||||
!in_array($value[$element], $cached[$element][$group])) {
|
||||
$cached[$element][$group][] = $value[$element];
|
||||
}
|
||||
}
|
||||
}
|
||||
$result = array_merge($result, $cached[$element][$group]);
|
||||
}
|
||||
return array_unique($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if file with name $filename has one of the extensions in groups $groups
|
||||
*
|
||||
* @see get_mimetypes_array()
|
||||
* @param string $filename name of the file to check
|
||||
* @param string|array $groups one group or array of groups to check
|
||||
* @param bool $checktype if true and extension check fails, find the mimetype and check if
|
||||
* file mimetype is in mimetypes in groups $groups
|
||||
* @return bool
|
||||
*/
|
||||
function file_extension_in_typegroup($filename, $groups, $checktype = false) {
|
||||
$extension = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
if (!empty($extension) && in_array(strtolower($extension), file_get_typegroup('extension', $groups))) {
|
||||
return true;
|
||||
}
|
||||
return $checktype && file_mimetype_in_typegroup(mimeinfo('type', $filename), $groups);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if mimetype $mimetype belongs to one of the groups $groups
|
||||
*
|
||||
* @see get_mimetypes_array()
|
||||
* @param string $mimetype
|
||||
* @param string|array $groups one group or array of groups to check
|
||||
* @return bool
|
||||
*/
|
||||
function file_mimetype_in_typegroup($mimetype, $groups) {
|
||||
return !empty($mimetype) && in_array($mimetype, file_get_typegroup('type', $groups));
|
||||
}
|
||||
|
||||
/**
|
||||
* Requested file is not found or not accessible, does not return, terminates script
|
||||
*
|
||||
@ -3165,109 +3342,6 @@ class curl_cache {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This class is used to parse lib/file/file_types.mm which help get file extensions by file types.
|
||||
*
|
||||
* The file_types.mm file can be edited by freemind in graphic environment.
|
||||
*
|
||||
* @package core_files
|
||||
* @category files
|
||||
* @copyright 2009 Dongsheng Cai <dongsheng@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class filetype_parser {
|
||||
/**
|
||||
* Check file_types.mm file, setup variables
|
||||
*
|
||||
* @global stdClass $CFG
|
||||
* @param string $file
|
||||
*/
|
||||
public function __construct($file = '') {
|
||||
global $CFG;
|
||||
if (empty($file)) {
|
||||
$this->file = $CFG->libdir.'/filestorage/file_types.mm';
|
||||
} else {
|
||||
$this->file = $file;
|
||||
}
|
||||
$this->tree = array();
|
||||
$this->result = array();
|
||||
}
|
||||
|
||||
/**
|
||||
* A private function to browse xml nodes
|
||||
*
|
||||
* @param array $parent
|
||||
* @param array $types
|
||||
*/
|
||||
private function _browse_nodes($parent, $types) {
|
||||
$key = (string)$parent['TEXT'];
|
||||
if(isset($parent->node)) {
|
||||
$this->tree[$key] = array();
|
||||
if (in_array((string)$parent['TEXT'], $types)) {
|
||||
$this->_select_nodes($parent, $this->result);
|
||||
} else {
|
||||
foreach($parent->node as $v){
|
||||
$this->_browse_nodes($v, $types);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->tree[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A private function to select text nodes
|
||||
*
|
||||
* @param array $parent
|
||||
*/
|
||||
private function _select_nodes($parent){
|
||||
if(isset($parent->node)) {
|
||||
foreach($parent->node as $v){
|
||||
$this->_select_nodes($v, $this->result);
|
||||
}
|
||||
} else {
|
||||
$this->result[] = (string)$parent['TEXT'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get file extensions by file types names.
|
||||
*
|
||||
* @param array $types
|
||||
* @return mixed
|
||||
*/
|
||||
public function get_extensions($types) {
|
||||
if (!is_array($types)) {
|
||||
$types = array($types);
|
||||
}
|
||||
$this->result = array();
|
||||
if ((is_array($types) && in_array('*', $types)) ||
|
||||
$types == '*' || empty($types)) {
|
||||
return array('*');
|
||||
}
|
||||
foreach ($types as $key=>$value){
|
||||
if (strpos($value, '.') !== false) {
|
||||
$this->result[] = $value;
|
||||
unset($types[$key]);
|
||||
}
|
||||
}
|
||||
if (file_exists($this->file)) {
|
||||
$xml = simplexml_load_file($this->file);
|
||||
foreach($xml->node->node as $v){
|
||||
if (in_array((string)$v['TEXT'], $types)) {
|
||||
$this->_select_nodes($v);
|
||||
} else {
|
||||
$this->_browse_nodes($v, $types);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
exit('Failed to open file lib/filestorage/file_types.mm');
|
||||
}
|
||||
return $this->result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function delegates file serving to individual plugins
|
||||
*
|
||||
|
@ -1,112 +0,0 @@
|
||||
<map version="0.7.1">
|
||||
<node ID="_Freemind_Link_1016958583" TEXT="Root">
|
||||
<node TEXT="image" POSITION="right">
|
||||
<node TEXT="web_image">
|
||||
<node ID="_Freemind_Link_750128103" TEXT=".jpg"/>
|
||||
<node ID="_Freemind_Link_1840944189" TEXT=".png"/>
|
||||
<node ID="_Freemind_Link_1710862996" TEXT=".gif"/>
|
||||
</node>
|
||||
<node TEXT="non_web_image">
|
||||
<node ID="_Freemind_Link_481322493" TEXT=".bmp"/>
|
||||
<node ID="_Freemind_Link_1948466853" TEXT=".svg"/>
|
||||
<node ID="_Freemind_Link_82277447" TEXT=".psd"/>
|
||||
</node>
|
||||
</node>
|
||||
<node TEXT="audio" POSITION="left">
|
||||
<node ID="_Freemind_Link_606456130" TEXT="web_audio">
|
||||
<node ID="_Freemind_Link_59286792" TEXT=".wav"/>
|
||||
<node ID="_Freemind_Link_618796935" TEXT=".mp3"/>
|
||||
<node ID="_Freemind_Link_313976796" TEXT=".ra"/>
|
||||
<node ID="_Freemind_Link_709595453" TEXT=".wma"/>
|
||||
<node TEXT=".ogg"/>
|
||||
<node ID="ID_421461117" TEXT=".aac"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_1800832653" TEXT="non_web_audio">
|
||||
<node ID="_Freemind_Link_1772266185" TEXT=".ape"/>
|
||||
<node ID="_Freemind_Link_964578090" TEXT=".au"/>
|
||||
<node ID="_Freemind_Link_1295244579" TEXT=".mid"/>
|
||||
</node>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_70165685" TEXT="video" POSITION="right">
|
||||
<node ID="_Freemind_Link_164412832" TEXT="web_video">
|
||||
<node ID="_Freemind_Link_1674188247" TEXT=".flv"/>
|
||||
<node ID="_Freemind_Link_1109951130" TEXT=".swf"/>
|
||||
<node ID="_Freemind_Link_441200481" TEXT=".mov"/>
|
||||
<node ID="_Freemind_Link_1073677924" TEXT=".rm"/>
|
||||
<node ID="_Freemind_Link_810187762" TEXT=".wmv"/>
|
||||
<node ID="_Freemind_Link_763870397" TEXT=".asf"/>
|
||||
<node TEXT=".ogv"/>
|
||||
<node TEXT=".f4v"/>
|
||||
<node TEXT=".m4v"/>
|
||||
<node TEXT=".webm"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_1019644700" TEXT="non_web_video">
|
||||
<node ID="_Freemind_Link_190589975" TEXT=".avi"/>
|
||||
<node ID="_Freemind_Link_1728963308" TEXT=".mpg"/>
|
||||
<node ID="_Freemind_Link_761274675" TEXT=".mp4"/>
|
||||
</node>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_1159259702" TEXT="document" POSITION="left">
|
||||
<node ID="_Freemind_Link_395227081" TEXT="msoffice">
|
||||
<node ID="_Freemind_Link_1480546733" TEXT=".doc"/>
|
||||
<node ID="_Freemind_Link_983591781" TEXT=".ppt"/>
|
||||
<node ID="_Freemind_Link_922920573" TEXT=".xls"/>
|
||||
</node>
|
||||
<node TEXT="openoffice">
|
||||
<node ID="_Freemind_Link_368708997" TEXT=".odt"/>
|
||||
<node ID="_Freemind_Link_725490871" TEXT=".odp"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_1253224142" TEXT="other">
|
||||
<node ID="_Freemind_Link_1202332406" TEXT=".pdf"/>
|
||||
<node ID="_Freemind_Link_1229438606" TEXT=".ps"/>
|
||||
</node>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_525709024" TEXT="text" POSITION="right">
|
||||
<node ID="_Freemind_Link_1252355401" TEXT="source">
|
||||
<node ID="_Freemind_Link_1783454794" TEXT=".c"/>
|
||||
<node ID="_Freemind_Link_603295666" TEXT=".cpp"/>
|
||||
<node ID="_Freemind_Link_1939719884" TEXT=".java"/>
|
||||
</node>
|
||||
<node TEXT="script">
|
||||
<node ID="_Freemind_Link_567551283" TEXT=".php"/>
|
||||
<node ID="_Freemind_Link_829963573" TEXT=".py"/>
|
||||
<node ID="_Freemind_Link_699741325" TEXT=".lua"/>
|
||||
<node ID="_Freemind_Link_841176112" TEXT=".rb"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_466282865" TEXT="markup">
|
||||
<node ID="_Freemind_Link_776860364" TEXT=".xml"/>
|
||||
<node ID="_Freemind_Link_428374654" TEXT=".html"/>
|
||||
<node ID="_Freemind_Link_1636201602" TEXT=".xhtml"/>
|
||||
</node>
|
||||
<node TEXT="plaintext">
|
||||
<node ID="_Freemind_Link_304679617" TEXT=".txt"/>
|
||||
<node ID="_Freemind_Link_988584709" TEXT=".log"/>
|
||||
<node ID="_Freemind_Link_778232964" TEXT=".csv"/>
|
||||
</node>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_329759178" TEXT="moodle" POSITION="left">
|
||||
<node ID="_Freemind_Link_864349088" TEXT=".mb.zip"/>
|
||||
<node ID="_Freemind_Link_1509389480" TEXT=".ld.zip"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_907467024" TEXT="archive" POSITION="right">
|
||||
<node ID="_Freemind_Link_637157755" TEXT=".rar"/>
|
||||
<node ID="_Freemind_Link_628673054" TEXT=".cab"/>
|
||||
<node ID="_Freemind_Link_1141513740" TEXT=".iso"/>
|
||||
<node ID="_Freemind_Link_1269400334" TEXT=".img"/>
|
||||
<node ID="_Freemind_Link_1973736841" TEXT=".tar.gz"/>
|
||||
<node ID="_Freemind_Link_1525022758" TEXT=".zip"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_1332471247" TEXT="application" POSITION="left">
|
||||
<node TEXT="windows">
|
||||
<node ID="_Freemind_Link_1154060414" TEXT=".exe"/>
|
||||
<node ID="_Freemind_Link_1578063867" TEXT=".dll"/>
|
||||
</node>
|
||||
<node TEXT="linux">
|
||||
<node ID="_Freemind_Link_68848485" TEXT=".bin"/>
|
||||
</node>
|
||||
<node ID="_Freemind_Link_317684862" TEXT="mac">
|
||||
<node ID="_" TEXT=".app"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</map>
|
@ -25,7 +25,6 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once("$CFG->libdir/filestorage/stored_file.php");
|
||||
require_once("$CFG->dirroot/repository/lib.php");
|
||||
|
||||
/**
|
||||
@ -444,7 +443,7 @@ class stored_file {
|
||||
*/
|
||||
public function is_valid_image() {
|
||||
$mimetype = $this->get_mimetype();
|
||||
if ($mimetype !== 'image/gif' and $mimetype !== 'image/jpeg' and $mimetype !== 'image/png') {
|
||||
if (!file_mimetype_in_typegroup($mimetype, 'web_image')) {
|
||||
return false;
|
||||
}
|
||||
if (!$info = $this->get_imageinfo()) {
|
||||
|
@ -198,7 +198,7 @@ class portfolio_format_image extends portfolio_format_file {
|
||||
* @return string
|
||||
*/
|
||||
public static function mimetypes() {
|
||||
return mimeinfo_from_icon('type', 'image', true);
|
||||
return file_get_typegroup('type', 'image');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -286,10 +286,7 @@ class portfolio_format_video extends portfolio_format_file {
|
||||
* @return array
|
||||
*/
|
||||
public static function mimetypes() {
|
||||
return array_merge(
|
||||
mimeinfo_from_icon('type', 'video', true),
|
||||
mimeinfo_from_icon('type', 'avi', true)
|
||||
);
|
||||
return file_get_typegroup('type', 'video');
|
||||
}
|
||||
}
|
||||
|
||||
@ -561,12 +558,7 @@ class portfolio_format_document extends portfolio_format_file {
|
||||
* @return array of documents mimetypes
|
||||
*/
|
||||
public static function mimetypes() {
|
||||
return array_merge(
|
||||
array('text/plain', 'text/rtf'),
|
||||
mimeinfo_from_icon('type', 'word', true),
|
||||
mimeinfo_from_icon('type', 'docx', true),
|
||||
mimeinfo_from_icon('type', 'odt', true)
|
||||
);
|
||||
return file_get_typegroup('type', 'document');
|
||||
}
|
||||
}
|
||||
|
||||
@ -588,11 +580,7 @@ class portfolio_format_spreadsheet extends portfolio_format_file {
|
||||
* @return array of documents mimetypes
|
||||
*/
|
||||
public static function mimetypes() {
|
||||
return array_merge(
|
||||
mimeinfo_from_icon('type', 'excel', true),
|
||||
mimeinfo_from_icon('type', 'xlsm', true),
|
||||
mimeinfo_from_icon('type', 'ods', true)
|
||||
);
|
||||
return file_get_typegroup('type', 'spreadsheet');
|
||||
}
|
||||
}
|
||||
|
||||
@ -614,6 +602,6 @@ class portfolio_format_presentation extends portfolio_format_file {
|
||||
* @return array presentation document mimetypes
|
||||
*/
|
||||
public static function mimetypes() {
|
||||
return mimeinfo_from_icon('type', 'powerpoint', true);
|
||||
return file_get_typegroup('type', 'presentation');
|
||||
}
|
||||
}
|
||||
|
@ -579,20 +579,19 @@ class mod_assign_renderer extends plugin_renderer_base {
|
||||
|
||||
$result = '<ul>';
|
||||
foreach ($dir['subdirs'] as $subdir) {
|
||||
$image = $this->output->pix_icon("f/folder", $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_folder_icon(), $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.s($subdir['dirname']).'</div> '.$this->htmllize_tree($tree, $subdir).'</li>';
|
||||
}
|
||||
|
||||
foreach ($dir['files'] as $file) {
|
||||
$filename = $file->get_filename();
|
||||
$icon = mimeinfo("icon", $filename);
|
||||
if ($CFG->enableplagiarism) {
|
||||
require_once($CFG->libdir.'/plagiarismlib.php');
|
||||
$plagiarsmlinks = plagiarism_get_links(array('userid'=>$file->get_userid(), 'file'=>$file, 'cmid'=>$tree->cm->id, 'course'=>$tree->course));
|
||||
} else {
|
||||
$plagiarsmlinks = '';
|
||||
}
|
||||
$image = $this->output->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_file_icon($file), $filename, 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.$file->fileurl.' '.$plagiarsmlinks.$file->portfoliobutton.'</div></li>';
|
||||
}
|
||||
|
||||
|
@ -2118,7 +2118,7 @@ class assignment_base {
|
||||
$filename = $file->get_filename();
|
||||
$mimetype = $file->get_mimetype();
|
||||
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename);
|
||||
$output .= '<a href="'.$path.'" ><img src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" class="icon" alt="'.$mimetype.'" />'.s($filename).'</a>';
|
||||
$output .= '<a href="'.$path.'" >'.$OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon')).s($filename).'</a>';
|
||||
if ($CFG->enableportfolios && $this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) {
|
||||
$button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'submissionid' => $submission->id, 'fileid' => $file->get_id()), '/mod/assignment/locallib.php');
|
||||
$button->set_format_by_file($file);
|
||||
|
@ -59,20 +59,19 @@ class mod_assignment_renderer extends plugin_renderer_base {
|
||||
|
||||
$result = '<ul>';
|
||||
foreach ($dir['subdirs'] as $subdir) {
|
||||
$image = $this->output->pix_icon("f/folder", $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_folder_icon(), $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.s($subdir['dirname']).'</div> '.$this->htmllize_tree($tree, $subdir).'</li>';
|
||||
}
|
||||
|
||||
foreach ($dir['files'] as $file) {
|
||||
$filename = $file->get_filename();
|
||||
$icon = mimeinfo("icon", $filename);
|
||||
if ($CFG->enableplagiarism) {
|
||||
require_once($CFG->libdir.'/plagiarismlib.php');
|
||||
$plagiarsmlinks = plagiarism_get_links(array('userid'=>$file->get_userid(), 'file'=>$file, 'cmid'=>$tree->cm->id, 'course'=>$tree->course));
|
||||
} else {
|
||||
$plagiarsmlinks = '';
|
||||
}
|
||||
$image = $this->output->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_file_icon($file), $filename, 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.$file->fileurl.' '.$plagiarsmlinks.$file->portfoliobutton.'</div></li>';
|
||||
}
|
||||
|
||||
|
@ -208,7 +208,7 @@ class assignment_online extends assignment_base {
|
||||
$popup = $OUTPUT->action_link($link, shorten_text(trim(strip_tags(format_text($submission->data1,$submission->data2))), 15), $action, array('title'=>get_string('submission', 'assignment')));
|
||||
|
||||
$output = '<div class="files">'.
|
||||
'<img src="'.$OUTPUT->pix_url('f/html') . '" class="icon" alt="html" />'.
|
||||
$OUTPUT->pix_icon(file_extension_icon('.htm'), 'html', 'moodle', array('class' => 'icon')).
|
||||
$popup .
|
||||
'</div>';
|
||||
return $output;
|
||||
@ -233,7 +233,7 @@ class assignment_online extends assignment_base {
|
||||
$popup = $OUTPUT->action_link($link, get_string('popupinnewwindow','assignment'), $action, array('title'=>get_string('submission', 'assignment')));
|
||||
|
||||
$output = '<div class="files">'.
|
||||
'<img align="middle" src="'.$OUTPUT->pix_url('f/html') . '" height="16" width="16" alt="html" />'.
|
||||
$OUTPUT->pix_icon(file_extension_icon('.htm'), 'html', 'moodle', array('height' => 16, 'width' => 16)).
|
||||
$popup .
|
||||
'</div>';
|
||||
|
||||
|
@ -1123,7 +1123,7 @@ class assignment_upload extends assignment_base {
|
||||
$filename = $file->get_filename();
|
||||
$mimetype = $file->get_mimetype();
|
||||
$link = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename);
|
||||
$filenode->add($filename, $link, navigation_node::TYPE_SETTING, null, null, new pix_icon(file_mimetype_icon($mimetype),''));
|
||||
$filenode->add($filename, $link, navigation_node::TYPE_SETTING, null, null, new pix_icon(file_file_icon($file),''));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ class assignment_uploadsingle extends assignment_base {
|
||||
$found = true;
|
||||
$mimetype = $file->get_mimetype();
|
||||
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename);
|
||||
$output .= '<a href="'.$path.'" ><img class="icon" src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" alt="'.$mimetype.'" />'.s($filename).'</a><br />';
|
||||
$output .= '<a href="'.$path.'" >'.$OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon')).s($filename).'</a><br />';
|
||||
$output .= plagiarism_get_links(array('userid'=>$userid, 'file'=>$file, 'cmid'=>$this->cm->id, 'course'=>$this->course, 'assignment'=>$this->assignment));
|
||||
$output .='<br/>';
|
||||
}
|
||||
@ -370,7 +370,7 @@ class assignment_uploadsingle extends assignment_base {
|
||||
$filename = $file->get_filename();
|
||||
$mimetype = $file->get_mimetype();
|
||||
$link = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment', 'submission/'.$submission->id.'/'.$filename);
|
||||
$filenode->add($filename, $link, navigation_node::TYPE_SETTING, null, null, new pix_icon(file_mimetype_icon($mimetype), ''));
|
||||
$filenode->add($filename, $link, navigation_node::TYPE_SETTING, null, null, new pix_icon(file_file_icon($file), ''));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ class data_field_file extends data_field_base {
|
||||
if (empty($content->content1)) {
|
||||
// Print icon if file already exists
|
||||
$src = moodle_url::make_draftfile_url($itemid, '/', $file->get_filename());
|
||||
$displayname = '<img src="'.$OUTPUT->pix_url(file_mimetype_icon($file->get_mimetype())).'" class="icon" alt="'.$file->get_mimetype().'" />'. '<a href="'.$src.'" >'.s($file->get_filename()).'</a>';
|
||||
$displayname = $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon')). '<a href="'.$src.'" >'.s($file->get_filename()).'</a>';
|
||||
|
||||
} else {
|
||||
$displayname = 'no file added';
|
||||
@ -142,7 +142,7 @@ class data_field_file extends data_field_base {
|
||||
$width = $this->field->param1 ? ' width = "'.s($this->field->param1).'" ':' ';
|
||||
$height = $this->field->param2 ? ' height = "'.s($this->field->param2).'" ':' ';
|
||||
|
||||
$str = '<img src="'.$OUTPUT->pix_url(file_mimetype_icon($file->get_mimetype())).'" height="16" width="16" alt="'.$file->get_mimetype().'" /> '.
|
||||
$str = $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('width' => 16, 'height' => 16)). ' '.
|
||||
'<a href="'.$src.'" >'.s($name).'</a>';
|
||||
return $str;
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ class data_field_picture extends data_field_base {
|
||||
if (empty($content->content1)) {
|
||||
// Print icon if file already exists
|
||||
$src = moodle_url::make_draftfile_url($itemid, '/', $file->get_filename());
|
||||
$displayname = '<img src="'.$OUTPUT->pix_url(file_mimetype_icon($file->get_mimetype())).'" class="icon" alt="'.$file->get_mimetype().'" />'. '<a href="'.$src.'" >'.s($file->get_filename()).'</a>';
|
||||
$displayname = $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon')). '<a href="'.$src.'" >'.s($file->get_filename()).'</a>';
|
||||
|
||||
} else {
|
||||
$displayname = get_string('nofilesattached', 'repository');
|
||||
|
@ -3911,7 +3911,7 @@ function forum_print_attachments($post, $cm, $type) {
|
||||
foreach ($files as $file) {
|
||||
$filename = $file->get_filename();
|
||||
$mimetype = $file->get_mimetype();
|
||||
$iconimage = '<img src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" class="icon" alt="'.$mimetype.'" />';
|
||||
$iconimage = $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon'));
|
||||
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$context->id.'/mod_forum/attachment/'.$post->id.'/'.$filename);
|
||||
|
||||
if ($type == 'html') {
|
||||
|
@ -1553,7 +1553,7 @@ function glossary_print_attachments($entry, $cm, $type=NULL, $align="left") {
|
||||
foreach ($files as $file) {
|
||||
$filename = $file->get_filename();
|
||||
$mimetype = $file->get_mimetype();
|
||||
$iconimage = '<img src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" class="icon" alt="'.$mimetype.'" />';
|
||||
$iconimage = $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon'));
|
||||
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$context->id.'/mod_glossary/attachment/'.$entry->id.'/'.$filename);
|
||||
|
||||
if ($type == 'html') {
|
||||
|
@ -256,7 +256,7 @@ function resource_get_coursemodule_info($coursemodule) {
|
||||
$files = $fs->get_area_files($context->id, 'mod_resource', 'content', 0, 'sortorder DESC, id ASC', false); // TODO: this is not very efficient!!
|
||||
if (count($files) >= 1) {
|
||||
$mainfile = reset($files);
|
||||
$info->icon = file_extension_icon($mainfile->get_filename());
|
||||
$info->icon = file_file_icon($mainfile);
|
||||
$resource->mainfile = $mainfile->get_filename();
|
||||
}
|
||||
|
||||
|
@ -303,14 +303,13 @@ function resource_get_optional_details($resource, $cm) {
|
||||
// For a typical file resource, the sortorder is 1 for the main file
|
||||
// and 0 for all other files. This sort approach is used just in case
|
||||
// there are situations where the file has a different sort order
|
||||
$mimetype = $DB->get_field_sql(
|
||||
'SELECT mimetype FROM {files} WHERE contextid=? ORDER BY sortorder DESC',
|
||||
$record = $DB->get_record_sql(
|
||||
'SELECT filename, mimetype FROM {files} WHERE contextid=? ORDER BY sortorder DESC',
|
||||
array($context->id), IGNORE_MULTIPLE);
|
||||
// Only show type if it is not unknown
|
||||
if ($mimetype && $mimetype !== 'document/unknown') {
|
||||
$type = get_mimetype_description($mimetype);
|
||||
// There are some known mimetypes which don't have descriptions
|
||||
if ($type === get_string('document/unknown','mimetypes')) {
|
||||
if ($record) {
|
||||
$type = get_mimetype_description($record);
|
||||
if ($type === get_mimetype_description('document/unknown')) {
|
||||
$type = '';
|
||||
}
|
||||
}
|
||||
|
@ -549,14 +549,13 @@ function url_guess_icon($fullurl) {
|
||||
|
||||
if (substr_count($fullurl, '/') < 3 or substr($fullurl, -1) === '/') {
|
||||
// most probably default directory - index.php, index.html, etc.
|
||||
return 'f/web';
|
||||
return file_extension_icon('.htm');
|
||||
}
|
||||
|
||||
$icon = mimeinfo('icon', $fullurl);
|
||||
$icon = 'f/'.str_replace(array('.gif', '.png'), '', $icon);
|
||||
$icon = file_extension_icon($fullurl);
|
||||
|
||||
if ($icon === 'f/html' or $icon === 'f/unknown') {
|
||||
$icon = 'f/web';
|
||||
if ($icon === file_extension_icon('')) {
|
||||
return file_extension_icon('.htm');
|
||||
}
|
||||
|
||||
return $icon;
|
||||
|
@ -67,8 +67,7 @@ class mod_wiki_edit_form extends moodleform {
|
||||
$fieldname = get_string('format' . $format, 'wiki');
|
||||
if ($format != 'html') {
|
||||
// Use wiki editor
|
||||
$ft = new filetype_parser;
|
||||
$extensions = $ft->get_extensions('image');
|
||||
$extensions = file_get_typegroup('extension', 'web_image');
|
||||
$fs = get_file_storage();
|
||||
$tree = $fs->get_area_tree($contextid, 'mod_wiki', $this->_customdata['filearea'], $this->_customdata['fileitemid']);
|
||||
$files = array();
|
||||
|
@ -105,18 +105,18 @@ class MoodleQuickForm_wikifiletable extends HTML_QuickForm_element {
|
||||
$checkbox .= " />";
|
||||
|
||||
//actions
|
||||
$icon = mimeinfo_from_type('icon', $file->get_mimetype());
|
||||
$icon = file_file_icon($file);
|
||||
$file_url = file_encode_url($CFG->wwwroot.'/pluginfile.php', "/{$this->_contextid}/mod_wiki/attachments/{$this->_fileareaitemid}/".$file->get_filename());
|
||||
|
||||
$action_icons = "";
|
||||
if(!empty($tags['attach'])) {
|
||||
$action_icons .= "<a href=\"javascript:void(0)\" class=\"wiki-attachment-attach\" ".$this->printInsertTags($tags['attach'], $file->get_filename())." title=\"".get_string('attachmentattach', 'wiki')."\"><img src=\"".$OUTPUT->pix_url('f/pdf')->out()."\" alt=\"Attach\" /></a>"; //TODO: localize
|
||||
$action_icons .= "<a href=\"javascript:void(0)\" class=\"wiki-attachment-attach\" ".$this->printInsertTags($tags['attach'], $file->get_filename())." title=\"".get_string('attachmentattach', 'wiki')."\">".$OUTPUT->pix_icon($icon, "Attach")."</a>"; //TODO: localize
|
||||
}
|
||||
|
||||
$action_icons .= " <a href=\"javascript:void(0)\" class=\"wiki-attachment-link\" ".$this->printInsertTags($tags['link'], $file_url)." title=\"".get_string('attachmentlink', 'wiki')."\"><img src=\"".$OUTPUT->pix_url('f/web')->out()."\" alt=\"Link\" /></a>";
|
||||
$action_icons .= " <a href=\"javascript:void(0)\" class=\"wiki-attachment-link\" ".$this->printInsertTags($tags['link'], $file_url)." title=\"".get_string('attachmentlink', 'wiki')."\">".$OUTPUT->pix_icon($icon, "Link")."</a>";
|
||||
|
||||
if ($icon == 'image') {
|
||||
$action_icons .= " <a href=\"javascript:void(0)\" class=\"wiki-attachment-image\" ".$this->printInsertTags($tags['image'], $file->get_filename())." title=\"".get_string('attachmentimage', 'wiki')."\"><img src=\"".$OUTPUT->pix_url('f/image')->out()."\" alt=\"Image\" /></a>"; //TODO: localize
|
||||
if (file_mimetype_in_typegroup($file->get_mimetype(), 'web_image')) {
|
||||
$action_icons .= " <a href=\"javascript:void(0)\" class=\"wiki-attachment-image\" ".$this->printInsertTags($tags['image'], $file->get_filename())." title=\"".get_string('attachmentimage', 'wiki')."\">".$OUTPUT->pix_icon($icon, "Image")."</a>"; //TODO: localize
|
||||
}
|
||||
|
||||
$htmltable->data[] = array($checkbox, '<a href="'.$file_url.'">'.$file->get_filename().'</a>', $action_icons);
|
||||
|
@ -526,14 +526,13 @@ class mod_wiki_renderer extends plugin_renderer_base {
|
||||
}
|
||||
$result = '<ul>';
|
||||
foreach ($dir['subdirs'] as $subdir) {
|
||||
$image = $this->output->pix_icon("f/folder", $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_folder_icon(), $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.s($subdir['dirname']).'</div> '.$this->htmllize_tree($tree, $subdir).'</li>';
|
||||
}
|
||||
foreach ($dir['files'] as $file) {
|
||||
$url = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'.$tree->context->id.'/mod_wiki/attachments/' . $tree->subwiki->id . '/'. $file->get_filepath() . $file->get_filename(), true);
|
||||
$filename = $file->get_filename();
|
||||
$icon = mimeinfo("icon", $filename);
|
||||
$image = $this->output->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_file_icon($file), $filename, 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.html_writer::link($url, $filename).'</div></li>';
|
||||
}
|
||||
$result .= '</ul>';
|
||||
|
@ -749,14 +749,13 @@ class mod_workshop_renderer extends plugin_renderer_base {
|
||||
$fileurl = file_encode_url($CFG->wwwroot . '/pluginfile.php',
|
||||
'/' . $ctx->id . '/mod_workshop/submission_attachment/' . $submissionid . $filepath . $filename, true);
|
||||
$type = $file->get_mimetype();
|
||||
$type = mimeinfo_from_type('type', $type);
|
||||
$image = html_writer::empty_tag('img', array('src'=>$this->output->pix_url(file_mimetype_icon($type)), 'alt'=>$type, 'class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon'));
|
||||
|
||||
$linkhtml = html_writer::link($fileurl, $image) . substr($filepath, 1) . html_writer::link($fileurl, $filename);
|
||||
$linktxt = "$filename [$fileurl]";
|
||||
|
||||
if ($format == 'html') {
|
||||
if (in_array($type, array('image/gif', 'image/jpeg', 'image/png'))) {
|
||||
if (file_mimetype_in_typegroup($type, 'web_image')) {
|
||||
$preview = html_writer::empty_tag('img', array('src' => $fileurl, 'alt' => '', 'class' => 'preview'));
|
||||
$preview = html_writer::tag('a', $preview, array('href' => $fileurl));
|
||||
$outputimgs .= $this->output->container($preview);
|
||||
|
@ -84,9 +84,8 @@ class qtype_essay_renderer extends qtype_renderer {
|
||||
$output = array();
|
||||
|
||||
foreach ($files as $file) {
|
||||
$mimetype = $file->get_mimetype();
|
||||
$output[] = html_writer::tag('p', html_writer::link($qa->get_response_file_url($file),
|
||||
$this->output->pix_icon(file_mimetype_icon($mimetype), $mimetype,
|
||||
$this->output->pix_icon(file_file_icon($file), get_mimetype_description($file),
|
||||
'moodle', array('class' => 'icon')) . ' ' . s($file->get_filename())));
|
||||
}
|
||||
return implode($output);
|
||||
|
@ -177,11 +177,11 @@ class repository_alfresco extends repository {
|
||||
{
|
||||
$ret['list'][] = array('title'=>$child->child->cm_name,
|
||||
'path'=>$child->child->id,
|
||||
'thumbnail'=>$OUTPUT->pix_url('f/folder-32') . '',
|
||||
'thumbnail'=>$OUTPUT->pix_url(file_folder_icon(90))->out(false),
|
||||
'children'=>array());
|
||||
} elseif ($child->child->type == $file_filter) {
|
||||
$ret['list'][] = array('title'=>$child->child->cm_name,
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($child->child->cm_name, 32))->out(false),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($child->child->cm_name, 90))->out(false),
|
||||
'source'=>$child->child->id);
|
||||
}
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ class repository_boxnet extends repository {
|
||||
'date'=>$filedates[$n],
|
||||
'source'=>'http://box.net/api/1.0/download/'
|
||||
.$this->auth_token.'/'.$fileids[$n],
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($v, 32))->out(false));
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($v, 90))->out(false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ class repository_coursefiles extends repository {
|
||||
'datecreated' => $child->get_timecreated(),
|
||||
'path' => $encodedpath,
|
||||
'children'=>array(),
|
||||
'thumbnail' => $OUTPUT->pix_url('f/folder-32')->out(false)
|
||||
'thumbnail' => $OUTPUT->pix_url(file_folder_icon(90))->out(false)
|
||||
);
|
||||
$list[] = $node;
|
||||
} else {
|
||||
@ -122,7 +122,7 @@ class repository_coursefiles extends repository {
|
||||
'datemodified' => $child->get_timemodified(),
|
||||
'datecreated' => $child->get_timecreated(),
|
||||
'source'=> $encodedpath,
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($child->get_visible_name(), 32))->out(false)
|
||||
'thumbnail' => $OUTPUT->pix_url(file_file_icon($child, 90))->out(false)
|
||||
);
|
||||
if ($imageinfo = $child->get_imageinfo()) {
|
||||
$fileurl = new moodle_url($child->get_url());
|
||||
|
@ -303,10 +303,8 @@ default:
|
||||
if ($file->type != 'folder') {
|
||||
$drafturl = $file->url;
|
||||
// a file
|
||||
$fileicon = $OUTPUT->pix_url(file_extension_icon($file->filename))->out(false);
|
||||
$type = mimeinfo('icon', $file->filename);
|
||||
echo '<li>';
|
||||
echo '<img src="'.$fileicon. '" class="iconsmall" />';
|
||||
echo $OUTPUT->pix_icon(file_file_icon($file), '', 'moodle', array('class' => 'iconsmall'));
|
||||
echo html_writer::link($drafturl, $file->filename);
|
||||
|
||||
$home_url->param('filename', $file->filename);
|
||||
@ -321,7 +319,7 @@ default:
|
||||
$home_url->param('action', 'renameform');
|
||||
echo ' [<a href="'.$home_url->out().'" class="fm-operation">'.get_string('rename').'</a>]';
|
||||
|
||||
if ($type == 'zip') {
|
||||
if (file_extension_in_typegroup($file->filename, 'archive', true)) {
|
||||
$home_url->param('action', 'unzip');
|
||||
$home_url->param('draftpath', $file->filepath);
|
||||
echo ' [<a href="'.$home_url->out().'" class="fm-operation">'.get_string('unzip').'</a>]';
|
||||
@ -331,7 +329,7 @@ default:
|
||||
} else {
|
||||
// a folder
|
||||
echo '<li>';
|
||||
echo '<img src="'.$OUTPUT->pix_url('f/folder') . '" class="iconsmall" />';
|
||||
echo '<img src="'.$OUTPUT->pix_url(file_folder_icon()) . '" class="iconsmall" />';
|
||||
|
||||
$home_url->param('action', 'browse');
|
||||
$home_url->param('draftpath', $file->filepath);
|
||||
|
@ -217,7 +217,7 @@ class repository_dropbox extends repository {
|
||||
'path' => file_correct_filepath($file->path),
|
||||
'size' => $file->size,
|
||||
'date' => $file->modified,
|
||||
'thumbnail' => $OUTPUT->pix_url('f/folder-32')->out(false),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_folder_icon(90))->out(false),
|
||||
'children' => array(),
|
||||
);
|
||||
} else {
|
||||
@ -226,7 +226,7 @@ class repository_dropbox extends repository {
|
||||
'source' => $file->path,
|
||||
'size' => $file->size,
|
||||
'date' => $file->modified,
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file->path, 32))->out(false)
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file->path, 90))->out(false)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -101,7 +101,8 @@ class repository_filesystem extends repository {
|
||||
'size' => filesize($this->root_path.$file),
|
||||
'datecreated' => filectime($this->root_path.$file),
|
||||
'datemodified' => filemtime($this->root_path.$file),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($this->root_path.$file, 32))->out(false)
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file, 90))->out(false),
|
||||
'icon' => $OUTPUT->pix_url(file_extension_icon($file, 24))->out(false)
|
||||
);
|
||||
} else {
|
||||
if (!empty($path)) {
|
||||
@ -114,7 +115,7 @@ class repository_filesystem extends repository {
|
||||
'children' => array(),
|
||||
'datecreated' => filectime($this->root_path.$file),
|
||||
'datemodified' => filemtime($this->root_path.$file),
|
||||
'thumbnail' => $OUTPUT->pix_url('f/folder-32')->out(false),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_folder_icon(90))->out(false),
|
||||
'path' => $current_path
|
||||
);
|
||||
}
|
||||
|
@ -844,7 +844,6 @@ abstract class repository {
|
||||
}
|
||||
|
||||
$repositories = array();
|
||||
$ft = new filetype_parser();
|
||||
if (isset($args['accepted_types'])) {
|
||||
$accepted_types = $args['accepted_types'];
|
||||
} else {
|
||||
@ -875,16 +874,10 @@ abstract class repository {
|
||||
} else {
|
||||
// check mimetypes
|
||||
if ($accepted_types !== '*' and $repository->supported_filetypes() !== '*') {
|
||||
$accepted_types = $ft->get_extensions($accepted_types);
|
||||
$supported_filetypes = $ft->get_extensions($repository->supported_filetypes());
|
||||
|
||||
$is_supported = false;
|
||||
foreach ($supported_filetypes as $type) {
|
||||
if (in_array($type, $accepted_types)) {
|
||||
$is_supported = true;
|
||||
}
|
||||
}
|
||||
|
||||
$accepted_ext = file_get_typegroup('extension', $accepted_types);
|
||||
$supported_ext = file_get_typegroup('extension', $repository->supported_filetypes());
|
||||
$valid_ext = array_intersect($accepted_ext, $supported_ext);
|
||||
$is_supported = !empty($valid_ext);
|
||||
}
|
||||
// check return values
|
||||
if ($returntypes !== 3 and $repository->supported_returntypes() !== 3) {
|
||||
@ -1223,7 +1216,7 @@ abstract class repository {
|
||||
'size' => 0,
|
||||
'date' => $filedate,
|
||||
'path' => array_reverse($path),
|
||||
'thumbnail' => $OUTPUT->pix_url('f/folder-32')
|
||||
'thumbnail' => $OUTPUT->pix_url(file_folder_icon(90))->out(false)
|
||||
);
|
||||
|
||||
//if ($dynamicmode && $child->is_writable()) {
|
||||
@ -1260,7 +1253,8 @@ abstract class repository {
|
||||
'date' => $filedate,
|
||||
//'source' => $child->get_url(),
|
||||
'source' => base64_encode($source),
|
||||
'thumbnail'=>$OUTPUT->pix_url(file_extension_icon($filename, 32)),
|
||||
'icon'=>$OUTPUT->pix_url(file_file_icon($child, 24))->out(false),
|
||||
'thumbnail'=>$OUTPUT->pix_url(file_file_icon($child, 90))->out(false),
|
||||
);
|
||||
$filecount++;
|
||||
}
|
||||
@ -1549,13 +1543,12 @@ abstract class repository {
|
||||
*/
|
||||
final public function get_meta() {
|
||||
global $CFG, $OUTPUT;
|
||||
$ft = new filetype_parser;
|
||||
$meta = new stdClass();
|
||||
$meta->id = $this->id;
|
||||
$meta->name = $this->get_name();
|
||||
$meta->type = $this->options['type'];
|
||||
$meta->icon = $OUTPUT->pix_url('icon', 'repository_'.$meta->type)->out(false);
|
||||
$meta->supported_types = $ft->get_extensions($this->supported_filetypes());
|
||||
$meta->supported_types = file_get_typegroup('extension', $this->supported_filetypes());
|
||||
$meta->return_types = $this->supported_returntypes();
|
||||
$meta->sortorder = $this->options['sortorder'];
|
||||
return $meta;
|
||||
@ -1724,35 +1717,26 @@ abstract class repository {
|
||||
* @return bool
|
||||
*/
|
||||
public function filter(&$value) {
|
||||
$pass = false;
|
||||
$accepted_types = optional_param_array('accepted_types', '', PARAM_RAW);
|
||||
$ft = new filetype_parser;
|
||||
//$ext = $ft->get_extensions($this->supported_filetypes());
|
||||
if (isset($value['children'])) {
|
||||
$pass = true;
|
||||
if (!empty($value['children'])) {
|
||||
$value['children'] = array_filter($value['children'], array($this, 'filter'));
|
||||
}
|
||||
return true; // always return directories
|
||||
} else {
|
||||
if ($accepted_types == '*' or empty($accepted_types)
|
||||
or (is_array($accepted_types) and in_array('*', $accepted_types))) {
|
||||
$pass = true;
|
||||
} elseif (is_array($accepted_types)) {
|
||||
foreach ($accepted_types as $type) {
|
||||
$extensions = $ft->get_extensions($type);
|
||||
if (!is_array($extensions)) {
|
||||
$pass = true;
|
||||
} else {
|
||||
foreach ($extensions as $ext) {
|
||||
if (preg_match('#'.$ext.'$#i', $value['title'])) {
|
||||
$pass = true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
$extensions = file_get_typegroup('extension', $accepted_types);
|
||||
foreach ($extensions as $ext) {
|
||||
if (preg_match('#\.'.$ext.'$#i', $value['title'])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $pass;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1843,17 +1827,13 @@ abstract class repository {
|
||||
$filename = $file['fullname'];
|
||||
}
|
||||
if (!isset($file['mimetype']) && !$isfolder && $filename) {
|
||||
$mimetype = mimeinfo('type', $filename);
|
||||
if (get_string_manager()->string_exists($mimetype, 'mimetypes')) {
|
||||
$mimetype = get_string($mimetype, 'mimetypes');
|
||||
}
|
||||
$file['mimetype'] = $mimetype;
|
||||
$file['mimetype'] = get_mimetype_description(array('filename' => $filename));
|
||||
}
|
||||
if (!isset($file['icon'])) {
|
||||
if ($isfolder) {
|
||||
$file['icon'] = $OUTPUT->pix_url('f/folder')->out(false);
|
||||
$file['icon'] = $OUTPUT->pix_url(file_folder_icon(24))->out(false);
|
||||
} else if ($filename) {
|
||||
$file['icon'] = $OUTPUT->pix_url('f/'.mimeinfo('icon', $filename))->out(false);
|
||||
$file['icon'] = $OUTPUT->pix_url(file_extension_icon($filename, 24))->out(false);
|
||||
}
|
||||
}
|
||||
if ($converttoobject) {
|
||||
@ -2455,7 +2435,6 @@ function initialise_filepicker($args) {
|
||||
|
||||
$return->author = fullname($USER);
|
||||
|
||||
$ft = new filetype_parser();
|
||||
if (empty($args->context)) {
|
||||
$context = $PAGE->context;
|
||||
} else {
|
||||
@ -2492,7 +2471,7 @@ function initialise_filepicker($args) {
|
||||
}
|
||||
|
||||
// provided by form element
|
||||
$return->accepted_types = $ft->get_extensions($args->accepted_types);
|
||||
$return->accepted_types = file_get_typegroup('extension', $args->accepted_types);
|
||||
$return->return_types = $args->return_types;
|
||||
foreach ($repositories as $repository) {
|
||||
$meta = $repository->get_meta();
|
||||
|
@ -213,14 +213,15 @@ class repository_local_file {
|
||||
);
|
||||
if ($this->isdir) {
|
||||
$node['path'] = $encodedpath;
|
||||
$node['thumbnail'] = $OUTPUT->pix_url('f/folder-32')->out(false);
|
||||
$node['thumbnail'] = $OUTPUT->pix_url(file_folder_icon(90))->out(false);
|
||||
$node['children'] = array();
|
||||
} else {
|
||||
$node['size'] = $this->fileinfo->get_filesize();
|
||||
$node['author'] = $this->fileinfo->get_author();
|
||||
$node['license'] = $this->fileinfo->get_license();
|
||||
$node['source'] = $encodedpath;
|
||||
$node['thumbnail'] = $OUTPUT->pix_url(file_extension_icon($node['title'], 32))->out(false);
|
||||
$node['thumbnail'] = $OUTPUT->pix_url(file_file_icon($this->fileinfo, 90))->out(false);
|
||||
$node['icon'] = $OUTPUT->pix_url(file_file_icon($this->fileinfo), 24)->out(false);
|
||||
if ($imageinfo = $this->fileinfo->get_imageinfo()) {
|
||||
// what a beautiful picture, isn't it
|
||||
$fileurl = new moodle_url($this->fileinfo->get_url());
|
||||
|
@ -92,7 +92,7 @@ class repository_merlot extends repository {
|
||||
foreach ($xml->results->material as $entry) {
|
||||
$list[] = array(
|
||||
'title'=>(string)$entry->title,
|
||||
'thumbnail'=>$OUTPUT->pix_url('f/unknown-32')->out(false),
|
||||
'thumbnail'=>$OUTPUT->pix_url(file_extension_icon($entry->title, 90))->out(false),
|
||||
'date'=>userdate((int)$entry->creationDate),
|
||||
'size'=>'',
|
||||
'source'=>(string)$entry->URL
|
||||
|
@ -128,14 +128,15 @@ class repository_recent extends repository {
|
||||
if ($fileinfo) {
|
||||
$params = base64_encode(serialize($file));
|
||||
$node = array(
|
||||
'title' => $file['filename'],
|
||||
'title' => $fileinfo->get_visible_name(),
|
||||
'size' => $fileinfo->get_filesize(),
|
||||
'datemodified' => $fileinfo->get_timemodified(),
|
||||
'datecreated' => $fileinfo->get_timecreated(),
|
||||
'author' => $fileinfo->get_author(),
|
||||
'license' => $fileinfo->get_license(),
|
||||
'source'=> $params,
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file['filename'], 32))->out(false),
|
||||
'icon' => $OUTPUT->pix_url(file_file_icon($fileinfo, 24))->out(false),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_file_icon($fileinfo, 90))->out(false),
|
||||
);
|
||||
if ($imageinfo = $fileinfo->get_imageinfo()) {
|
||||
$fileurl = new moodle_url($fileinfo->get_url());
|
||||
|
@ -181,7 +181,7 @@ switch ($action) {
|
||||
$mimetypes[] = mimeinfo('type', $type);
|
||||
}
|
||||
if (!in_array(mimeinfo('type', $saveas_filename), $mimetypes)) {
|
||||
throw new moodle_exception('invalidfiletype', 'repository', '', get_string(mimeinfo('type', $saveas_filename), 'mimetypes'));
|
||||
throw new moodle_exception('invalidfiletype', 'repository', '', get_mimetype_description(array('filename' => $saveas_filename)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -266,7 +266,6 @@ switch ($action) {
|
||||
$record->timecreated = $now;
|
||||
$record->timemodified = $now;
|
||||
$record->userid = $USER->id;
|
||||
$record->mimetype = mimeinfo('type', $record->filename);
|
||||
|
||||
|
||||
if ($usefilereference == 'yes') {
|
||||
@ -304,7 +303,7 @@ switch ($action) {
|
||||
'url'=>moodle_url::make_draftfile_url($storedfile->get_itemid(), $storedfile->get_filepath(), $storedfile->get_filename())->out(),
|
||||
'id'=>$storedfile->get_itemid(),
|
||||
'file'=>$storedfile->get_filename(),
|
||||
'icon' => $OUTPUT->pix_url(file_extension_icon($storedfile->get_filename(), 32))->out(),
|
||||
'icon' => $OUTPUT->pix_url(file_file_icon($storedfile, 32))->out(),
|
||||
);
|
||||
echo json_encode($info);
|
||||
die;
|
||||
|
@ -78,7 +78,7 @@ class repository_s3 extends repository {
|
||||
$folder = array(
|
||||
'title' => $bucket,
|
||||
'children' => array(),
|
||||
'thumbnail'=>$OUTPUT->pix_url('f/folder-32')->out(false),
|
||||
'thumbnail'=>$OUTPUT->pix_url(file_folder_icon(90))->out(false),
|
||||
'path'=>$bucket
|
||||
);
|
||||
$tree[] = $folder;
|
||||
@ -92,7 +92,7 @@ class repository_s3 extends repository {
|
||||
'size'=>$file['size'],
|
||||
'date'=>userdate($file['time']),
|
||||
'source'=>$path.'/'.$file['name'],
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file['name'], 32))->out(false)
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($file['name'], 90))->out(false)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -201,18 +201,18 @@ class repository_upload extends repository {
|
||||
$event['newfile'] = new stdClass;
|
||||
$event['newfile']->filepath = $record->filepath;
|
||||
$event['newfile']->filename = $unused_filename;
|
||||
$event['newfile']->url = moodle_url::make_draftfile_url($record->itemid, $record->filepath, $unused_filename)->out();
|
||||
$event['newfile']->url = moodle_url::make_draftfile_url($record->itemid, $record->filepath, $unused_filename)->out(false);
|
||||
|
||||
$event['existingfile'] = new stdClass;
|
||||
$event['existingfile']->filepath = $record->filepath;
|
||||
$event['existingfile']->filename = $existingfilename;
|
||||
$event['existingfile']->url = moodle_url::make_draftfile_url($record->itemid, $record->filepath, $existingfilename)->out();;
|
||||
$event['existingfile']->url = moodle_url::make_draftfile_url($record->itemid, $record->filepath, $existingfilename)->out(false);
|
||||
return $event;
|
||||
} else {
|
||||
$stored_file = $fs->create_file_from_pathname($record, $_FILES[$elname]['tmp_name']);
|
||||
|
||||
return array(
|
||||
'url'=>moodle_url::make_draftfile_url($record->itemid, $record->filepath, $record->filename)->out(),
|
||||
'url'=>moodle_url::make_draftfile_url($record->itemid, $record->filepath, $record->filename)->out(false),
|
||||
'id'=>$record->itemid,
|
||||
'file'=>$record->filename);
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ class repository_user extends repository {
|
||||
'datecreated' => $child->get_timecreated(),
|
||||
'path' => $encodedpath,
|
||||
'children'=>array(),
|
||||
'thumbnail' => $OUTPUT->pix_url('f/folder-32')->out(false)
|
||||
'thumbnail' => $OUTPUT->pix_url(file_folder_icon(90))->out(false)
|
||||
);
|
||||
$list[] = $node;
|
||||
} else {
|
||||
@ -113,7 +113,8 @@ class repository_user extends repository {
|
||||
'author' => $child->get_author(),
|
||||
'license' => $child->get_license(),
|
||||
'source'=> $encodedpath,
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($child->get_visible_name(), 32))->out(false)
|
||||
'icon' => $OUTPUT->pix_url(file_file_icon($child, 24))->out(false),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_file_icon($child, 90))->out(false)
|
||||
);
|
||||
if ($imageinfo = $child->get_imageinfo()) {
|
||||
$fileurl = new moodle_url($child->get_url());
|
||||
|
@ -127,7 +127,7 @@ class repository_webdav extends repository {
|
||||
if ($path != $v['href']) {
|
||||
$folders[] = array(
|
||||
'title'=>$title,
|
||||
'thumbnail'=>$OUTPUT->pix_url('f/folder-32')->out(false),
|
||||
'thumbnail'=>$OUTPUT->pix_url(file_folder_icon(90))->out(false),
|
||||
'children'=>array(),
|
||||
'datemodified'=>$v['lastmodified'],
|
||||
'path'=>$v['href']
|
||||
@ -138,7 +138,7 @@ class repository_webdav extends repository {
|
||||
$size = !empty($v['getcontentlength'])? $v['getcontentlength']:'';
|
||||
$files[] = array(
|
||||
'title'=>$title,
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($title, 32))->out(false),
|
||||
'thumbnail' => $OUTPUT->pix_url(file_extension_icon($title, 90))->out(false),
|
||||
'size'=>$size,
|
||||
'datemodified'=>$v['lastmodified'],
|
||||
'source'=>$v['href']
|
||||
|
@ -118,9 +118,9 @@ class wikimedia {
|
||||
$commons_main_dir = 'http://upload.wikimedia.org/wikipedia/commons/';
|
||||
if ($image_url) {
|
||||
$short_path = str_replace($commons_main_dir, '', $image_url);
|
||||
$extension = pathinfo($short_path, PATHINFO_EXTENSION);
|
||||
$extension = strtolower(pathinfo($short_path, PATHINFO_EXTENSION));
|
||||
if (strcmp($extension, 'gif') == 0) { //no thumb for gifs
|
||||
return $OUTPUT->pix_url(file_extension_icon('xx.jpg', 32));
|
||||
return $OUTPUT->pix_url(file_extension_icon('.gif', $thumb_width))->out(false);
|
||||
}
|
||||
$dir_parts = explode('/', $short_path);
|
||||
$file_name = end($dir_parts);
|
||||
|
@ -64,14 +64,13 @@ class core_user_renderer extends plugin_renderer_base {
|
||||
}
|
||||
$result = '<ul>';
|
||||
foreach ($dir['subdirs'] as $subdir) {
|
||||
$image = $this->output->pix_icon("f/folder", $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_folder_icon(), $subdir['dirname'], 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.s($subdir['dirname']).'</div> '.$this->htmllize_tree($tree, $subdir).'</li>';
|
||||
}
|
||||
foreach ($dir['files'] as $file) {
|
||||
$url = file_encode_url("$CFG->wwwroot/pluginfile.php", '/'.$tree->context->id.'/user/private'.$file->get_filepath().$file->get_filename(), true);
|
||||
$filename = $file->get_filename();
|
||||
$icon = mimeinfo("icon", $filename);
|
||||
$image = $this->output->pix_icon("f/$icon", $filename, 'moodle', array('class'=>'icon'));
|
||||
$image = $this->output->pix_icon(file_file_icon($file), $filename, 'moodle', array('class'=>'icon'));
|
||||
$result .= '<li yuiConfig=\''.json_encode($yuiconfig).'\'><div>'.$image.' '.html_writer::link($url, $filename).'</div></li>';
|
||||
}
|
||||
$result .= '</ul>';
|
||||
|
Loading…
x
Reference in New Issue
Block a user