PluginProbe ʕ •ᴥ•ʔ
FAPI Member / 2.2.30
FAPI Member v2.2.30
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 3 months ago EmailsController.php 3 months ago MembershipsController.php 3 months ago PagesController.php 3 months ago SectionsController.php 3 months ago StatisticsController.php 3 months ago UsersController.php 3 months ago
EmailsController.php
69 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
35 return $this->emailRepository->getTemplatesForLevel($levelId);
36 }
37
38 public function updateForLevel(WP_REST_Request $request): void
39 {
40 $this->apiController->checkRequestMethod($request, RequestMethodType::POST);
41 $body = json_decode($request->get_body(), true);
42
43 $levelId = $this->apiController->extractParam($body, 'level_id', IntType::class);
44
45 $emails = [];
46 if (isset($body['emails']) && is_array($body['emails'])) {
47 $emails = $body['emails'];
48 } else {
49 $this->apiController->invalidParameterError('emails');
50 }
51
52 try {
53 foreach ($emails as $type => $email) {
54 if (EmailType::isValidValue($type)) {
55 $this->emailRepository->update($levelId, $type, $email['subject'], $email['body']);
56 }
57 }
58 } catch (Throwable) {
59 $this->apiController->callbackError([
60 'class'=> self::class,
61 'description' => "Failed to update service pages",
62 ]);
63 }
64
65 $this->apiController->callbackSettingsSaved();
66 }
67
68 }
69