mirror of https://github.com/MISP/MISP
chg: [workflowModules:distribution-if] Allow choosing `sharing-group` and keeping the selected sharing-group list empty
This enables users to simply check that the sharing-group distribution was usedpull/9677/head
parent
a9be1561e1
commit
9060c21adf
|
@ -5,7 +5,7 @@ class Module_distribution_if extends WorkflowBaseLogicModule
|
||||||
{
|
{
|
||||||
public $id = 'distribution-if';
|
public $id = 'distribution-if';
|
||||||
public $name = 'IF :: Distribution';
|
public $name = 'IF :: Distribution';
|
||||||
public $version = '0.2';
|
public $version = '0.3';
|
||||||
public $description = 'Distribution IF / ELSE condition block. The `then` output will be used if the encoded conditions is satisfied, otherwise the `else` output will be used.';
|
public $description = 'Distribution IF / ELSE condition block. The `then` output will be used if the encoded conditions is satisfied, otherwise the `else` output will be used.';
|
||||||
public $icon = 'code-branch';
|
public $icon = 'code-branch';
|
||||||
public $inputs = 1;
|
public $inputs = 1;
|
||||||
|
@ -103,12 +103,15 @@ class Module_distribution_if extends WorkflowBaseLogicModule
|
||||||
$final_sharing_group = $this->__extractSharingGroupIDs(
|
$final_sharing_group = $this->__extractSharingGroupIDs(
|
||||||
$data['Event'],
|
$data['Event'],
|
||||||
$data['Event']['Attribute'][0]['Object'] ?? [],
|
$data['Event']['Attribute'][0]['Object'] ?? [],
|
||||||
$data['Event']['Attribute'][0]
|
$data['Event']['Attribute'][0],
|
||||||
|
$scope
|
||||||
);
|
);
|
||||||
if ($operator == 'equals') {
|
if ($operator == 'equals') {
|
||||||
return !array_diff($final_sharing_group, $selected_sharing_groups); // All sharing groups are in the selection
|
return empty($selected_sharing_groups) ? !empty($final_sharing_group) :
|
||||||
|
!array_diff($final_sharing_group, $selected_sharing_groups); // All sharing groups are in the selection
|
||||||
} else if ($operator == 'not_equals') {
|
} else if ($operator == 'not_equals') {
|
||||||
return count(array_diff($final_sharing_group, $selected_sharing_groups)) == count($final_sharing_group); // All sharing groups are in the selection
|
return empty($selected_sharing_groups) ? empty($final_sharing_group) :
|
||||||
|
count(array_diff($final_sharing_group, $selected_sharing_groups)) == count($final_sharing_group); // All sharing groups are in the selection
|
||||||
}
|
}
|
||||||
$errors[] = __('Condition operator not supported for that distribution level');
|
$errors[] = __('Condition operator not supported for that distribution level');
|
||||||
return false;
|
return false;
|
||||||
|
@ -159,9 +162,15 @@ class Module_distribution_if extends WorkflowBaseLogicModule
|
||||||
return min($distri1, $distri2);
|
return min($distri1, $distri2);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function __extractSharingGroupIDs(array $event, array $object=[], array $attribute=[]): array
|
private function __extractSharingGroupIDs(array $event, array $object=[], array $attribute=[], $scope='event'): array
|
||||||
{
|
{
|
||||||
$sgIDs = [];
|
$sgIDs = [];
|
||||||
|
if ($scope == 'event') {
|
||||||
|
if (!empty($event) && $event['distribution'] == 4) {
|
||||||
|
$sgIDs[] = $event['sharing_group_id'];
|
||||||
|
}
|
||||||
|
return $sgIDs;
|
||||||
|
}
|
||||||
if (!empty($event) && $event['distribution'] == 4) {
|
if (!empty($event) && $event['distribution'] == 4) {
|
||||||
$sgIDs[] = $event['sharing_group_id'];
|
$sgIDs[] = $event['sharing_group_id'];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue