/** * @param EventCollection $collection * @return EventCollection */ public function getEvents(EventCollection $collection) { /** @var Link $link */ foreach ($collection->getLinks() as $link) { if ($link->rel == 'self') { $self = $link; break; } } if (!isset($self)) { return $collection; } $raw = $this->getJSON($this->baseURL . $self->getUrl()); $collection->setItemTotalCount($raw->itemTotalCount); foreach ($raw->items as $item) { $event = new Event(); $event->contentType = $item->contentType; $event->createdAt = $item->createdAt; $event->data = $item->data; $event->emitterId = $item->emitterId; $event->id = $item->id; $event->identifier = $item->identifier; $event->name = $item->name; $collection->addItem($event); } return $collection; }
public function getEvents(EventCollection $collection) { $params = ['offset' => $collection->getOffset(), 'count' => $collection->getItemPerPage()]; $query = ' SELECT SQL_CALC_FOUND_ROWS e.`id` , e.`data` , e.`name` , e.`identifier` , e.`createdAt` , e.`contentType` FROM `event` e WHERE 1=1 '; if ($name = $collection->getName()) { $query .= ' AND e.`name` LIKE :name'; $params['name'] = $name; } if ($id = $collection->getId()) { $query .= ' AND e.`id` = :id'; $params['id'] = $id; } if ($identifier = $collection->getIdentifier()) { $query .= ' AND e.`identifier` = :identifier'; $params['identifier'] = $identifier; } if ($scope = $collection->getScope()) { $query .= ' AND e.`name` LIKE :scope'; $params['scope'] = $scope; } if ($sort = $collection->getSort()) { $query .= sprintf(' ORDER BY `%s` ', $sort); if ($dir = $collection->getDir()) { $query .= ' ' . $dir; } } $query .= ' LIMIT :offset, :count'; $stmt = $this->adapter->prepare($query); $stmt->execute($params); while ($row = $stmt->fetch()) { $collection->addItem(Helper::createEventFromDTO($row)); } $collection->setItemTotalCount($this->adapter->query('SELECT FOUND_ROWS()')->fetch(PDO::FETCH_COLUMN)); return $collection; }