PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
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 / bbpress / actions / subscribeuserinforum.php
suretriggers / src / Integrations / bbpress / actions Last commit date
addreplyintopic.php 10 months ago addtopicinforum.php 10 months ago subscribeuserinforum.php 10 months ago
subscribeuserinforum.php
145 lines
1 <?php
2 /**
3 * SubscribeUserInForum.
4 * php version 5.6
5 *
6 * @category AddTopicInForum
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 use SureTriggers\Integrations\AutomateAction;
15 use SureTriggers\Traits\SingletonLoader;
16
17 /**
18 * SubscribeUserInForum
19 *
20 * @category AddTopicInForum
21 * @package SureTriggers
22 * @author BSF <username@example.com>
23 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
24 * @link https://www.brainstormforce.com/
25 * @since 1.0.0
26 */
27 class SubscribeUserInForum extends AutomateAction {
28
29 /**
30 * Integration type.
31 *
32 * @var string
33 */
34 public $integration = 'bbPress';
35
36 /**
37 * Action name.
38 *
39 * @var string
40 */
41 public $action = 'bbp_user_subscribe_in_forum';
42
43 use SingletonLoader;
44
45 /**
46 * Register a action.
47 *
48 * @param array $actions actions.
49 * @return array
50 */
51 public function register( $actions ) {
52 $actions[ $this->integration ][ $this->action ] = [
53 'label' => __( 'Subscribe User In Forum', 'suretriggers' ),
54 'action' => $this->action,
55 'function' => [ $this, 'action_listener' ],
56 ];
57 return $actions;
58 }
59
60 /**
61 * Action listener.
62 *
63 * @param int $user_id user_id.
64 * @param int $automation_id automation_id.
65 * @param array $fields fields.
66 * @param array $selected_options selectedOptions.
67 * @psalm-suppress UndefinedMethod
68 * @throws Exception Exception.
69 *
70 * @return array|bool|void
71 */
72 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
73 $user_id = $selected_options['wp_user_email'];
74 $forums = $selected_options['forum'];
75 if ( is_email( $user_id ) ) {
76 $user = get_user_by( 'email', $user_id );
77 if ( $user ) {
78 $user_id = $user->ID;
79 }
80 } else {
81 $error = [
82 'status' => esc_attr__( 'Error', 'suretriggers' ),
83 'response' => esc_attr__( 'Please enter valid email address.', 'suretriggers' ),
84 ];
85
86 return $error;
87 }
88
89
90 if ( function_exists( 'bbp_is_subscriptions_active' ) && bbp_is_subscriptions_active() === false ) {
91 return [
92 'status' => 'error',
93 'message' => __( 'Required functions not found.', 'suretriggers' ),
94 ];
95 }
96 $forum_ids = [];
97
98 if ( is_array( $forums ) ) {
99 foreach ( $forums as $forum ) {
100 $forum_ids[] = $forum['value'];
101 }
102 } else {
103 $forums = explode( ',', $forums );
104 foreach ( $forums as $forum ) {
105 $forum_ids[] = $forum;
106 }
107 }
108
109 if ( function_exists( 'bbp_is_user_subscribed' ) && ! empty( $forum_ids ) ) {
110 foreach ( $forum_ids as $forum_id ) {
111 $is_subscription = bbp_is_user_subscribed( $user_id, $forum_id );
112 $success = false;
113
114 if ( true === $is_subscription ) {
115 return [
116 'status' => 'error',
117 'message' => 'The user is already subscribed to the specified forum',
118 ];
119 } elseif ( function_exists( 'bbp_add_user_subscription' ) ) {
120 $success = bbp_add_user_subscription( $user_id, $forum_id );
121 // Do additional subscriptions actions.
122 do_action( 'bbp_subscriptions_handler', $success, $user_id, $forum_id, 'bbp_subscribe' );
123 }
124
125 if ( false === $success && false === $is_subscription ) {
126 return [
127 'status' => 'error',
128 'message' => 'There was a problem subscribing to that forum!',
129 ];
130 } else {
131 $context = [
132 'user_email' => $selected_options['wp_user_email'],
133 'forum_title' => get_the_title( $forum_id ),
134 'forum_link' => get_the_permalink( $forum_id ),
135 ];
136
137 return $context;
138 }
139 }
140 }
141 }
142 }
143
144 SubscribeUserInForum::get_instance();
145