Active
Project:
Team Notifications
Version:
7.x-3.x-dev
Component:
Documentation
Priority:
Normal
Category:
Task
Assigned:
Unassigned
Reporter:
Created:
22 Feb 2013 at 02:34 UTC
Updated:
22 Feb 2013 at 02:34 UTC
maybe this way can slove the
KNOWN ISSUE: Any users not available to the UI will be unsubscribed from
* content they may subscribe to using some other method.After send messages, re-subscribe deleted subscribes, unsubscribe added subscribes.
/**
* Implements hook_action_info().
*/
function druedu_notifications_team_action_info() {
return array(
'druedu_notifications_team_resubscribe_action' => array(
'type' => 'notifications',
'label' => t('After send messages, re-subscribe deleted subscribes, unsubscribe added subscribes.'),
'configurable' => FALSE,
'behavior' => array('sends_notification'),
'triggers' => array('node_update'),
),
);
}
/**
* After send messages, re-subscribe deleted subscribes, unsubscribe added subscribes.
*/
function druedu_notifications_team_resubscribe_action($node, $context = array()) {
if(isset($context['node'])){
$node = $context['node'];
$changed_subscribes = $node->notifications_team_all;
$default_subscribes = druedu_notifications_team_get_subscriptions($node->nid, $reset = FALSE);
$deleted_subs = array_diff($default_subscribes,$changed_subscribes);
$added_subs = array_filter(array_diff($changed_subscribes,$default_subscribes));
foreach ($deleted_subs as $key => $uid) {
# resubscribe
// dpm($deleted_subs,'re-subscribe-$deleted_subs');
$subscription = notifications_subscription('content_thread')
->instance()
->set_user(user_load($uid))
->set_node($node);
notifications_save_subscription($subscription);
}
foreach ($added_subs as $key => $uid) {
# unsubscribe
// dpm($added_subs,'unsubscribe-$added_subs');
Notifications_Subscription::delete_multiple(array('uid' => $uid), array('node:nid' => $node->nid), FALSE);
}
}
}