From 9ddc40b6da40a26297e32d1327440b9b11208397 Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Tue, 8 Oct 2013 00:21:24 +0200 Subject: [PATCH] NoResultException returns the failed object --- classes/Profile.php | 12 ++++++++++-- lib/noavatarexception.php | 7 +++++-- lib/noresultexception.php | 3 +++ lib/profilelist.php | 11 ++--------- 4 files changed, 20 insertions(+), 13 deletions(-) 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());