Пример #1
0
 public function testReuseExisting()
 {
     $this->fillTestFolders();
     $this->scanner->scan('');
     $oldData = $this->cache->get('');
     $this->storage->unlink('folder/bar.txt');
     $this->cache->put('folder', array('mtime' => $this->storage->filemtime('folder'), 'storage_mtime' => $this->storage->filemtime('folder')));
     $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_SIZE);
     $newData = $this->cache->get('');
     $this->assertInternalType('string', $oldData['etag']);
     $this->assertInternalType('string', $newData['etag']);
     $this->assertNotSame($oldData['etag'], $newData['etag']);
     $this->assertEquals($oldData['size'], $newData['size']);
     $oldData = $newData;
     $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG);
     $newData = $this->cache->get('');
     $this->assertSame($oldData['etag'], $newData['etag']);
     $this->assertEquals(-1, $newData['size']);
     $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE);
     $oldData = $this->cache->get('');
     $this->assertNotEquals(-1, $oldData['size']);
     $this->scanner->scanFile('', \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
     $newData = $this->cache->get('');
     $this->assertSame($oldData['etag'], $newData['etag']);
     $this->assertEquals($oldData['size'], $newData['size']);
     $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
     $newData = $this->cache->get('');
     $this->assertSame($oldData['etag'], $newData['etag']);
     $this->assertEquals($oldData['size'], $newData['size']);
     $this->scanner->scan('', \OC\Files\Cache\Scanner::SCAN_SHALLOW, \OC\Files\Cache\Scanner::REUSE_ETAG + \OC\Files\Cache\Scanner::REUSE_SIZE);
     $newData = $this->cache->get('');
     $this->assertSame($oldData['etag'], $newData['etag']);
     $this->assertEquals($oldData['size'], $newData['size']);
 }
Пример #2
0
 /**
  * update the storage_mtime of the direct parent in the cache to the mtime from the storage
  *
  * @param string $internalPath
  */
 private function correctParentStorageMtime($internalPath)
 {
     $parentId = $this->cache->getParentId($internalPath);
     $parent = dirname($internalPath);
     if ($parentId != -1) {
         $this->cache->update($parentId, array('storage_mtime' => $this->storage->filemtime($parent)));
     }
 }
Пример #3
0
 /**
  * get all the metadata of a file or folder
  * *
  *
  * @param string $path
  * @return array with metadata of the file
  */
 public function getData($path)
 {
     if (!$this->storage->isReadable($path)) {
         //cant read, nothing we can do
         \OCP\Util::writeLog('OC\\Files\\Cache\\Scanner', "!!! Path '{$path}' is not readable !!!", \OCP\Util::DEBUG);
         return null;
     }
     $data = array();
     $data['mimetype'] = $this->storage->getMimeType($path);
     $data['mtime'] = $this->storage->filemtime($path);
     if ($data['mimetype'] == 'httpd/unix-directory') {
         $data['size'] = -1;
         //unknown
     } else {
         $data['size'] = $this->storage->filesize($path);
     }
     $data['etag'] = $this->storage->getETag($path);
     $data['storage_mtime'] = $data['mtime'];
     return $data;
 }
Пример #4
0
 /**
  * get all the metadata of a file or folder
  * *
  *
  * @param string $path
  * @return array an array of metadata of the file
  */
 public function getData($path)
 {
     $permissions = $this->storage->getPermissions($path);
     if (!$permissions & \OCP\PERMISSION_READ) {
         //cant read, nothing we can do
         \OCP\Util::writeLog('OC\\Files\\Cache\\Scanner', "!!! Path '{$path}' is not accessible or present !!!", \OCP\Util::DEBUG);
         return null;
     }
     $data = array();
     $data['mimetype'] = $this->storage->getMimeType($path);
     $data['mtime'] = $this->storage->filemtime($path);
     if ($data['mimetype'] == 'httpd/unix-directory') {
         $data['size'] = -1;
         //unknown
     } else {
         $data['size'] = $this->storage->filesize($path);
     }
     $data['etag'] = $this->storage->getETag($path);
     $data['storage_mtime'] = $data['mtime'];
     $data['permissions'] = $permissions;
     return $data;
 }
Пример #5
0
 /**
  * see http://php.net/manual/en/function.filemtime.php
  *
  * @param string $path
  * @return int
  */
 public function filemtime($path)
 {
     return $this->storage->filemtime($path);
 }
Пример #6
0
 /**
  * update the storage_mtime of the parent
  *
  * @param \OC\Files\Storage\Storage $storage
  * @param string $internalPath
  */
 private static function correctParentStorageMtime($storage, $internalPath)
 {
     $cache = $storage->getCache();
     $parentId = $cache->getParentId($internalPath);
     $parent = dirname($internalPath);
     if ($parentId != -1) {
         $cache->update($parentId, array('storage_mtime' => $storage->filemtime($parent)));
     }
 }