Merge pull request #1355 from mailpoet/subscriber-source
Subscriber source [MAILPOET-1377]
This commit is contained in:
@ -6,9 +6,12 @@ use MailPoet\Mailer\MailerLog;
|
|||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
|
use MailPoet\Models\StatisticsForms;
|
||||||
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Segments\WP;
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Settings\Pages;
|
use MailPoet\Settings\Pages;
|
||||||
|
use MailPoet\Subscribers\Source;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
@ -65,6 +68,7 @@ class Populator {
|
|||||||
$this->createDefaultSegments();
|
$this->createDefaultSegments();
|
||||||
$this->createDefaultSettings();
|
$this->createDefaultSettings();
|
||||||
$this->createMailPoetPage();
|
$this->createMailPoetPage();
|
||||||
|
$this->createSourceForSubscribers();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createMailPoetPage() {
|
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'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Subscribers\ImportExport\PersonalDataExporters;
|
|||||||
|
|
||||||
use MailPoet\Models\CustomField;
|
use MailPoet\Models\CustomField;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
|
use MailPoet\Subscribers\Source;
|
||||||
|
|
||||||
class SubscriberExporter {
|
class SubscriberExporter {
|
||||||
|
|
||||||
@ -70,6 +71,12 @@ class SubscriberExporter {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$result[] = array(
|
||||||
|
'name' => __("Subscriber's subscription source", 'mailpoet'),
|
||||||
|
'value' => $this->formatSource($subscriber->source),
|
||||||
|
);
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,4 +89,21 @@ class SubscriberExporter {
|
|||||||
return $result;
|
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');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -48,10 +48,27 @@ class SubscriberExporterTest extends \MailPoetTest {
|
|||||||
array('name' => 'Email', 'value' => 'email.that@has.no.custom.fields'),
|
array('name' => 'Email', 'value' => 'email.that@has.no.custom.fields'),
|
||||||
array('name' => 'Status', 'value' => 'unconfirmed'),
|
array('name' => 'Status', 'value' => 'unconfirmed'),
|
||||||
array('name' => 'Created at', 'value' => '2018-05-03 10:30:08'),
|
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);
|
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() {
|
function testExportSubscriberWithIPs() {
|
||||||
Subscriber::createOrUpdate(array(
|
Subscriber::createOrUpdate(array(
|
||||||
'email' => 'email.that@has.ip.addresses',
|
'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'));
|
expect($result['data'][0]['data'])->contains(array('name' => 'Confirmed IP', 'value' => 'IP2'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function testExportSubscriberWithCustomField() {
|
function testExportSubscriberWithCustomField() {
|
||||||
$subscriber = Subscriber::createOrUpdate(array(
|
$subscriber = Subscriber::createOrUpdate(array(
|
||||||
'email' => 'email.that@has.custom.fields',
|
'email' => 'email.that@has.custom.fields',
|
||||||
|
Reference in New Issue
Block a user