/** * Get users who have favourited the supplied image * @since Version 3.10.0 * @param \Railpage\Images\Image $Image * @return array */ public function getImageFavourites(Image $Image) { $query = "SELECT f.*, u.username \r\n FROM image_favourites AS f \r\n LEFT JOIN nuke_users AS u ON f.user_id = u.user_id\r\n WHERE f.image_id = ? \r\n ORDER BY f.date DESC"; $return = array(); foreach ($this->db->fetchAll($query, $Image->id) as $row) { $row['url'] = UserUrlUtility::MakeURLs($row)->getURLs(); $return[] = $row; } return $return; }
/** * Load notes * @since Version 3.2 * @version 3.2 * @return array */ public function loadNotes() { $query = "SELECT n.*, u.username, user_avatar FROM loco_notes AS n LEFT JOIN nuke_users AS u ON n.user_id = u.user_id WHERE n.loco_id = ?"; $notes = array(); foreach ($this->db->fetchAll($query, $this->id) as $row) { if (!empty($row['user_avatar'])) { try { #$User = UserFactory::CreateUser($row['user_id']); $row['user_avatar'] = AvatarUtility::Format($row['user_avatar'], 50, 50); #$row['user_url'] = $User->url; $row['user_url'] = UserUrlUtility::MakeURLs($row); } catch (Exception $e) { global $Error; $Error->save($e); } } $notes[$row['note_id']] = $row; } return $notes; }
/** * Create URLs * @since Version 3.8.7 * @return \Railpage\Users\User */ private function createUrls() { $this->url = Utility\UrlUtility::MakeURLs($this); }
/** * Find the most concacted members between the supplied user * @since Version 3.10.0 * @return array */ public function getMostContactedUsers() { if (!$this->Author instanceof User) { throw new Exception(__NAMESPACE__ . "::Author has not been set"); } $query = "SELECT COUNT(*) AS num_msgs, pm.privmsgs_to_userid AS user_id, u.username, u.user_avatar\n FROM nuke_bbprivmsgs AS pm \n LEFT JOIN nuke_users AS u ON u.user_id = pm.privmsgs_to_userid \n WHERE pm.privmsgs_from_userid = ? \n AND pm.privmsgs_to_userid != ? \n AND pm.privmsgs_date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 90 day)) \n GROUP BY pm.privmsgs_to_userid \n ORDER BY COUNT(*) DESC \n LIMIT 0, 10"; $params = [$this->Author->id, $this->Author->id]; $users = $this->db->fetchAll($query, $params); foreach ($users as $key => $row) { $users[$key]['url'] = UserUrlUtility::MakeURLs($row)->getURLs(); $users[$key]['avatar'] = array("tiny" => AvatarUtility::Format($row['user_avatar'], 25, 25), "thumb" => AvatarUtility::Format($row['user_avatar'], 50, 50), "small" => AvatarUtility::Format($row['user_avatar'], 75, 75), "medium" => AvatarUtility::Format($row['user_avatar'], 100, 100)); } return $users; }
/** * Get actions on this article * @since Version 3.10.0 * @return array */ public function getChangelog() { $query = "SELECT u.username, u.user_id, u.user_avatar, s.time AS timestamp, 'Article created' AS title, '' AS args\r\n FROM nuke_stories AS s\r\n LEFT JOIN nuke_users AS u ON u.user_id = s.user_id\r\n WHERE s.sid = ?\r\n UNION \r\n SELECT u.username, l.user_id, u.user_avatar, l.timestamp, l.title, l.args \r\n FROM log_staff AS l \r\n LEFT JOIN nuke_users AS u ON u.user_id = l.user_id\r\n WHERE `key` = 'article_id' \r\n AND key_val = ? \r\n UNION \r\n SELECT u.username, l.user_id, u.user_avatar, l.timestamp, l.title, l.args \r\n FROM log_general AS l \r\n LEFT JOIN nuke_users AS u ON u.user_id = l.user_id\r\n WHERE `key` = 'article_id' \r\n AND value = ? \r\n ORDER BY UNIX_TIMESTAMP(`timestamp`) DESC"; $params = [$this->id, $this->id, $this->id]; $return = $this->db->fetchAll($query, $params); foreach ($return as $key => $val) { $return[$key]['user'] = array("user_id" => $val['user_id'], "username" => $val['username'], "avatar" => array("small" => AvatarUtility::Format($val['user_avatar'], 50, 50), "medium" => AvatarUtility::Format($val['user_avatar'], 80, 80), "large" => AvatarUtility::Format($val['user_avatar'], 128, 128)), "url" => UrlUtility::MakeURLs($val)->getURLs()); $return[$key]['args'] = json_decode($val['args'], true); } return $return; }
/** * Get the top 5 photos viewed today/weekly/overall * @since Version 3.10.0 * @param string $lookup * @param int $num * @return array */ public function getMostViewedPhotos($lookup = self::HITS_WEEKLY, $num = 5) { $allowed = [self::HITS_DAILY => "hits_today", self::HITS_WEEKLY => "hits_weekly", self::HITS_OVERALL => "hits_overall"]; if (!in_array($lookup, array_keys($allowed))) { throw new InvalidArgumentException("Parameter supplied for lookup type is invalid"); } $query = "SELECT i.*,\r\n u.username,\r\n f.*\r\n FROM image AS i\r\n LEFT JOIN image_flags AS f ON f.image_id = i.id\r\n LEFT JOIN nuke_users AS u ON i.user_id = u.user_id\r\n ORDER BY " . $allowed[$lookup] . " DESC \r\n LIMIT 0, ?"; $result = $this->db->fetchAll($query, $num); foreach ($result as $key => $val) { $result[$key]['meta'] = json_decode($val['meta'], true); $result[$key]['meta']['author']['url'] = UserUrlUtility::MakeURLs($val); $result[$key]['meta']['sizes'] = Images::normaliseSizes($result[$key]['meta']['sizes']); if ($result[$key]['meta']['author']['url'] instanceof Url) { $result[$key]['meta']['author']['url'] = $result[$key]['meta']['author']['url']->getURLs(); } } return $result; }