Example #1
0
 /**
  * find all versions which belong to the file we want to restore
  *
  * @param string $filename name of the file which should be restored
  * @param int $timestamp timestamp when the file was deleted
  * @return array
  */
 private static function getVersionsFromTrash($filename, $timestamp, $user)
 {
     $view = new \OC\Files\View('/' . $user . '/files_trashbin/versions');
     $versions = array();
     //force rescan of versions, local storage may not have updated the cache
     if (!self::$scannedVersions) {
         /** @var \OC\Files\Storage\Storage $storage */
         list($storage, ) = $view->resolvePath('/');
         $storage->getScanner()->scan('files_trashbin/versions');
         self::$scannedVersions = true;
     }
     if ($timestamp) {
         // fetch for old versions
         $matches = $view->searchRaw($filename . '.v%.d' . $timestamp);
         $offset = -strlen($timestamp) - 2;
     } else {
         $matches = $view->searchRaw($filename . '.v%');
     }
     if (is_array($matches)) {
         foreach ($matches as $ma) {
             if ($timestamp) {
                 $parts = explode('.v', substr($ma['path'], 0, $offset));
                 $versions[] = end($parts);
             } else {
                 $parts = explode('.v', $ma);
                 $versions[] = end($parts);
             }
         }
     }
     return $versions;
 }