diff --git a/sites/all/modules/encrypt/modules/encryptfapi/encryptfapi.module b/sites/all/modules/encrypt/modules/encryptfapi/encryptfapi.module index 3a06ff4..964690e 100644 --- a/sites/all/modules/encrypt/modules/encryptfapi/encryptfapi.module +++ b/sites/all/modules/encrypt/modules/encryptfapi/encryptfapi.module @@ -19,7 +19,8 @@ function encryptfapi_form_alter(&$form, &$form_state, $form_id) { // If any elements are marked as #encrypt, store them and add our submit callback. if (!empty($encrypted_elements)) { $form['#encrypted_elements'] = $encrypted_elements; - array_unshift($form['#submit'], '_encryptfapi_form_submit'); + //array_unshift($form['#submit'], '_encryptfapi_form_submit'); + array_unshift($form['actions']['submit']['#submit'], '_encryptfapi_form_submit'); } } @@ -33,6 +34,10 @@ function _encryptfapi_form_submit($form, &$form_state) { // The the element's location in the form array, then get its value. $tree = _encryptfapi_get_array_key_path($form, $element); $value = drupal_array_get_nested_value($form_state['values'], $tree, $key_exists); + if (is_array($value)) { + $value_is_array = TRUE; + $value = $value['und']['0']['value']; + } // If #encrypt is an array, use the 'method' provided to encrypt. Otherwise, just use the default. if (is_array($instructions)) { @@ -43,6 +48,9 @@ function _encryptfapi_form_submit($form, &$form_state) { else { $encrypted = encrypt($value, array('base64' => TRUE)); } + if ($value_is_array) { + $encrypted = array(LANGUAGE_NONE => array(0 => array('value' => $encrypted))); + } form_set_value(array('#parents' => $tree), $encrypted, $form_state); } } @@ -120,7 +128,7 @@ function _encryptfapi_get_array_key_path($array, $lookup) { * Helper function to return the types of FAPI elements that can be encrypted. */ function _encryptfapi_get_accepted_element_types() { - return array('textfield', 'textarea', 'checkboxes', 'checkbox', 'radios', 'radio', 'select', 'password'); + return array('textfield', 'textarea', 'checkboxes', 'checkbox', 'radios', 'radio', 'select', 'password', 'container'); } /** @@ -129,10 +137,15 @@ function _encryptfapi_get_accepted_element_types() { * Basically just wraps #default_value in a call to decrypt(). */ function _encryptfapi_element_prerender($element) { - if (isset($element['#encrypt']) && $element['#encrypt'] && isset($element['#default_value'])) { + if (isset($element['#encrypt']) && $element['#encrypt']) { // TODO: Support for specified enc. method and key provider. - $element['#default_value'] = decrypt($element['#default_value'], array('base64' => TRUE)); - $element['#value'] = decrypt($element['#value'], array('base64' => TRUE)); + if (isset($element['#default_value'])) { + $element['#default_value'] = decrypt($element['#default_value'], array('base64' => TRUE)); + $element['#value'] = decrypt($element['#value'], array('base64' => TRUE)); + } elseif (isset($element['und'][0]['value']['#default_value'])) { + $element['und'][0]['value']['#default_value'] = decrypt($element['und'][0]['value']['#default_value'], array('base64' => TRUE)); + $element['und'][0]['value']['#value'] = decrypt($element['und'][0]['value']['#value'], array('base64' => TRUE)); + } } return $element; }