PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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 / voxel / actions / send-custom-in-app-notification.php
suretriggers / src / Integrations / voxel / actions Last commit date
add-post-profile-wall.php 11 months ago add-post-to-collection.php 11 months ago add-post-wall.php 11 months ago assign-listing-plan-to-user.php 6 months ago change-membership-plan.php 7 months ago claim-post.php 11 months ago delete-post.php 7 months ago delete-wall-post.php 11 months ago find-post.php 7 months ago follow-post.php 11 months ago get-address-by-coordinates.php 1 week ago get-coordinates-by-address.php 1 week ago get-member-by-email.php 10 months ago get-member-by-id.php 10 months ago get-member-by-profile-id.php 10 months ago get-post-by-id.php 11 months ago get-posts-by-voxel-field.php 11 months ago new-collection-post.php 1 year ago new-post.php 1 year ago new-profile.php 11 months ago remove-post-from-collection.php 11 months ago send-custom-in-app-notification.php 2 years ago send-direct-message.php 11 months ago send-email.php 11 months ago set-collection-post-verified.php 11 months ago set-custom-priority.php 11 months ago set-post-verified.php 11 months ago set-profile-verified.php 11 months ago update-collection-post.php 1 year ago update-post.php 11 months ago update-profile.php 11 months ago update-voxel-post-field.php 10 months ago update-voxel-taxonomy.php 10 months ago
send-custom-in-app-notification.php
178 lines
1 <?php
2 /**
3 * SendCustomInAppNotification.
4 * php version 5.6
5 *
6 * @category SendCustomInAppNotification
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\Voxel\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use Exception;
19
20 /**
21 * SendCustomInAppNotification
22 *
23 * @category SendCustomInAppNotification
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 SendCustomInAppNotification extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'Voxel';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'voxel_send_custom_in_app_notification';
45
46 use SingletonLoader;
47
48 /**
49 * Register action.
50 *
51 * @param array $actions action data.
52 * @return array
53 */
54 public function register( $actions ) {
55 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Send Custom In App Notification', 'suretriggers' ),
57 'action' => 'voxel_send_custom_in_app_notification',
58 'function' => [ $this, 'action_listener' ],
59 ];
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 * @throws Exception Exception.
73 *
74 * @return bool|array
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77 // Get the user ID.
78 $user_email = $selected_options['user_email'];
79
80 // If user ID is email, then get the user by email.
81 if ( is_email( $user_email ) ) {
82 $user = get_user_by( 'email', $user_email );
83 $user_email = $user ? $user->ID : 1;
84 }
85
86 // Get the notification message.
87 $message = $selected_options['message'];
88
89 // Get post id to link.
90 $post_id = isset( $selected_options['post_id'] ) ? (int) $selected_options['post_id'] : 0;
91
92 if ( ! class_exists( 'Voxel\Post' ) || ! class_exists( 'Voxel\User' ) || ! class_exists( 'Voxel\Notification' )
93 || ! function_exists( 'Voxel\get' ) || ! function_exists( 'Voxel\set' ) ) {
94 return false;
95 }
96
97 // Get the recipient.
98 $recipient = \Voxel\User::get( $user_email );
99
100 // Get the post to link.
101 $post = \Voxel\Post::force_get( $post_id );
102
103 $post_type = $post->post_type;
104 $notification = \Voxel\Notification::create(
105 [
106 'user_id' => $recipient->get_id(),
107 'subject' => 'SureTriggers: Notification created',
108 'type' => 'post-types/' . $post_type->wp_post_type->name . '/post:updated',
109 'details' => [
110 'post_id' => $post_id,
111 'destination' => 'post_author',
112 ],
113 ]
114 );
115
116 // Update the notification count for the user.
117 $recipient->update_notification_count();
118
119 // Get the voxel events.
120 $events = (array) \Voxel\get( 'events', [] );
121
122 $defaults = [
123 'post_author' => [
124 'label' => 'Notify user',
125 'recipient' => function( $event ) {
126 return $event->author;
127 },
128 'inapp' => [
129 'enabled' => false,
130 'subject' => $message,
131 'details' => function( $event ) {
132 return [
133 'post_id' => $event->post->get_id(),
134 ];
135 },
136 'apply_details' => function( $event, $details ) {
137 $event->prepare( $details['post_id'] );
138 },
139 'links_to' => function( $event ) {
140 return $event->post->get_link(); },
141 'image_id' => function( $event ) {
142 return $event->post->get_logo_id(); },
143 ],
144 'email' => [
145 'enabled' => false,
146 'subject' => 'Your post has been updated successfully.',
147 'message' => [
148 'html' => [
149 'subject' => 'Your post has been updated successfully.',
150 'body' => 'Your post <strong>@post(:title)</strong> has been updated successfully.
151 <a href="@post(:url)">Open</a>
152 HTML',
153 ],
154 ],
155 ],
156 ],
157 ];
158
159 // Add the event to the events array.
160 $events[ 'post-types/' . $post_type->wp_post_type->name . '/post:updated' ] = [
161 'notifications' => $defaults,
162 ];
163
164 // Set the events.
165 \Voxel\set( 'events', $events, false );
166
167 return [
168 'success' => true,
169 'message' => esc_attr__( 'Custom In-app notification sent successfully', 'suretriggers' ),
170 'user_id' => $user_email,
171 'notification' => $message,
172 ];
173 }
174
175 }
176
177 SendCustomInAppNotification::get_instance();
178