8889841cclixcotz/tcchp.clix.co.tz/wp-content/plugins/mailpoet/lib/Segments/DynamicSegments/FilterFactory.php000064400000021361150502235770030664 0ustar00homeemailAction = $emailAction; $this->userRole = $userRole; $this->wooCommerceProduct = $wooCommerceProduct; $this->wooCommerceCategory = $wooCommerceCategory; $this->wooCommerceCountry = $wooCommerceCountry; $this->wooCommerceNumberOfOrders = $wooCommerceNumberOfOrders; $this->wooCommerceMembership = $wooCommerceMembership; $this->wooCommercePurchaseDate = $wooCommercePurchaseDate; $this->wooCommerceSubscription = $wooCommerceSubscription; $this->emailOpensAbsoluteCount = $emailOpensAbsoluteCount; $this->wooCommerceTotalSpent = $wooCommerceTotalSpent; $this->subscriberSubscribedDate = $subscriberSubscribedDate; $this->subscriberScore = $subscriberScore; $this->subscriberTag = $subscriberTag; $this->mailPoetCustomFields = $mailPoetCustomFields; $this->subscriberSegment = $subscriberSegment; $this->emailActionClickAny = $emailActionClickAny; $this->wooCommerceSingleOrderValue = $wooCommerceSingleOrderValue; $this->subscriberTextField = $subscriberTextField; $this->subscribedViaForm = $subscribedViaForm; $this->wooCommerceAverageSpent = $wooCommerceAverageSpent; } public function getFilterForFilterEntity(DynamicSegmentFilterEntity $filter): Filter { $filterData = $filter->getFilterData(); $filterType = $filterData->getFilterType(); $action = $filterData->getAction(); switch ($filterType) { case DynamicSegmentFilterData::TYPE_USER_ROLE: return $this->userRole($action); case DynamicSegmentFilterData::TYPE_EMAIL: return $this->email($action); case DynamicSegmentFilterData::TYPE_WOOCOMMERCE_MEMBERSHIP: return $this->wooCommerceMembership(); case DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION: return $this->wooCommerceSubscription(); case DynamicSegmentFilterData::TYPE_WOOCOMMERCE: return $this->wooCommerce($action); default: throw new InvalidFilterException('Invalid type', InvalidFilterException::INVALID_TYPE); } } /** * @param ?string $action * * @return MailPoetCustomFields|SubscriberScore|SubscriberSegment|SubscriberSubscribedDate|UserRole|SubscriberTag|SubscriberTextField|SubscriberSubscribedViaForm */ private function userRole(?string $action) { if ($action === SubscriberSubscribedDate::TYPE) { return $this->subscriberSubscribedDate; } elseif ($action === SubscriberScore::TYPE) { return $this->subscriberScore; } elseif ($action === MailPoetCustomFields::TYPE) { return $this->mailPoetCustomFields; } elseif ($action === SubscriberSegment::TYPE) { return $this->subscriberSegment; } elseif ($action === SubscriberTag::TYPE) { return $this->subscriberTag; } elseif ($action === SubscriberSubscribedViaForm::TYPE) { return $this->subscribedViaForm; } elseif (in_array($action, SubscriberTextField::TYPES)) { return $this->subscriberTextField; } return $this->userRole; } /** * @param ?string $action * @return EmailAction|EmailActionClickAny|EmailOpensAbsoluteCountAction */ private function email(?string $action) { $countActions = [EmailOpensAbsoluteCountAction::TYPE, EmailOpensAbsoluteCountAction::MACHINE_TYPE]; if (in_array($action, $countActions)) { return $this->emailOpensAbsoluteCount; } elseif ($action === EmailActionClickAny::TYPE) { return $this->emailActionClickAny; } return $this->emailAction; } private function wooCommerceMembership(): WooCommerceMembership { return $this->wooCommerceMembership; } private function wooCommerceSubscription(): WooCommerceSubscription { return $this->wooCommerceSubscription; } /** * @param ?string $action * @return Filter */ private function wooCommerce(?string $action) { if ($action === WooCommerceProduct::ACTION_PRODUCT) { return $this->wooCommerceProduct; } elseif ($action === WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS) { return $this->wooCommerceNumberOfOrders; } elseif ($action === WooCommerceTotalSpent::ACTION_TOTAL_SPENT) { return $this->wooCommerceTotalSpent; } elseif ($action === WooCommerceCountry::ACTION_CUSTOMER_COUNTRY) { return $this->wooCommerceCountry; } elseif ($action === WooCommerceSingleOrderValue::ACTION_SINGLE_ORDER_VALUE) { return $this->wooCommerceSingleOrderValue; } elseif ($action === WooCommercePurchaseDate::ACTION) { return $this->wooCommercePurchaseDate; } elseif ($action === WooCommerceAverageSpent::ACTION) { return $this->wooCommerceAverageSpent; } return $this->wooCommerceCategory; } }