oont-contents/plugins/mailpoet/lib/API/JSON/v1/Coupons.php
2025-02-08 15:10:23 +01:00

67 lines
1.8 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\API\JSON\v1;
if (!defined('ABSPATH')) exit;
use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\SuccessResponse;
use MailPoet\Config\AccessControl;
use MailPoet\WooCommerce\Helper;
use MailPoet\WP\Functions as WPFunctions;
class Coupons extends APIEndpoint {
public const DEFAULT_PAGE_SIZE = 100;
/** @var Helper */
public $helper;
/*** @var WPFunctions */
private $wp;
public $permissions = [
'global' => AccessControl::PERMISSION_MANAGE_EMAILS,
];
public function __construct(
WPFunctions $wp,
Helper $helper
) {
$this->wp = $wp;
$this->helper = $helper;
}
public function getCoupons(array $data = []): SuccessResponse {
$pageSize = $data['page_size'] ?? self::DEFAULT_PAGE_SIZE;
$pageNumber = $data['page_number'] ?? 1;
$discountType = $data['discount_type'] ?? null;
$search = $data['search'] ?? null;
$includeCouponIds = $data['include_coupon_ids'] ?? [];
return $this->successResponse(
$this->formatCoupons($this->helper->getCouponList(
(int)$pageSize,
(int)$pageNumber,
$discountType,
$search,
$includeCouponIds
))
);
}
/**
* @param array $couponPosts
* @return array
*/
private function formatCoupons(array $couponPosts): array {
return array_map(function (\WP_Post $post): array {
$discountType = $this->wp->getPostMeta($post->ID, 'discount_type', true);
return [
'id' => $post->ID,
'text' => $post->post_title, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
'excerpt' => $post->post_excerpt, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
'discountType' => $discountType,
];
}, $couponPosts);
}
}