From 4fb2e3bc9f8ce0318f42e02f7ec5b353883d1093 Mon Sep 17 00:00:00 2001 From: Roman Zimmermann Date: Mon, 12 Feb 2018 16:28:52 +0100 Subject: [PATCH] Revert "3-state optins: subscribe / unsubscribe / no change" --- .../campaignion_newsletters.component.inc | 41 ++++--------------- .../campaignion_newsletters.module | 12 ++---- .../tests/ComponentTest.php | 10 ++--- 3 files changed, 15 insertions(+), 48 deletions(-) diff --git a/campaignion_newsletters/campaignion_newsletters.component.inc b/campaignion_newsletters/campaignion_newsletters.component.inc index df8ea7844..9c62a2ef1 100644 --- a/campaignion_newsletters/campaignion_newsletters.component.inc +++ b/campaignion_newsletters/campaignion_newsletters.component.inc @@ -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], ], ]; @@ -189,34 +189,11 @@ 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; } } @@ -224,7 +201,7 @@ function _webform_newsletter_value_to_label($value) { * 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; } @@ -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'); } /** @@ -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'); } diff --git a/campaignion_newsletters/campaignion_newsletters.module b/campaignion_newsletters/campaignion_newsletters.module index 239b26498..404724578 100644 --- a/campaignion_newsletters/campaignion_newsletters.module +++ b/campaignion_newsletters/campaignion_newsletters.module @@ -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; @@ -111,11 +110,6 @@ function campaignion_newsletters_webform_submission_confirmed(Submission $submis } } } - elseif ($value == 'unsubscribed') { - foreach (Subscription::byEmail($email) as $subscription) { - $subscription->delete(); - } - } } } diff --git a/campaignion_newsletters/tests/ComponentTest.php b/campaignion_newsletters/tests/ComponentTest.php index 737e829e8..246f8f606 100644 --- a/campaignion_newsletters/tests/ComponentTest.php +++ b/campaignion_newsletters/tests/ComponentTest.php @@ -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() {