function simplenews_roles_update_subscriptions in Simplenews Roles 5
Same name and namespace in other branches
- 6.2 simplenews_roles.module \simplenews_roles_update_subscriptions()
- 6 simplenews_roles.module \simplenews_roles_update_subscriptions()
- 7 simplenews_roles.module \simplenews_roles_update_subscriptions()
API function; clears subscription list for specified newsletter and replaces it with users from the specified roles.
3 calls to simplenews_roles_update_subscriptions()
- simplenews_roles_cron in ./
simplenews_roles.module - Implementation of hook_cron().
- simplenews_roles_newsletter_submit in ./
simplenews_roles.module - Forms API callback; additional submit handler for newsletter form.
- simplenews_roles_nodeapi in ./
simplenews_roles.module - Implementation of hook_nodeapi().
File
- ./
simplenews_roles.module, line 75
Code
function simplenews_roles_update_subscriptions($tid, $rids = array()) {
if (is_array($rids) && $rids) {
// TODO: Don't delete then insert, find the diff and add/remove!
// Remove all subscriptions from this newsletter.
$result = db_query('DELETE FROM {simplenews_snid_tid} WHERE tid = %d', $tid);
// Subscribe all active users from selected roles, if special authenticated user
// is in selected roles, just pull all active users.
if (in_array(DRUPAL_AUTHENTICATED_RID, $rids)) {
$result = db_query('SELECT u.mail FROM {users} u WHERE u.status = 1 AND u.uid != 0');
}
else {
$result = db_query('SELECT u.mail FROM {users} u INNER JOIN {users_roles} r ON u.uid = r.uid WHERE u.status = 1 AND (' . implode(' OR ', array_fill(0, count($rids), 'r.rid = %d')) . ')', $rids);
}
while ($account = db_fetch_object($result)) {
simplenews_subscribe_user($account->mail, $tid, FALSE);
}
watchdog('newsletter', t('Newsletter subscription list was automatically regenerated.'));
}
}