diff --git a/classes/Attention.php b/classes/Attention.php new file mode 100644 index 0000000000..2ba22df5b3 --- /dev/null +++ b/classes/Attention.php @@ -0,0 +1,65 @@ +. + */ + +class Attention extends Managed_DataObject +{ + public $__table = 'attention'; // table name + public $notice_id; // int(4) primary_key not_null + public $profile_id; // int(4) primary_key not_null + public $reason; // varchar(255) + public $created; // datetime() not_null + public $modified; // timestamp not_null default_CURRENT_TIMESTAMP + + public static function schemaDef() + { + return array( + 'description' => 'Notice attentions to profiles (that are not a mention and not result of a subscription)', + 'fields' => array( + 'notice_id' => array('type' => 'int', 'not null' => true, 'description' => 'notice_id to give attention'), + 'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'profile_id for feed receiver'), + 'reason' => array('type' => 'varchar', 'length' => 255, 'description' => 'Optional reason why this was brought to the attention of profile_id'), + 'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'), + 'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'), + ), + 'primary key' => array('notice_id', 'profile_id'), + 'foreign keys' => array( + 'attention_notice_id_fkey' => array('notice', array('notice_id' => 'id')), + 'attention_profile_id_fkey' => array('profile', array('profile_id' => 'id')), + ), + 'indexes' => array( + 'attention_profile_id_idx' => array('profile_id'), + ), + ); + } + + public static function saveNew(Notice $notice, Profile $profile, $reason=null) + { + $att = new Attention(); + + $att->notice_id = $notice->getID(); + $att->profile_id = $profile->getID(); + $att->reason = $reason; + $result = $att->insert(); + + if ($result === false) { + throw new Exception('Could not saveNew in Attention'); + } + return $att; + } +} diff --git a/db/core.php b/db/core.php index 5a420cc2b3..d435c03cd6 100644 --- a/db/core.php +++ b/db/core.php @@ -86,6 +86,7 @@ $classes = array('Schema_version', 'User_urlshortener_prefs', 'Old_school_prefs', 'User_username', + 'Attention', ); foreach ($classes as $cls) { diff --git a/lib/inboxnoticestream.php b/lib/inboxnoticestream.php index cb81042e2b..84cac7c67b 100644 --- a/lib/inboxnoticestream.php +++ b/lib/inboxnoticestream.php @@ -107,7 +107,9 @@ class RawInboxNoticeStream extends NoticeStream // Subscription:: is a table of subscriptions (every user is subscribed to themselves) $notice->whereAdd( sprintf('notice.id IN (SELECT notice_id FROM reply WHERE profile_id=%1$d) ' . - 'OR notice.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%d)', $this->target->id) + 'OR notice.profile_id IN (SELECT subscribed FROM subscription WHERE subscriber=%d) ' . + 'OR notice.id IN (SELECT notice_id FROM attention WHERE profile_id=%1$d)', + $this->target->id) ); $notice->limit($offset, $limit); $notice->orderBy('notice.created DESC');