Refactor Menu::getLimitPerPage to a service
[MAILPOET-2200]
This commit is contained in:
committed by
M. Shull
parent
06fd592514
commit
ed9f0aa294
@ -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)) {
|
||||
|
@ -89,6 +89,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\Listing\BulkActionController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Listing\BulkActionFactory::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Listing\Handler::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Listing\PageLimit::class);
|
||||
// Notices
|
||||
$container->autowire(\MailPoet\Util\Notices\PermanentNotices::class);
|
||||
// Router
|
||||
|
@ -141,7 +141,7 @@ class Handler {
|
||||
'offset' => (isset($data['offset']) ? (int)$data['offset'] : 0),
|
||||
'limit' => (isset($data['limit'])
|
||||
? (int)$data['limit']
|
||||
: self::DEFAULT_LIMIT_PER_PAGE
|
||||
: PageLimit::DEFAULT_LIMIT_PER_PAGE
|
||||
),
|
||||
// searching
|
||||
'search' => (isset($data['search']) ? $data['search'] : null),
|
||||
|
30
lib/Listing/PageLimit.php
Normal file
30
lib/Listing/PageLimit.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
namespace MailPoet\Listing;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class PageLimit {
|
||||
const DEFAULT_LIMIT_PER_PAGE = 20;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
function __construct(WPFunctions $wp) {
|
||||
$this->wp = $wp;
|
||||
}
|
||||
|
||||
function getLimitPerPage($model = null) {
|
||||
if ($model === null) {
|
||||
return self::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
|
||||
: self::DEFAULT_LIMIT_PER_PAGE;
|
||||
}
|
||||
}
|
@ -6,13 +6,13 @@ use Codeception\Util\Stub;
|
||||
use MailPoet\AdminPages\PageRenderer;
|
||||
use MailPoet\Config\AccessControl;
|
||||
use MailPoet\Config\Menu;
|
||||
use MailPoet\Config\Renderer;
|
||||
use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\Features\FeaturesController;
|
||||
use MailPoet\Listing\PageLimit;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Settings\UserFlagsController;
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
use MailPoet\WP\Functions;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class MenuTest extends \MailPoetTest {
|
||||
function testItReturnsTrueIfCurrentPageBelongsToMailpoet() {
|
||||
@ -89,15 +89,17 @@ class MenuTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
private function getMenu(PageRenderer $renderer) {
|
||||
$wp = new WPFunctions;
|
||||
return new Menu(
|
||||
new AccessControl(),
|
||||
new SettingsController(),
|
||||
new FeaturesController(),
|
||||
new Functions(),
|
||||
new WooCommerceHelper(new Functions()),
|
||||
$wp,
|
||||
new WooCommerceHelper($wp),
|
||||
new ServicesChecker,
|
||||
new UserFlagsController,
|
||||
$renderer
|
||||
$renderer,
|
||||
new PageLimit($wp)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user