Beispiel #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)
 {
     $view = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_trashbin/versions');
     $versions = array();
     //force rescan of versions, local storage may not have updated the cache
     /** @var \OC\Files\Storage\Storage $storage */
     list($storage, ) = $view->resolvePath('/');
     $storage->getScanner()->scan('files_trashbin');
     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;
 }