diff --git a/actions/apiaccountverifycredentials.php b/actions/apiaccountverifycredentials.php index 6cc61cf6da..9b98fa6d81 100644 --- a/actions/apiaccountverifycredentials.php +++ b/actions/apiaccountverifycredentials.php @@ -48,18 +48,9 @@ if (!defined('STATUSNET')) { */ class ApiAccountVerifyCredentialsAction extends ApiAuthAction { - /** - * Handle the request - * - * Check whether the credentials are valid and output the result - * - * @param array $args $_REQUEST data (unused) - * - * @return void - */ - function handle($args) + protected function handle() { - parent::handle($args); + parent::handle(); if (!in_array($this->format, array('xml', 'json'))) { // TRANS: Client error displayed when coming across a non-supported API method. diff --git a/actions/public.php b/actions/public.php index 6ebd48ba12..52bab072ae 100644 --- a/actions/public.php +++ b/actions/public.php @@ -53,7 +53,8 @@ class PublicAction extends Action var $page = null; var $notice; - var $userProfile = null; + + protected $stream = null; function isReadOnly($args) { @@ -67,7 +68,7 @@ class PublicAction extends Action * * @return boolean success value */ - function prepare($args) + protected function prepare(array $args=array()) { parent::prepare($args); $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; @@ -80,17 +81,9 @@ class PublicAction extends Action common_set_returnto($this->selfUrl()); - $this->userProfile = Profile::current(); + $this->streamPrepare(); - $user = common_current_user(); - - if (!empty($user) && $user->streamModeOnly()) { - $stream = new PublicNoticeStream($this->userProfile); - } else { - $stream = new ThreadingPublicNoticeStream($this->userProfile); - } - - $this->notice = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE, + $this->notice = $this->stream->getNotices(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); if (!$this->notice) { @@ -98,7 +91,7 @@ class PublicAction extends Action $this->serverError(_('Could not retrieve public timeline.')); } - if($this->page > 1 && $this->notice->N == 0){ + if ($this->page > 1 && $this->notice->N == 0){ // TRANS: Server error when page not found (404). $this->serverError(_('No such page.'),$code=404); } @@ -106,6 +99,15 @@ class PublicAction extends Action return true; } + protected function streamPrepare() + { + if ($this->scoped instanceof Profile && $this->scoped->isLocal() && $this->scoped->getUser()->streamModeOnly()) { + $this->stream = new PublicNoticeStream($this->scoped); + } else { + $this->stream = new ThreadingPublicNoticeStream($this->scoped); + } + } + /** * handle request * @@ -115,9 +117,9 @@ class PublicAction extends Action * * @return void */ - function handle($args) + protected function handle() { - parent::handle($args); + parent::handle(); $this->showPage(); } @@ -222,7 +224,7 @@ class PublicAction extends Action if (!empty($user) && $user->streamModeOnly()) { $nl = new PrimaryNoticeList($this->notice, $this, array('show_n'=>NOTICES_PER_PAGE)); } else { - $nl = new ThreadedNoticeList($this->notice, $this, $this->userProfile); + $nl = new ThreadedNoticeList($this->notice, $this, $this->scoped); } $cnt = $nl->show(); diff --git a/classes/Profile.php b/classes/Profile.php index e850b629d4..8352861fe6 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -1570,7 +1570,12 @@ class Profile extends Managed_DataObject } public function getPref($namespace, $topic, $default=null) { - return Profile_prefs::getData($this, $namespace, $topic, $default); + // If you want an exception to be thrown, call Profile_prefs::getData directly + try { + return Profile_prefs::getData($this, $namespace, $topic, $default); + } catch (NoResultException $e) { + return null; + } } public function setPref($namespace, $topic, $data) { diff --git a/lib/default.php b/lib/default.php index de07a8ee47..465a5142a3 100644 --- a/lib/default.php +++ b/lib/default.php @@ -144,7 +144,7 @@ $default = 'path' => $_path . '/background/', 'ssl' => null), 'public' => - array('localonly' => true, + array('localonly' => false, 'blacklist' => array(), 'autosource' => array()), 'theme' => diff --git a/lib/router.php b/lib/router.php index 8260cb3e2e..a3be38ebbd 100644 --- a/lib/router.php +++ b/lib/router.php @@ -163,6 +163,9 @@ class Router $m->connect('main/'.$a, array('action' => $a)); } + $m->connect('main/public', array('action' => 'public')); + $m->connect('main/all', array('action' => 'networkpublic')); + $m->connect('main/tagprofile/:id', array('action' => 'tagprofile'), array('id' => '[0-9]+')); @@ -945,7 +948,9 @@ class Router array('tag' => self::REGEX_TAG)); } } else { + $m->connect('main/public', array('action' => 'public')); $m->connect('', array('action' => 'public')); + $m->connect('main/all', array('action' => 'networkpublic')); $m->connect('rss', array('action' => 'publicrss')); $m->connect('featuredrss', array('action' => 'featuredrss')); $m->connect('featured/', array('action' => 'featured')); diff --git a/theme/neo-quitter/css/display.css b/theme/neo-quitter/css/display.css index 22a477a49f..3532e9dd1f 100644 --- a/theme/neo-quitter/css/display.css +++ b/theme/neo-quitter/css/display.css @@ -1720,7 +1720,6 @@ ul.messages .notice .p-author { } #content .threaded-replies .notice-options { - position:absolute; bottom:0; right:0px; height:25px;