Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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;
 }