Add getOrdersCount() to WooCommerce helper

[MAILPOET-1732]
This commit is contained in:
Rostislav Wolny
2019-03-22 11:56:19 +01:00
committed by M. Shull
parent 74bee5ec1e
commit 29e2cebce3
5 changed files with 53 additions and 4 deletions

View File

@ -8,13 +8,17 @@ use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoetVendor\Twig\Extension\AbstractExtension;
use MailPoetVendor\Twig\TwigFunction;
use \MailPoet\WP\Functions as WPFunctions;
if (!defined('ABSPATH')) exit;
class Analytics extends AbstractExtension {
public function getFunctions() {
$settings = new SettingsController();
$analytics = new AnalyticsGenerator(new Reporter($settings, new WooCommerceHelper), $settings);
$analytics = new AnalyticsGenerator(
new Reporter($settings, new WooCommerceHelper(new WPFunctions())),
$settings
);
return array(
new TwigFunction(
'get_analytics_data',

View File

@ -532,4 +532,13 @@ class Functions {
global $wpdb;
return $wpdb->parse_db_host($host);
}
/**
* @param string|null $type
* @param string|null $permission
* @return object
*/
function wpCountPosts($type = null, $permission = null) {
return wp_count_posts($type, $permission);
}
}

View File

@ -1,7 +1,20 @@
<?php
namespace MailPoet\WooCommerce;
use MailPoet\WP\Functions;
class Helper {
/** @var Functions */
private $wp;
function __construct(Functions $wp = null) {
if (!$wp) {
$wp = Functions::get();
}
$this->wp = $wp;
}
function isWooCommerceActive() {
return class_exists('WooCommerce');
}
@ -21,4 +34,11 @@ class Helper {
function wcGetProduct($the_product = false) {
return wc_get_product($the_product);
}
function getOrdersCount() {
$counts = $this->wp->wpCountPosts('shop_order');
return array_reduce((array)$counts, function($sum, $count_for_state) {
return $sum + (int)$count_for_state;
});
}
}

View File

@ -7,6 +7,7 @@ use Codeception\Stub;
use Codeception\Stub\Expected;
use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoet\WP\Functions as WPFunctions;
class AnalyticsTest extends \MailPoetTest {
@ -21,7 +22,10 @@ class AnalyticsTest extends \MailPoetTest {
function _before() {
parent::_before();
$this->settings = new SettingsController();
$this->analytics = new Analytics(new Reporter($this->settings, new WooCommerceHelper), $this->settings);
$this->analytics = new Analytics(
new Reporter($this->settings, new WooCommerceHelper(new WPFunctions)),
$this->settings
);
// Remove premium plugin hooks so that tests pass also with premium active
remove_all_filters(Analytics::ANALYTICS_FILTER);
}

View File

@ -44,7 +44,7 @@ class MenuTest extends \MailPoetTest {
function testItChecksMailpoetAPIKey() {
$renderer = Stub::make(new Renderer());
$menu = new Menu($renderer, new AccessControl(new Functions()), new SettingsController(), new Functions(), new WooCommerceHelper, new ServicesChecker, new UserFlagsController);
$menu = $this->getMenu($renderer);
$_REQUEST['page'] = 'mailpoet-newsletters';
$checker = Stub::make(
@ -66,7 +66,7 @@ class MenuTest extends \MailPoetTest {
function testItChecksPremiumKey() {
$renderer = Stub::make(new Renderer());
$menu = new Menu($renderer, new AccessControl(new Functions()), new SettingsController(), new Functions(), new WooCommerceHelper, new ServicesChecker, new UserFlagsController);
$menu = $this->getMenu($renderer);
$_REQUEST['page'] = 'mailpoet-newsletters';
$checker = Stub::make(
@ -85,4 +85,16 @@ class MenuTest extends \MailPoetTest {
$menu->checkPremiumKey($checker);
expect($menu->premium_key_valid)->false();
}
private function getMenu(Renderer $renderer) {
return new Menu(
$renderer,
new AccessControl(),
new SettingsController(),
new Functions(),
new WooCommerceHelper(new Functions()),
new ServicesChecker,
new UserFlagsController
);
}
}