chg: [internal] Update correlations in one query

Before, for every event saving action, four queries for updating correlations were generated
pull/5948/head
Jakub Onderka 2020-05-27 17:42:59 +02:00
parent d379a16666
commit 4a090f9c00
1 changed files with 10 additions and 5 deletions

View File

@ -634,19 +634,24 @@ class Event extends AppModel
public function afterSave($created, $options = array())
{
if (!Configure::read('MISP.completely_disable_correlation') && !$created) {
$this->Correlation = ClassRegistry::init('Correlation');
$db = $this->getDataSource();
$updateCorrelation = array();
if (isset($this->data['Event']['date'])) {
$this->Correlation->updateAll(array('Correlation.date' => $db->value($this->data['Event']['date'])), array('Correlation.event_id' => intval($this->data['Event']['id'])));
$updateCorrelation['Correlation.date'] = $db->value($this->data['Event']['date']);
}
if (isset($this->data['Event']['info'])) {
$this->Correlation->updateAll(array('Correlation.info' => $db->value($this->data['Event']['info'])), array('Correlation.event_id' => intval($this->data['Event']['id'])));
$updateCorrelation['Correlation.info'] = $db->value($this->data['Event']['info']);
}
if (isset($this->data['Event']['distribution'])) {
$this->Correlation->updateAll(array('Correlation.distribution' => $db->value($this->data['Event']['distribution'])), array('Correlation.event_id' => intval($this->data['Event']['id'])));
$updateCorrelation['Correlation.distribution'] = $db->value($this->data['Event']['distribution']);
}
if (isset($this->data['Event']['sharing_group_id'])) {
$this->Correlation->updateAll(array('Correlation.sharing_group_id' => $db->value($this->data['Event']['sharing_group_id'])), array('Correlation.event_id' => intval($this->data['Event']['id'])));
$updateCorrelation['Correlation.sharing_group_id'] = $db->value($this->data['Event']['sharing_group_id']);
}
if (!empty($updateCorrelation)) {
$this->Correlation = ClassRegistry::init('Correlation');
$this->Correlation->updateAll($updateCorrelation, array('Correlation.event_id' => intval($this->data['Event']['id'])));
}
}
if (empty($this->data['Event']['unpublishAction']) && empty($this->data['Event']['skip_zmq']) && Configure::read('Plugin.ZeroMQ_enable') && Configure::read('Plugin.ZeroMQ_event_notifications_enable')) {