function getNoticeIds($offset, $limit, $since_id, $max_id) { $weightexpr = common_sql_weight('modified', common_config('popular', 'dropoff')); $cutoff = sprintf("modified > '%s'", common_sql_date(time() - common_config('popular', 'cutoff'))); $fave = new Fave(); $fave->selectAdd(); $fave->selectAdd('notice_id'); $fave->selectAdd("{$weightexpr} as weight"); $fave->whereAdd($cutoff); $fave->orderBy('weight DESC'); $fave->groupBy('notice_id'); if (!is_null($offset)) { $fave->limit($offset, $limit); } // FIXME: $since_id, $max_id are ignored $ids = array(); if ($fave->find()) { while ($fave->fetch()) { $ids[] = $fave->notice_id; } } return $ids; }
function _streamDirect($user_id, $own, $offset, $limit, $since_id, $max_id) { $fav = new Fave(); $qry = null; if ($own) { $qry = 'SELECT fave.* FROM fave '; $qry .= 'WHERE fave.user_id = ' . $user_id . ' '; } else { $qry = 'SELECT fave.* FROM fave '; $qry .= 'INNER JOIN notice ON fave.notice_id = notice.id '; $qry .= 'WHERE fave.user_id = ' . $user_id . ' '; $qry .= 'AND notice.is_local != ' . Notice::GATEWAY . ' '; } if ($since_id != 0) { $qry .= 'AND notice_id > ' . $since_id . ' '; } if ($max_id != 0) { $qry .= 'AND notice_id <= ' . $max_id . ' '; } // NOTE: we sort by fave time, not by notice time! $qry .= 'ORDER BY modified DESC '; if (!is_null($offset)) { $qry .= "LIMIT {$limit} OFFSET {$offset}"; } $fav->query($qry); $ids = array(); while ($fav->fetch()) { $ids[] = $fav->notice_id; } $fav->free(); unset($fav); return $ids; }
public function onAppendUserActivityStreamObjects(UserActivityStream $uas, array &$objs) { $fave = new Fave(); $fave->user_id = $uas->getUser()->id; if (!empty($uas->after)) { $fave->whereAdd("modified > '" . common_sql_date($uas->after) . "'"); } if ($fave->find()) { while ($fave->fetch()) { $objs[] = clone $fave; } } return true; }
function __construct($notice, $out = null) { parent::__construct($notice, $out); //TODO: Rewrite this //Showing number of favorites $fave = new Fave(); $fave->notice_id = $this->notice->id; $cnt = 0; if ($fave->find()) { while ($fave->fetch()) { $cnt++; } } $this->faves = $cnt; }
function handle($channel) { $notice = $this->getNotice($this->other); $fave = new Fave(); $fave->user_id = $this->user->id; $fave->notice_id = $notice->id; $fave->find(); if ($fave->fetch()) { // TRANS: Error message text shown when a favorite could not be set because it has already been favorited. $channel->error($this->user, _('Could not create favorite: already favorited.')); return; } $fave = Fave::addNew($this->user->getProfile(), $notice); if (!$fave) { // TRANS: Error message text shown when a favorite could not be set. $channel->error($this->user, _('Could not create favorite.')); return; } // @fixme favorite notification should be triggered // at a lower level $other = User::staticGet('id', $notice->profile_id); if ($other && $other->id != $this->user->id) { if ($other->email && $other->emailnotifyfav) { mail_notify_fave($other, $this->user, $notice); } } $this->user->blowFavesCache(); // TRANS: Text shown when a notice has been marked as favourite successfully. $channel->output($this->user, _('Notice marked as fave.')); }
function clearFaves() { $fave = new Fave(); $fave->notice_id = $this->id; if ($fave->find()) { while ($fave->fetch()) { self::blow('fave:ids_by_user_own:%d', $fave->user_id); self::blow('fave:ids_by_user_own:%d;last', $fave->user_id); self::blow('fave:ids_by_user:%d', $fave->user_id); self::blow('fave:ids_by_user:%d;last', $fave->user_id); $fave->delete(); } } $fave->free(); }
function initFaveURI() { printfnq("Ensuring all faves have a URI..."); $fave = new Fave(); $fave->whereAdd('uri IS NULL'); if ($fave->find()) { while ($fave->fetch()) { try { $fave->decache(); $fave->query(sprintf('update fave ' . 'set uri = "%s", ' . ' modified = "%s" ' . 'where user_id = %d ' . 'and notice_id = %d', Fave::newURI($fave->user_id, $fave->notice_id, $fave->modified), common_sql_date(strtotime($fave->modified)), $fave->user_id, $fave->notice_id)); } catch (Exception $e) { common_log(LOG_ERR, "Error updated fave URI: " . $e->getMessage()); } } } printfnq("DONE.\n"); }
/** * Grab a list of profile who have favored this notice. * * @return ArrayWrapper masquerading as a Fave */ static function byNotice($noticeId) { $c = self::memcache(); $key = Cache::key('fave:by_notice:' . $noticeId); $wrapper = $c->get($key); if (!$wrapper) { // @fixme caching & scalability! $fave = new Fave(); $fave->notice_id = $noticeId; $fave->find(); $list = array(); while ($fave->fetch()) { $list[] = clone $fave; } $wrapper = new ArrayWrapper($list); $c->set($key, $wrapper); } return $wrapper; }
function getFaves() { $faves = array(); $fave = new Fave(); $fave->user_id = $this->user->id; if ($fave->find()) { while ($fave->fetch()) { $faves[] = clone $fave; } } return $faves; }
function getFaves() { $faves = array(); $fave = new Fave(); $fave->user_id = $this->user->id; if (!empty($this->after)) { $fave->whereAdd("modified > '" . common_sql_date($this->after) . "'"); } if ($fave->find()) { while ($fave->fetch()) { $faves[] = clone $fave; } } return $faves; }
function blowFavesCache($blowLast = false) { $cache = common_memcache(); if ($cache) { $fave = new Fave(); $fave->notice_id = $this->id; if ($fave->find()) { while ($fave->fetch()) { $cache->delete(common_cache_key('user:faves:' . $fave->user_id)); if ($blowLast) { $cache->delete(common_cache_key('user:faves:' . $fave->user_id . ';last')); } } } $fave->free(); unset($fave); } }