--- includes/node_form.inc	Fri Jan 16 05:21:36 1970
+++ includes/node_form.inc	Fri Jan 16 05:21:36 1970
@@ -45,15 +45,21 @@
     );
   }
 
-  // Make sure Drupal settings are not sent more than once per page.
+  // Make sure Drupal settings dialog are not sent more than once per page.
   if (!isset($js_settings_processed)) {
     $js_settings = array(
       'privacyStatusOptions' => $privacy_status_options,
       'privacyStatusForm' => drupal_get_form('cck_private_field_privacy_settings_dialog', $privacy_status_options),
-      'privateFields' => array(),
     );
+    // we only want to add the form and options once
+    drupal_add_js(array('CCKPrivateFields' => $js_settings), 'setting');
   }
 
+  // We reset settings to only have fields
+  $js_settings = array(
+    'privateFields' => array()
+  );
+
   // Grab information about the fields we are interested in.
   $type_name = $form['type']['#value'];
   $content_type = content_types($type_name);
@@ -76,7 +82,15 @@
       }
 
       // See if the current user is allowed to edit privacy settings for this field.
-      $edit_privacy_access = user_access(cck_private_fields_build_permission_name('edit', $field_name));
+      // We disregard permissions on the user registration form when content_profile module is in use
+      if ($_GET['q'] == 'user/register' && module_exists('content_profile_registration')) {
+        $edit_privacy_access = TRUE;
+        // Create global variable so we can make sure all form fields get copied into the form.
+        $GLOBALS['privacy_access_registration'] = array();
+      }
+      else {
+        $edit_privacy_access = user_access(cck_private_fields_build_permission_name('edit', $field_name));
+      }
 
       $private_fields[$field_name] = array(
         'field' => $field,
@@ -87,7 +101,7 @@
       );
 
       // Prepare field information for sending to client-side behavior?
-      if ($edit_privacy_access && !isset($js_settings_processed)) {
+      if ($edit_privacy_access) {
         $js_settings['privateFields'][$field_name] = array(
           'label' => check_plain($field['widget']['label']),
           'group_type' => $group_type,
@@ -114,11 +128,9 @@
   drupal_add_js($module_path .'/js/privacy_status_dialog.js');
   jquery_ui_add(array('ui.dialog', 'ui.draggable'));
 
-  // Make sure Drupal settings are not sent more than once per page.
-  if (!isset($js_settings_processed)) {
-    drupal_add_js(array('CCKPrivateFields' => $js_settings), 'setting');
-    $js_settings_processed = TRUE;
-  }
+  // Settings are accumulated per a form and every add_js call overwrites the previous
+  drupal_add_js(array('CCKPrivateFields' => $js_settings), 'setting');
+  $js_settings_processed = TRUE;
 }
 
 /**
@@ -204,6 +216,9 @@
             $elements[$field_name]['#prefix'] = $new_prefix . $old_prefix;
             $elements[$field_name]['#suffix'] = $old_suffix . $new_suffix;
           }
+        }
+        if (isset($GLOBALS['privacy_access_registration'])) {
+          $GLOBALS['privacy_access_registration'][$field_name] = $form['cck_private_fields'][$field_name];
         }
       }
       else {
--- cck_private_fields.module	Fri Jan 16 05:21:36 1970
+++ cck_private_fields.module	Fri Jan 16 05:21:36 1970
@@ -58,6 +58,17 @@
     return;
   }
 
+  // If private_fields are added to user_register form by content_profile
+  // we need to make user privacy fields are copied over and not removed
+  if ($form_id == 'user_register' && module_exists('content_profile_registration') && isset($GLOBALS['privacy_access_registration'])) {
+    foreach ($GLOBALS['privacy_access_registration'] as $field_name => $field) {
+      if (!isset($form['cck_private_fields'][$field_name])) {
+        $form['cck_private_fields'][$field_name] = $field;
+      }
+    }
+    unset($GLOBALS['privacy_access_registration']);
+  }
+
   // Alter the CCK Field settings form.
   if ($form_id == 'content_field_edit_form' && !isset($form_state['change_basic'])) {
     module_load_include('inc', 'cck_private_fields', 'includes/common');
