subscriptionPages = $subscriptionPages; $this->wp = $wp; } public function init() { // form widget shortcode $this->wp->addShortcode('mailpoet_form', [$this, 'formWidget']); // subscribers count shortcode $this->wp->addShortcode('mailpoet_subscribers_count', [ $this, 'getSubscribersCount', ]); $this->wp->addShortcode('wysija_subscribers_count', [ $this, 'getSubscribersCount', ]); // archives page $this->wp->addShortcode('mailpoet_archive', [ $this, 'getArchive', ]); $this->wp->addFilter('mailpoet_archive_date', [ $this, 'renderArchiveDate', ], 2); $this->wp->addFilter('mailpoet_archive_subject', [ $this, 'renderArchiveSubject', ], 2, 3); // initialize subscription pages data $this->subscriptionPages->init(); // initialize subscription management shortcodes $this->subscriptionPages->initShortcodes(); } public function formWidget($params = []) { // IMPORTANT: fixes conflict with MagicMember $this->wp->removeShortcode('user_list'); if (isset($params['id']) && (int)$params['id'] > 0) { $formWidget = new Widget(); return $formWidget->widget([ 'form' => (int)$params['id'], 'form_type' => 'shortcode', ]); } } public function getSubscribersCount($params) { if (!empty($params['segments'])) { $segmentIds = array_map(function($segmentId) { return (int)trim($segmentId); }, explode(',', $params['segments'])); } if (empty($segmentIds)) { return $this->wp->numberFormatI18n(Subscriber::filter('subscribed')->count()); } else { return $this->wp->numberFormatI18n( SubscriberSegment::whereIn('segment_id', $segmentIds) ->select('subscriber_id')->distinct() ->filter('subscribed') ->findResultSet()->count() ); } } public function getArchive($params) { $segmentIds = []; if (!empty($params['segments'])) { $segmentIds = array_map(function($segmentId) { return (int)trim($segmentId); }, explode(',', $params['segments'])); } $html = ''; $newsletters = Newsletter::getArchives($segmentIds); $subscriber = Subscriber::getCurrentWPUser(); if (empty($newsletters)) { return $this->wp->applyFilters( 'mailpoet_archive_no_newsletters', $this->wp->__('Oops! There are no newsletters to display.', 'mailpoet') ); } else { $title = $this->wp->applyFilters('mailpoet_archive_title', ''); if (!empty($title)) { $html .= '