Commit d91de250 authored by Jake Bell's avatar Jake Bell
Browse files

Adding match user feature.

parent 16328b7f
<?php
function webform_encrypt_uninstall() {
variable_del('webform_encrypt_match_user');
}
......@@ -16,6 +16,23 @@ function webform_encrypt_permission() {
* Implementation of hook_form_alter()
*/
function webform_encrypt_form_alter(&$form, $form_state, $form_id) {
// Add our config options to the webform settings page.
if ($form_id == 'webform_admin_settings') {
dsm($form);
$form['encrypt'] = array(
'#type' => 'fieldset',
'#title' => t('Webform Encrypt'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
$form['encrypt']['webform_encrypt_match_user'] = array(
'#type' => 'checkbox',
'#title' => t('Enable email to user matching'),
'#description' => t('If enabled, every time webform sends an email, it will attempt to find a user that matches the email address the mail will be sent to in order to correctly determine permissions.'),
'#default_value' => variable_get('webform_encrypt_match_user', 0),
);
}
// Add our fields to the component add/edit form.
if ($form_id == 'webform_component_edit_form') {
......@@ -69,11 +86,22 @@ function webform_encrypt_webform_submission_presave($node, &$submission) {
* Decrypt values when displaying webform submissions.
*/
function webform_encrypt_webform_submission_render_alter(&$renderable) {
// First, determine if 1) if we are dealing with an email or a page view, and 2) if user matching
// is enabled.
if (variable_get('webform_encrypt_match_user', FALSE) && !empty($renderable['#email'])) {
// If we are, then try to match a user to the email address we are sending to.
$uid = db_query('SELECT uid FROM {users} WHERE mail = ?', array($renderable['#email']['email']))->fetchField();
$account = $uid ? user_load($uid) : NULL;
} else {
$account = NULL;
}
// Next, we loop through components and decrypt as necessary.
foreach ($renderable['#submission']->data as $cid => $entry) {
if (isset($renderable['#node']->webform['components'][$cid]['extra']['encrypt']) &&
$renderable['#node']->webform['components'][$cid]['extra']['encrypt']) {
$form_key = $renderable['#node']->webform['components'][$cid]['form_key'];
if (user_access('view encrypted values')) {
if (user_access('view encrypted values', $account)) {
$renderable[$form_key]['#value'] = decrypt($entry['value'][0], array('base64' => TRUE));
} else {
$renderable[$form_key]['#value'] = t('[Value Encrypted]');
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment