/** * Get announcements from DB ordered by `added` desc * * @param $type string Announcement type, equals self::TYPE_MESSAGE * @param $params mixed[] * - interval int Diff in seconds from NOW. For announcements filtering. * - accountId int optional Account ID * @return array */ private function dbAnnouncements($type, $params) { $data = []; $minDt = (new \DateTime())->setTimestamp($this->tmRequestDashboard - $params['interval']); $limit = 100; if (empty($params['accountId'])) { $criteria = [['accountId' => null]]; } else { $criteria = ['$or' => [['accountId' => $params['accountId']], ['accountId' => null]]]; } $criteria[] = ['added' => ['$gte' => $minDt]]; $result = Announcement::find($criteria, null, ['added' => false], $limit); /* @var $announcement Scalr\Model\Entity\Announcement */ foreach ($result as $announcement) { $data[] = $this->prepareDataForDashboard($announcement); } return ['data' => $data]; }