return $result;
}
-
+
+ /**
+ * @brief delete all share keys of a given file
+ * @param \OC_FilesystemView $view
+ * @param type $userId owner of the file
+ * @param type $filePath path to the file, relative to the owners file dir
+ */
+ public static function delAllShareKeys(\OC_FilesystemView $view, $userId, $filePath) {
+
+ if ($view->is_dir($userId.'/files/'.$filePath)) {
+ $view->unlink($userId.'/files_encryption/share-keys/'.$filePath);
+ } else {
+ $localKeyPath = $view->getLocalFile($userId.'/files_encryption/share-keys/'.$filePath);
+ $matches = glob(preg_quote($localKeyPath).'*.shareKey');
+ foreach ($matches as $ma) {
+ unlink($ma);
+ }
+ }
+ }
+
/**
* @brief Delete a single user's shareKey for a single file
*/
// Format path to be relative to user files dir
$relPath = $util->stripUserFilesPath( $path );
-// list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath );
-
- $fileOwner = \OC\Files\Filesystem::getOwner( $path );
- $ownerPath = $util->stripUserFilesPath( $path ); // TODO: Don't trust $path, fetch owner path
-
- $filePath = $fileOwner . '/' . 'files_encryption' . '/' . 'keyfiles' . '/'. $ownerPath;
+ list( $owner, $ownerPath ) = $util->getUidAndFilename( $relPath );
// Delete keyfile & shareKey so it isn't orphaned
if (
! (
- Keymanager::deleteFileKey( $view, $fileOwner, $ownerPath )
- && Keymanager::delShareKey( $view, $fileOwner, $ownerPath )
+ Keymanager::deleteFileKey( $view, $owner, $ownerPath )
+ && Keymanager::delAllShareKeys( $view, $owner, $ownerPath )
)
) {