Move segment creation to lists

[MAILPOET-2480]
This commit is contained in:
Pavel Dohnal
2020-04-15 11:29:41 +02:00
committed by Veljko V
parent 296fe56081
commit 4eda8a0fb5
9 changed files with 117 additions and 7 deletions

View File

@@ -5,8 +5,11 @@ namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer;
use MailPoet\Config\ServicesChecker;
use MailPoet\Listing\PageLimit;
use MailPoet\Models\Newsletter;
use MailPoet\Models\Subscriber;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoet\WP\Functions as WPFunctions;
class Segments {
/** @var PageRenderer */
@@ -21,16 +24,26 @@ class Segments {
/** @var ServicesChecker */
private $servicesChecker;
/** @var WPFunctions */
private $wp;
/** @var WooCommerceHelper */
private $woocommerceHelper;
public function __construct(
PageRenderer $pageRenderer,
PageLimit $listingPageLimit,
ServicesChecker $servicesChecker,
WPFunctions $wp,
WooCommerceHelper $woocommerceHelper,
SubscribersFeature $subscribersFeature
) {
$this->pageRenderer = $pageRenderer;
$this->listingPageLimit = $listingPageLimit;
$this->subscribersFeature = $subscribersFeature;
$this->servicesChecker = $servicesChecker;
$this->wp = $wp;
$this->woocommerceHelper = $woocommerceHelper;
}
public function render() {
@@ -44,6 +57,39 @@ class Segments {
$data['mss_key_invalid'] = ($this->servicesChecker->isMailPoetAPIKeyValid() === false);
$wpRoles = $this->wp->getEditableRoles();
$data['wordpress_editable_roles_list'] = array_map(function($roleId, $role) {
return [
'role_id' => $roleId,
'role_name' => $role['name'],
];
}, array_keys($wpRoles), $wpRoles);
$data['newsletters_list'] = Newsletter::select(['id', 'subject', 'sent_at'])
->whereNull('deleted_at')
->where('type', Newsletter::TYPE_STANDARD)
->orderByExpr('ISNULL(sent_at) DESC, sent_at DESC')->findArray();
$data['product_categories'] = $this->wp->getCategories(['taxonomy' => 'product_cat']);
usort($data['product_categories'], function ($a, $b) {
return strcmp($a->catName, $b->catName);
});
$data['products'] = $this->getProducts();
$data['is_woocommerce_active'] = $this->woocommerceHelper->isWooCommerceActive();
$this->pageRenderer->displayPage('segments.html', $data);
}
private function getProducts() {
$args = ['post_type' => 'product', 'orderby' => 'title', 'order' => 'ASC', 'numberposts' => -1];
$products = $this->wp->getPosts($args);
return array_map(function ($product) {
return [
'title' => $product->post_title, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
'ID' => $product->ID,
];
}, $products);
}
}