summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorTom N Harris <tnharris@whoopdedo.org>2009-09-26 01:17:46 +0200
committerTom N Harris <tnharris@whoopdedo.org>2009-09-26 01:17:46 +0200
commit27bf79241161079d1d15f8fe1927682ec562835f (patch)
treea3bd8fee282dd481a4e4dd78aa445369b602b9d2 /inc
parent66b23ce9f134c838f393fa452c450f8b6fc147c3 (diff)
downloadrpg-27bf79241161079d1d15f8fe1927682ec562835f.tar.gz
rpg-27bf79241161079d1d15f8fe1927682ec562835f.tar.bz2
Use all available icons for file links (FS#1759)
All PNG and GIF images in the lib/images/fileicons directory will be used for media file links. The conf/mime.conf file continues to restrict which file types may be uploaded. File types not in the configuration list are download-only. darcs-hash:20090925231746-6942e-299a52772f67e265a8702bda3686f495e4337a8f.gz
Diffstat (limited to 'inc')
-rw-r--r--inc/confutils.php22
-rw-r--r--inc/media.php2
-rw-r--r--inc/parser/xhtml.php19
3 files changed, 27 insertions, 16 deletions
diff --git a/inc/confutils.php b/inc/confutils.php
index aab0be4be..5ad8385c4 100644
--- a/inc/confutils.php
+++ b/inc/confutils.php
@@ -10,21 +10,31 @@
/**
* Returns the (known) extension and mimetype of a given filename
*
+ * If $knownonly is true (the default), then only known extensions
+ * are returned.
+ *
* @author Andreas Gohr <andi@splitbrain.org>
*/
-function mimetype($file){
+function mimetype($file, $knownonly=true){
$ret = array(false,false,false); // return array
$mtypes = getMimeTypes(); // known mimetypes
$exts = join('|',array_keys($mtypes)); // known extensions (regexp)
+ if(!$knownonly){
+ $exts = $exts.'|[_\-A-Za-z0-9]+'; // any extension
+ }
if(preg_match('#\.('.$exts.')$#i',$file,$matches)){
$ext = strtolower($matches[1]);
}
- if($ext && $mtypes[$ext]){
- if($mtypes[$ext][0] == '!'){
- $ret = array($ext, substr($mtypes[$ext],1), true);
- }else{
- $ret = array($ext, $mtypes[$ext], false);
+ if($ext){
+ if (isset($mtypes[$ext])){
+ if($mtypes[$ext][0] == '!'){
+ $ret = array($ext, substr($mtypes[$ext],1), true);
+ }else{
+ $ret = array($ext, $mtypes[$ext], false);
+ }
+ elseif(!$knownonly){
+ $ret = array($ext, 'application/octet-stream', true);
}
}
diff --git a/inc/media.php b/inc/media.php
index f1b6ea62e..4ad7047b2 100644
--- a/inc/media.php
+++ b/inc/media.php
@@ -555,7 +555,7 @@ function media_printfile($item,$auth,$jump,$display_namespace=false){
}
// Prepare fileicons
- list($ext,$mime,$dl) = mimetype($item['file']);
+ list($ext,$mime,$dl) = mimetype($item['file'],false);
$class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
$class = 'select mediafile mf_'.$class;
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index 665307d45..e67deacd6 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -390,7 +390,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
if($filename){
// add icon
- list($ext) = mimetype($filename);
+ list($ext) = mimetype($filename,false);
$class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
$class = 'mediafile mf_'.$class;
@@ -710,7 +710,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$render = ($linking == 'linkonly') ? false : true;
$link = $this->_getMediaLinkConf($src, $title, $align, $width, $height, $cache, $render);
- list($ext,$mime,$dl) = mimetype($src);
+ list($ext,$mime,$dl) = mimetype($src,false);
if(substr($mime,0,5) == 'image' && $render){
$link['url'] = ml($src,array('id'=>$ID,'cache'=>$cache),($linking=='direct'));
}elseif($mime == 'application/x-shockwave-flash' && $render){
@@ -743,16 +743,17 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['url'] = ml($src,array('cache'=>$cache));
- list($ext,$mime,$dl) = mimetype($src);
+ list($ext,$mime,$dl) = mimetype($src,false);
if(substr($mime,0,5) == 'image' && $render){
- // link only jpeg images
- // if ($ext != 'jpg' && $ext != 'jpeg') $noLink = true;
+ // link only jpeg images
+ // if ($ext != 'jpg' && $ext != 'jpeg') $noLink = true;
}elseif($mime == 'application/x-shockwave-flash' && $render){
- // don't link flash movies
- $noLink = true;
+ // don't link flash movies
+ $noLink = true;
}else{
- // add file icons
- $link['class'] .= ' mediafile mf_'.$ext;
+ // add file icons
+ $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext);
+ $link['class'] .= ' mediafile mf_'.$class;
}
if($hash) $link['url'] .= '#'.$hash;