summaryrefslogtreecommitdiffstats
path: root/lib/filecache/cached.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/filecache/cached.php')
-rw-r--r--lib/filecache/cached.php70
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/filecache/cached.php b/lib/filecache/cached.php
new file mode 100644
index 00000000000..17a792a23d4
--- /dev/null
+++ b/lib/filecache/cached.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+
+/**
+ * get data from the filecache without checking for updates
+ */
+class OC_FileCache_Cached{
+ public static $savedData=array();
+
+ public static function get($path,$root=false){
+ if($root===false){
+ $root=OC_Filesystem::getRoot();
+ }
+ $path=$root.$path;
+ $query=OC_DB::prepare('SELECT path,ctime,mtime,mimetype,size,encrypted,versioned,writable FROM *PREFIX*fscache WHERE path_hash=?');
+ $result=$query->execute(array(md5($path)))->fetchRow();
+ if(is_array($result)){
+ if(isset(self::$savedData[$path])){
+ $result=array_merge($result,self::$savedData[$path]);
+ }
+ return $result;
+ }else{
+ if(isset(self::$savedData[$path])){
+ return self::$savedData[$path];
+ }else{
+ return array();
+ }
+ }
+ }
+
+ /**
+ * get all files and folders in a folder
+ * @param string path
+ * @param string root (optional)
+ * @return array
+ *
+ * returns an array of assiciative arrays with the following keys:
+ * - path
+ * - name
+ * - size
+ * - mtime
+ * - ctime
+ * - mimetype
+ * - encrypted
+ * - versioned
+ */
+ public static function getFolderContent($path,$root=false,$mimetype_filter=''){
+ if($root===false){
+ $root=OC_Filesystem::getRoot();
+ }
+ $parent=OC_FileCache::getId($path,$root);
+ if($parent==-1){
+ return array();
+ }
+ $query=OC_DB::prepare('SELECT path,name,ctime,mtime,mimetype,size,encrypted,versioned,writable FROM *PREFIX*fscache WHERE parent=? AND (mimetype LIKE ? OR mimetype = ?)');
+ $result=$query->execute(array($parent, $mimetype_filter.'%', 'httpd/unix-directory'))->fetchAll();
+ if(is_array($result)){
+ return $result;
+ }else{
+ OC_Log::write('files','getFolderContent(): file not found in cache ('.$path.')',OC_Log::DEBUG);
+ return false;
+ }
+ }
+} \ No newline at end of file