Provides simple email notifications for when new visitor comments are posted.
composer require silverstripe/comment-notifications
To configure the default email address to receive notifications, place this in your mysite/_config.yml
SilverStripe\Control\Email\Email:
admin_email: '[email protected]'
Check out the CommentNotifiable class for the list of options you can override in your project.
To define who receives the comment notification define a updateNotificationRecipients
method and modify the list of
email addresses.
mysite/code/CommentNotificationExtension.php
<?php
use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Comments\Model\Comment;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataExtension;
use SilverStripe\Security\Group;
class CommentNotificationExtension extends DataExtension
{
/**
* @param array $existing
* @param Comment $comment
*/
public function updateNotificationRecipients(&$existing, $comment)
{
// send notification of the comment to all administrators in the CMS
$admin = Group::get()->filter('Code', 'admin');
foreach ($admin as $group) {
foreach ($group->Members() as $member) {
$existing[] = $member->Email;
}
}
// or, notify the user who originally created the page
$page = $comment->Parent();
if ($page instanceof SiteTree) {
/** @var ArrayList $pageVersion */
$pageVersion = $page->allVersions('', '', 1); // get the original version
if ($pageVersion && $pageVersion->count()) {
$existing[] = $pageVersion->first()->Author()->Email;
}
}
}
}
Apply the CommentNotificationExtension
to any classes which have commenting enabled (e.g SiteTree)
mysite/_config/extensions.yml
SilverStripe\CMS\Model\SiteTree:
extensions:
- CommentNotificationExtension