/** * 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; }