예제 #1
0
 /**
  * @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;
     }
 }