chg: [decaying:model] Third batch of fix from the PR review - WiP (not tested)

pull/5032/head
mokaddem 2019-09-12 11:17:33 +02:00
parent 1b59a8e192
commit f6f1310a50
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
4 changed files with 15 additions and 10 deletions

View File

@ -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) {

View File

@ -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

View File

@ -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)

View File

@ -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']);
}