Example #1
0
File: topic.php Project: anqh/anqh
 /**
  * Set message recipients
  *
  * @param   array  $recipients
  * @return  count  New recipient count
  */
 public function set_recipients(array $recipients)
 {
     // Removed recipients
     $old_recipients = array_diff_key($this->find_recipient_names(), $recipients);
     if ($old_recipients) {
         DB::delete('forum_private_recipients')->where('forum_topic_id', '=', $this->id)->and_where('user_id', 'IN', array_keys($old_recipients))->execute();
     }
     // New recipients
     $new_recipients = array_diff_key($recipients, $this->find_recipient_names());
     if ($new_recipients) {
         foreach ($new_recipients as $recipient_id => $recipient_name) {
             $recipient = Model_Forum_Private_Recipient::factory();
             $recipient->set_fields(array('forum_topic_id' => $this->id, 'forum_area_id' => $this->forum_area_id, 'user_id' => $recipient_id, 'unread' => $this->post_count ? $this->post_count : 1));
             $recipient->save();
         }
     }
     $this->recipient_count = count($recipients);
     $this->save();
 }
Example #2
0
File: forum.php Project: anqh/anqh
 /**
  * Find new private messages
  *
  * @static
  * @param   Model_User $user
  * @return  Model_Forum_Private_Recipient[]
  */
 public static function find_new_private_messages(Model_User $user)
 {
     $recipient = Model_Forum_Private_Recipient::factory();
     return $recipient->load(DB::select_array($recipient->fields())->where('user_id', '=', $user->id)->where('unread', '>', 0), null);
 }