summaryrefslogtreecommitdiffstats
path: root/apps/files_external/lib/storageconfig.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/lib/storageconfig.php')
-rw-r--r--apps/files_external/lib/storageconfig.php243
1 files changed, 243 insertions, 0 deletions
diff --git a/apps/files_external/lib/storageconfig.php b/apps/files_external/lib/storageconfig.php
new file mode 100644
index 00000000000..f23b5cd86a9
--- /dev/null
+++ b/apps/files_external/lib/storageconfig.php
@@ -0,0 +1,243 @@
+<?php
+/**
+ * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OCA\Files_external\Lib;
+
+/**
+ * External storage configuration
+ */
+class StorageConfig implements \JsonSerializable {
+
+ /**
+ * @var int
+ */
+ private $id;
+
+ /**
+ * @var string
+ */
+ private $backendClass;
+
+ /**
+ * @var array
+ */
+ private $backendOptions = [];
+
+ /**
+ * @var string
+ */
+ private $mountPoint;
+
+ /**
+ * @var int
+ */
+ private $status;
+
+ /**
+ * @var int
+ */
+ private $priority;
+
+ /**
+ * @var array
+ */
+ private $applicableUsers = [];
+
+ /**
+ * @var array
+ */
+ private $applicableGroups = [];
+
+ /**
+ * @param int|null $id config id or null for a new config
+ */
+ public function __construct($id = null) {
+ $this->id = $id;
+ }
+
+ /**
+ * Returns the configuration id
+ *
+ * @return int
+ */
+ public function getId() {
+ return $this->id;
+ }
+
+ /**
+ * Sets the configuration id
+ *
+ * @param int configuration id
+ */
+ public function setId($id) {
+ $this->id = $id;
+ }
+
+ /**
+ * Returns mount point path relative to the user's
+ * "files" folder.
+ *
+ * @return string path
+ */
+ public function getMountPoint() {
+ return $this->mountPoint;
+ }
+
+ /**
+ * Sets mount point path relative to the user's
+ * "files" folder.
+ * The path will be normalized.
+ *
+ * @param string path
+ */
+ public function setMountPoint($mountPoint) {
+ $this->mountPoint = \OC\Files\Filesystem::normalizePath($mountPoint);
+ }
+
+ /**
+ * Returns the external storage backend class name
+ *
+ * @return string external storage backend class name
+ */
+ public function getBackendClass() {
+ return $this->backendClass;
+ }
+
+ /**
+ * Sets the external storage backend class name
+ *
+ * @param string external storage backend class name
+ */
+ public function setBackendClass($backendClass) {
+ $this->backendClass = $backendClass;
+ }
+
+ /**
+ * Returns the external storage backend-specific options
+ *
+ * @return array backend options
+ */
+ public function getBackendOptions() {
+ return $this->backendOptions;
+ }
+
+ /**
+ * Sets the external storage backend-specific options
+ *
+ * @param array backend options
+ */
+ public function setBackendOptions($backendOptions) {
+ $this->backendOptions = $backendOptions;
+ }
+
+ /**
+ * Returns the mount priority
+ *
+ * @return int priority
+ */
+ public function getPriority() {
+ return $this->priority;
+ }
+
+ /**
+ * Sets the mount priotity
+ *
+ * @param int priority
+ */
+ public function setPriority($priority) {
+ $this->priority = $priority;
+ }
+
+ /**
+ * Returns the users for which to mount this storage
+ *
+ * @return array applicable users
+ */
+ public function getApplicableUsers() {
+ return $this->applicableUsers;
+ }
+
+ /**
+ * Sets the users for which to mount this storage
+ *
+ * @param array applicable users
+ */
+ public function setApplicableUsers($applicableUsers) {
+ if (is_null($applicableUsers)) {
+ $applicableUsers = [];
+ }
+ $this->applicableUsers = $applicableUsers;
+ }
+
+ /**
+ * Returns the groups for which to mount this storage
+ *
+ * @return array applicable groups
+ */
+ public function getApplicableGroups() {
+ return $this->applicableGroups;
+ }
+
+ /**
+ * Sets the groups for which to mount this storage
+ *
+ * @param array applicable groups
+ */
+ public function setApplicableGroups($applicableGroups) {
+ if (is_null($applicableGroups)) {
+ $applicableGroups = [];
+ }
+ $this->applicableGroups = $applicableGroups;
+ }
+
+ /**
+ * Sets the storage status, whether the config worked last time
+ *
+ * @return int $status status
+ */
+ public function getStatus() {
+ return $this->status;
+ }
+
+ /**
+ * Sets the storage status, whether the config worked last time
+ *
+ * @param int $status status
+ */
+ public function setStatus($status) {
+ $this->status = $status;
+ }
+
+ /**
+ * Serialize config to JSON
+ *
+ * @return array
+ */
+ public function jsonSerialize() {
+ $result = [];
+ if (!is_null($this->id)) {
+ $result['id'] = $this->id;
+ }
+ $result['mountPoint'] = $this->mountPoint;
+ $result['backendClass'] = $this->backendClass;
+ $result['backendOptions'] = $this->backendOptions;
+ if (!is_null($this->priority)) {
+ $result['priority'] = $this->priority;
+ }
+ if (!empty($this->applicableUsers)) {
+ $result['applicableUsers'] = $this->applicableUsers;
+ }
+ if (!empty($this->applicableGroups)) {
+ $result['applicableGroups'] = $this->applicableGroups;
+ }
+ if (!is_null($this->status)) {
+ $result['status'] = $this->status;
+ }
+ return $result;
+ }
+}