Skip to content

Commit e10c407

Browse files
committed
feat: mailerlite subscriber delete event added
1 parent e8dbda4 commit e10c407

File tree

3 files changed

+57
-13
lines changed

3 files changed

+57
-13
lines changed

frontend-dev/src/components/AllIntegrations/MailerLite/MailerLite.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ function MailerLite({ formFields, setFlow, flow, allIntegURL }) {
3535
mailerLiteFields: [],
3636
groups: [],
3737
group_ids: [],
38+
actions: {},
3839
action: ''
3940
})
4041

includes/Actions/MailerLite/MailerLiteController.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,10 +193,11 @@ public function execute($integrationData, $fieldValues)
193193
$integId = $integrationData->id;
194194
$auth_token = $integrationDetails->auth_token;
195195
$version = $integrationDetails->version;
196-
$groupIds = $integrationDetails->group_ids;
197-
$fieldMap = $integrationDetails->field_map;
198-
$type = $integrationDetails->mailer_lite_type;
199-
$actions = $integrationDetails->actions;
196+
$groupIds = $integrationDetails->group_ids ?? '';
197+
$fieldMap = $integrationDetails->field_map ?? '';
198+
$type = $integrationDetails->mailer_lite_type ?? '';
199+
$actions = $integrationDetails->actions ?? '';
200+
$action = $integrationDetails->action ?? '';
200201

201202
if (
202203
empty($fieldMap)
@@ -210,7 +211,8 @@ public function execute($integrationData, $fieldValues)
210211
$type,
211212
$fieldValues,
212213
$fieldMap,
213-
$auth_token
214+
$auth_token,
215+
$action
214216
);
215217

216218
if (is_wp_error($mailerliteApiResponse)) {

includes/Actions/MailerLite/RecordApiHelper.php

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
namespace BitCode\FI\Actions\MailerLite;
88

9-
use BitCode\FI\Log\LogHandler;
109
use BitCode\FI\Core\Util\Common;
1110
use BitCode\FI\Core\Util\HttpHelper;
11+
use BitCode\FI\Log\LogHandler;
1212

1313
/**
1414
* Provide functionality for Record insert, upsert
@@ -59,7 +59,7 @@ public function existSubscriber($auth_token, $email)
5959

6060
$response = HttpHelper::get($apiEndpoints, null, $this->_defaultHeader);
6161

62-
return !empty($response->data);
62+
return $response->data->id ?? false;
6363
}
6464

6565
public function enableDoubleOptIn($auth_token)
@@ -126,6 +126,32 @@ public function addSubscriber($auth_token, $groupIds, $type, $finalData)
126126
return HttpHelper::post($apiEndpoint, $requestParams, $this->_defaultHeader);
127127
}
128128

129+
public function deleteSubscriber($auth_token, $finalData)
130+
{
131+
if (empty($finalData['email'])) {
132+
return [
133+
'success' => false,
134+
'message' => __('Required field Email is empty', 'bit-integrations'),
135+
'code' => 400
136+
];
137+
}
138+
139+
// $isMailerLiteV2 = $this->_baseUrl === 'https://connect.mailerlite.com/api/';
140+
$subscriberId = $this->existSubscriber($auth_token, $finalData['email']);
141+
142+
if (empty($subscriberId)) {
143+
return [
144+
'success' => false,
145+
'message' => __('Subscriber not exist', 'bit-integrations'),
146+
'code' => 400
147+
];
148+
}
149+
150+
$apiEndpoint = $this->_baseUrl . 'subscribers/' . $subscriberId;
151+
152+
return HttpHelper::request($apiEndpoint, 'DELETE', $finalData, $this->_defaultHeader);
153+
}
154+
129155
public function generateReqDataFromFieldMap($data, $fieldMap)
130156
{
131157
$dataFinal = [];
@@ -148,16 +174,31 @@ public function execute(
148174
$type,
149175
$fieldValues,
150176
$fieldMap,
151-
$auth_token
177+
$auth_token,
178+
$action
152179
) {
153180
$finalData = $this->generateReqDataFromFieldMap($fieldValues, $fieldMap);
154-
$apiResponse = $this->addSubscriber($auth_token, $groupId, $type, $finalData);
155181

156-
if (isset($apiResponse->data->id) || isset($apiResponse->id)) {
157-
$res = ['success' => true, 'message' => isset($apiResponse->update) ? __('Subscriber updated successfully', 'bit-integrations') : __('Subscriber created successfully', 'bit-integrations'), 'code' => 200];
158-
LogHandler::save($this->_integrationID, wp_json_encode(['type' => 'subscriber', 'type_name' => 'add-subscriber']), 'success', wp_json_encode($res));
182+
switch ($action) {
183+
case 'delete_subscriber':
184+
$apiResponse = $this->deleteSubscriber($auth_token, $finalData);
185+
$typeName = 'delete-subscriber';
186+
$res = ['success' => true, 'message' => __('Subscriber deleted successfully', 'bit-integrations'), 'code' => 200];
187+
188+
break;
189+
190+
default:
191+
$apiResponse = $this->addSubscriber($auth_token, $groupId, $type, $finalData);
192+
$typeName = 'add-subscriber';
193+
$res = ['success' => true, 'message' => isset($apiResponse->update) ? __('Subscriber updated successfully', 'bit-integrations') : __('Subscriber created successfully', 'bit-integrations'), 'code' => 200];
194+
195+
break;
196+
}
197+
198+
if (isset($apiResponse->data->id) || isset($apiResponse->id) || str_starts_with((string) HttpHelper::$responseCode, '20')) {
199+
LogHandler::save($this->_integrationID, wp_json_encode(['type' => 'subscriber', 'type_name' => $typeName]), 'success', wp_json_encode($res));
159200
} else {
160-
LogHandler::save($this->_integrationID, wp_json_encode(['type' => 'subscriber', 'type_name' => 'add-subscriber']), 'error', wp_json_encode($apiResponse));
201+
LogHandler::save($this->_integrationID, wp_json_encode(['type' => 'subscriber', 'type_name' => $typeName]), 'error', wp_json_encode($apiResponse));
161202
}
162203

163204
return $apiResponse;

0 commit comments

Comments
 (0)