1. Go to this page and download the library: Download rainlab/notify-plugin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// Bind to a system event
\RainLab\Notify\Classes\Notifier::bindEvents([
'rainlab.user.activate' => \RainLab\User\NotifyRules\UserActivatedEvent::class
]);
// Fire the system event
Event::fire('rainlab.user.activate', [$this]);
class UserActivatedEvent extends \RainLab\Notify\Classes\EventBase
{
/**
* @var array Local conditions supported by this event.
*/
public $conditions = [
\RainLab\User\NotifyRules\UserAttributeCondition::class
];
/**
* Returns information about this event, including name and description.
*/
public function eventDetails()
{
return [
'name' => 'Activated',
'description' => 'A user is activated',
'group' => 'user'
];
}
/**
* Defines the usable parameters provided by this class.
*/
public function defineParams()
{
return [
'name' => [
'title' => 'Name',
'label' => 'Name of the user',
],
// ...
];
}
public static function makeParamsFromEvent(array $args, $eventName = null)
{
return [
'user' => array_get($args, 0)
];
}
}
class SendMailTemplateAction extends \RainLab\Notify\Classes\ActionBase
{
/**
* Returns information about this event, including name and description.
*/
public function actionDetails()
{
return [
'name' => 'Compose a mail message',
'description' => 'Send a message to a recipient',
'icon' => 'icon-envelope'
];
}
/**
* Field configuration for the action.
*/
public function defineFormFields()
{
return 'fields.yaml';
}
public function getText()
{
$template = $this->host->template_name;
return 'Send a message using '.$template;
}
/**
* Triggers this action.
* @param array $params
* @return void
*/
public function triggerAction($params)
{
$email = '[email protected]';
$template = $this->host->template_name;
Mail::sendTo($email, $template, $params);
}
}
public function defineFormFields()
{
return false;
}
class MyCondition extends \RainLab\Notify\Classes\ConditionBase
{
/**
* Return either ConditionBase::TYPE_ANY or ConditionBase::TYPE_LOCAL
*/
public function getConditionType()
{
// If the condition should appear for all events
return ConditionBase::TYPE_ANY;
// If the condition should appear only for some events
return ConditionBase::TYPE_LOCAL;
}
/**
* Field configuration for the condition.
*/
public function defineFormFields()
{
return 'fields.yaml';
}
public function getName()
{
return 'My condition is checked';
}
public function getTitle()
{
return 'My condition';
}
public function getText()
{
$value = $this->host->mycondition;
return 'My condition <span class="operator">is</span> '.$value;
}
/**
* Checks whether the condition is TRUE for specified parameters
* @param array $params
* @return bool
*/
public function isTrue(&$params)
{
return true;
}
}
class UserAttributeCondition extends \RainLab\Notify\Classes\ModelAttributesConditionBase
{
protected $modelClass = \RainLab\User\Models\User::class;
public function getGroupingTitle()
{
return 'User attribute';
}
public function getTitle()
{
return 'User attribute';
}
/**
* Checks whether the condition is TRUE for specified parameters
* @param array $params Specifies a list of parameters as an associative array.
* @return bool
*/
public function isTrue(&$params)
{
$hostObj = $this->host;
$attribute = $hostObj->subcondition;
if (!$user = array_get($params, 'user')) {
throw new ApplicationException('Error evaluating the user attribute condition: the user object is not found in the condition parameters.');
}
return parent::evalIsTrue($user);
}
}
class MyProject extends Model
{
// ...
public $morphMany = [
'my_notifications' => [
\RainLab\Notify\Models\Notification::class,
'name' => 'notifiable'
]
];
}