diff --git a/actions/conversation.php b/actions/conversation.php index 468409189b..0eb0d86d65 100644 --- a/actions/conversation.php +++ b/actions/conversation.php @@ -31,6 +31,9 @@ if (!defined('LACONICA')) { exit(1); } +// XXX: not sure how to do paging yet, +// so set a 60-notice limit + require_once INSTALLDIR.'/lib/noticelist.php'; /** @@ -107,7 +110,7 @@ class ConversationAction extends Action function showContent() { - $notices = Notice::conversationStream($this->id, null); + $notices = Notice::conversationStream($this->id, null, null); $ct = new ConversationTree($notices, $this); diff --git a/actions/peoplesearch.php b/actions/peoplesearch.php index c61e0e2739..60ddb6a828 100644 --- a/actions/peoplesearch.php +++ b/actions/peoplesearch.php @@ -87,3 +87,47 @@ class PeoplesearchAction extends SearchAction } } +/** + * People search results class + * + * Derivative of ProfileList with specialization for highlighting search terms. + * + * @category Widget + * @package Laconica + * @author Evan Prodromou + * @author Robin Millette + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://laconi.ca/ + * + * @see PeoplesearchAction + */ + +class PeopleSearchResults extends ProfileList +{ + var $terms = null; + var $pattern = null; + + function __construct($profile, $terms, $action) + { + parent::__construct($profile, $action); + + $this->terms = array_map('preg_quote', + array_map('htmlspecialchars', $terms)); + + $this->pattern = '/('.implode('|',$terms).')/i'; + } + + function newProfileItem($profile) + { + return new PeopleSearchResultItem($profile, $this->action); + } +} + +class PeopleSearchResultItem extends ProfileListItem +{ + function highlight($text) + { + return preg_replace($this->pattern, '\\1', htmlspecialchars($text)); + } +} + diff --git a/actions/subscriptions.php b/actions/subscriptions.php index 4124abea4d..42bdae10f7 100644 --- a/actions/subscriptions.php +++ b/actions/subscriptions.php @@ -159,7 +159,10 @@ class SubscriptionsListItem extends SubscriptionListItem $this->showBio(); $this->showTags(); // Relevant portion! - $this->showOwnerControls(); + $cur = common_current_user(); + if (!empty($cur) && $cur->id == $this->owner->id) { + $this->showOwnerControls(); + } $this->endProfile(); } diff --git a/classes/Notice.php b/classes/Notice.php index 2ba2f31b1a..8a018068ae 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -1187,6 +1187,7 @@ class Notice extends Memcached_DataObject if (empty($cache) || $since_id != 0 || $max_id != 0 || (!is_null($since) && $since > 0) || + is_null($limit) || ($offset + $limit) > NOTICE_CACHE_WINDOW) { return call_user_func_array($fn, array_merge($args, array($offset, $limit, $since_id, $max_id, $since))); diff --git a/lib/peoplesearchresults.php b/lib/peoplesearchresults.php deleted file mode 100644 index 9f6696b5f6..0000000000 --- a/lib/peoplesearchresults.php +++ /dev/null @@ -1,80 +0,0 @@ - - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://laconi.ca/ - * - * Laconica - a distributed open-source microblogging tool - * Copyright (C) 2008, 2009, Control Yourself, Inc. - * - * 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 . - */ - -if (!defined('LACONICA')) { - exit(1); -} - -require_once INSTALLDIR.'/lib/profilelist.php'; - -/** - * People search results class - * - * Derivative of ProfileList with specialization for highlighting search terms. - * - * @category Widget - * @package Laconica - * @author Evan Prodromou - * @author Robin Millette - * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 - * @link http://laconi.ca/ - * - * @see PeoplesearchAction - */ - -class PeopleSearchResults extends ProfileList -{ - var $terms = null; - var $pattern = null; - - function __construct($profile, $terms, $action) - { - parent::__construct($profile, $action); - - $this->terms = array_map('preg_quote', - array_map('htmlspecialchars', $terms)); - - $this->pattern = '/('.implode('|',$terms).')/i'; - } - - function newProfileItem($profile) - { - return new PeopleSearchResultItem($profile, $this->action); - } -} - -class PeopleSearchResultItem extends ProfileListItem -{ - function highlight($text) - { - return preg_replace($this->pattern, '\\1', htmlspecialchars($text)); - } -} - diff --git a/lib/profilelist.php b/lib/profilelist.php index a604230f85..e13d56a9a6 100644 --- a/lib/profilelist.php +++ b/lib/profilelist.php @@ -243,15 +243,20 @@ class ProfileListItem extends Widget $user = common_current_user(); if (!empty($user) && $this->profile->id != $user->id) { - $this->out->elementStart('li', 'entity_subscribe'); - if ($user->isSubscribed($this->profile)) { - $usf = new UnsubscribeForm($this->out, $this->profile); - $usf->show(); - } else { - $sf = new SubscribeForm($this->out, $this->profile); - $sf->show(); + // Is it a local user? can't remote sub from a list + // XXX: make that possible! + $other = User::staticGet('id', $this->profile->id); + if (!empty($other)) { + $this->out->elementStart('li', 'entity_subscribe'); + if ($user->isSubscribed($this->profile)) { + $usf = new UnsubscribeForm($this->out, $this->profile); + $usf->show(); + } else { + $sf = new SubscribeForm($this->out, $this->profile); + $sf->show(); + } + $this->out->elementEnd('li'); } - $this->out->elementEnd('li'); } }