コード例 #1
0
ファイル: update.php プロジェクト: noci2012/owncloud
 /**
  * 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
<?php

set_time_limit(0);
//scanning can take ages
$force = isset($_GET['force']) and $_GET['force'] == 'true';
$dir = isset($_GET['dir']) ? $_GET['dir'] : '';
$checkOnly = isset($_GET['checkonly']) and $_GET['checkonly'] == 'true';
if (!$checkOnly) {
    $eventSource = new OC_EventSource();
}
//create the file cache if necesary
if ($force or !OC_FileCache::inCache('')) {
    if (!$checkOnly) {
        OCP\DB::beginTransaction();
        OC_FileCache::scan($dir, $eventSource);
        OC_FileCache::clean();
        OCP\DB::commit();
        $eventSource->send('success', true);
    } else {
        OCP\JSON::success(array('data' => array('done' => true)));
        exit;
    }
} else {
    if ($checkOnly) {
        OCP\JSON::success(array('data' => array('done' => false)));
        exit;
    }
    if (isset($eventSource)) {
        $eventSource->send('success', false);
    } else {
        exit;