Skip to content

Latest commit

 

History

History
86 lines (65 loc) · 2.99 KB

readme.md

File metadata and controls

86 lines (65 loc) · 2.99 KB

Comment Notifications

Build Status Scrutinizer Code Quality codecov.io SilverStripe supported module

Provides simple email notifications for when new visitor comments are posted.

Installation

Install using Composer:

composer require silverstripe/comment-notifications ^2.0

Note: This branch is SilverStripe 4 compatible. For a SilverStripe 3 version please see the 1.x release line.

Configuration

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.

Configuring Recipients

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