mirror of https://github.com/MISP/MISP
chg: [internal] Optimise afterFind and simplify ISODatetimeToUTC
parent
97d6c1324b
commit
0d8292289d
|
@ -3142,6 +3142,18 @@ class AppModel extends Model
|
|||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $value Timestamp in microseconds
|
||||
* @return string
|
||||
*/
|
||||
protected function microTimestampToIso($value)
|
||||
{
|
||||
$sec = (int)($value / 1000000);
|
||||
$micro = $value % 1000000;
|
||||
$micro = str_pad($micro, 6, "0", STR_PAD_LEFT);
|
||||
return DateTime::createFromFormat('U.u', "$sec.$micro")->format('Y-m-d\TH:i:s.uP');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AttachmentTool
|
||||
*/
|
||||
|
|
|
@ -353,7 +353,13 @@ class Attribute extends AppModel
|
|||
public function afterFind($results, $primary = false)
|
||||
{
|
||||
foreach ($results as &$v) {
|
||||
$v = $this->UTCToISODatetime($v, $this->alias);
|
||||
$attribute = &$v['Attribute'];
|
||||
if (!empty($attribute['first_seen'])) {
|
||||
$attribute['first_seen'] = $this->microTimestampToIso($attribute['first_seen']);
|
||||
}
|
||||
if (!empty($attribute['last_seen'])) {
|
||||
$attribute['last_seen'] = $this->microTimestampToIso($attribute['last_seen']);
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
@ -1035,40 +1041,28 @@ class Attribute extends AppModel
|
|||
// convert into utc and micro sec
|
||||
if (!empty($data[$alias]['first_seen'])) {
|
||||
$d = new DateTime($data[$alias]['first_seen'], new DateTimeZone('GMT'));
|
||||
$fs_sec = $d->format('U');
|
||||
$fs_micro = $d->format('u');
|
||||
$fs_micro = str_pad($fs_micro, 6, "0", STR_PAD_LEFT);
|
||||
$fs = $fs_sec . $fs_micro;
|
||||
$data[$alias]['first_seen'] = $fs;
|
||||
$data[$alias]['first_seen'] = $d->format('Uu');
|
||||
}
|
||||
if (!empty($data[$alias]['last_seen'])) {
|
||||
$d = new DateTime($data[$alias]['last_seen'], new DateTimeZone('GMT'));
|
||||
$ls_sec = $d->format('U');
|
||||
$ls_micro = $d->format('u');
|
||||
$ls_micro = str_pad($ls_micro, 6, "0", STR_PAD_LEFT);
|
||||
$ls = $ls_sec . $ls_micro;
|
||||
$data[$alias]['last_seen'] = $ls;
|
||||
$data[$alias]['last_seen'] = $d->format('Uu');
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @param $alias
|
||||
* @return array
|
||||
* @deprecated
|
||||
*/
|
||||
public function UTCToISODatetime($data, $alias)
|
||||
{
|
||||
if (!empty($data[$alias]['first_seen'])) {
|
||||
$fs = $data[$alias]['first_seen'];
|
||||
$fs_sec = intval($fs / 1000000); // $fs is in micro (10^6)
|
||||
$fs_micro = $fs % 1000000;
|
||||
$fs_micro = str_pad($fs_micro, 6, "0", STR_PAD_LEFT);
|
||||
$fs = $fs_sec . '.' . $fs_micro;
|
||||
$data[$alias]['first_seen'] = DateTime::createFromFormat('U.u', $fs)->format('Y-m-d\TH:i:s.uP');
|
||||
$data[$alias]['first_seen'] = $this->microTimestampToIso($data[$alias]['first_seen']);
|
||||
}
|
||||
if (!empty($data[$alias]['last_seen'])) {
|
||||
$ls = $data[$alias]['last_seen'];
|
||||
$ls_sec = intval($ls / 1000000); // $ls is in micro (10^6)
|
||||
$ls_micro = $ls % 1000000;
|
||||
$ls_micro = str_pad($ls_micro, 6, "0", STR_PAD_LEFT);
|
||||
$ls = $ls_sec . '.' . $ls_micro;
|
||||
$data[$alias]['last_seen'] = DateTime::createFromFormat('U.u', $ls)->format('Y-m-d\TH:i:s.uP');
|
||||
$data[$alias]['last_seen'] = $this->microTimestampToIso($data[$alias]['last_seen']);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
|
|
@ -243,8 +243,14 @@ class MispObject extends AppModel
|
|||
|
||||
public function afterFind($results, $primary = false)
|
||||
{
|
||||
foreach ($results as $k => $v) {
|
||||
$results[$k] = $this->Attribute->UTCToISODatetime($results[$k], $this->alias);
|
||||
foreach ($results as &$v) {
|
||||
$object = &$v['Object'];
|
||||
if (!empty($object['first_seen'])) {
|
||||
$object['first_seen'] = $this->microTimestampToIso($object['first_seen']);
|
||||
}
|
||||
if (!empty($object['last_seen'])) {
|
||||
$object['last_seen'] = $this->microTimestampToIso($object['last_seen']);
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
|
|
@ -354,8 +354,14 @@ class ShadowAttribute extends AppModel
|
|||
|
||||
public function afterFind($results, $primary = false)
|
||||
{
|
||||
foreach ($results as $k => $v) {
|
||||
$results[$k] = $this->Attribute->UTCToISODatetime($results[$k], $this->alias);
|
||||
foreach ($results as &$v) {
|
||||
$proposal = &$v['ShadowAttribute'];
|
||||
if (!empty($proposal['first_seen'])) {
|
||||
$proposal['first_seen'] = $this->microTimestampToIso($proposal['first_seen']);
|
||||
}
|
||||
if (!empty($proposal['last_seen'])) {
|
||||
$proposal['last_seen'] = $this->microTimestampToIso($proposal['last_seen']);
|
||||
}
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue