mirror of https://github.com/MISP/MISP
chg: [decaying:model] Third batch of fix from the PR review - WiP (not tested)
parent
1b59a8e192
commit
f6f1310a50
|
@ -679,7 +679,7 @@ class DecayingModelController extends AppController
|
|||
if (isset($filters['score'])) {
|
||||
$model_overrides['threshold'] = intval($filters['score']);
|
||||
}
|
||||
$this->DecayingModel->attachScoresToAttribute($this->Auth->user(), $attributes[$k]['Attribute'], $filters['decayingModel'], $model_overrides);
|
||||
$attributes[$k]['Attribute'] = $this->DecayingModel->attachScoresToAttribute($this->Auth->user(), $attributes[$k]['Attribute'], $filters['decayingModel'], $model_overrides);
|
||||
if ($filters['excludeDecayed']) { // filter out decayed attribute
|
||||
$decayed_flag = true;
|
||||
foreach ($attributes[$k]['Attribute']['decay_score'] as $decayResult) {
|
||||
|
|
|
@ -3283,7 +3283,7 @@ class Attribute extends AppModel
|
|||
if ($options['includeDecayScore']) {
|
||||
$this->DecayingModel = ClassRegistry::init('DecayingModel');
|
||||
$include_full_model = isset($options['includeFullModel']) && $options['includeFullModel'] ? 1 : 0;
|
||||
$this->DecayingModel->attachScoresToAttribute($user, $results[$key]['Attribute'], $options['decayingModel'], $options['modelOverrides'], $include_full_model);
|
||||
$results[$key]['Attribute'] = $this->DecayingModel->attachScoresToAttribute($user, $results[$key]['Attribute'], $options['decayingModel'], $options['modelOverrides'], $include_full_model);
|
||||
if ($options['excludeDecayed']) { // filter out decayed attribute
|
||||
$decayed_flag = true;
|
||||
foreach ($results[$key]['Attribute']['decay_score'] as $decayResult) { // remove attribute if ALL score results in a decay
|
||||
|
|
|
@ -398,10 +398,13 @@ class DecayingModel extends AppModel
|
|||
}
|
||||
|
||||
// returns timestamp set to the rounded hour
|
||||
public function round_timestamp_to_hour($time)
|
||||
public function round_timestamp_to_hour($time, $closest=1)
|
||||
{
|
||||
$offset = $time % 3600;
|
||||
return $time - $offset;
|
||||
if ($closest) {
|
||||
return round((float) $time / 3600) * 3600;
|
||||
} else {
|
||||
return floor((float) $time / 3600) * 3600;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns score overtime, sightings, base_score computation and other useful information
|
||||
|
@ -436,7 +439,7 @@ class DecayingModel extends AppModel
|
|||
throw new NotFoundException(__('No Decaying Model with the provided ID exists'));
|
||||
}
|
||||
if (!empty($model_overrides)) {
|
||||
$this->overrideModelParameters($model, $model_overrides);
|
||||
$model = $this->overrideModelParameters($model, $model_overrides);
|
||||
}
|
||||
$this->Computation = $this->getModelClass($model);
|
||||
$this->Sighting = ClassRegistry::init('Sighting');
|
||||
|
@ -514,16 +517,17 @@ class DecayingModel extends AppModel
|
|||
return $next_index-1;
|
||||
}
|
||||
|
||||
public function overrideModelParameters(&$model, $model_overrides)
|
||||
public function overrideModelParameters($model, $model_overrides)
|
||||
{
|
||||
foreach ($model_overrides as $parameter => $value) {
|
||||
if (isset($this->allowed_overrides[$parameter])) {
|
||||
$model['DecayingModel']['parameters'][$parameter] = $value;
|
||||
}
|
||||
}
|
||||
return $model;
|
||||
}
|
||||
|
||||
public function attachScoresToAttribute($user, &$attribute, $model_id=false, $model_overrides=array(), $include_full_model=0)
|
||||
public function attachScoresToAttribute($user, $attribute, $model_id=false, $model_overrides=array(), $include_full_model=0)
|
||||
{
|
||||
$models = array();
|
||||
if ($model_id === false) { // fetch all allowed and associated models
|
||||
|
@ -539,7 +543,7 @@ class DecayingModel extends AppModel
|
|||
}
|
||||
foreach ($models as $i => $model) {
|
||||
if (!empty($model_overrides)) {
|
||||
$this->overrideModelParameters($model, $model_overrides);
|
||||
$model = $this->overrideModelParameters($model, $model_overrides);
|
||||
}
|
||||
$score = $this->getScore($attribute, $model, $user);
|
||||
$decayed = $this->isDecayed($attribute, $model, $score);
|
||||
|
@ -556,6 +560,7 @@ class DecayingModel extends AppModel
|
|||
}
|
||||
$attribute['decay_score'][] = $to_attach;
|
||||
}
|
||||
return $attribute;
|
||||
}
|
||||
|
||||
public function getScore($attribute, $model, $user=false)
|
||||
|
|
|
@ -2181,7 +2181,7 @@ class Event extends AppModel
|
|||
if (isset($event['EventTag'])) { // include EventTags for score computation
|
||||
$event['Attribute'][$key]['EventTag'] = $event['EventTag'];
|
||||
}
|
||||
$this->DecayingModel->attachScoresToAttribute($user, $event['Attribute'][$key]);
|
||||
$event['Attribute'][$key] = $this->DecayingModel->attachScoresToAttribute($user, $event['Attribute'][$key]);
|
||||
if (isset($event['EventTag'])) { // remove included EventTags
|
||||
unset($event['Attribute'][$key]['EventTag']);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue