public function onBeforeWrite()
 {
     if ($this->owner->BaseClass == "Discussion" && $this->owner->ID == 0) {
         $discussion = Discussion::get()->byID($this->owner->ParentID);
         $discussion_author = $discussion->Author();
         $holder = $discussion->Parent();
         $author = Member::get()->byID($this->owner->AuthorID);
         // Get our default email from address
         if (DiscussionHolder::config()->send_emails_from) {
             $from = DiscussionHolder::config()->send_email_from;
         } else {
             $from = Email::config()->admin_email;
         }
         // Vars for the emails
         $vars = array("Title" => $discussion->Title, "Author" => $author, "Comment" => $this->owner->Comment, 'Link' => Controller::join_links($holder->Link("view"), $discussion->ID, "#comments-holder"));
         // Send email to discussion owner
         if ($discussion_author && $discussion_author->Email && $discussion_author->RecieveCommentEmails && $discussion_author->ID != $this->owner->AuthorID) {
             $subject = _t("Discussions.NewCreatedReplySubject", "{Nickname} replied to your discussion", null, array("Nickname" => $author->Nickname));
             $email = new Email($from, $discussion_author->Email, $subject);
             $email->setTemplate('NewCreatedReplyEmail');
             $email->populateTemplate($vars);
             $email->send();
         }
         // Send to anyone who liked this, if they want notifications
         foreach ($discussion->LikedBy() as $liked) {
             if ($liked->RecieveLikedReplyEmails && $liked->Email && $liked->ID != $author->ID) {
                 $subject = _t("Discussions.NewLikedReplySubject", "{Nickname} replied to your liked discussion", null, array("Nickname" => $author->Nickname));
                 $email = new Email($from, $liked->Email, $subject);
                 $email->setTemplate('NewLikedReplyEmail');
                 $email->populateTemplate($vars);
                 $email->send();
             }
         }
     }
 }
 /**
  * Like a particular discussion by ID
  *
  */
 public function like()
 {
     $member = Member::currentUser();
     $discussion = Discussion::get()->byID($this->request->param("ID"));
     if ($discussion && $discussion->canView($member)) {
         $this->setSessionMessage("message good", _t("Discussions.Liked", "Liked") . " '{$discussion->Title}'");
         $member->LikedDiscussions()->add($discussion);
         $member->write();
         $author = $discussion->Author();
         // Send a notification (if the author wants it)
         if ($author && $author->RecieveLikedEmails && $author->Email && $member->ID != $author->ID) {
             if (DiscussionHolder::config()->send_email_from) {
                 $from = DiscussionHolder::config()->send_email_from;
             } else {
                 $from = Email::config()->admin_email;
             }
             $subject = _t("Discussions.LikedDiscussionSubject", "{Nickname} liked your discussion", null, array("Nickname" => $member->Nickname));
             // Vars for the emails
             $vars = array("Title" => $discussion->Title, "Member" => $member, 'Link' => Controller::join_links($this->Link("view"), $discussion->ID, "#comments-holder"));
             $email = new Email($from, $author->Email, $subject);
             $email->setTemplate('LikedDiscussionEmail');
             $email->populateTemplate($vars);
             $email->send();
         }
     }
     return $this->redirect(Controller::join_links($this->Link("view"), $discussion->ID));
 }