Skip to content

Commit

Permalink
Revert "3-state optins: subscribe / unsubscribe / no change"
Browse files Browse the repository at this point in the history
  • Loading branch information
torotil committed Feb 12, 2018
1 parent 65be88b commit 4fb2e3b
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 48 deletions.
41 changes: 9 additions & 32 deletions campaignion_newsletters/campaignion_newsletters.component.inc
Expand Up @@ -121,16 +121,16 @@ function _webform_edit_newsletter($component) {
$form['extra']['radio_labels'] = [
'#tree' => TRUE, // Needed for form_builder.
'#type' => 'fieldset',
'#title' => t('Labels for the radios.'),
'#title' => t('Labels for the radios'),
'#states' => ['visible' => ["#$display_id" => ['value' => 'radios']]],
1 => [
'#type' => 'textfield',
'#title' => t('Subscribe'),
'#title' => t('Yes'),
'#default_value' => $component['extra']['radio_labels'][1],
],
0 => [
'#type' => 'textfield',
'#title' => t('Unsubscribe'),
'#title' => t('No'),
'#default_value' => $component['extra']['radio_labels'][0],
],
];
Expand Down Expand Up @@ -189,42 +189,19 @@ function _webform_submit_newsletter($component, $value) {
switch ($component['extra']['display']) {
case 'checkbox':
return empty($value['subscribed']) ? [''] : ['subscribed'];
break;

case 'radios':
switch ($value) {
case 'yes':
return ['subscribed'];
case 'no':
return ['unsubscribed'];
default:
return [''];
}
}
}

/**
* Helper function to create display labels for stored values.
*/
function _webform_newsletter_value_to_label($value) {
if (!$value) {
return t('not subscribed');
}
$value = reset($value);
switch ($value) {
case 'subscribed':
return t('subscribed');
case 'unsubscribed':
return t('unsubscribed');
default:
return t('not subscribed');
return $value == 'yes' ? ['subscribed'] : [''];
break;
}
}

/**
* Implements _webform_display_component().
*/
function _webform_display_newsletter($component, $value, $format = 'html') {
$v['#markup'] = _webform_newsletter_value_to_label($value);
$v['#markup'] = !empty($value[0]) ? t('subscribed') : t('not subscribed');
return $v;
}

Expand Down Expand Up @@ -333,7 +310,7 @@ function _webform_form_builder_map_newsletter() {
* Implements _webform_table_component().
*/
function _webform_table_newsletter($component, $value) {
return _webform_newsletter_value_to_label($value);
return $value && reset($value) ? t('subscribed') : t('not subscribed');
}

/**
Expand All @@ -351,5 +328,5 @@ function _webform_csv_headers_newsletter($component, $export_options) {
* Implements _webform_csv_data_component().
*/
function _webform_csv_data_newsletter($component, $export_options, $value) {
return _webform_newsletter_value_to_label($value);
return $value && reset($value) ? t('subscribed') : t('not subscribed');
}
12 changes: 3 additions & 9 deletions campaignion_newsletters/campaignion_newsletters.module
Expand Up @@ -96,11 +96,10 @@ function campaignion_newsletters_webform_submission_confirmed(Submission $submis
return;
}
foreach ($s->webform->componentsByType('newsletter') as $component) {
$value = $s->valueByCid($component['cid']);
if ($value == 'subscribed') {
if ($s->valueByCid($component['cid'])) {
$needs_opt_in = !$component['extra']['opt_in_implied'];
foreach ($component['extra']['lists'] as $list_id => $enabled) {
if (!empty($enabled)) {
foreach ($component['extra']['lists'] as $list_id => $value) {
if (!empty($value)) {
$subscription = Subscription::byData($list_id, $email);
$subscription->delete = FALSE;
$subscription->source = $s;
Expand All @@ -111,11 +110,6 @@ function campaignion_newsletters_webform_submission_confirmed(Submission $submis
}
}
}
elseif ($value == 'unsubscribed') {
foreach (Subscription::byEmail($email) as $subscription) {
$subscription->delete();
}
}
}
}

Expand Down
10 changes: 3 additions & 7 deletions campaignion_newsletters/tests/ComponentTest.php
Expand Up @@ -23,17 +23,13 @@ public function testSubmitCheckbox() {
public function testSubmitRadios() {
$c['extra']['display'] = 'radios';

// Radio no.
// Not checked checkbox.
$v = 'no';
$this->assertEqual(['unsubscribed'], _webform_submit_newsletter($c, $v));
$this->assertEqual([''], _webform_submit_newsletter($c, $v));

// Radio yes.
// Checked checkbox.
$v = 'yes';
$this->assertEqual(['subscribed'], _webform_submit_newsletter($c, $v));

// Not selected radio.
$v = NULL;
$this->assertEqual([''], _webform_submit_newsletter($c, $v));
}

public function testTable() {
Expand Down

0 comments on commit 4fb2e3b

Please sign in to comment.