\\\\_\ · · \\) \____) · · · · · · · · Qvitter 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 three of the License or (at · · your option) any later version. · · · · Qvitter is distributed in hope that it will be useful but WITHOUT ANY · · WARRANTY; without even the implied warranty of MERCHANTABILTY 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 Qvitter. If not, see . · · · · Contact h@nnesmannerhe.im if you have any questions. · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · */ if (!defined('STATUSNET')) { exit(1); } /** * Returns the most recent notices (default 20) in the list */ class ApiQvitterTimelineListAction extends ApiBareAuthAction { var $notices = null; var $list = null; /** * Take arguments for running * * @param array $args $_REQUEST args * * @return boolean success flag * */ protected function prepare(array $args=array()) { parent::prepare($args); $this->format = 'json'; $this->list = $this->getTargetList($this->arg('nickname'), $this->arg('id')); if (!($this->list instanceof Profile_list)) { // TRANS: Client error displayed when requesting a non existing list $this->clientError(_('List not found.'), 404); } $this->notices = $this->getNotices(); return true; } /** * Handle the request * * Just show the notices * * @return void */ protected function handle() { parent::handle(); $this->showJsonTimeline($this->notices); } /** * Get notices * * @return array notices */ function getNotices() { $notices = array(); $stream = new PeopletagNoticeStream($this->list); $notice = $stream->getNotices(($this->page - 1) * $this->count, $this->count, $this->since_id, $this->max_id); $notices = $notice->fetchAll(); NoticeList::prefill($notices); return $notices; } /** * Is this action read only? * * @param array $args other arguments * * @return boolean true */ function isReadOnly($args) { return true; } /** * When was this feed last modified? * * @return string datestamp of the latest notice in the stream */ function lastModified() { if (!empty($this->notices) && (count($this->notices) > 0)) { return strtotime($this->notices[0]->created); } return null; } /** * An entity tag for this stream * * Returns an Etag based on the action name, language, and * timestamps of the first and last notice in the timeline * * @return string etag */ function etag() { if (!empty($this->notices) && (count($this->notices) > 0)) { $last = count($this->notices) - 1; return '"' . implode( ':', array($this->arg('action'), common_user_cache_hash($this->auth_user), common_language(), strtotime($this->notices[0]->created), strtotime($this->notices[$last]->created)) ) . '"'; } return null; } }