From d0c9a0939cc00d6d0cb45c2898bf176b130acc3b Mon Sep 17 00:00:00 2001 From: Brian Shaughnessy Date: Sat, 30 Nov 2013 23:39:55 -0500 Subject: [PATCH] CRM-13873 add support for permissionEmails for D7 --- CRM/Core/Permission/Drupal.php | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/CRM/Core/Permission/Drupal.php b/CRM/Core/Permission/Drupal.php index 1881cfd2c0..b08de996d4 100644 --- a/CRM/Core/Permission/Drupal.php +++ b/CRM/Core/Permission/Drupal.php @@ -127,5 +127,40 @@ class CRM_Core_Permission_Drupal extends CRM_Core_Permission_DrupalBase{ ->condition('permission', array_keys($permissions), 'NOT IN'); $query->execute(); } + + /** + * Get all the contact emails for users that have a specific permission + * + * @param string $permissionName name of the permission we are interested in + * + * @return string a comma separated list of email addresses + */ + public function permissionEmails($permissionName) { + static $_cache = array(); + + if (isset($_cache[$permissionName])) { + return $_cache[$permissionName]; + } + + $uids = array(); + $sql = " + SELECT {users}.uid, {role_permission}.permission + FROM {users} + JOIN {users_roles} + ON {users}.uid = {users_roles}.uid + JOIN {role_permission} + ON {role_permission}.rid = {users_roles}.rid + WHERE {role_permission}.permission = '{$permissionName}' + AND {users}.status = 1 + "; + + $result = db_query($sql); + foreach ( $result as $record ) { + $uids[] = $record->uid; + } + + $_cache[$permissionName] = self::getContactEmails($uids); + return $_cache[$permissionName]; + } } -- 2.25.1