--- phpbbforum.module	2010-04-26 10:14:23.546273611 +0200
+++ modified_phpbbforum.module	2010-04-26 10:06:45.193923319 +0200
@@ -49,6 +49,8 @@ $_phpbb_result, $_phpbb_embed_mode, $php
 // Needed for handle_message_list_actions()
 global $refresh, $submit, $preview;
 
+$is_new_user ='0';
+
 _phpbbforum_set_globals();
 
 function _phpbbforum_set_globals() {
@@ -1474,7 +1476,8 @@ function phpbbforum_update_user_profile(
 }
 
 function _phpbbforum_set_user_data($op, $sync, &$account, $name, $pass, $mail, $edit) {
-  global $phpbb_user, $phpbb_config, $base_url, $phpbb_root_path, $phpEx;
+//  global $phpbb_user, $phpbb_config, $base_url, $phpbb_root_path, $phpEx;
+global $phpbb_user, $phpbb_config, $base_url, $phpbb_root_path, $phpEx, $is_new_user; //edit by Su
 
   $sync_to_admin = false;
   if ($sync == PHPBB_SYNC_TO_PHPBB) {
@@ -1590,8 +1593,9 @@ function _phpbbforum_set_user_data($op,
           $roles_updated = $new_roles;
         }
 
-        if ($sync_data && ($sync != PHPBB_SYNC_TO_PHPBB || !$roles_is_equal)) {
-
+        //if ($sync_data && ($sync != PHPBB_SYNC_TO_PHPBB || !$roles_is_equal)) {
+        if ($sync_data && ($sync != PHPBB_SYNC_TO_PHPBB || !$roles_is_equal || $is_new_user)) { //edit by Su
+	  $is_new_user ='0'; //edit by Su
           $group_roles = array();
 
           foreach ($roles_updated as $rid => $rname) {
@@ -1611,10 +1615,12 @@ function _phpbbforum_set_user_data($op,
 
           $phpbb_group_id_ary = array();
           $phpbb_group_row = phpbb_api_group_memberships(false, $user_id);
-          foreach ($phpbb_group_row as $id => $row) {
-            $group_id = $row['group_id'];
-            $phpbb_group_id_ary[$group_id] = $group_id;
-          }
+	  if(is_array($phpbb_group_row)){	//edit by Su
+	  	foreach ($phpbb_group_row as $id => $row) {
+          	  $group_id = $row['group_id'];
+          	  $phpbb_group_id_ary[$group_id] = $group_id;
+          	}
+          }	//edit by Su
 
           if ($sync == PHPBB_SYNC_TO_PHPBB) {
 
@@ -1643,7 +1649,8 @@ function _phpbbforum_set_user_data($op,
               $group_add = array();
               foreach ($group_roles as $rid => $group_id_ary) {
                 foreach ($group_id_ary as $group_id => $group_id_name) {
-                  if (empty($phpbb_group_id_ary[$group_id])) {
+                  //if (empty($phpbb_group_id_ary[$group_id])) {
+                  if (!empty($group_id)) {	//edit by Su
                     $group_add[$group_id] = $group_id;
                   }
                 }
@@ -2171,7 +2178,8 @@ function _phpbbforum_user_edit_validate(
 
 
 function phpbbforum_user($op, &$edit, &$account, $category = NULL) {
-  global $phpbb_config, $phpbb_user, $user;
+//  global $phpbb_config, $phpbb_user, $user;
+  global $phpbb_config, $phpbb_user, $user, $is_new_user; //edit by Su
 
   if (!_phpbbforum_settings())
     return;
@@ -2285,6 +2293,7 @@ function phpbbforum_user($op, &$edit, &$
             }
             else {
               $message = 'User account: %name created in phpBB.';
+              $is_new_user ='1'; //edit by Su
               $var = array('%name' => $name);
               _phpbbforum_watchdog($message, $var);
               _phpbbforum_set_message($message, $var);
@@ -2501,7 +2510,8 @@ function phpbbforum_user($op, &$edit, &$
       //if (PHPBB_MODULE_DEBUG)
       //  _phpbbforum_set_message('User update view: '. $account->name .' profile='. $account->profile_username);
       // Sync data and profile changes
-      $update = phpbbforum_update_user($op, PHPBB_SYNC_TO_DRUPAL, $account, '', '', $account->mail, $edit);
+      //$update = phpbbforum_update_user($op, PHPBB_SYNC_TO_DRUPAL, $account, '', '', $account->mail, $edit);
+      $update = phpbbforum_update_user($op, PHPBB_SYNC_TO_MASTER, $account, '', '', $account->mail, $edit); //edit by Su
     }
     
     if ($user->name != $account->name) {
