From a1a33daff72c01f753caad225ae1ca405b28351d Mon Sep 17 00:00:00 2001
From: Dave Hall <dave.hall@skwashd.com>
Date: Fri, 8 Apr 2011 15:04:30 +1000
Subject: [PATCH] Issue: #1119158 Implement hook_user_role_presave()

---
 modules/user/user.api.php |   17 +++++++++++++++++
 modules/user/user.module  |    4 ++++
 2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/modules/user/user.api.php b/modules/user/user.api.php
index 272731a..2e9125a 100644
--- a/modules/user/user.api.php
+++ b/modules/user/user.api.php
@@ -367,6 +367,23 @@ function hook_user_view_alter(&$build) {
 }
 
 /**
+ * Inform other modules that a user role is about to be saved.
+ *
+ * Modules implementing this hook can act on the user role object before
+ * it has been saved to the database.
+ *
+ * @param $role
+ *   A user role object.
+ *
+ * @see hook_user_role_insert()
+ * @see hook_user_role_update()
+ */
+function hook_user_role_presave($role) {
+  // Uppercase the first letter of each word in role name.
+  $role->name = ucwords($role->name);
+}
+
+/**
  * Inform other modules that a user role has been added.
  *
  * Modules implementing this hook can act on the user role object when saved to
diff --git a/modules/user/user.module b/modules/user/user.module
index 7f22f7c..e40a0c3 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -2821,6 +2821,10 @@ function user_role_save($role) {
     $query->addExpression('MAX(weight)');
     $role->weight = $query->execute()->fetchField() + 1;
   }
+
+  // Let modules modify the user role before it is saved to the database.
+  module_invoke_all('user_role_presave', $role);
+
   if (!empty($role->rid) && $role->name) {
     $status = drupal_write_record('role', $role, 'rid');
     module_invoke_all('user_role_update', $role);
-- 
1.7.0.4

