Less redundant code.

This commit is contained in:
Mikael Nordfeldth 2015-07-15 19:21:21 +02:00
parent 01a4ab30dc
commit cd23c78800
3 changed files with 17 additions and 35 deletions

View File

@ -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'))) {

View File

@ -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;
}
/**

View File

@ -710,25 +710,17 @@ function common_find_mentions($text, Notice $notice)
// Is it a reply?
if ($notice instanceof Notice) {
$origNotice = $notice->getParent();
$origAuthor = $origNotice->getProfile();
$ids = $origNotice->getReplies();
foreach ($ids as $id) {
try {
$origNotice = $notice->getParent();
$origAuthor = $origNotice->getProfile();
$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());
$repliedTo = Profile::getByID($id);
$origMentions[$repliedTo->nickname] = $repliedTo;
} catch (NoResultException $e) {
// continue foreach
}
}