From cd23c78800b0e2b80200f8e4b1156190330f39c9 Mon Sep 17 00:00:00 2001
From: Mikael Nordfeldth <mmn@hethane.se>
Date: Wed, 15 Jul 2015 19:21:21 +0200
Subject: [PATCH] Less redundant code.

---
 classes/Memcached_DataObject.php |  2 +-
 classes/Notice.php               | 22 ++++++----------------
 lib/util.php                     | 26 +++++++++-----------------
 3 files changed, 16 insertions(+), 34 deletions(-)

diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php
index c1f6f644db..41ce715210 100644
--- a/classes/Memcached_DataObject.php
+++ b/classes/Memcached_DataObject.php
@@ -74,7 +74,7 @@ class Memcached_DataObject extends Safe_DataObject
     {
         $obj = new $cls;
 
-        // php-compatible, for settype(), datatype
+        // PHP compatible datatype for settype() below
         $colType = $obj->columnType($keyCol);
 
         if (!in_array($colType, array('integer', 'int'))) {
diff --git a/classes/Notice.php b/classes/Notice.php
index ae722138b3..6301f9ce62 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -1656,32 +1656,22 @@ class Notice extends Managed_DataObject
     protected $_replies = array();
 
     /**
-     * Pull the complete list of @-reply targets for this notice.
+     * Pull the complete list of @-mentioned profile IDs for this notice.
      *
      * @return array of integer profile ids
      */
     function getReplies()
     {
-        if (isset($this->_replies[$this->id])) {
-            return $this->_replies[$this->id];
+        if (!isset($this->_replies[$this->getID()])) {
+            $mentions = Reply::multiGet('notice_id', array($this->getID()));
+            $this->_replies[$this->getID()] = $mentions->fetchAll('profile_id');
         }
-
-        $replyMap = Reply::listGet('notice_id', array($this->id));
-
-        $ids = array();
-
-        foreach ($replyMap[$this->id] as $reply) {
-            $ids[] = $reply->profile_id;
-        }
-
-        $this->_replies[$this->id] = $ids;
-
-        return $ids;
+        return $this->_replies[$this->getID()];
     }
 
     function _setReplies($replies)
     {
-        $this->_replies[$this->id] = $replies;
+        $this->_replies[$this->getID()] = $replies;
     }
 
     /**
diff --git a/lib/util.php b/lib/util.php
index f29d9559b9..4d69651089 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -710,25 +710,17 @@ function common_find_mentions($text, Notice $notice)
 
         // Is it a reply?
 
-        if ($notice instanceof Notice) {
-            try {
-                $origNotice = $notice->getParent();
-                $origAuthor = $origNotice->getProfile();
+        $origNotice = $notice->getParent();
+        $origAuthor = $origNotice->getProfile();
 
-                $ids = $origNotice->getReplies();
+        $ids = $origNotice->getReplies();
 
-                foreach ($ids as $id) {
-                    $repliedTo = Profile::getKV('id', $id);
-                    if ($repliedTo instanceof Profile) {
-                        $origMentions[$repliedTo->nickname] = $repliedTo;
-                    }
-                }
-            } catch (NoProfileException $e) {
-                common_log(LOG_WARNING, sprintf('Notice %d author profile id %d does not exist', $origNotice->id, $origNotice->profile_id));
-            } catch (NoParentNoticeException $e) {
-                // This notice is not in reply to anything
-            } catch (Exception $e) {
-                common_log(LOG_WARNING, __METHOD__ . ' got exception ' . get_class($e) . ' : ' . $e->getMessage());
+        foreach ($ids as $id) {
+            try {
+                $repliedTo = Profile::getByID($id);
+                $origMentions[$repliedTo->nickname] = $repliedTo;
+            } catch (NoResultException $e) {
+                // continue foreach
             }
         }
 
-- 
2.39.5