function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->orderBy('created DESC, id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } // This feed always gives only local activities. $notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC); Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); if (!empty($this->selectVerbs)) { $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); } $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->orderBy('created DESC, id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } $notice->whereAdd('is_local =' . Notice::REMOTE); // -1 == blacklisted, -2 == gateway (i.e. Twitter) $notice->whereAdd('is_local !=' . Notice::LOCAL_NONPUBLIC); $notice->whereAdd('is_local !=' . Notice::GATEWAY); Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); if (!empty($this->selectVerbs)) { $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); } $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->orderBy('created DESC, id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } if (common_config('public', 'localonly')) { $notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC); } else { // -1 == blacklisted, -2 == gateway (i.e. Twitter) $notice->whereAdd('is_local !=' . Notice::LOCAL_NONPUBLIC); $notice->whereAdd('is_local !=' . Notice::GATEWAY); } Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); $strSql = sprintf('(content_type=%d or content_type=%d)', NOTICE::CONTENT_TYPE_POST, NOTICE::CONTENT_TYPE_REPEAT); $strSql = sprintf('(content_type in (%d,%d,%d,%d))', NOTICE::CONTENT_TYPE_REPEAT, NOTICE::CONTENT_TYPE_REPEAT | NOTICE::CONTENT_TYPE_MENTIONS, NOTICE::CONTENT_TYPE_POST, NOTICE::CONTENT_TYPE_POST | NOTICE::CONTENT_TYPE_MENTIONS); $notice->whereAdd($strSql); $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->orderBy('created DESC, id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } if (common_config('public', 'localonly')) { $notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC); } else { // -1 == blacklisted, -2 == gateway (i.e. Twitter) $notice->whereAdd('is_local !=' . Notice::LOCAL_NONPUBLIC); $notice->whereAdd('is_local !=' . Notice::GATEWAY); } Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
/** * For initializing members of the class. * * @param array $argarray misc. arguments * * @return boolean true */ function prepare($argarray) { parent::prepare($argarray); $convId = $this->trimmed('id'); if (empty($convId)) { // TRANS: Client exception thrown when no conversation ID is given. throw new ClientException(_('No conversation ID.')); } $this->conversation = Conversation::staticGet('id', $convId); if (empty($this->conversation)) { // TRANS: Client exception thrown when referring to a non-existing conversation ID (%d). $this->clientError(_('No conversation ID found'), 404); return false; } $profile = Profile::current(); $stream = new ConversationNoticeStream($convId, $profile); $notice = $stream->getNotices(($this->page - 1) * $this->count, $this->count, $this->since_id, $this->max_id); $this->notices = $notice->fetchAll(); $originalConversation = new Notice(); $originalConversation->whereAdd('conversation=' . $convId); $originalConversation->limit(1); $originalConversation->orderBy('created'); $originalConversation->find(); if ($originalConversation->fetch()) { $this->originalNotice = $originalConversation; } return true; }
function getNotices() { $notice = new Notice(); $notice->joinAdd(array('id', 'file_to_post:post_id')); $notice->whereAdd(sprintf('file_to_post.file_id = %d', $this->out->attachment->id)); $notice->orderBy('created desc'); $notice->selectAdd('post_id as id'); $notice->find(); return $notice; }
function getNotices() { $notice = new Notice(); $f2p = new File_to_post(); $f2p->file_id = $this->out->attachment->id; $notice->joinAdd($f2p); $notice->orderBy('created desc'); $notice->selectAdd('post_id as id'); $notice->find(); return $notice; }
function fixupNoticeConversation() { printfnq("Ensuring all notices have a conversation ID..."); $notice = new Notice(); $notice->whereAdd('conversation is null'); $notice->whereAdd('conversation = 0', 'OR'); $notice->orderBy('id'); // try to get originals before replies $notice->find(); while ($notice->fetch()) { try { $cid = null; $orig = clone $notice; if (!empty($notice->reply_to)) { $reply = Notice::getKV('id', $notice->reply_to); if ($reply instanceof Notice && !empty($reply->conversation)) { $notice->conversation = $reply->conversation; } unset($reply); } // if still empty if (empty($notice->conversation)) { $child = new Notice(); $child->reply_to = $notice->getID(); $child->limit(1); if ($child->find(true) && !empty($child->conversation)) { $notice->conversation = $child->conversation; } unset($child); } // if _still_ empty we just create our own conversation if (empty($notice->conversation)) { $notice->conversation = $notice->getID(); } $result = $notice->update($orig); unset($orig); } catch (Exception $e) { print "Error setting conversation: " . $e->getMessage(); } } printfnq("DONE.\n"); }
function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->conversation = $this->id; $notice->orderBy('created DESC, id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } return $ids; }
function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); $notice->selectAdd('id'); $notice->orderBy('id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } $notice->whereAdd('is_local !=' . Notice::LOCAL_NONPUBLIC); $notice->whereAdd('is_local !=' . Notice::GATEWAY); $notice->whereAdd('repeat_of IS NULL'); Notice::addWhereSinceId($notice, $since_id); Notice::addWhereMaxId($notice, $max_id); $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
function fixupNoticeConversation() { printfnq("Ensuring all notices have a conversation ID..."); $notice = new Notice(); $notice->whereAdd('conversation is null'); $notice->orderBy('id'); // try to get originals before replies $notice->find(); while ($notice->fetch()) { try { $cid = null; $orig = clone $notice; if (empty($notice->reply_to)) { $notice->conversation = $notice->id; } else { $reply = Notice::staticGet('id', $notice->reply_to); if (empty($reply)) { $notice->conversation = $notice->id; } else { if (empty($reply->conversation)) { $notice->conversation = $notice->id; } else { $notice->conversation = $reply->conversation; } } unset($reply); $reply = null; } $result = $notice->update($orig); $orig = null; unset($orig); } catch (Exception $e) { printv("Error setting conversation: " . $e->getMessage()); } } printfnq("DONE.\n"); }
function getNoticeIds($offset, $limit, $since_id = null, $max_id = null) { $notice = new Notice(); // SELECT $notice->selectAdd(); $notice->selectAdd('id'); // WHERE $notice->conversation = $this->id; if (!empty($since_id)) { $notice->whereAdd(sprintf('notice.id > %d', $since_id)); } if (!empty($max_id)) { $notice->whereAdd(sprintf('notice.id <= %d', $max_id)); } if (!is_null($offset)) { $notice->limit($offset, $limit); } if (!empty($this->selectVerbs)) { $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); } // ORDER BY // currently imitates the previously used "_reverseChron" sorting $notice->orderBy('notice.created DESC'); $notice->find(); return $notice->fetchAll('id'); }
function _repeatStreamDirect($limit) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->repeat_of = $this->id; $notice->orderBy('created, id'); // NB: asc! if (!is_null($limit)) { $notice->limit(0, $limit); } return $notice->fetchAll('id'); }
/** * * @param int $start unix timestamp for earliest * @param int $end unix timestamp for latest * @return array of Notice objects */ function getNoticesBetween($start = 0, $end = 0) { $notices = array(); $notice = new Notice(); $notice->profile_id = $this->user->id; // Only stuff after $this->after if (!empty($this->after)) { if ($start) { $start = max($start, $this->after); } if ($end) { $end = max($end, $this->after); } } if ($start) { $tsstart = common_sql_date($start); $notice->whereAdd("created >= '{$tsstart}'"); } if ($end) { $tsend = common_sql_date($end); $notice->whereAdd("created < '{$tsend}'"); } $notice->orderBy('created DESC'); if ($notice->find()) { while ($notice->fetch()) { $notices[] = clone $notice; } } return $notices; }
/** * Handle the request * * Check the format and show the user info * * @param array $args $_REQUEST data (unused) * * @return void */ protected function handle() { parent::handle(); // favs $fave = new Fave(); $fave->selectAdd(); $fave->selectAdd('user_id'); $fave->selectAdd('modified'); $fave->notice_id = $this->original->id; $fave->orderBy('modified'); if (!is_null($this->cnt)) { $fave->limit(0, $this->cnt); } $fav_ids = $fave->fetchAll('user_id', 'modified'); // get nickname and profile image $fav_ids_with_profile_data = array(); $i = 0; foreach ($fav_ids as $id => $time) { $profile = Profile::getKV('id', $id); $fav_ids_with_profile_data[$i]['user_id'] = $id; $fav_ids_with_profile_data[$i]['nickname'] = $profile->nickname; $fav_ids_with_profile_data[$i]['fullname'] = $profile->fullname; $fav_ids_with_profile_data[$i]['profileurl'] = $profile->profileurl; $fav_ids_with_profile_data[$i]['time'] = strtotime($time); $profile = new Profile(); $profile->id = $id; $avatarurl = $profile->avatarUrl(48); $fav_ids_with_profile_data[$i]['avatarurl'] = $avatarurl; $i++; } // repeats $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('profile_id'); $notice->selectAdd('created'); $notice->repeat_of = $this->original->id; $notice->orderBy('created, id'); // NB: asc! if (!is_null($this->cnt)) { $notice->limit(0, $this->cnt); } $repeat_ids = $notice->fetchAll('profile_id', 'created'); // get nickname and profile image $repeat_ids_with_profile_data = array(); $i = 0; foreach ($repeat_ids as $id => $time) { $profile = Profile::getKV('id', $id); $repeat_ids_with_profile_data[$i]['user_id'] = $id; $repeat_ids_with_profile_data[$i]['nickname'] = $profile->nickname; $repeat_ids_with_profile_data[$i]['fullname'] = $profile->fullname; $repeat_ids_with_profile_data[$i]['profileurl'] = $profile->profileurl; $repeat_ids_with_profile_data[$i]['time'] = strtotime($time); $profile = new Profile(); $profile->id = $id; $avatarurl = $profile->avatarUrl(48); $repeat_ids_with_profile_data[$i]['avatarurl'] = $avatarurl; $i++; } $favs_and_repeats = array('favs' => $fav_ids_with_profile_data, 'repeats' => $repeat_ids_with_profile_data); $this->initDocument('json'); $this->showJsonObjects($favs_and_repeats); $this->endDocument('json'); }
function _repeatedByMeDirect($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->profile_id = $this->id; $notice->whereAdd('repeat_of IS NOT NULL'); $notice->orderBy('id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } if ($since_id != 0) { $notice->whereAdd('id > ' . $since_id); } if ($max_id != 0) { $notice->whereAdd('id <= ' . $max_id); } $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
function getCurrentNotice($dt = null) { $notice = new Notice(); $notice->profile_id = $this->id; if ($dt) { $notice->whereAdd('created < "' . $dt . '"'); } $notice->orderBy('created DESC, notice.id DESC'); $notice->limit(1); if ($notice->find(true)) { return $notice; } return null; }
function getNotices($y, $m, $d, $i) { $n = Notice::cacheGet("sitemap:notice:{$y}:{$m}:{$d}:{$i}"); if ($n === false) { $notice = new Notice(); $begindt = sprintf('%04d-%02d-%02d 00:00:00', $y, $m, $d); // XXX: estimates 1d == 24h, which screws up days // with leap seconds (1d == 24h + 1s). Thankfully they're // few and far between. $theend = strtotime($begindt) + 24 * 60 * 60; $enddt = common_sql_date($theend); $notice->selectAdd(); $notice->selectAdd('id, created'); $notice->whereAdd("created >= '{$begindt}'"); $notice->whereAdd("created < '{$enddt}'"); $notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC); $notice->orderBy('created'); $offset = ($i - 1) * SitemapPlugin::NOTICES_PER_MAP; $limit = SitemapPlugin::NOTICES_PER_MAP; $notice->limit($offset, $limit); $notice->find(); $n = array(); while ($notice->fetch()) { $n[] = array($notice->id, $notice->created); } $c = Cache::instance(); if (!empty($c)) { $c->set(Cache::key("sitemap:notice:{$y}:{$m}:{$d}:{$i}"), $n, Cache::COMPRESSED, time() > $theend ? time() + 90 * 24 * 60 * 60 : time() + 5 * 60); } } return $n; }
/** * Handle the request * * Check the format and show the user info * * @param array $args $_REQUEST data (unused) * * @return void */ protected function handle() { parent::handle(); // since this api method is in practice only used when expanding a // notice, we can assume the user has seen the notice in question, // an no longer need a notification about it. mark reply/mention- // notifications tied to this notice and the current profile as read if ($this->auth_user) { QvitterPlugin::markNotificationAsSeen($this->notice_id, $this->auth_user->id, 'mention'); QvitterPlugin::markNotificationAsSeen($this->notice_id, $this->auth_user->id, 'reply'); } // favs $fave = new Fave(); $fave->selectAdd(); $fave->selectAdd('user_id'); $fave->selectAdd('modified'); $fave->notice_id = $this->original->id; $fave->orderBy('modified'); if (!is_null($this->cnt)) { $fave->limit(0, $this->cnt); } $fav_ids = $fave->fetchAll('user_id', 'modified'); // get nickname and profile image $fav_ids_with_profile_data = array(); $i = 0; foreach ($fav_ids as $id => $time) { $profile = Profile::getKV('id', $id); $fav_ids_with_profile_data[$i]['user_id'] = $id; $fav_ids_with_profile_data[$i]['nickname'] = $profile->nickname; $fav_ids_with_profile_data[$i]['fullname'] = $profile->fullname; $fav_ids_with_profile_data[$i]['profileurl'] = $profile->profileurl; $fav_ids_with_profile_data[$i]['time'] = strtotime($time); $profile = new Profile(); $profile->id = $id; $avatarurl = $profile->avatarUrl(48); $fav_ids_with_profile_data[$i]['avatarurl'] = $avatarurl; $i++; } // repeats $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('profile_id'); $notice->selectAdd('created'); $notice->repeat_of = $this->original->id; $notice->verb = ActivityVerb::SHARE; $notice->orderBy('created, id'); // NB: asc! if (!is_null($this->cnt)) { $notice->limit(0, $this->cnt); } $repeat_ids = $notice->fetchAll('profile_id', 'created'); // get nickname and profile image $repeat_ids_with_profile_data = array(); $i = 0; foreach ($repeat_ids as $id => $time) { $profile = Profile::getKV('id', $id); $repeat_ids_with_profile_data[$i]['user_id'] = $id; $repeat_ids_with_profile_data[$i]['nickname'] = $profile->nickname; $repeat_ids_with_profile_data[$i]['fullname'] = $profile->fullname; $repeat_ids_with_profile_data[$i]['profileurl'] = $profile->profileurl; $repeat_ids_with_profile_data[$i]['time'] = strtotime($time); $profile = new Profile(); $profile->id = $id; $avatarurl = $profile->avatarUrl(48); $repeat_ids_with_profile_data[$i]['avatarurl'] = $avatarurl; $i++; } $favs_and_repeats = array('favs' => $fav_ids_with_profile_data, 'repeats' => $repeat_ids_with_profile_data); $this->initDocument('json'); $this->showJsonObjects($favs_and_repeats); $this->endDocument('json'); }
/** * Display a listing of notices * * @return Response */ public function index() { $notices = Notice::orderBy('id', 'DESC')->simplePaginate(20); return View::make('notices.index', compact('notices')); }
function _streamDirect($offset, $limit, $since_id, $max_id) { $notice = new Notice(); // Temporary hack until notice_profile_id_idx is updated // to (profile_id, id) instead of (profile_id, created, id). // It's been falling back to PRIMARY instead, which is really // very inefficient for a profile that hasn't posted in a few // months. Even though forcing the index will cause a filesort, // it's usually going to be better. if (common_config('db', 'type') == 'mysql') { $index = ''; $query = "select id from notice force index (notice_profile_id_idx) " . "where profile_id=" . $notice->escape($this->id); if ($since_id != 0) { $query .= " and id > {$since_id}"; } if ($max_id != 0) { $query .= " and id < {$max_id}"; } $query .= ' order by id DESC'; if (!is_null($offset)) { $query .= " LIMIT {$limit} OFFSET {$offset}"; } $notice->query($query); } else { $index = ''; $notice->profile_id = $this->id; $notice->selectAdd(); $notice->selectAdd('id'); if ($since_id != 0) { $notice->whereAdd('id > ' . $since_id); } if ($max_id != 0) { $notice->whereAdd('id <= ' . $max_id); } $notice->orderBy('id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } $notice->find(); } $ids = array(); while ($notice->fetch()) { $ids[] = $notice->id; } return $ids; }
public function noticeList() { $perPage = 15; $notices = Notice::orderBy("created_at", "desc")->paginate($perPage); return View::make('pages.admin.service-center.notice-list', ["totalCount" => $notices->getTotal(), "notices" => $notices, "count" => $notices->count()]); }
function _repeatStreamDirect($limit) { $notice = new Notice(); $notice->selectAdd(); // clears it $notice->selectAdd('id'); $notice->repeat_of = $this->id; $notice->orderBy('created'); // NB: asc! if (!is_null($offset)) { $notice->limit($offset, $limit); } $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } $notice->free(); $notice = NULL; return $ids; }
/** * Get IDs in a range * * @param int $offset Offset from start * @param int $limit Limit of number to get * @param int $since_id Since this notice * @param int $max_id Before this notice * * @return Array IDs found */ function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); $notice->selectAdd('id'); $notice->whereAdd(sprintf('notice.created > "%s"', $notice->escape($this->target->created))); // Reply:: is a table of mentions // Subscription:: is a table of subscriptions (every user is subscribed to themselves) $notice->whereAdd(sprintf('( notice.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%1$d) ' . 'OR notice.id IN (SELECT notice_id FROM group_inbox WHERE group_id IN (SELECT group_id FROM group_member WHERE profile_id=%1$d))' . 'OR notice.id IN (SELECT notice_id FROM attention WHERE profile_id=%1$d) ) ' . 'AND (notice.reply_to IS NULL ' . 'OR notice.profile_id=%1$d ' . 'OR notice.reply_to IN (SELECT id FROM notice as noticereplies WHERE noticereplies.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%1$d))) ' . 'OR (notice.id IN (SELECT notice_id FROM reply WHERE profile_id=%1$d) ' . 'AND notice.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%1$d))', $this->target->id)); if (!empty($since_id)) { $notice->whereAdd(sprintf('notice.id > %d', $since_id)); } if (!empty($max_id)) { $notice->whereAdd(sprintf('notice.id <= %d', $max_id)); } if (!empty($this->selectVerbs)) { $notice->whereAddIn('verb', $this->selectVerbs, $notice->columnType('verb')); } $notice->limit($offset, $limit); // notice.id will give us even really old posts, which were // recently imported. For example if a remote instance had // problems and just managed to post here. Another solution // would be to have a 'notice.imported' field and order by it. $notice->orderBy('notice.id DESC'); if (!$notice->find()) { return array(); } $ids = $notice->fetchAll('id'); return $ids; }
/** * Query notices by users associated with this tag from the database. * * @param integer $offset offset * @param integer $limit maximum no of results * @param integer $since_id=null since this id * @param integer $max_id=null maximum id in result * * @return array array of notice ids. */ function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $notice->selectAdd(); $notice->selectAdd('notice.id'); $ptag = new Profile_tag(); $ptag->tag = $this->profile_list->tag; $ptag->tagger = $this->profile_list->tagger; $notice->joinAdd(array('profile_id', 'profile_tag:tagged')); $notice->whereAdd('profile_tag.tagger = ' . $this->profile_list->tagger); $notice->whereAdd(sprintf('profile_tag.tag = "%s"', $this->profile_list->tag)); if ($since_id != 0) { $notice->whereAdd('notice.id > ' . $since_id); } if ($max_id != 0) { $notice->whereAdd('notice.id <= ' . $max_id); } $notice->orderBy('notice.id DESC'); if (!is_null($offset)) { $notice->limit($offset, $limit); } $ids = array(); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } return $ids; }