Пример #1
0
 /**
  * update the filecache according to changes to the filesystem
  * @param string path
  * @param string root (optional)
  */
 public static function update($path, $root = false)
 {
     if ($root === false) {
         $view = OC_Filesystem::getView();
     } else {
         $view = new OC_FilesystemView($root);
     }
     $mimetype = $view->getMimeType($path);
     $size = 0;
     $cached = OC_FileCache_Cached::get($path, $root);
     $cachedSize = isset($cached['size']) ? $cached['size'] : 0;
     if ($view->is_dir($path . '/')) {
         if (OC_FileCache::inCache($path, $root)) {
             $cachedContent = OC_FileCache_Cached::getFolderContent($path, $root);
             foreach ($cachedContent as $file) {
                 $size += $file['size'];
             }
             $mtime = $view->filemtime($path . '/');
             $ctime = $view->filectime($path . '/');
             $writable = $view->is_writable($path . '/');
             OC_FileCache::put($path, array('size' => $size, 'mtime' => $mtime, 'ctime' => $ctime, 'mimetype' => $mimetype, 'writable' => $writable));
         } else {
             $count = 0;
             OC_FileCache::scan($path, null, $count, $root);
             return;
             //increaseSize is already called inside scan
         }
     } else {
         $size = OC_FileCache::scanFile($path, $root);
     }
     OC_FileCache::increaseSize(dirname($path), $size - $cachedSize, $root);
 }
Пример #2
0
 /**
  * called when changes are made to files
  * @param array $params
  * @param string root (optional)
  */
 public static function fileSystemWatcherWrite($params, $root = '')
 {
     if (!$root) {
         $view = OC_Filesystem::getView();
     } else {
         $view = new OC_FilesystemView($root == '/' ? '' : $root);
     }
     $path = $params['path'];
     $fullPath = $view->getRoot() . $path;
     $mimetype = $view->getMimeType($path);
     $dir = $view->is_dir($path . '/');
     //dont use self::get here, we don't want inifinte loops when a file has changed
     $cachedSize = self::getCachedSize($path, $root);
     $size = 0;
     if ($dir) {
         if (self::inCache($path, $root)) {
             $parent = self::getFileId($fullPath);
             $query = OC_DB::prepare('SELECT size FROM *PREFIX*fscache WHERE parent=?');
             $result = $query->execute(array($parent));
             while ($row = $result->fetchRow()) {
                 $size += $row['size'];
             }
             $mtime = $view->filemtime($path);
             $ctime = $view->filectime($path);
             $writable = $view->is_writable($path);
             self::put($path, array('size' => $size, 'mtime' => $mtime, 'ctime' => $ctime, 'mimetype' => $mimetype, 'writable' => $writable));
         } else {
             $count = 0;
             self::scan($path, null, $count, $root);
         }
     } else {
         $size = self::scanFile($path, $root);
     }
     self::increaseSize(dirname($fullPath), $size - $cachedSize);
 }