Move bulkSendConfirmationEmail() method out of the Subscriber model [MAILPOET-1922]

This commit is contained in:
wxa
2019-03-20 19:14:34 +03:00
committed by M. Shull
parent a822114c6d
commit 59622cd5a0
2 changed files with 36 additions and 22 deletions

View File

@ -3,7 +3,6 @@ namespace MailPoet\Models;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\ConfirmationEmailMailer;
use MailPoet\Util\Helpers; use MailPoet\Util\Helpers;
use function MailPoet\Util\array_column; use function MailPoet\Util\array_column;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@ -583,26 +582,6 @@ class Subscriber extends Model {
); );
} }
static function bulkSendConfirmationEmail($orm) {
$subscribers = $orm
->where('status', self::STATUS_UNCONFIRMED)
->findMany();
$emails_sent = 0;
if (!empty($subscribers)) {
$sender = new ConfirmationEmailMailer();
foreach ($subscribers as $subscriber) {
if ($sender->sendConfirmationEmail($subscriber)) {
$emails_sent++;
}
}
}
return array(
'count' => $emails_sent
);
}
static function getTotalSubscribers() { static function getTotalSubscribers() {
return self::whereIn('status', array( return self::whereIn('status', array(
self::STATUS_SUBSCRIBED, self::STATUS_SUBSCRIBED,
@ -820,4 +799,13 @@ class Subscriber extends Model {
$service = ContainerWrapper::getInstance()->get(\MailPoet\Subscribers\SubscriberActions::class); $service = ContainerWrapper::getInstance()->get(\MailPoet\Subscribers\SubscriberActions::class);
return $service->subscribe($subscriber_data, $segment_ids); return $service->subscribe($subscriber_data, $segment_ids);
} }
/**
* @deprecated
*/
static function bulkSendConfirmationEmail($orm) {
trigger_error('Calling Subscriber::bulkSendConfirmationEmail() is deprecated and will be removed. Use MailPoet\API\MP\v1\API instead. ', E_USER_DEPRECATED);
$service = ContainerWrapper::getInstance()->get(\MailPoet\Subscribers\SubscriberActions::class);
return $service->bulkSendConfirmationEmail($orm);
}
} }

View File

@ -2,6 +2,7 @@
namespace MailPoet\Subscribers; namespace MailPoet\Subscribers;
use MailPoet\Listing\BulkActionFactory;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SubscriberSegment;
@ -20,14 +21,20 @@ class SubscriberActions {
/** @var ConfirmationEmailMailer */ /** @var ConfirmationEmailMailer */
private $confirmation_email_mailer; private $confirmation_email_mailer;
/** @var BulkActionFactory */
private $bulk_action_factory;
public function __construct( public function __construct(
SettingsController $settings, SettingsController $settings,
NewSubscriberNotificationMailer $new_subscriber_notification_mailer, NewSubscriberNotificationMailer $new_subscriber_notification_mailer,
ConfirmationEmailMailer $confirmation_email_mailer ConfirmationEmailMailer $confirmation_email_mailer,
BulkActionFactory $bulk_action_factory
) { ) {
$this->settings = $settings; $this->settings = $settings;
$this->new_subscriber_notification_mailer = $new_subscriber_notification_mailer; $this->new_subscriber_notification_mailer = $new_subscriber_notification_mailer;
$this->confirmation_email_mailer = $confirmation_email_mailer; $this->confirmation_email_mailer = $confirmation_email_mailer;
$this->bulk_action_factory = $bulk_action_factory;
$this->bulk_action_factory->registerAction('\MailPoet\Models\Subscriber', 'bulkSendConfirmationEmail', $this);
} }
function subscribe($subscriber_data = array(), $segment_ids = array()) { function subscribe($subscriber_data = array(), $segment_ids = array()) {
@ -94,4 +101,23 @@ class SubscriberActions {
return $subscriber; return $subscriber;
} }
function bulkSendConfirmationEmail($orm) {
$subscribers = $orm
->where('status', Subscriber::STATUS_UNCONFIRMED)
->findMany();
$emails_sent = 0;
if (!empty($subscribers)) {
foreach ($subscribers as $subscriber) {
if ($this->confirmation_email_mailer->sendConfirmationEmail($subscriber)) {
$emails_sent++;
}
}
}
return array(
'count' => $emails_sent
);
}
} }