diff --git a/src/Lib/default/local_tool_connectors/MispConnector.php b/src/Lib/default/local_tool_connectors/MispConnector.php
index d7d4b30..ee0705b 100644
--- a/src/Lib/default/local_tool_connectors/MispConnector.php
+++ b/src/Lib/default/local_tool_connectors/MispConnector.php
@@ -907,6 +907,12 @@ class MispConnector extends CommonConnectorTools
'reload_url' => '/localTools/action/' . h($params['connection']['id']) . '/organisationsAction',
'popover_url' => '/localTools/action/' . h($params['connection']['id']) . '/fetchSelectedOrganisationsAction'
],
+ [
+ 'text' => __('Fetch all organisations'),
+ 'html' => ' ',
+ 'reload_url' => '/localTools/action/' . h($params['connection']['id']) . '/organisationsAction',
+ 'popover_url' => '/localTools/action/' . h($params['connection']['id']) . '/fetchSelectedOrganisationsAction?ids=all'
+ ],
[
'text' => __('Push organisations'),
'html' => ' ',
@@ -1190,23 +1196,42 @@ class MispConnector extends CommonConnectorTools
return [
'data' => [
'title' => __('Fetch organisations'),
- 'description' => __('Fetch and create/update the selected {0} organisations from MISP?', count($ids)),
+ 'description' => is_array($ids) ?
+ __('Fetch and create/update the selected {0} organisations from MISP?', count($ids)) :
+ __('Fetch and create/update ALL organisations from MISP?'),
'submit' => [
'action' => $params['request']->getParam('action')
],
- 'url' => ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction']
+ 'url' => is_array($ids) ?
+ ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction'] :
+ ['controller' => 'localTools', 'action' => 'action', $params['connection']['id'], 'fetchSelectedOrganisationsAction?ids=all']
]
];
} elseif ($params['request']->is(['post'])) {
$successes = 0;
$errors = 0;
- foreach ($ids as $id) {
- $response = $this->getData('/organisations/view/' . $id, $params);
- $result = $this->captureOrganisation($response->getJson()['Organisation']);
+ if (!is_array($ids) && $ids === 'all') {
+ $response = $this->getData('/organisations/index/scope:all', $params);
if ($response->getStatusCode() == 200) {
- $successes++;
- } else {
- $errors++;
+ $orgs = $response->getJson();
+ foreach ($orgs as $org) {
+ $result = $this->captureOrganisation($org['Organisation']);
+ if ($result) {
+ $successes++;
+ } else {
+ $errors++;
+ }
+ }
+ }
+ } else {
+ foreach ($ids as $id) {
+ $response = $this->getData('/organisations/view/' . $id, $params);
+ $result = $this->captureOrganisation($response->getJson()['Organisation']);
+ if ($response->getStatusCode() == 200) {
+ $successes++;
+ } else {
+ $errors++;
+ }
}
}
if ($successes) {