PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 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 / buddyboss / Actions / unsubscribe-user-from-email-notifications.php
suretriggers / src / Integrations / buddyboss / Actions Last commit date
add-post-to-activity-feed.php 1 month ago add-post-to-group.php 1 month ago add-post-to-user-activity-feed.php 1 month ago add-user-to-group.php 11 months ago change-user-member-type.php 11 months ago create-group.php 11 months ago end-friendship-with-user.php 11 months ago follow-user.php 11 months ago get-forum-subscribers.php 11 months ago post-reply-topic-forum.php 11 months ago post-topic-in-forum.php 11 months ago remove-user-from-group.php 11 months ago send-friend-request-user.php 11 months ago send-message-to-group-members.php 11 months ago send-message-to-user.php 11 months ago send-notification-to-all-members-of-group.php 11 months ago set-user-extended-profile.php 11 months ago set-user-status.php 11 months ago stop-following-user.php 11 months ago subscribe-user-to-forum.php 11 months ago unsubscribe-user-from-email-notifications.php 2 months ago
unsubscribe-user-from-email-notifications.php
130 lines
1 <?php
2 /**
3 * UnsubscribeUserFromEmailNotifications.
4 * php version 5.6
5 *
6 * @category UnsubscribeUserFromEmailNotifications
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\BuddyBoss\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20
21 /**
22 * UnsubscribeUserFromEmailNotifications
23 *
24 * Disables all BuddyBoss email notifications for a user by setting the
25 * master 'enable_notification' user meta switch to 'no'. This is the
26 * same meta key checked by BuddyBoss's bb_is_notification_enabled() before
27 * dispatching any notification email, so setting it once blocks all of them.
28 *
29 * Intended use-case: SMTP bounce webhook → OttoKit automation → this action,
30 * so that users whose email addresses hard-bounce are silently opted out rather
31 * than continuing to accumulate bounce events.
32 *
33 * @category UnsubscribeUserFromEmailNotifications
34 * @package SureTriggers
35 * @author BSF <username@example.com>
36 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
37 * @link https://www.brainstormforce.com/
38 * @since 1.0.0
39 */
40 class UnsubscribeUserFromEmailNotifications extends AutomateAction {
41
42 /**
43 * Integration type.
44 *
45 * @var string
46 */
47 public $integration = 'BuddyBoss';
48
49 /**
50 * Action name.
51 *
52 * @var string
53 */
54 public $action = 'bb_unsubscribe_user_from_email_notifications';
55
56 use SingletonLoader;
57
58 /**
59 * Register the action.
60 *
61 * @param array $actions Registered actions.
62 *
63 * @return array
64 */
65 public function register( $actions ) {
66 $actions[ $this->integration ][ $this->action ] = [
67 'label' => __( 'Unsubscribe User from Email Notifications', 'suretriggers' ),
68 'action' => $this->action,
69 'function' => [ $this, 'action_listener' ],
70 ];
71
72 return $actions;
73 }
74
75 /**
76 * Action listener.
77 *
78 * Looks up the WordPress user by email address, then sets the BuddyBoss
79 * master email-notification opt-out flag on their profile.
80 *
81 * @param int $user_id Triggering user ID (may differ from target).
82 * @param int $automation_id Automation ID.
83 * @param array $fields Field definitions.
84 * @param array $selected_options Values chosen/mapped by the automation author.
85 *
86 * @return array Context on success, error array on failure.
87 *
88 * @throws Exception Exception.
89 */
90 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
91 if ( ! function_exists( 'bp_update_user_meta' ) ) {
92 return [
93 'status' => 'error',
94 'message' => __( 'Required BuddyBoss function bp_update_user_meta not found.', 'suretriggers' ),
95 ];
96 }
97
98 $user_email = isset( $selected_options['wp_user_email'] ) ? $selected_options['wp_user_email'] : '';
99
100 if ( empty( $user_email ) || ! is_email( $user_email ) ) {
101 return [
102 'status' => 'error',
103 'message' => __( 'A valid user email address is required.', 'suretriggers' ),
104 ];
105 }
106
107 $user = get_user_by( 'email', $user_email );
108
109 if ( ! $user ) {
110 return [
111 'status' => 'error',
112 'message' => __( 'No user found with the provided email address.', 'suretriggers' ),
113 ];
114 }
115
116 // Setting 'enable_notification' to 'no' acts as the master off-switch that
117 // BuddyBoss's bb_is_notification_enabled() checks before sending any email
118 // notification. All per-type preferences are preserved so the user can
119 // opt back in via their profile without losing their earlier settings.
120 bp_update_user_meta( $user->ID, 'enable_notification', 'no' );
121
122 $context = WordPress::get_user_context( $user->ID );
123 $context['email_notifications'] = 'disabled';
124
125 return $context;
126 }
127 }
128
129 UnsubscribeUserFromEmailNotifications::get_instance();
130