diff --git a/classes/Profile.php b/classes/Profile.php index e1bba076e9..ffa5a46439 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -549,14 +549,22 @@ class Profile extends Managed_DataObject function getSubscribed($offset=0, $limit=null) { $subs = Subscription::getSubscribedIDs($this->id, $offset, $limit); - $profiles = Profile::listFind('id', $subs); + try { + $profiles = Profile::listFind('id', $subs); + } catch (NoResultException $e) { + return $e->obj; + } return $profiles; } function getSubscribers($offset=0, $limit=null) { $subs = Subscription::getSubscriberIDs($this->id, $offset, $limit); - $profiles = Profile::listFind('id', $subs); + try { + $profiles = Profile::listFind('id', $subs); + } catch (NoResultException $e) { + return $e->obj; + } return $profiles; } diff --git a/lib/noavatarexception.php b/lib/noavatarexception.php index 1f90aaf71c..ac411579c5 100644 --- a/lib/noavatarexception.php +++ b/lib/noavatarexception.php @@ -31,8 +31,11 @@ if (!defined('GNUSOCIAL')) { exit(1); } class NoAvatarException extends NoResultException { - public function __construct(Profile $target, Avatar $avatar) + public $target; + + public function __construct(Profile $target, Avatar $obj) { - parent::__construct($avatar); + $this->target = $target; + parent::__construct($obj); } } diff --git a/lib/noresultexception.php b/lib/noresultexception.php index 6eb83b89d2..b664dab5e7 100644 --- a/lib/noresultexception.php +++ b/lib/noresultexception.php @@ -31,8 +31,11 @@ if (!defined('GNUSOCIAL')) { exit(1); } class NoResultException extends ServerException { + public $obj; // The object with query that gave no results + public function __construct(DB_DataObject $obj) { + $this->obj = $obj; // We could log an entry here with the search parameters parent::__construct(sprintf(_('No result found on %s lookup.'), get_class($obj))); } diff --git a/lib/profilelist.php b/lib/profilelist.php index 085690b9f7..11ed8945e9 100644 --- a/lib/profilelist.php +++ b/lib/profilelist.php @@ -85,15 +85,8 @@ class ProfileList extends Widget function showProfiles() { - // Note: we don't use fetchAll() because it's borked with query() - - $profiles = array(); - - while ($this->profile->fetch()) { - $profiles[] = clone($this->profile); - } - - $cnt = count($profiles); + $cnt = $this->profile->N; + $profiles = $this->profile->fetchAll(); $max = min($cnt, $this->maxProfiles());