summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/files/cache/scanner.php15
-rw-r--r--lib/helper.php42
2 files changed, 34 insertions, 23 deletions
diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php
index 46122221dc2..8f9a7921956 100644
--- a/lib/files/cache/scanner.php
+++ b/lib/files/cache/scanner.php
@@ -78,18 +78,21 @@ class Scanner {
$this->scanFile($parent);
}
}
- if($cacheData = $this->cache->get($file)) {
+ $newData = $data;
+ if ($cacheData = $this->cache->get($file)) {
+ if ($checkExisting && $data['size'] === -1) {
+ $data['size'] = $cacheData['size'];
+ }
if ($data['mtime'] === $cacheData['mtime'] &&
$data['size'] === $cacheData['size']) {
$data['etag'] = $cacheData['etag'];
}
+ // Only update metadata that has changed
+ $newData = array_diff($data, $cacheData);
}
- if ($checkExisting and $cacheData) {
- if ($data['size'] === -1) {
- $data['size'] = $cacheData['size'];
- }
+ if (!empty($newData)) {
+ $this->cache->put($file, $newData);
}
- $this->cache->put($file, $data);
}
return $data;
}
diff --git a/lib/helper.php b/lib/helper.php
index c69445ed788..225e9fd2a9a 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -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";
- }
- //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";
+ 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';
}
- 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';
}
}