Merge pull request #1355 from mailpoet/subscriber-source

Subscriber source [MAILPOET-1377]
This commit is contained in:
Michelle Shull
2018-05-21 08:17:00 -04:00
committed by GitHub
3 changed files with 61 additions and 0 deletions

View File

@ -6,9 +6,12 @@ use MailPoet\Mailer\MailerLog;
use MailPoet\Models\Newsletter;
use MailPoet\Models\Segment;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\StatisticsForms;
use MailPoet\Models\Subscriber;
use MailPoet\Segments\WP;
use MailPoet\Models\Setting;
use MailPoet\Settings\Pages;
use MailPoet\Subscribers\Source;
use MailPoet\Util\Helpers;
if(!defined('ABSPATH')) exit;
@ -65,6 +68,7 @@ class Populator {
$this->createDefaultSegments();
$this->createDefaultSettings();
$this->createMailPoetPage();
$this->createSourceForSubscribers();
}
private function createMailPoetPage() {
@ -333,4 +337,19 @@ class Populator {
)
);
}
private function createSourceForSubscribers() {
Subscriber::rawExecute(
' UPDATE LOW_PRIORITY `' . Subscriber::$_table . '` subscriber ' .
' JOIN `' . StatisticsForms::$_table . '` stats ON stats.subscriber_id=subscriber.id ' .
' SET `source` = "' . Source::FORM . '"' .
' WHERE `source` = "' . Source::UNKNOWN . '"'
);
Subscriber::rawExecute(
'UPDATE LOW_PRIORITY `' . Subscriber::$_table . '`' .
' SET `source` = "' . Source::WORDPRESS_USER . '"' .
' WHERE `source` = "' . Source::UNKNOWN . '"' .
' AND `wp_user_id` IS NOT NULL'
);
}
}

View File

@ -4,6 +4,7 @@ namespace MailPoet\Subscribers\ImportExport\PersonalDataExporters;
use MailPoet\Models\CustomField;
use MailPoet\Models\Subscriber;
use MailPoet\Subscribers\Source;
class SubscriberExporter {
@ -70,6 +71,12 @@ class SubscriberExporter {
);
}
}
$result[] = array(
'name' => __("Subscriber's subscription source", 'mailpoet'),
'value' => $this->formatSource($subscriber->source),
);
return $result;
}
@ -82,4 +89,21 @@ class SubscriberExporter {
return $result;
}
private function formatSource($source) {
switch ($source) {
case Source::WORDPRESS_USER:
return __('Subscriber information synchronized via WP user sync', 'mailpoet');
case Source::FORM:
return __('Subscription via a MailPoet subscription form', 'mailpoet');
case Source::API:
return __('Added by a 3rd party via MailPoet 3 API', 'mailpoet');
case Source::ADMINISTRATOR:
return __('Created by the administrator', 'mailpoet');
case Source::IMPORTED:
return __('Imported by the administrator', 'mailpoet');
default:
return __('Unknown', 'mailpoet');
}
}
}

View File

@ -48,10 +48,27 @@ class SubscriberExporterTest extends \MailPoetTest {
array('name' => 'Email', 'value' => 'email.that@has.no.custom.fields'),
array('name' => 'Status', 'value' => 'unconfirmed'),
array('name' => 'Created at', 'value' => '2018-05-03 10:30:08'),
array('name' => "Subscriber's subscription source", 'value' => 'Unknown'),
);
expect($result['data'][0]['data'])->equals($expected);
}
function testExportSubscriberWithSource() {
Subscriber::createOrUpdate(array(
'email' => 'email.with@source.com',
'first_name' => 'John',
'last_name' => 'Doe',
'status' => 'unconfirmed',
'created_at' => '2018-05-03 10:30:08',
'source' => 'form',
));
$result = $this->exporter->export('email.with@source.com');
expect($result['data'][0]['data'])->contains(array(
'name' => "Subscriber's subscription source",
'value' => 'Subscription via a MailPoet subscription form'
));
}
function testExportSubscriberWithIPs() {
Subscriber::createOrUpdate(array(
'email' => 'email.that@has.ip.addresses',
@ -67,6 +84,7 @@ class SubscriberExporterTest extends \MailPoetTest {
expect($result['data'][0]['data'])->contains(array('name' => 'Confirmed IP', 'value' => 'IP2'));
}
function testExportSubscriberWithCustomField() {
$subscriber = Subscriber::createOrUpdate(array(
'email' => 'email.that@has.custom.fields',