diff -urp old/og.module new/og.module
--- old/og.module	2008-05-03 21:08:48.000000000 +0530
+++ new/og.module	2008-05-10 23:45:55.312500000 +0530
@@ -401,19 +401,28 @@ function og_manage_form_submit($form_id,
 function og_save_subscription($gid, $uid, $args = array()) {
   $sql = "SELECT COUNT(*) FROM {og_uid} WHERE nid = %d AND uid = %d";
   $cnt = db_result(db_query($sql, $gid, $uid));
-  $time = time();
+  $time = time();
+  
+  // Allow other modules to pass their data inside the $args.
+  $og_allowed_args = array('is_active', 'is_admin', 'mail_type', 'created');
+  $return_args = $args;
+  foreach ($args as $key => $value) {
+    if (!in_array($key, $og_allowed_args)) {
+      unset($args[$key]);
+    }
+  }
   if ($cnt == 0) {
-    // this pattern borrowed from user_save()
+    // this pattern borrowed from user_save()
     $fields = array('nid', 'uid', 'created', 'changed');
     $values = array($gid, $uid, $args['created'] ? $args['created'] : $time, $time);
-    unset($args['created']);
+    unset($args['created']);
     foreach ($args as $key => $value) {
-      $fields[] = db_escape_string($key);
-      $values[] = $value;
-      $s[] = "'%s'";
+      $fields[] = db_escape_string($key);
+      $values[] = $value;
+      $s[] = "'%s'";        
     }
     db_query('INSERT INTO {og_uid} ('. implode(', ', $fields). ') VALUES (%d, %d, %d, %d, '. implode(', ', $s). ')', $values);
-    module_invoke_all('og', 'user insert', $gid, $uid, $args);
+    module_invoke_all('og', 'user insert', $gid, $uid, $return_args);
   }
   else {
     $cond[] = 'changed = '. $time;
@@ -422,14 +431,15 @@ function og_save_subscription($gid, $uid
     }
     $cond = implode(', ', $cond);
     db_query("UPDATE {og_uid} SET $cond WHERE nid = %d AND uid = %d", $gid, $uid);
-    module_invoke_all('og', 'user update', $gid, $uid, $args);
+    module_invoke_all('og', 'user update', $gid, $uid, $return_args);
   }
 }
 
-function og_delete_subscription($gid, $uid){
+function og_delete_subscription($gid, $uid, $args = array()){
   $sql = "DELETE FROM {og_uid} WHERE nid = %d AND uid = %d";
   db_query($sql, $gid, $uid);
-  module_invoke_all('og', 'user delete', $gid, $uid, array());
+  // Allow other modules to pass their data inside the $args.
+  module_invoke_all('og', 'user delete', $gid, $uid, $args);
 }
 
 function og_approve($gid, $uid) {
