PluginProbe ʕ •ᴥ•ʔ
FAPI Member / 2.2.35
FAPI Member v2.2.35
2.2.35 2.2.34 2.2.33 2.2.32 trunk 1.9.47 2.1.18 2.2.24 2.2.25 2.2.26 2.2.28 2.2.29 2.2.30 2.2.31
fapi-member / src / Api / V2 / Endpoints / EmailsController.php
fapi-member / src / Api / V2 / Endpoints Last commit date
ApiConnectionsController.php 2 weeks ago EmailsController.php 2 weeks ago MembershipsController.php 2 weeks ago PagesController.php 2 weeks ago SectionsController.php 2 weeks ago StatisticsController.php 2 weeks ago UsersController.php 2 weeks ago
EmailsController.php
84 lines
1 <?php
2
3 namespace FapiMember\Api\V2\Endpoints;
4
5 use FapiMember\Api\V2\ApiController;
6 use FapiMember\Container\Container;
7 use FapiMember\Library\SmartEmailing\Types\IntType;
8 use FapiMember\Model\Enums\Types\EmailType;
9 use FapiMember\Model\Enums\Types\RequestMethodType;
10 use FapiMember\Repository\EmailRepository;
11 use FapiMember\Service\ApiService;
12 use Throwable;
13 use WP_REST_Request;
14
15 class EmailsController
16 {
17 private EmailRepository $emailRepository;
18 private ApiService $apiService;
19 private ApiController $apiController;
20
21 public function __construct()
22 {
23 $this->emailRepository = Container::get(EmailRepository::class);
24 $this->apiService = Container::get(ApiService::class);
25 $this->apiController = Container::get(ApiController::class);
26 }
27
28 public function getForLevel(WP_REST_Request $request): array
29 {
30 $this->apiController->checkRequestMethod($request, RequestMethodType::POST);
31 $body = json_decode($request->get_body(), true);
32
33 $levelId = $this->apiController->extractParam($body, 'level_id', IntType::class);
34 $templates = $this->emailRepository->getTemplatesForLevel($levelId);
35 $normalizedTemplates = [];
36
37 foreach (EmailType::getAvailableValues() as $type) {
38 $template = $templates[$type] ?? [];
39
40 if (!is_array($template)) {
41 $template = [];
42 }
43
44 $normalizedTemplates[$type] = [
45 's' => isset($template['s']) && is_string($template['s']) ? $template['s'] : '',
46 'b' => isset($template['b']) && is_string($template['b']) ? $template['b'] : '',
47 ];
48 }
49
50 return $normalizedTemplates;
51 }
52
53 public function updateForLevel(WP_REST_Request $request): void
54 {
55 $this->apiController->checkRequestMethod($request, RequestMethodType::POST);
56 $body = json_decode($request->get_body(), true);
57
58 $levelId = $this->apiController->extractParam($body, 'level_id', IntType::class);
59
60 $emails = [];
61 if (isset($body['emails']) && is_array($body['emails'])) {
62 $emails = $body['emails'];
63 } else {
64 $this->apiController->invalidParameterError('emails');
65 }
66
67 try {
68 foreach ($emails as $type => $email) {
69 if (EmailType::isValidValue($type)) {
70 $this->emailRepository->update($levelId, $type, $email['subject'], $email['body']);
71 }
72 }
73 } catch (Throwable) {
74 $this->apiController->callbackError([
75 'class'=> self::class,
76 'description' => "Failed to update service pages",
77 ]);
78 }
79
80 $this->apiController->callbackSettingsSaved();
81 }
82
83 }
84