-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
51 additions
and
5 deletions.
There are no files selected for viewing
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 |
---|---|---|
|
@@ -9,7 +9,7 @@ | |
|
||
class DownloadsCommand extends AbstractReportCommand | ||
{ | ||
const TYPES = ['user', 'record']; | ||
const TYPES = ['user', 'record', 'field']; | ||
|
||
public function __construct() | ||
{ | ||
|
@@ -20,13 +20,15 @@ public function __construct() | |
->addOption('type', null, InputOption::VALUE_REQUIRED, 'type of report downloads, if not defined or empty it is for all downloads') | ||
->addOption('collection_id', 'c', InputOption::VALUE_REQUIRED| InputOption::VALUE_IS_ARRAY, 'Distant collection ID in the databox, get all available collection if not defined') | ||
->addOption('permalink', 'p', InputOption::VALUE_REQUIRED, 'the subdefinition name to retrieve permalink if exist, available only for type record and for all downloads type ""') | ||
->addOption('meta_struct_id', 'm', InputOption::VALUE_REQUIRED, 'the meta_struct_id of the field to do grouping, available only for type field') | ||
|
||
->setHelp( | ||
"eg: bin/report downloads:all --databox_id 2 --email '[email protected]' --dmin '2022-12-01' --dmax '2023-01-01' --type 'user' \n" | ||
. "\<TYPE>type of report\n" | ||
. "- <info>'' or not defined </info>all downloads\n" | ||
. "- <info>'user' </info> downloads by user\n" | ||
. "- <info>'record' </info> downloads by record\n" | ||
. "- <info>'field' </info> downloads by field, need --meta_struct_id option\n" | ||
); | ||
} | ||
|
||
|
@@ -38,6 +40,7 @@ protected function getReport(InputInterface $input, OutputInterface $output) | |
$type = $input->getOption('type'); | ||
$collectionIds = $input->getOption('collection_id'); | ||
$permalink = $input->getOption('permalink'); | ||
$metaStructId = $input->getOption('meta_struct_id'); | ||
|
||
if (!empty($type) && !in_array($type, self::TYPES)) { | ||
$output->writeln("<error>wrong '--type' option (--help for available value)</error>"); | ||
|
@@ -51,6 +54,12 @@ protected function getReport(InputInterface $input, OutputInterface $output) | |
return 1; | ||
} | ||
|
||
if ($type == 'field' && empty($metaStructId)) { | ||
$output->writeln("<error>you have to set option --meta_struct_id with type=field</error>"); | ||
|
||
return 1; | ||
} | ||
|
||
$databox = $this->findDbOr404($this->sbasId); | ||
$collIds = []; | ||
|
||
|
@@ -66,14 +75,21 @@ protected function getReport(InputInterface $input, OutputInterface $output) | |
} | ||
} | ||
|
||
if (!$this->isFieldExist($databox, $metaStructId)) { | ||
$output->writeln("<error>there is no field find with this meta_struct_id!</error>"); | ||
|
||
return 1; | ||
} | ||
|
||
return | ||
(new ReportActions( | ||
$databox, | ||
[ | ||
'dmin' => $this->dmin, | ||
'dmax' => $this->dmax, | ||
'group' => $type, | ||
'anonymize' => $this->container['conf']->get(['registry', 'modules', 'anonymous-report']) | ||
'dmin' => $this->dmin, | ||
'dmax' => $this->dmax, | ||
'group' => $type, | ||
'anonymize' => $this->container['conf']->get(['registry', 'modules', 'anonymous-report']), | ||
'meta_struct_id' => $metaStructId | ||
] | ||
)) | ||
->setAppKey($this->container['conf']->get(['main', 'key'])) | ||
|
@@ -82,4 +98,15 @@ protected function getReport(InputInterface $input, OutputInterface $output) | |
->setAsDownloadReport(true) | ||
; | ||
} | ||
|
||
private function isFieldExist(\databox $databox, $metaStructId) | ||
{ | ||
foreach($databox->get_meta_structure() as $field) { | ||
if ($field->get_id() == $metaStructId) { | ||
return true; | ||
} | ||
} | ||
|
||
return false; | ||
} | ||
} |
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