Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
die_coolen_jungs
our_own_cloud_project
Commits
04e3da0c
Commit
04e3da0c
authored
Jun 24, 2016
by
Vincent Petry
Committed by
GitHub
Jun 24, 2016
Browse files
Merge pull request #25171 from owncloud/files_external-list-all
Add option to `occ files_external:list` to show all configured mounts
parents
dc78d26f
bac1a3a6
Changes
5
Hide whitespace changes
Inline
Side-by-side
apps/files_external/lib/Command/Export.php
View file @
04e3da0c
...
...
@@ -41,6 +41,11 @@ class Export extends ListCommand {
'user_id'
,
InputArgument
::
OPTIONAL
,
'user id to export the personal mounts for, if no user is provided admin mounts will be exported'
)
->
addOption
(
'all'
,
'a'
,
InputOption
::
VALUE_NONE
,
'show both system wide mounts and all personal mounts'
);
}
...
...
@@ -48,6 +53,7 @@ class Export extends ListCommand {
$listCommand
=
new
ListCommand
(
$this
->
globalService
,
$this
->
userService
,
$this
->
userSession
,
$this
->
userManager
);
$listInput
=
new
ArrayInput
([],
$listCommand
->
getDefinition
());
$listInput
->
setArgument
(
'user_id'
,
$input
->
getArgument
(
'user_id'
));
$listInput
->
setOption
(
'all'
,
$input
->
getOption
(
'all'
));
$listInput
->
setOption
(
'output'
,
'json_pretty'
);
$listInput
->
setOption
(
'show-password'
,
true
);
$listInput
->
setOption
(
'full'
,
true
);
...
...
apps/files_external/lib/Command/ListCommand.php
View file @
04e3da0c
...
...
@@ -56,6 +56,8 @@ class ListCommand extends Base {
*/
protected
$userManager
;
const
ALL
=
-
1
;
function
__construct
(
GlobalStoragesService
$globalService
,
UserStoragesService
$userService
,
IUserSession
$userSession
,
IUserManager
$userManager
)
{
parent
::
__construct
();
$this
->
globalService
=
$globalService
;
...
...
@@ -67,7 +69,7 @@ class ListCommand extends Base {
protected
function
configure
()
{
$this
->
setName
(
'files_external:list'
)
->
setDescription
(
'List configured mounts'
)
->
setDescription
(
'List configured
admin or personal
mounts'
)
->
addArgument
(
'user_id'
,
InputArgument
::
OPTIONAL
,
...
...
@@ -82,16 +84,27 @@ class ListCommand extends Base {
null
,
InputOption
::
VALUE_NONE
,
'don\'t truncate long values in table output'
)
->
addOption
(
'all'
,
'a'
,
InputOption
::
VALUE_NONE
,
'show both system wide mounts and all personal mounts'
);
parent
::
configure
();
}
protected
function
execute
(
InputInterface
$input
,
OutputInterface
$output
)
{
$userId
=
$input
->
getArgument
(
'user_id'
);
$storageService
=
$this
->
getStorageService
(
$userId
);
if
(
$input
->
getOption
(
'all'
))
{
/** @var $mounts StorageConfig[] */
$mounts
=
$this
->
globalService
->
getStorageForAllUsers
();
$userId
=
self
::
ALL
;
}
else
{
$userId
=
$input
->
getArgument
(
'user_id'
);
$storageService
=
$this
->
getStorageService
(
$userId
);
/** @var $mounts StorageConfig[] */
$mounts
=
$storageService
->
getAllStorages
();
/** @var $mounts StorageConfig[] */
$mounts
=
$storageService
->
getAllStorages
();
}
$this
->
listMounts
(
$userId
,
$mounts
,
$input
,
$output
);
}
...
...
@@ -102,13 +115,15 @@ class ListCommand extends Base {
* @param InputInterface $input
* @param OutputInterface $output
*/
public
function
listMounts
(
$userId
,
array
$mounts
,
InputInterface
$input
,
OutputInterface
$output
){
public
function
listMounts
(
$userId
,
array
$mounts
,
InputInterface
$input
,
OutputInterface
$output
)
{
$outputType
=
$input
->
getOption
(
'output'
);
if
(
count
(
$mounts
)
===
0
)
{
if
(
$outputType
===
self
::
OUTPUT_FORMAT_JSON
||
$outputType
===
self
::
OUTPUT_FORMAT_JSON_PRETTY
)
{
$output
->
writeln
(
'[]'
);
}
else
{
if
(
$userId
)
{
if
(
$userId
===
self
::
ALL
)
{
$output
->
writeln
(
"<info>No mounts configured</info>"
);
}
else
if
(
$userId
)
{
$output
->
writeln
(
"<info>No mounts configured by
$userId
</info>"
);
}
else
{
$output
->
writeln
(
"<info>No admin mounts configured</info>"
);
...
...
@@ -119,10 +134,13 @@ class ListCommand extends Base {
$headers
=
[
'Mount ID'
,
'Mount Point'
,
'Storage'
,
'Authentication Type'
,
'Configuration'
,
'Options'
];
if
(
!
$userId
)
{
if
(
!
$userId
||
$userId
===
self
::
ALL
)
{
$headers
[]
=
'Applicable Users'
;
$headers
[]
=
'Applicable Groups'
;
}
if
(
$userId
===
self
::
ALL
)
{
$headers
[]
=
'Type'
;
}
if
(
!
$input
->
getOption
(
'show-password'
))
{
$hideKeys
=
[
'password'
,
'refresh_token'
,
'token'
,
'client_secret'
,
'public_key'
,
'private_key'
];
...
...
@@ -150,10 +168,13 @@ class ListCommand extends Base {
$config
->
getBackendOptions
(),
$config
->
getMountOptions
()
];
if
(
!
$userId
)
{
if
(
!
$userId
||
$userId
===
self
::
ALL
)
{
$values
[]
=
$config
->
getApplicableUsers
();
$values
[]
=
$config
->
getApplicableGroups
();
}
if
(
$userId
===
self
::
ALL
)
{
$values
[]
=
$config
->
getType
()
===
StorageConfig
::
MOUNT_TYPE_ADMIN
?
'admin'
:
'personal'
;
}
return
array_combine
(
$keys
,
$values
);
},
$mounts
);
...
...
@@ -215,7 +236,7 @@ class ListCommand extends Base {
$optionsString
];
if
(
!
$userId
)
{
if
(
!
$userId
||
$userId
===
self
::
ALL
)
{
$applicableUsers
=
implode
(
', '
,
$config
->
getApplicableUsers
());
$applicableGroups
=
implode
(
', '
,
$config
->
getApplicableGroups
());
if
(
$applicableUsers
===
''
&&
$applicableGroups
===
''
)
{
...
...
@@ -224,6 +245,9 @@ class ListCommand extends Base {
$values
[]
=
$applicableUsers
;
$values
[]
=
$applicableGroups
;
}
if
(
$userId
===
self
::
ALL
)
{
$values
[]
=
$config
->
getType
()
===
StorageConfig
::
MOUNT_TYPE_ADMIN
?
'Admin'
:
'Personal'
;
}
return
$values
;
},
$mounts
);
...
...
apps/files_external/lib/Service/DBConfigService.php
View file @
04e3da0c
...
...
@@ -76,6 +76,18 @@ class DBConfigService {
}
}
/**
* Get all configured mounts
*
* @return array
*/
public
function
getAllMounts
()
{
$builder
=
$this
->
connection
->
getQueryBuilder
();
$query
=
$builder
->
select
([
'mount_id'
,
'mount_point'
,
'storage_backend'
,
'auth_backend'
,
'priority'
,
'type'
])
->
from
(
'external_mounts'
);
return
$this
->
getMountsFromQuery
(
$query
);
}
/**
* Get admin defined mounts
*
...
...
apps/files_external/lib/Service/GlobalStoragesService.php
View file @
04e3da0c
...
...
@@ -162,4 +162,23 @@ class GlobalStoragesService extends StoragesService {
protected
function
isApplicable
(
StorageConfig
$config
)
{
return
true
;
}
/**
* Get all configured admin and personal mounts
*
* @return array map of storage id to storage config
*/
public
function
getStorageForAllUsers
()
{
$mounts
=
$this
->
dbConfig
->
getAllMounts
();
$configs
=
array_map
([
$this
,
'getStorageConfigFromDBMount'
],
$mounts
);
$configs
=
array_filter
(
$configs
,
function
(
$config
)
{
return
$config
instanceof
StorageConfig
;
});
$keys
=
array_map
(
function
(
StorageConfig
$config
)
{
return
$config
->
getId
();
},
$configs
);
return
array_combine
(
$keys
,
$configs
);
}
}
apps/files_external/tests/Service/DBConfigServiceTest.php
View file @
04e3da0c
...
...
@@ -282,4 +282,14 @@ class DBConfigServiceTest extends TestCase {
$this
->
assertCount
(
1
,
$mounts
);
$this
->
assertEquals
(
$id1
,
$mounts
[
0
][
'mount_id'
]);
}
public
function
testGetAllMounts
()
{
$id1
=
$this
->
addMount
(
'/test'
,
'foo'
,
'bar'
,
100
,
DBConfigService
::
MOUNT_TYPE_ADMIN
);
$id2
=
$this
->
addMount
(
'/test2'
,
'foo2'
,
'bar2'
,
100
,
DBConfigService
::
MOUNT_TYPE_PERSONAl
);
$mounts
=
$this
->
dbConfig
->
getAllMounts
();
$this
->
assertCount
(
2
,
$mounts
);
$this
->
assertEquals
(
$id1
,
$mounts
[
0
][
'mount_id'
]);
$this
->
assertEquals
(
$id2
,
$mounts
[
1
][
'mount_id'
]);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment