/** * @brief returns all stored file versions from a given user * @param $uid id to the user * @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename */ private static function getAllVersions($uid) { if (\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED) == 'true') { $versions_fileview = new \OC\Files\View('/' . $uid . '/files_versions'); $versionsRoot = $versions_fileview->getLocalFolder(''); $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST); $versions = array(); foreach ($iterator as $path) { if (preg_match('/^.+\\.v(\\d+)$/', $path, $match)) { $relpath = substr($path, strlen($versionsRoot) - 1); $versions[$match[1] . '#' . $relpath] = array('path' => $relpath, 'timestamp' => $match[1]); } } ksort($versions); $i = 0; $result = array(); foreach ($versions as $key => $value) { $i++; $size = $versions_fileview->filesize($value['path']); $filename = substr($value['path'], 0, -strlen($value['timestamp']) - 2); $result['all'][$key]['version'] = $value['timestamp']; $result['all'][$key]['path'] = $filename; $result['all'][$key]['size'] = $size; $filename = substr($value['path'], 0, -strlen($value['timestamp']) - 2); $result['by_file'][$filename][$key]['version'] = $value['timestamp']; $result['by_file'][$filename][$key]['path'] = $filename; $result['by_file'][$filename][$key]['size'] = $size; } return $result; } }