Adding a notification service¶
Post Status Notifier has a built-in email notification service. But it is easy to implement custom notification services.
After the built-in services have been loaded, PSN triggers the action psn_after_load_services
which you can use to register your custom notification service.
Let’s say you put the logic for your custom service in a class file MyService.php located in the Example module’s subdirectory lib/Service:
Example
└ lib
└ Service
└ MyService.php
In the module’s bootstrap.php you can load your service like this:
<?php
public function bootstrap()
{
// register a method for the load_services action
add_action('psn_after_load_services', array($this, 'addNotificationService'));
}
/**
* Adds a new notification service
*
* @param Psn_Notification_Manager $notificationManager
*/
public function addNotificationService(Psn_Notification_Manager $notificationManager)
{
// include the service class
require_once $this->getPathinfo()->getRootLib() . 'Service/MyService.php';
// add the service to the notification service manager
$notificationManager->addService(new Psn_Module_Example_Service_MyService($this->_pm));
}
The callback function for the action psn_after_load_services
expects one parameter, an object of type Psn_Notification_Manager
. This is PSN’s Notification Manager object. Use it to add your service with the method addService
.
Service object¶
A Post Status Notifier service object must implement the interface Psn_Notification_Service_Interface
to be accepted by the Notification Manager’s addService method. Following the interface, the notification service object must implement the method execute
. It receives two parameters, the notification rule object which matched the post status transition and the WordPress post object of the post which got changed.
<?php
public function execute(Psn_Model_Rule $rule, $post)
{
}
Now it’s up to you to implement your custom notification service.