StorageModifierTrait.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2016, ownCloud, Inc.
  4. *
  5. * @author Robin McCorkell <robin@mccorkell.me.uk>
  6. * @author Roeland Jago Douma <roeland@famdouma.nl>
  7. *
  8. * @license AGPL-3.0
  9. *
  10. * This code is free software: you can redistribute it and/or modify
  11. * it under the terms of the GNU Affero General Public License, version 3,
  12. * as published by the Free Software Foundation.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU Affero General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Affero General Public License, version 3,
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>
  21. *
  22. */
  23. namespace OCA\Files_External\Lib;
  24. use OCP\Files\Storage;
  25. use OCP\Files\StorageNotAvailableException;
  26. use OCP\IUser;
  27. /**
  28. * Trait for objects that can modify StorageConfigs and wrap Storages
  29. *
  30. * When a storage implementation is being prepared for use, the StorageConfig
  31. * is passed through manipulateStorageConfig() to update any parameters as
  32. * necessary. After the storage implementation has been constructed, it is
  33. * passed through wrapStorage(), potentially replacing the implementation with
  34. * a wrapped storage that changes its behaviour.
  35. *
  36. * Certain configuration options need to be set before the implementation is
  37. * constructed, while others are retrieved directly from the storage
  38. * implementation and so need a wrapper to be modified.
  39. */
  40. trait StorageModifierTrait {
  41. /**
  42. * Modify a StorageConfig parameters
  43. *
  44. * @param StorageConfig $storage
  45. * @param IUser $user User the storage is being used as
  46. * @throws InsufficientDataForMeaningfulAnswerException
  47. * @throws StorageNotAvailableException
  48. */
  49. public function manipulateStorageConfig(StorageConfig &$storage, IUser $user = null) {
  50. }
  51. /**
  52. * Wrap a Storage if necessary
  53. *
  54. * @param Storage $storage
  55. * @return Storage
  56. * @throws InsufficientDataForMeaningfulAnswerException
  57. * @throws StorageNotAvailableException
  58. */
  59. public function wrapStorage(Storage $storage) {
  60. return $storage;
  61. }
  62. }