diff --git a/lib/Config/Menu.php b/lib/Config/Menu.php index 1407d7065d..fd53b6c34d 100644 --- a/lib/Config/Menu.php +++ b/lib/Config/Menu.php @@ -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)) { diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index 54fe7ae4cb..92f1fc1681 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -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 diff --git a/lib/Listing/Handler.php b/lib/Listing/Handler.php index 96ef0c8b9b..bafe3cb776 100644 --- a/lib/Listing/Handler.php +++ b/lib/Listing/Handler.php @@ -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), diff --git a/lib/Listing/PageLimit.php b/lib/Listing/PageLimit.php new file mode 100644 index 0000000000..cb8aa417ec --- /dev/null +++ b/lib/Listing/PageLimit.php @@ -0,0 +1,30 @@ +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; + } +} diff --git a/tests/integration/Config/MenuTest.php b/tests/integration/Config/MenuTest.php index 36a57d93a7..2f45e101c7 100644 --- a/tests/integration/Config/MenuTest.php +++ b/tests/integration/Config/MenuTest.php @@ -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) ); } }