diff --git a/assets/js/src/subscribers/importExport/import.js b/assets/js/src/subscribers/importExport/import.js index 9b723f8b72..7f6ac23750 100644 --- a/assets/js/src/subscribers/importExport/import.js +++ b/assets/js/src/subscribers/importExport/import.js @@ -71,7 +71,7 @@ define( jQuery('#method_paste > div.mailpoet_method_process') .find('a.mailpoet_process'), mailChimpKeyInputElement = jQuery('#mailchimp_key'), - mailChimpKeyVerifyButtonEelement = jQuery('#mailchimp_key_verify'), + mailChimpKeyVerifyButtonElement = jQuery('#mailchimp_key_verify'), mailChimpListsContainerElement = jQuery('#mailchimp_lists'), mailChimpProcessButtonElement = jQuery('#method_mailchimp > div.mailpoet_method_process') @@ -178,15 +178,11 @@ define( jQuery('.mailpoet_mailchimp-key-status') .html('') .removeClass('mailpoet_mailchimp-ok mailpoet_mailchimp-error'); - mailChimpKeyVerifyButtonEelement.prop('disabled', true); toggleNextStepButton(mailChimpProcessButtonElement, 'off'); } - else { - mailChimpKeyVerifyButtonEelement.prop('disabled', false); - } }); - mailChimpKeyVerifyButtonEelement.click(function () { + mailChimpKeyVerifyButtonElement.click(function () { MailPoet.Modal.loading(true); MailPoet.Ajax.post({ endpoint: 'ImportExport', @@ -1051,7 +1047,7 @@ define( importResults.created = response.data.created; importResults.updated = response.data.updated; importResults.segments = response.data.segments; - importResults.segments_with_welcome_notification = response.data.segments_with_welcome_notification; + importResults.added_to_segment_with_welcome_notification = response.data.added_to_segment_with_welcome_notification; } queue.run(); }) @@ -1119,10 +1115,8 @@ define( .replace('%1$s', '' + importData.step2.updated.toLocaleString() + '') .replace('%2$s', '"' + importData.step2.segments.join('", "') + '"') : false, - no_action: (!importData.step2.created && !importData.step2.updated) - ? true - : false, - segments_with_welcome_notification: importData.step2.segments_with_welcome_notification + no_action: (!importData.step2.created && !importData.step2.updated), + added_to_segment_with_welcome_notification: importData.step2.added_to_segment_with_welcome_notification }; jQuery('#subscribers_data_import_results') diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index f3676c52a7..86de2278ac 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -10,7 +10,7 @@ use MailPoet\Models\Setting; use MailPoet\Settings\Charsets; use MailPoet\Settings\Hosts; use MailPoet\Settings\Pages; -use MailPoet\Subscribers\ImportExport\BootStrapMenu; +use MailPoet\Subscribers\ImportExport\ImportExportFactory; use MailPoet\Util\DKIM; use MailPoet\Util\Permissions; use MailPoet\Listing; @@ -438,14 +438,14 @@ class Menu { } function import() { - $import = new BootStrapMenu('import'); + $import = new ImportExportFactory('import'); $data = $import->bootstrap(); $data['sub_menu'] = 'mailpoet-subscribers'; echo $this->renderer->render('subscribers/importExport/import.html', $data); } function export() { - $export = new BootStrapMenu('export'); + $export = new ImportExportFactory('export'); $data = $export->bootstrap(); $data['sub_menu'] = 'mailpoet-subscribers'; echo $this->renderer->render('subscribers/importExport/export.html', $data); diff --git a/lib/Models/Newsletter.php b/lib/Models/Newsletter.php index ad1f7c778f..ad79dac939 100644 --- a/lib/Models/Newsletter.php +++ b/lib/Models/Newsletter.php @@ -5,6 +5,8 @@ if(!defined('ABSPATH')) exit; class Newsletter extends Model { public static $_table = MP_NEWSLETTERS_TABLE; + const TYPE_WELCOME = 'wecome'; + const TYPE_NOTIFICATION = 'notification'; function __construct() { parent::__construct(); @@ -259,4 +261,25 @@ class Newsletter extends Model { $newsletter->save(); return $newsletter; } -} + + static function getWelcomeNotificationsForSegments($segments) { + return NewsletterOption::table_alias('options') + ->select('options.newsletter_id') + ->select('options.value', 'segment_id') + ->join( + self::$_table, + 'newsletters.id = options.newsletter_id', + 'newsletters' + ) + ->join( + MP_NEWSLETTER_OPTION_FIELDS_TABLE, + 'option_fields.id = options.option_field_id', + 'option_fields' + ) + ->whereNull('newsletters.deleted_at') + ->where('newsletters.type', 'welcome') + ->where('option_fields.name', 'segment') + ->whereIn('options.value', $segments) + ->findMany(); + } +} \ No newline at end of file diff --git a/lib/Subscribers/ImportExport/Export/Export.php b/lib/Subscribers/ImportExport/Export/Export.php index b86e1bb45e..681b8ee542 100644 --- a/lib/Subscribers/ImportExport/Export/Export.php +++ b/lib/Subscribers/ImportExport/Export/Export.php @@ -6,7 +6,7 @@ use MailPoet\Models\CustomField; use MailPoet\Models\Segment; use MailPoet\Models\Subscriber; use MailPoet\Models\SubscriberSegment; -use MailPoet\Subscribers\ImportExport\BootStrapMenu; +use MailPoet\Subscribers\ImportExport\ImportExportFactory; use MailPoet\Util\Helpers; use MailPoet\Util\XLSXWriter; @@ -258,8 +258,8 @@ class Export { } function formatSubscriberFields($subscriber_fields, $subscriber_custom_fields) { - $bootstrap_menu = new BootStrapMenu(); - $translated_fields = $bootstrap_menu->getSubscriberFields(); + $export_factory = new ImportExportFactory(); + $translated_fields = $export_factory->getSubscriberFields(); return array_map(function($field) use ( $translated_fields, $subscriber_custom_fields ) { diff --git a/lib/Subscribers/ImportExport/Import/Import.php b/lib/Subscribers/ImportExport/Import/Import.php index bf9c86863b..2f63b060a8 100644 --- a/lib/Subscribers/ImportExport/Import/Import.php +++ b/lib/Subscribers/ImportExport/Import/Import.php @@ -1,11 +1,11 @@ array($e->getMessage()) ); } - $segments = new BootStrapMenu('import'); - $segments = $segments->getSegments(); - $segments_with_welcome_notification = + $import_factory = new ImportExportFactory('import'); + $segments = $import_factory->getSegments(); + $welcome_notifications_in_segments = ($created_subscribers || $updated_subscribers) ? - $this->getSegmentsWithWelcomeNotification($this->segments) : + Newsletter::getWelcomeNotificationsForSegments($this->segments) : false; return array( 'result' => true, @@ -91,8 +91,8 @@ class Import { 'created' => count($created_subscribers), 'updated' => count($updated_subscribers), 'segments' => $segments, - 'segments_with_welcome_notification' => - ($segments_with_welcome_notification) ? true : false + 'added_to_segment_with_welcome_notification' => + ($welcome_notifications_in_segments) ? true : false ), 'profiler' => $this->timeExecution() ); @@ -371,23 +371,4 @@ class Import { $profiler_end = microtime(true); return ($profiler_end - $this->profiler_start) / 60; } - - function getSegmentsWithWelcomeNotification($segments_ids) { - return NewsletterOption::table_alias('options') - ->join( - MP_NEWSLETTERS_TABLE, - 'newsletters.id = options.newsletter_id', - 'newsletters' - ) - ->join( - MP_NEWSLETTER_OPTION_FIELDS_TABLE, - 'option_fields.id = options.option_field_id', - 'option_fields' - ) - ->whereNull('newsletters.deleted_at') - ->where('newsletters.type', 'welcome') - ->where('option_fields.name', 'segment') - ->whereIn('options.value', $segments_ids) - ->findMany(); - } } \ No newline at end of file diff --git a/lib/Subscribers/ImportExport/BootStrapMenu.php b/lib/Subscribers/ImportExport/ImportExportFactory.php similarity index 99% rename from lib/Subscribers/ImportExport/BootStrapMenu.php rename to lib/Subscribers/ImportExport/ImportExportFactory.php index 170600cd0b..9c5f4c6fb1 100644 --- a/lib/Subscribers/ImportExport/BootStrapMenu.php +++ b/lib/Subscribers/ImportExport/ImportExportFactory.php @@ -5,7 +5,7 @@ use MailPoet\Models\CustomField; use MailPoet\Models\Segment; use MailPoet\Util\Helpers; -class BootStrapMenu { +class ImportExportFactory { public $action; function __construct($action = null) { diff --git a/views/subscribers/importExport/export.html b/views/subscribers/importExport/export.html index a6f0a5686d..3730a0c790 100644 --- a/views/subscribers/importExport/export.html +++ b/views/subscribers/importExport/export.html @@ -4,7 +4,7 @@

<%= __('Export') %> - <%= __('Back to list') %> + <%= __('Back to subscribers') %>

<% if segments is empty %>
diff --git a/views/subscribers/importExport/import/step1.html b/views/subscribers/importExport/import/step1.html index 8f73ffbfc2..de692e0595 100644 --- a/views/subscribers/importExport/import/step1.html +++ b/views/subscribers/importExport/import/step1.html @@ -81,7 +81,7 @@ - + diff --git a/views/subscribers/importExport/import/step2.html b/views/subscribers/importExport/import/step2.html index 195f9d7070..7b3c0ea77c 100644 --- a/views/subscribers/importExport/import/step2.html +++ b/views/subscribers/importExport/import/step2.html @@ -4,7 +4,7 @@