Files
piratepoet/lib/AutomaticEmails/WooCommerce/Helper.php
2019-10-08 14:22:55 +01:00

75 lines
2.0 KiB
PHP

<?php
namespace MailPoet\AutomaticEmails\WooCommerce;
use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoet\WP\Functions as WPFunctions;
class Helper {
/**
* @var WPFunctions
*/
private $wp;
/**
* @var WCHelper
*/
private $helper;
function __construct(WPFunctions $wp = null, WCHelper $helper = null) {
if ($wp === null) {
$wp = new WPFunctions;
}
if ($helper === null) {
$helper = new WCHelper;
}
$this->wp = $wp;
$this->helper = $helper;
}
/**
* @param string $customer_email
* @return bool|Subscriber
*/
function getWooCommerceSegmentSubscriber($customer_email) {
$wc_segment = Segment::getWooCommerceSegment();
return Subscriber::tableAlias('subscribers')
->select('subscribers.*')
->where('subscribers.email', $customer_email)
->join(
MP_SUBSCRIBER_SEGMENT_TABLE,
'relation.subscriber_id = subscribers.id',
'relation'
)
->where('relation.segment_id', $wc_segment->id)
->where('relation.status', Subscriber::STATUS_SUBSCRIBED)
->where('subscribers.status', Subscriber::STATUS_SUBSCRIBED)
->where('subscribers.is_woocommerce_user', 1)
->findOne();
}
function getCustomerOrderCount($customer_email) {
// registered user
$user = $this->wp->getUserBy('email', $customer_email);
if ($user) {
return $this->helper->wcGetCustomerOrderCount($user->ID);
}
// guest user
return $this->getGuestCustomerOrderCountByEmail($customer_email);
}
private function getGuestCustomerOrderCountByEmail($customer_email) {
global $wpdb;
$count = $wpdb->get_var( "SELECT COUNT(*)
FROM $wpdb->posts as posts
LEFT JOIN {$wpdb->postmeta} AS meta ON posts.ID = meta.post_id
WHERE meta.meta_key = '_billing_email'
AND posts.post_type = 'shop_order'
AND meta_value = '" . $this->wp->escSql($customer_email) . "'
" );
return (int)$count;
}
}