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 / SureDash / actions / suredash-add-comment-to-post.php
suretriggers / src / Integrations / SureDash / actions Last commit date
suredash-add-comment-to-post.php 4 months ago suredash-create-event.php 1 month ago suredash-fetch-post.php 4 months ago
suredash-add-comment-to-post.php
190 lines
1 <?php
2 /**
3 * SureDashAddCommentToPost.
4 * php version 5.6
5 *
6 * @category SureDashAddCommentToPost
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\SureDash\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use Exception;
19
20 /**
21 * SureDashAddCommentToPost
22 *
23 * @category SureDashAddCommentToPost
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 SureDashAddCommentToPost extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'SureDash';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'suredash_add_comment_to_post';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 * @return array
53 */
54 public function register( $actions ) {
55 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Add Comment to Post', 'suretriggers' ),
57 'action' => 'suredash_add_comment_to_post',
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 * @return array|bool
73 * @throws Exception Error.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 if ( ! defined( 'SUREDASHBOARD_FEED_POST_TYPE' ) ) {
77 return [
78 'status' => 'error',
79 'message' => __( 'SureDash plugin is not active or properly configured.', 'suretriggers' ),
80 ];
81 }
82
83 $post_id = ! empty( $selected_options['post_id'] ) ? absint( $selected_options['post_id'] ) : 0;
84 $comment_content = ! empty( $selected_options['comment_content'] ) ? $selected_options['comment_content'] : '';
85
86 if ( empty( $post_id ) ) {
87 return [
88 'status' => 'error',
89 'message' => __( 'Post ID is required.', 'suretriggers' ),
90 ];
91 }
92
93 if ( empty( $comment_content ) ) {
94 return [
95 'status' => 'error',
96 'message' => __( 'Comment content is required.', 'suretriggers' ),
97 ];
98 }
99
100 $post = get_post( $post_id );
101
102 if ( ! $post instanceof \WP_Post ) {
103 return [
104 'status' => 'error',
105 'message' => __( 'Post not found with the provided ID.', 'suretriggers' ),
106 ];
107 }
108
109 // Resolve comment author from email, automation user, or current user.
110 $comment_author = '';
111 $comment_author_email = '';
112 $comment_user_id = 0;
113
114 if ( ! empty( $selected_options['comment_author_email'] ) ) {
115 $author_email = sanitize_email( $selected_options['comment_author_email'] );
116 $author_user = get_user_by( 'email', $author_email );
117
118 if ( $author_user ) {
119 $comment_author = sanitize_text_field( $author_user->display_name );
120 $comment_author_email = $author_user->user_email;
121 $comment_user_id = $author_user->ID;
122 } else {
123 $comment_author_email = $author_email;
124 $comment_author = $author_email;
125 }
126 } else {
127 $fallback_user_id = $user_id ? $user_id : get_current_user_id();
128 $fallback_user = $fallback_user_id ? get_user_by( 'id', $fallback_user_id ) : false;
129
130 if ( $fallback_user ) {
131 $comment_author = sanitize_text_field( $fallback_user->display_name );
132 $comment_author_email = $fallback_user->user_email;
133 $comment_user_id = $fallback_user->ID;
134 }
135 }
136
137 if ( empty( $comment_author_email ) ) {
138 return [
139 'status' => 'error',
140 'message' => __( 'Comment author email is required. Please provide a valid email or ensure a logged-in user exists.', 'suretriggers' ),
141 ];
142 }
143
144 $comment_data = [
145 'comment_post_ID' => $post_id,
146 'comment_content' => wp_kses_post( $comment_content ),
147 'comment_author' => $comment_author,
148 'comment_author_email' => $comment_author_email,
149 'user_id' => $comment_user_id,
150 'comment_approved' => 1,
151 ];
152
153 $comment_id = wp_insert_comment( $comment_data );
154
155 if ( ! $comment_id ) {
156 $this->set_error(
157 [
158 'msg' => __( 'Failed to add comment to the post.', 'suretriggers' ),
159 ]
160 );
161 return false;
162 }
163
164 $comment = get_comment( $comment_id );
165
166 if ( ! $comment instanceof \WP_Comment ) {
167 return [
168 'status' => 'error',
169 'message' => __( 'Comment was created but could not be retrieved.', 'suretriggers' ),
170 ];
171 }
172
173 return [
174 'status' => 'success',
175 'message' => __( 'Comment added to post successfully.', 'suretriggers' ),
176 'comment_id' => $comment->comment_ID,
177 'comment_content' => $comment->comment_content,
178 'comment_author' => $comment->comment_author,
179 'comment_author_email' => $comment->comment_author_email,
180 'comment_date' => $comment->comment_date,
181 'comment_approved' => $comment->comment_approved,
182 'post_id' => $post_id,
183 'post_title' => $post->post_title,
184 'post_permalink' => get_permalink( $post_id ),
185 ];
186 }
187 }
188
189 SureDashAddCommentToPost::get_instance();
190