-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11884 from owncloud/ext-appframework
Cleanup ext storage CRUD code, introduce storage config id
- Loading branch information
Showing
32 changed files
with
4,316 additions
and
489 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
156 changes: 156 additions & 0 deletions
156
apps/files_external/controller/globalstoragescontroller.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
<?php | ||
/** | ||
* ownCloud - files_external | ||
* | ||
* This file is licensed under the Affero General Public License version 3 or | ||
* later. See the COPYING file. | ||
* | ||
* @author Vincent Petry <[email protected]> | ||
* @copyright Vincent Petry 2015 | ||
*/ | ||
|
||
namespace OCA\Files_External\Controller; | ||
|
||
|
||
use \OCP\IConfig; | ||
use \OCP\IUserSession; | ||
use \OCP\IRequest; | ||
use \OCP\IL10N; | ||
use \OCP\AppFramework\Http\DataResponse; | ||
use \OCP\AppFramework\Controller; | ||
use \OCP\AppFramework\Http; | ||
use \OCA\Files_external\Service\GlobalStoragesService; | ||
use \OCA\Files_external\NotFoundException; | ||
use \OCA\Files_external\Lib\StorageConfig; | ||
|
||
/** | ||
* Global storages controller | ||
*/ | ||
class GlobalStoragesController extends StoragesController { | ||
/** | ||
* Creates a new global storages controller. | ||
* | ||
* @param string $AppName application name | ||
* @param IRequest $request request object | ||
* @param IL10N $l10n l10n service | ||
* @param GlobalStoragesService $globalStoragesService storage service | ||
*/ | ||
public function __construct( | ||
$AppName, | ||
IRequest $request, | ||
IL10N $l10n, | ||
GlobalStoragesService $globalStoragesService | ||
) { | ||
parent::__construct( | ||
$AppName, | ||
$request, | ||
$l10n, | ||
$globalStoragesService | ||
); | ||
} | ||
|
||
/** | ||
* Create an external storage entry. | ||
* | ||
* @param string $mountPoint storage mount point | ||
* @param string $backendClass backend class name | ||
* @param array $backendOptions backend-specific options | ||
* @param array $mountOptions mount-specific options | ||
* @param array $applicableUsers users for which to mount the storage | ||
* @param array $applicableGroups groups for which to mount the storage | ||
* @param int $priority priority | ||
* | ||
* @return DataResponse | ||
*/ | ||
public function create( | ||
$mountPoint, | ||
$backendClass, | ||
$backendOptions, | ||
$mountOptions, | ||
$applicableUsers, | ||
$applicableGroups, | ||
$priority | ||
) { | ||
$newStorage = new StorageConfig(); | ||
$newStorage->setMountPoint($mountPoint); | ||
$newStorage->setBackendClass($backendClass); | ||
$newStorage->setBackendOptions($backendOptions); | ||
$newStorage->setMountOptions($mountOptions); | ||
$newStorage->setApplicableUsers($applicableUsers); | ||
$newStorage->setApplicableGroups($applicableGroups); | ||
$newStorage->setPriority($priority); | ||
|
||
$response = $this->validate($newStorage); | ||
if (!empty($response)) { | ||
return $response; | ||
} | ||
|
||
$newStorage = $this->service->addStorage($newStorage); | ||
|
||
$this->updateStorageStatus($newStorage); | ||
|
||
return new DataResponse( | ||
$newStorage, | ||
Http::STATUS_CREATED | ||
); | ||
} | ||
|
||
/** | ||
* Update an external storage entry. | ||
* | ||
* @param int $id storage id | ||
* @param string $mountPoint storage mount point | ||
* @param string $backendClass backend class name | ||
* @param array $backendOptions backend-specific options | ||
* @param array $mountOptions mount-specific options | ||
* @param array $applicableUsers users for which to mount the storage | ||
* @param array $applicableGroups groups for which to mount the storage | ||
* @param int $priority priority | ||
* | ||
* @return DataResponse | ||
*/ | ||
public function update( | ||
$id, | ||
$mountPoint, | ||
$backendClass, | ||
$backendOptions, | ||
$mountOptions, | ||
$applicableUsers, | ||
$applicableGroups, | ||
$priority | ||
) { | ||
$storage = new StorageConfig($id); | ||
$storage->setMountPoint($mountPoint); | ||
$storage->setBackendClass($backendClass); | ||
$storage->setBackendOptions($backendOptions); | ||
$storage->setMountOptions($mountOptions); | ||
$storage->setApplicableUsers($applicableUsers); | ||
$storage->setApplicableGroups($applicableGroups); | ||
$storage->setPriority($priority); | ||
|
||
$response = $this->validate($storage); | ||
if (!empty($response)) { | ||
return $response; | ||
} | ||
|
||
try { | ||
$storage = $this->service->updateStorage($storage); | ||
} catch (NotFoundException $e) { | ||
return new DataResponse( | ||
[ | ||
'message' => (string)$this->l10n->t('Storage with id "%i" not found', array($id)) | ||
], | ||
Http::STATUS_NOT_FOUND | ||
); | ||
} | ||
|
||
$this->updateStorageStatus($storage); | ||
|
||
return new DataResponse( | ||
$storage, | ||
Http::STATUS_OK | ||
); | ||
|
||
} | ||
|
||
} |
Oops, something went wrong.