PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / mailpoet / actions / update-subscriber-status.php
suretriggers / src / Integrations / mailpoet / actions Last commit date
add-subscriber-to-list.php 1 year ago remove-subscriber-from-list.php 1 year ago update-subscriber-status.php 10 months ago update-subscriber-to-new-list.php 10 months ago
update-subscriber-status.php
152 lines
1 <?php
2 /**
3 * UpdateSubscriberStatus.
4 * php version 5.6
5 *
6 * @category UpdateSubscriberStatus
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\MailPoet\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * UpdateSubscriberStatus
22 *
23 * @category UpdateSubscriberStatus
24 * @package SureTriggers
25 * @author BSF <username@example.com>
26 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
27 * @link https://www.brainstormforce.com/
28 * @since 1.0.0
29 */
30 class UpdateSubscriberStatus extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'MailPoet';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'update_subscriber_status';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 *
53 * @return array
54 */
55 public function register( $actions ) {
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Update Subscriber Status', 'suretriggers' ),
58 'action' => $this->action,
59 'function' => [ $this, 'action_listener' ],
60 ];
61 return $actions;
62 }
63
64 /**
65 * Action listener.
66 *
67 * @param int $user_id user_id.
68 * @param int $automation_id automation_id.
69 * @param array $fields fields.
70 * @param array $selected_options selectedOptions.
71 *
72 * @return array
73 *
74 * @throws Exception Exception.
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77 if ( ! class_exists( '\MailPoet\API\API' ) || ! class_exists( '\MailPoet\API\MP\v1\APIException' ) ) {
78 return [
79 'status' => 'error',
80 'message' => __( 'MailPoet API class not exists.', 'suretriggers' ),
81
82 ];
83 }
84
85 global $wpdb;
86
87 // Shorthand.
88 $email = $selected_options['subscriber_email'];
89 $subscriber_status = $selected_options['subscriber_status'];
90 $subscriber = [];
91
92 // Bail if not list selected.
93 if ( '' === $email ) {
94 return [
95 'status' => 'error',
96 'message' => __( 'Please enter a subscriber email.', 'suretriggers' ),
97
98 ];
99 }
100
101 if ( isset( $email ) && ! empty( $email ) ) {
102 $subscriber['email'] = sanitize_email( $email );
103 }
104
105 if ( isset( $subscriber_status ) && ! empty( $subscriber_status ) ) {
106 $subscriber['status'] = $subscriber_status;
107 }
108
109 // Get the MailPoet API.
110 $mailpoet = \MailPoet\API\API::MP( 'v1' );
111
112 if ( ! isset( $subscriber['email'] ) || ! isset( $subscriber['status'] ) ) {
113 return [];
114 }
115
116 try {
117 // Check if email is already a subscriber.
118 $existing_subscriber = $mailpoet->getSubscriber( $subscriber['email'] );
119 $table_name = $wpdb->prefix . 'mailpoet_subscribers';
120
121 if ( $existing_subscriber ) {
122 // Update existing subscriber status.
123 $get_subscriber = $mailpoet->getSubscriber( $subscriber['email'] );
124 if ( ! empty( $get_subscriber ) ) {
125 $subscriber_id = $get_subscriber['id'];
126 $wpdb->update( $table_name, [ 'status' => $subscriber['status'] ], [ 'id' => $subscriber_id ] );
127 } else {
128 // Throw error if subscriber not found.
129 return [
130 'status' => 'error',
131 'message' => 'Subscriber not found for entered email.',
132 ];
133 }
134 } else {
135 // Throw error if adds new email.
136 return [
137 'status' => 'error',
138 'message' => 'Add existing subscriber email.',
139 ];
140 }
141
142 $context = $subscriber;
143
144 return $context;
145 } catch ( \MailPoet\API\MP\v1\APIException $e ) {
146 throw new Exception( $e->getMessage() );
147 }
148 }
149 }
150
151 UpdateSubscriberStatus::get_instance();
152