{
$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'))) {
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;
}
/**
// 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
}
}