Merge pull request #3530 from owncloud/cache-mimeicon

Cache mimetype icons
This commit is contained in:
icewind1991 2013-05-29 08:20:58 -07:00
commit 8a5dec7775
1 changed files with 25 additions and 17 deletions

View File

@ -27,6 +27,7 @@
class OC_Helper {
private static $mimetypes=array();
private static $tmpFiles=array();
private static $mimetypeIcons = array();
/**
* @brief Creates an url using a defined route
@ -187,31 +188,38 @@ class OC_Helper {
*
* Returns the path to the image of this file type.
*/
public static function mimetypeIcon( $mimetype ) {
$alias=array('application/xml'=>'code/xml');
if(isset($alias[$mimetype])) {
$mimetype=$alias[$mimetype];
public static function mimetypeIcon($mimetype) {
$alias = array('application/xml' => 'code/xml');
if (isset($alias[$mimetype])) {
$mimetype = $alias[$mimetype];
}
if (isset(self::$mimetypeIcons[$mimetype])) {
return self::$mimetypeIcons[$mimetype];
}
// Replace slash and backslash with a minus
$mimetype = str_replace( "/", "-", $mimetype );
$mimetype = str_replace( "\\", "-", $mimetype );
$icon = str_replace('/', '-', $mimetype);
$icon = str_replace( '\\', '-', $icon);
// Is it a dir?
if( $mimetype == "dir" ) {
return OC::$WEBROOT."/core/img/filetypes/folder.png";
if ($mimetype === 'dir') {
self::$mimetypeIcons[$mimetype] = OC::$WEBROOT.'/core/img/filetypes/folder.png';
return OC::$WEBROOT.'/core/img/filetypes/folder.png';
}
// Icon exists?
if( file_exists( OC::$SERVERROOT."/core/img/filetypes/$mimetype.png" )) {
return OC::$WEBROOT."/core/img/filetypes/$mimetype.png";
if (file_exists(OC::$SERVERROOT.'/core/img/filetypes/'.$icon.'.png')) {
self::$mimetypeIcons[$mimetype] = OC::$WEBROOT.'/core/img/filetypes/'.$icon.'.png';
return OC::$WEBROOT.'/core/img/filetypes/'.$icon.'.png';
}
//try only the first part of the filetype
$mimetype=substr($mimetype, 0, strpos($mimetype, '-'));
if( file_exists( OC::$SERVERROOT."/core/img/filetypes/$mimetype.png" )) {
return OC::$WEBROOT."/core/img/filetypes/$mimetype.png";
}
else{
return OC::$WEBROOT."/core/img/filetypes/file.png";
// Try only the first part of the filetype
$mimePart = substr($icon, 0, strpos($icon, '-'));
if (file_exists(OC::$SERVERROOT.'/core/img/filetypes/'.$mimePart.'.png')) {
self::$mimetypeIcons[$mimetype] = OC::$WEBROOT.'/core/img/filetypes/'.$mimePart.'.png';
return OC::$WEBROOT.'/core/img/filetypes/'.$mimePart.'.png';
} else {
self::$mimetypeIcons[$mimetype] = OC::$WEBROOT.'/core/img/filetypes/file.png';
return OC::$WEBROOT.'/core/img/filetypes/file.png';
}
}