/** * 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 showNoticePlus($item) { $replies = new Notice(); $replies->reply_to = $item->notice->id; // We take responsibility for doing the li $this->out->elementStart('li', array('class' => 'h-entry notice', 'id' => 'notice-' . $item->notice->id)); $item->show(); if ($replies->find()) { $this->out->elementStart('ol', array('class' => 'notices')); $replieslist = array(); while ($replies->fetch()) { $replieslist[] = $this->newListItem(clone $replies); } //Sorting based on url argument if ($_GET['sort'] == 'faves') { usort($replieslist, array($this, '_cmpFav')); } else { usort($replieslist, array($this, '_cmpDate')); } foreach ($replieslist as $reply) { $this->showNoticePlus($reply); } $this->out->elementEnd('ol'); } $this->out->elementEnd('li'); }
static function getStreamByIds($ids) { $cache = Cache::instance(); if (!empty($cache)) { $notices = array(); foreach ($ids as $id) { $n = Notice::staticGet('id', $id); if (!empty($n)) { $notices[] = $n; } } return new ArrayWrapper($notices); } else { $notice = new Notice(); if (empty($ids)) { //if no IDs requested, just return the notice object return $notice; } $notice->whereAdd('id in (' . implode(', ', $ids) . ')'); $notice->find(); $temp = array(); while ($notice->fetch()) { $temp[$notice->id] = clone $notice; } $wrapped = array(); foreach ($ids as $id) { if (array_key_exists($id, $temp)) { $wrapped[] = $temp[$id]; } } return new ArrayWrapper($wrapped); } }
/** * Fetch the next self::DELETION_WINDOW messages for this user. * @return Notice */ protected function getNextBatch(User $user) { $notice = new Notice(); $notice->profile_id = $user->id; $notice->limit(self::DELETION_WINDOW); $notice->find(); return $notice; }
public function postDelete() { $query = Notice::find(Input::get("id")); NoticeUserAssociate::where("notice_id", $query->notice_id)->delete(); if ($query->delete()) { return Redirect::back()->with("event", "<p class='alert alert-success'><span class='glyphicon glyphicon-ok'></span> Notice deleted.</p>"); } return Redirect::back()->with("event", "<p class='alert alert-danger'><span class='glyphicon glyphicon-remove'></span> Error occured. Please try after sometime.</p>"); }
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 handle($args) { parent::handle($args); $notice = new Notice(); $notice->source = 'activity'; $notice->find(); while ($notice->fetch()) { $data = Notice::staticGet('id', $notice->id); $orign = clone $data; $data->content_type = NOTICE::CONTENT_TYPE_ACTIVITY; if (!$data->update($orign)) { echo 'profile update error' . $data->id; echo '<br>'; } } }
function getNoticeIds($offset, $limit, $since_id, $max_id) { $notice = new Notice(); $search_engine = $notice->getSearchEngine('notice'); $search_engine->set_sort_mode('chron'); $search_engine->limit($offset, $limit); $ids = array(); // wtf? $search_engine->query($this->q); if ($notice->find()) { while ($notice->fetch()) { $ids[] = $notice->id; } } return $ids; }
function getNotices($limit = 0) { $q = $this->trimmed('q'); $notices = array(); $notice = new Notice(); $search_engine = $notice->getSearchEngine('identica_notices'); $search_engine->set_sort_mode('chron'); if (!$limit) { $limit = 20; } $search_engine->limit(0, $limit, true); $search_engine->query($q); $notice->find(); while ($notice->fetch()) { $notices[] = clone $notice; } return $notices; }
protected function getNotices() { $q = $this->trimmed('q'); $notices = array(); $notice = new Notice(); $search_engine = $notice->getSearchEngine('notice'); $search_engine->set_sort_mode('chron'); $search_engine->limit(0, $this->limit, true); if (false === $search_engine->query($q)) { $cnt = 0; } else { $cnt = $notice->find(); } if ($cnt > 0) { while ($notice->fetch()) { $notices[] = clone $notice; } } return $notices; }
public function detail() { $notice_id = Input::get('notice_id'); $notice = Notice::find(Input::get('notice_id')); if (!isset($notice)) { return View::make('errors.missing'); } // 用户登陆,标记为已读 if (Sentry::check()) { $user_id = Sentry::getUser()->user_id; // 先查询是否已标记为已读 if (UserReadNotice::where('user_id', $user_id)->where('notice_id', $notice_id)->count() == 0) { $user_read_notice = new UserReadNotice(); $user_read_notice->user_id = $user_id; $user_read_notice->notice_id = $notice_id; // 保存。不成功,下次读取依旧判断 // 需改进 ??? $user_read_notice->save(); } } return View::make('pages.message-center.message.detail', ['notice' => $notice]); }
public function getRead($NoticeId) { $notice = Notice::find($NoticeId); $notice->read = '1'; $notice->save(); // 转跳到不同地址 // switch ($notice->type) { case '1': break; case '2': break; case '3': break; case '4': break; case '5': $data = json_decode($notice->data); return Redirect::to('picking/view/' . $data->delivery_id)->with('warning', $notice->content); break; } return Redirect::to('notice'); }
function onEndUpgrade() { // Version 0.9.x of the plugin didn't stamp notices // with verb and object-type (for obvious reasons). Update // those notices here. $notice = new Notice(); $notice->whereAdd('exists (select uri from bookmark where bookmark.uri = notice.uri)'); $notice->whereAdd('((object_type is null) or (object_type = "' . ActivityObject::NOTE . '"))'); $notice->find(); while ($notice->fetch()) { $original = clone $notice; $notice->verb = ActivityVerb::POST; $notice->object_type = ActivityObject::BOOKMARK; $notice->update($original); } }
/** * 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; }
* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ // Abort if called from a web server if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { print "This script must be run from the command line\n"; exit; } define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); define('STATUSNET', true); define('LACONICA', true); // compatibility require_once INSTALLDIR . '/lib/common.php'; common_log(LOG_INFO, 'Starting to do old notices.'); $notice = new Notice(); $cnt = $notice->find(); while ($notice->fetch()) { common_log(LOG_INFO, 'Getting replies for notice #' . $notice->id); common_save_replies($notice); }
/** * Show results * * @param string $q search query * @param integer $page page number * * @return void */ function showResults($q, $page) { $notice = new Notice(); $search_engine = $notice->getSearchEngine('notice'); $search_engine->set_sort_mode('chron'); // Ask for an extra to see if there's more. $search_engine->limit(($page - 1) * NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); if (false === $search_engine->query($q)) { $cnt = 0; } else { $cnt = $notice->find(); } if ($cnt === 0) { $this->element('p', 'error', _('No results.')); $this->searchSuggestions($q); if (common_logged_in()) { $message = sprintf(_('Be the first to [post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!'), urlencode($q)); } else { $message = sprintf(_('Why not [register an account](%%%%action.register%%%%) and be the first to [post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!'), urlencode($q)); } $this->elementStart('div', 'guide'); $this->raw(common_markup_to_html($message)); $this->elementEnd('div'); return; } $terms = preg_split('/[\\s,]+/', $q); $nl = new SearchNoticeList($notice, $this, $terms); $cnt = $nl->show(); $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE, $page, 'noticesearch', array('q' => $q)); }
function initNoticeReshare() { printfnq("Ensuring all reshares have the correct verb and object-type..."); $notice = new Notice(); $notice->whereAdd('repeat_of is not null'); $notice->whereAdd('(verb != "' . ActivityVerb::SHARE . '" OR object_type != "' . ActivityObject::ACTIVITY . '")'); if ($notice->find()) { while ($notice->fetch()) { try { $orig = Notice::staticGet('id', $notice->id); $notice->verb = ActivityVerb::SHARE; $notice->object_type = ActivityObject::ACTIVITY; $notice->update($orig); } catch (Exception $e) { printfv("Error updating verb and object_type for {$notice->id}:" . $e->getMessage()); } } } printfnq("DONE.\n"); }
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; }
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 _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 clearRepeats() { $repeatNotice = new Notice(); $repeatNotice->repeat_of = $this->id; //Null any notices that are repeats of this notice if ($repeatNotice->find()) { while ($repeatNotice->fetch()) { $orig = clone $repeatNotice; $repeatNotice->repeat_of = null; $repeatNotice->update($orig); } } }
/** * Check to see if this Twitter status has already been imported * * @param Profile $profile Twitter user's local profile * @param string $statusUri URI of the status on Twitter * * @return mixed value a matching Notice or null */ function checkDupe($profile, $statusUri) { $notice = new Notice(); $notice->uri = $statusUri; $notice->profile_id = $profile->id; $notice->limit(1); if ($notice->find()) { $notice->fetch(); return $notice; } return null; }
/** * Show the form for editing the specified notice. * * @param int $id * @return Response */ public function edit($id) { $notice = Notice::find($id); return View::make('notices.edit', compact('notice')); }
/** * * @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; }
function _deleteNotices() { $notice = new Notice(); $notice->profile_id = $this->id; if ($notice->find()) { while ($notice->fetch()) { $other = clone $notice; $other->delete(); } } }
/** * Get the notices to output as results. This also sets some class * attrs so we can use them to calculate pagination, and output * since_id and max_id. * * @return array an array of Notice objects sorted in reverse chron */ function getNotices() { // TODO: Support search operators like from: and to:, boolean, etc. $notices = array(); $notice = new Notice(); // lcase it for comparison $q = strtolower($this->query); $search_engine = $notice->getSearchEngine('notice'); $search_engine->set_sort_mode('chron'); $search_engine->limit(($this->page - 1) * $this->rpp, $this->rpp + 1, true); if (false === $search_engine->query($q)) { $this->cnt = 0; } else { $this->cnt = $notice->find(); } $cnt = 0; $this->max_id = 0; if ($this->cnt > 0) { while ($notice->fetch()) { ++$cnt; if (!$this->max_id) { $this->max_id = $notice->id; } if ($this->since_id && $notice->id <= $this->since_id) { break; } if ($cnt > $this->rpp) { break; } $notices[] = clone $notice; } } return $notices; }
$response = fgets(STDIN); if (strtolower(trim($response)) != 'y') { print "Aborting.\n"; exit(0); } } // @fixme for a very prolific poster this could be too many. $notice = new Notice(); $notice->profile_id = $profile->id; if (have_option('--all')) { print "Finding all notices by {$profile->nickname}..."; } else { print "Finding notices by {$profile->nickname} with geolocation data..."; $notice->whereAdd("lat != ''"); } $notice->find(); if ($notice->N) { print " {$notice->N} found.\n"; while ($notice->fetch()) { print "notice id {$notice->id} "; if (have_option('v') || have_option('--verbose')) { print "({$notice->lat},{$notice->lon}) "; if ($notice->location_ns) { print "ns {$notice->location_ns} id {$notice->location_id} "; } } if (have_option('--dry-run')) { // sucka echo "(skipped)"; } else { // note: setting fields to null and calling update() doesn't save the nulled fields
/** * Handle the request * * show a timeline of the user's repeated notices * * @param array $args $_REQUEST data (unused) * * @return void */ function handle($args) { parent::handle($args); $offset = ($this->page - 1) * $this->cnt; $limit = $this->cnt; // TRANS: Title of list of repeated notices of the logged in user. // TRANS: %s is the nickname of the logged in user. $title = sprintf(_("Repeats of %s"), $this->auth_user->nickname); $sitename = common_config('site', 'name'); $profile = $this->auth_user->getProfile(); $subtitle = sprintf(_('%1$s notices that %2$s / %3$s has repeated.'), $sitename, $this->auth_user->nickname, $profile->getBestName()); $taguribase = TagURI::base(); $id = "tag:{$taguribase}:RepeatsOfMe:" . $this->auth_user->id; $link = common_local_url('all', array('nickname' => $this->auth_user->nickname)); // This is a really bad query for some reason if (!common_config('performance', 'high')) { $strm = $this->auth_user->repeatsOfMe($offset, $limit, $this->since_id, $this->max_id); } else { $strm = new Notice(); $strm->whereAdd('0 = 1'); $strm->find(); } switch ($this->format) { case 'xml': $this->showXmlTimeline($strm); break; case 'json': $this->showJsonTimeline($strm); break; case 'atom': header('Content-Type: application/atom+xml; charset=utf-8'); $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); $atom->setSubtitle($subtitle); $atom->setUpdated('now'); $atom->addLink($link); $atom->setSelfLink($this->getSelfUri()); $atom->addEntryFromNotices($strm); $this->raw($atom->getString()); break; case 'as': header('Content-Type: ' . ActivityStreamJSONDocument::CONTENT_TYPE); $doc = new ActivityStreamJSONDocument($this->auth_user); $doc->setTitle($title); $doc->addLink($link, 'alternate', 'text/html'); $doc->addItemsFromNotices($strm); $this->raw($doc->asString()); break; default: // TRANS: Client error displayed when coming across a non-supported API method. $this->clientError(_('API method not found.'), 404); break; } }
/** * Show search results * * @return void */ function showResults() { // TODO: Support search operators like from: and to:, boolean, etc. $notice = new Notice(); // lcase it for comparison $q = strtolower($this->query); $search_engine = $notice->getSearchEngine('notice'); $search_engine->set_sort_mode('chron'); $search_engine->limit(($this->page - 1) * $this->rpp, $this->rpp + 1, true); if (false === $search_engine->query($q)) { $cnt = 0; } else { $cnt = $notice->find(); } // TODO: since_id, lang, geocode $results = new JSONSearchResultsList($notice, $q, $this->rpp, $this->page); $this->initDocument('json'); $results->show(); $this->endDocument('json'); }