forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
263 lines
8.7 KiB
PHP
263 lines
8.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Rules hooks for the Simplenews newsletter module.
|
|
*
|
|
* @addtogroup rules
|
|
* @{
|
|
*/
|
|
|
|
use Drupal\simplenews\Entity\Subscriber;
|
|
|
|
/**
|
|
* Implements hook_rules_action_info().
|
|
*/
|
|
function simplenews_rules_rules_action_info() {
|
|
return array(
|
|
'simplenews_rules_action_send' => array(
|
|
'label' => t('Send newsletter'),
|
|
'group' => t('Simplenews'),
|
|
'parameter' => array(
|
|
'node' => array(
|
|
'type' => 'node',
|
|
'label' => t('The newsletter node to be sent.'),
|
|
'description' => t('The newsletter node that should be sent.'),
|
|
),
|
|
),
|
|
),
|
|
'simplenews_rules_action_subscribe' => array(
|
|
'label' => t('Subscribe an e-mail adress to a newsletter'),
|
|
'group' => t('Simplenews'),
|
|
'named parameter' => TRUE,
|
|
'parameter' => array(
|
|
'mail' => array(
|
|
'type' => 'text',
|
|
'label' => t('E-mail'),
|
|
'description' => t('The e-mail address that should be subscribed.'),
|
|
),
|
|
'newsletter_id' => array(
|
|
'type' => 'integer',
|
|
'label' => t('Simplenews newsletter'),
|
|
'descrption' => t('For which newsletter the subscription should happen.'),
|
|
'options list' => 'simplenews_newsletter_list',
|
|
),
|
|
'confirmation' => array(
|
|
'type' => 'integer',
|
|
'label' => t('Confirmation required'),
|
|
'description' => t('Select if a confirmation is required. Default uses the default setting from the chosen newsletter.'),
|
|
'options list' => 'simplenews_rules_confirmation_list',
|
|
'default value' => SIMPLENEWS_RULES_CONFIRMATION_DEFAULT,
|
|
),
|
|
'source' => array(
|
|
'type' => 'string',
|
|
'label' => t('Source'),
|
|
'description' => t('A string to identify the source of this subscription'),
|
|
'optional' => TRUE,
|
|
),
|
|
'source' => array(
|
|
'type' => 'text',
|
|
'label' => t('Source'),
|
|
'description' => t('A string to identify the source of this subscription'),
|
|
'optional' => TRUE,
|
|
'default value' => 'rules',
|
|
),
|
|
'language' => array(
|
|
'type' => 'token',
|
|
'label' => t('Language'),
|
|
'description' => t('If specified, the language to use for the subscription. Defaults to the default language.'),
|
|
'options list' => 'entity_metadata_language_list',
|
|
'optional' => TRUE,
|
|
'default value' => LANGUAGE_NONE,
|
|
),
|
|
),
|
|
),
|
|
'simplenews_rules_action_unsubscribe' => array(
|
|
'label' => t('Unsubscribe an e-mail adress from a newsletter'),
|
|
'group' => t('Simplenews'),
|
|
'named parameter' => TRUE,
|
|
'parameter' => array(
|
|
'mail' => array(
|
|
'type' => 'text',
|
|
'label' => t('E-mail'),
|
|
'description' => t('The e-mail address that should be unsubscribed.'),
|
|
),
|
|
'newsletter' => array(
|
|
'type' => 'simplenews_newsletter',
|
|
'label' => t('Simplenews newsletter'),
|
|
'descrption' => t('For which newsletter the subscription should happen.'),
|
|
'options list' => 'simplenews_newsletter_list',
|
|
),
|
|
'confirmation' => array(
|
|
'type' => 'integer',
|
|
'label' => t('Confirmation required'),
|
|
'description' => t('Select if a confirmation is required. Default uses the default setting from the chosen newsletter.'),
|
|
'options list' => 'simplenews_rules_confirmation_list',
|
|
'default value' => SIMPLENEWS_RULES_CONFIRMATION_DEFAULT,
|
|
),
|
|
'source' => array(
|
|
'type' => 'text',
|
|
'label' => t('Source'),
|
|
'description' => t('A string to identify the source of this subscription'),
|
|
'optional' => TRUE,
|
|
'default value' => 'rules',
|
|
),
|
|
'language' => array(
|
|
'type' => 'token',
|
|
'label' => t('Language'),
|
|
'description' => t('If specified, the language to use for the subscription. Defaults to the default language.'),
|
|
'options list' => 'entity_metadata_language_list',
|
|
'optional' => TRUE,
|
|
'default value' => LANGUAGE_NONE,
|
|
),
|
|
),
|
|
),
|
|
'simplenews_rules_action_subscription_delete' => array(
|
|
'label' => t('Delete an e-mail address from a newsletter'),
|
|
'group' => t('Simplenews'),
|
|
'named parameter' => TRUE,
|
|
'parameter' => array(
|
|
'mail' => array(
|
|
'type' => 'text',
|
|
'label' => t('E-mail'),
|
|
'description' => t('The e-mail address that should be permanently deleted from the newsletter. Note, use the unsubscribe action to temporarily unsubscribe an email address.'),
|
|
),
|
|
'newsletter' => array(
|
|
'type' => 'simplenews_newsletter',
|
|
'label' => t('Simplenews newsletter'),
|
|
'descrption' => t('For which newsletter the subscription should happen.'),
|
|
),
|
|
),
|
|
),
|
|
'simplenews_rules_action_subscriber_delete' => array(
|
|
'label' => t('Delete an e-mail address from all newsletters'),
|
|
'group' => t('Simplenews'),
|
|
'named parameter' => TRUE,
|
|
'parameter' => array(
|
|
'mail' => array(
|
|
'type' => 'text',
|
|
'label' => t('E-mail'),
|
|
'description' => t('The e-mail address that should be permanently deleted from all newsletters. Note, use the unsubscribe action to temporarily unsubscribe an email address.'),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Implements hook_event_info().
|
|
*/
|
|
function simplenews_rules_rules_event_info() {
|
|
return array(
|
|
'simplenews_rules_event_subscribe' => array(
|
|
'label' => t('A user has been subscribed'),
|
|
'group' => t('Simplenews'),
|
|
'variables' => array(
|
|
'mail' => array(
|
|
'type' => 'text',
|
|
'label' => t('E-Mail'),
|
|
'description' => t('The e-mail address that has been subscribed.'),
|
|
),
|
|
'newsletter' => array(
|
|
'type' => 'simplenews_newsletter',
|
|
'label' => t('Simplenews newsletter'),
|
|
'descrption' => t('For which newsletter the subscription should happen.'),
|
|
),
|
|
),
|
|
),
|
|
'simplenews_rules_event_unsubscribe' => array(
|
|
'label' => t('A user has been unsubscribed'),
|
|
'group' => t('Simplenews'),
|
|
'variables' => array(
|
|
'mail' => array(
|
|
'type' => 'text',
|
|
'label' => t('E-mail'),
|
|
'description' => t('The e-mail address that has been subscribed.'),
|
|
),
|
|
'newsletter' => array(
|
|
'type' => 'simplenews_newsletter',
|
|
'label' => t('Simplenews newsletter'),
|
|
'descrption' => t('For which newsletter the subscription should happen.'),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Action implementation, send a newsletter node.
|
|
*/
|
|
function simplenews_rules_action_send($node) {
|
|
\Drupal::service('simplenews.spool_storage')->addIssue($node);
|
|
}
|
|
|
|
/**
|
|
* Action Implementation: Subscribe an e-mail adress to a Simplenews newsletter.
|
|
*/
|
|
function simplenews_rules_action_subscribe($args, $settings) {
|
|
if ($args['language'] == LANGUAGE_NONE) {
|
|
$args['language'] = NULL;
|
|
}
|
|
|
|
$confirmation = simplenews_rules_map_confirmation($args);
|
|
|
|
// Pass the call forward.
|
|
\Drupal::service('simplenews.subscription_manager')->subscribe($args['mail'], $args['tid'], $confirmation, $args['source'], $args['language']);
|
|
}
|
|
|
|
/**
|
|
* Action Implementation: Unsubscribe an e-mail adress to a newsletter.
|
|
*/
|
|
function simplenews_rules_action_unsubscribe($args, $settings) {
|
|
if ($args['language'] == LANGUAGE_NONE) {
|
|
$args['language'] = NULL;
|
|
}
|
|
|
|
$confirmation = simplenews_rules_map_confirmation($args);
|
|
|
|
// Pass the call forward.
|
|
\Drupal::service('simplenews.subscription_manager')->unsubscribe($args['mail'], $args['tid'], $confirmation, $args['source'], $args['language']);
|
|
}
|
|
|
|
/**
|
|
* Action Implementation: Delete an email address from a specific newsletter.
|
|
*/
|
|
function simplenews_rules_action_subscription_delete($args, $settings) {
|
|
if (!empty($args['mail']) && !empty($args['tid'])) {
|
|
\Drupal::entityTypeManager()->getStorage('simplenews_subscriber')->deleteSubscriptions(array('mail' => $args['mail'], 'tid' => $args['tid']));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Action Implementation: Delete an email address from all newsletters.
|
|
*/
|
|
function simplenews_rules_action_subscriber_delete($args, $settings) {
|
|
if ($subscriber = Subscriber::loadByMail($args['mail'])) {
|
|
$subscriber->delete();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Map args to the confrmation argument for subscribing/unsubscribing.
|
|
*/
|
|
function simplenews_rules_map_confirmation($args) {
|
|
switch ($args['confirmation']) {
|
|
case SIMPLENEWS_RULES_CONFIRMATION_YES:
|
|
$confirmation = TRUE;
|
|
break;
|
|
|
|
case SIMPLENEWS_RULES_CONFIRMATION_NO:
|
|
$confirmation = FALSE;
|
|
break;
|
|
|
|
case SIMPLENEWS_RULES_CONFIRMATION_DEFAULT:
|
|
$confirmation = NULL;
|
|
break;
|
|
}
|
|
return $confirmation;
|
|
}
|
|
|
|
/**
|
|
* @}
|
|
*/
|