--- encrypted_text/encrypted_text.module	Tue Feb 07 06:48:09 2012
+++ encrypted_text_patched/encrypted_text.module	Thu Sep 27 16:22:00 2012
@@ -10,32 +10,44 @@
 // Collect the field names from text fields with Encryption enabled
 function _encrypted_text_node_field_names(&$node) {
   $fields = field_info_field_by_ids();
+  $field_names = array();
+  
   foreach ($fields as $field) {
     if ($field['module'] === 'text') {
       if (field_get_items('node', $node, $field['field_name'])) {
         $instance = field_info_instance('node', $field['field_name'], $node->type);
         if ($instance['settings']['text_encryption']) {
-          $items[] = $field['field_name'];
+          $field_names[] = $field['field_name'];
         }
       }
     }
   }
-  return $items;
+  return $field_names;
 }
 
 // Handle encrypting/decrypting text fields
-function _encrypted_text_node_field_encrypt_decrypt($op = 'encrypt', $node, &$items) {
-  foreach ($items as $item) {
+function _encrypted_text_node_field_encrypt_decrypt($op = 'encrypt', $node, &$field_names) {
+
+  foreach ($field_names as $field_name) {
     if (user_access('view all')) {
-      if (isset($node->{$item}['und'][0]['value'])) {
-        $field = $node->$item;
-        if ($op === 'encrypt') {
-          $node->{$item}['und'][0]['value'] = encrypt($field['und'][0]['value'], array('base64' => TRUE));
-          $node->{$item}['und'][0]['safe_value'] = encrypt($field['und'][0]['safe_value'], array('base64' => TRUE));
-        }
-        else {
-          $node->{$item}['und'][0]['value'] = decrypt($field['und'][0]['value'], array('base64' => TRUE));
-          $node->{$item}['und'][0]['safe_value'] = decrypt($field['und'][0]['safe_value'], array('base64' => TRUE));
+      
+      foreach($node->{$field_name}[$node->language] as &$item){
+        if (isset($item['value'])){
+          $field_instance = field_info_instance('node', $field_name, $node->type);
+          $field_langcode = field_language('node', $node, $field_name, $node->language);
+          
+          if ($op === 'encrypt') {
+            $item['value'] = encrypt($item['value'], array('base64' => TRUE));
+            
+            unset($item['safe_value']);
+            $item['safe_value'] = _text_sanitize($field_instance, $field_langcode, $item, 'value');
+          }
+          else {
+            $item['value'] = decrypt($item['value'], array('base64' => TRUE));
+            
+            unset($item['safe_value']);
+            $item['safe_value'] = _text_sanitize($field_instance, $field_langcode, $item, 'value');
+          }
         }
       }
     }
@@ -76,14 +88,14 @@
 
 // Encrypt values before saving
 function encrypted_text_node_presave($node) {
-  $items = _encrypted_text_node_field_names($node);
-  _encrypted_text_node_field_encrypt_decrypt('encrypt', $node, $items);
+  $field_names = _encrypted_text_node_field_names($node);
+  _encrypted_text_node_field_encrypt_decrypt('encrypt', $node, $field_names);
 }
 
 // Decrypt values before viewing
 function encrypted_text_node_load($nodes, $types) {
   foreach ($nodes as $node) {
-    $items = _encrypted_text_node_field_names($node);
-    _encrypted_text_node_field_encrypt_decrypt('decrypt', $node, $items);
+    $field_names = _encrypted_text_node_field_names($node);
+    _encrypted_text_node_field_encrypt_decrypt('decrypt', $node, $field_names);
   }
 }
