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)); }