diff --git a/og_user_roles.module b/og_user_roles.module index 6eed2bf..adb60e6 100644 --- a/og_user_roles.module +++ b/og_user_roles.module @@ -411,14 +411,18 @@ function og_user_roles_og($op, $nid, $uid, $args = array()) { case 'user insert': // Add default role for new group members, if configured. $node = node_load($nid); + $contextual_information = array( + 'og args' => $args, + 'og op' => 'user insert', + ); if ($default_role = og_user_roles_get_group_default_role($nid)) { - og_user_roles_role_add($nid, $uid, $default_role); + og_user_roles_role_add($nid, $uid, $default_role, $contextual_information); } // Add default role for new group admins, if configured. if (isset($args['is_admin']) && $args['is_admin']) { if (($default_admin_role = variable_get('og_user_roles_default_admin_role_'.$node->type, 0)) && $default_admin_role != $default_role) { - og_user_roles_role_add($nid, $uid, $default_admin_role); + og_user_roles_role_add($nid, $uid, $default_admin_role, $contextual_information); } } break; @@ -429,19 +433,27 @@ function og_user_roles_og($op, $nid, $uid, $args = array()) { $default_role = og_user_roles_get_group_default_role($nid); if ($default_admin_role > 0 && $default_admin_role != $default_role) { // Grant role for new group admin. + $contextual_information = array( + 'og args' => $args, + 'og op' => 'user update', + ); if (isset($args['is_admin']) && $args['is_admin']) { - og_user_roles_role_add($nid, $uid, $default_admin_role); + og_user_roles_role_add($nid, $uid, $default_admin_role, $contextual_information); } // Delete role for obsolete group admin. else { - og_user_roles_role_delete($nid, $uid, $default_admin_role); + og_user_roles_role_delete($nid, $uid, $default_admin_role, $contextual_information); } } break; case 'user delete': + $contextual_information = array( + 'og args' => $args, + 'og op' => 'user delete', + ); // Remove all group roles for unsubscribed user. - og_user_roles_role_delete($nid, $uid); + og_user_roles_role_delete($nid, $uid, NULL, $contextual_information); break; } } @@ -538,11 +550,14 @@ function og_user_roles_get_roles_by_group($gid, $uid) { * The user ID. * @param $rid * The role ID to grant. + * @param $contextual_information + * Information about where this function is being called and why */ -function og_user_roles_role_add($gid, $uid, $rid) { +function og_user_roles_role_add($gid, $uid, $rid, $contextual_information = array()) { $granted = db_result(db_query_range("SELECT rid FROM {og_users_roles} WHERE gid = %d AND uid = %d AND rid = %d", $gid, $uid, $rid, 0, 1)); if (!$granted) { db_query("INSERT INTO {og_users_roles} (uid, gid, rid) VALUES (%d, %d, %d)", $uid, $gid, $rid); + module_invoke_all('og_user_roles_role_add', $gid, $uid, $rid, $contextual_information); } } @@ -555,14 +570,17 @@ function og_user_roles_role_add($gid, $uid, $rid) { * The user ID. * @param $rid * (Optional) The role ID to remove. If omitted, all roles are removed. + * @param $contextual_information + * Information about where this function is being called and why */ -function og_user_roles_role_delete($gid, $uid, $rid = NULL) { +function og_user_roles_role_delete($gid, $uid, $rid = NULL, $contextual_information = array()) { if (is_null($rid)) { db_query("DELETE FROM {og_users_roles} WHERE gid = %d AND uid = %d", $gid, $uid); } else { db_query("DELETE FROM {og_users_roles} WHERE gid = %d AND uid = %d AND rid = %d", $gid, $uid, $rid); } + module_invoke_all('og_user_roles_role_delete', $gid, $uid, $rid, $contextual_information); } /**