From 8ee4944d61b2207296b8fa50e54531fb5e7baf23 Mon Sep 17 00:00:00 2001
From: Matthew Grasmick <madmatter23@gmail.com>
Date: Thu, 10 Nov 2011 22:19:46 -0500
Subject: [PATCH] added new hook autoassignrole_add_role()

---
 autoassignrole.module |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/autoassignrole.module b/autoassignrole.module
index 30c43e4..bc78a14 100644
--- a/autoassignrole.module
+++ b/autoassignrole.module
@@ -91,6 +91,18 @@ function autoassignrole_user_presave(&$edit, $account, $category) {
         $roles_to_add += array_intersect_key($user_roles, array_filter($edit['user_roles']));
       }
 
+      // Inherit additional roles via hook_autoassignrole_add_role.
+      // Expects array in format array(key => rid).
+      $invoked_roles = module_invoke_all('autoassignrole_add_role');
+      if ($invoked_roles != NULL && sizeof((array)$invoked_roles) > 0) {
+        // We need to rebuild array using role names since module_invoke_all().
+        // will rekey returned arrays.
+        foreach ($invoked_roles as $key => $rid) {
+          $hooked_roles[$rid] = $user_roles[$rid]; 
+        }
+        $roles_to_add += array_intersect_key($user_roles, array_filter($hooked_roles));
+      }
+
       // Make sure the roles key exists.
       if (!isset($edit['roles'])) {
         $edit['roles'] = array();
-- 
1.7.5

