public function getLogItemLimited($userId, TimeAgo $timeFormatter) { $query = 'SELECT log.id AS logid, log.type, log.timestamp, feeds.id AS feedid, feeds.name AS feedname'; $query .= ' FROM log'; $query .= ' RIGHT JOIN feeds ON feeds.id = log.feed_id'; $query .= ' WHERE log.user_id = :userID'; $query .= ' ORDER BY log.id DESC'; $query .= ' LIMIT 10 OFFSET 0'; $stmt = $this->dbConnection->prepare($query); $stmt->execute(['userID' => $userId]); $userLogs = $stmt->fetchAll(); $query = 'SELECT log.id AS logid, log.type, log.timestamp, log.post_id AS postid'; $query .= ' FROM log, posts, feeds_repositories, admins'; $query .= ' WHERE posts.id = log.post_id'; $query .= ' AND feeds_repositories.id = posts.feed_repository_id'; $query .= ' AND admins.feed_id = feeds_repositories.feed_id'; $query .= ' AND admins.user_id = :userID'; $query .= ' ORDER BY log.id DESC LIMIT 10 OFFSET 0'; $stmt = $this->dbConnection->prepare($query); $stmt->execute(['userID' => $userId]); $postLogs = $stmt->fetchAll(); $query = 'SELECT log.id AS logid, log.type, log.timestamp, log.feed_id AS feedid'; $query .= ' FROM log, feeds_repositories, admins'; $query .= ' WHERE feeds_repositories.feed_id = log.feed_id'; $query .= ' AND admins.feed_id = feeds_repositories.feed_id'; $query .= ' AND admins.user_id = :userID'; $query .= ' ORDER BY log.id DESC'; $query .= ' LIMIT 10 OFFSET 0'; $stmt = $this->dbConnection->prepare($query); $stmt->execute(['userID' => $userId]); $feedLogs = $stmt->fetchAll(); $recordSet = array_merge($userLogs, $postLogs, $feedLogs); if (!$recordSet) { return []; } usort($recordSet, function ($a, $b) { return $b['logid'] - $a['logid']; }); $result = []; foreach ($recordSet as $index => $record) { $record['timestamp'] = $timeFormatter->calculate(new \DateTime($record['timestamp'])); $result[$record['logid']] = $record; if ($index === 9) { break; } } return $result; }
public function getPosts($feedId, TimeAgo $timeFormatter) { $query = 'SELECT posts.id AS postid, posts.release_id, posts.avatar_url, posts.version, posts.timestamp, posts.content, posts.url, posts.username, feeds_repositories.repository'; $query .= ' FROM posts, feeds_repositories'; $query .= ' WHERE feeds_repositories.feed_id = :feedID'; $query .= ' AND feeds_repositories.id = posts.feed_repository_id'; $query .= ' ORDER BY posts.timestamp DESC'; $stmt = $this->dbConnection->prepare($query); $stmt->execute(['feedID' => $feedId]); $recordSet = $stmt->fetchAll(); if (!$recordSet) { return []; } foreach ($recordSet as $index => $record) { $recordSet[$index]['timestamp'] = $timeFormatter->calculate(new \DateTime($record['timestamp'])); $recordSet[$index]['full_content'] = $record['content']; $recordSet[$index]['datetime'] = new \DateTime($record['timestamp']); if (strlen($record['content']) > 250) { $recordSet[$index]['content'] = substr($record['content'], 0, 250) . '...'; } } return $recordSet; }