Refactor Menu::getLimitPerPage to a service

[MAILPOET-2200]
This commit is contained in:
Rostislav Wolny
2019-07-15 14:13:26 +02:00
committed by M. Shull
parent 06fd592514
commit ed9f0aa294
5 changed files with 49 additions and 24 deletions

View File

@@ -65,6 +65,9 @@ class Menu {
/** @var PageRenderer */
private $page_renderer;
/** @var Listing\PageLimit */
private $listing_page_limit;
private $subscribers_over_limit;
function __construct(
@@ -75,7 +78,8 @@ class Menu {
WooCommerceHelper $woocommerce_helper,
ServicesChecker $servicesChecker,
UserFlagsController $user_flags,
PageRenderer $page_renderer
PageRenderer $page_renderer,
Listing\PageLimit $listing_page_limit
) {
$this->access_control = $access_control;
$this->wp = $wp;
@@ -85,6 +89,7 @@ class Menu {
$this->servicesChecker = $servicesChecker;
$this->user_flags = $user_flags;
$this->page_renderer = $page_renderer;
$this->listing_page_limit = $listing_page_limit;
}
function init() {
@@ -612,7 +617,7 @@ class Menu {
function subscribers() {
$data = [];
$data['items_per_page'] = $this->getLimitPerPage('subscribers');
$data['items_per_page'] = $this->listing_page_limit->getLimitPerPage('subscribers');
$segments = Segment::getSegmentsWithSubscriberCount($type = false);
$segments = $this->wp->applyFilters('mailpoet_segments_with_subscriber_count', $segments);
usort($segments, function ($a, $b) {
@@ -645,7 +650,7 @@ class Menu {
function segments() {
$data = [];
$data['items_per_page'] = $this->getLimitPerPage('segments');
$data['items_per_page'] = $this->listing_page_limit->getLimitPerPage('segments');
$this->page_renderer->displayPage('segments.html', $data);
}
@@ -654,7 +659,7 @@ class Menu {
$data = [];
$data['items_per_page'] = $this->getLimitPerPage('forms');
$data['items_per_page'] = $this->listing_page_limit->getLimitPerPage('forms');
$data['segments'] = Segment::findArray();
$data['is_new_user'] = $this->isNewUser();
@@ -672,7 +677,7 @@ class Menu {
$data = [];
$data['items_per_page'] = $this->getLimitPerPage('newsletters');
$data['items_per_page'] = $this->listing_page_limit->getLimitPerPage('newsletters');
$segments = Segment::getSegmentsWithSubscriberCount($type = false);
$segments = $this->wp->applyFilters('mailpoet_segments_with_subscriber_count', $segments);
usort($segments, function ($a, $b) {
@@ -918,19 +923,6 @@ class Menu {
$this->premium_key_valid = $checker->isPremiumKeyValid($show_notices);
}
function getLimitPerPage($model = null) {
if ($model === null) {
return Listing\Handler::DEFAULT_LIMIT_PER_PAGE;
}
$listing_per_page = $this->wp->getUserMeta(
$this->wp->getCurrentUserId(), 'mailpoet_' . $model . '_per_page', true
);
return (!empty($listing_per_page))
? (int)$listing_per_page
: Listing\Handler::DEFAULT_LIMIT_PER_PAGE;
}
function isNewUser() {
$installed_at = $this->settings->get('installed_at');
if (is_null($installed_at)) {