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 / fluentcommunity / actions / create-new-post-feed.php
suretriggers / src / Integrations / fluentcommunity / actions Last commit date
add-user-to-course.php 1 year ago add-user-to-space.php 1 year ago create-lesson-in-course.php 10 months ago create-new-post-feed.php 1 year ago fetch-members.php 6 months ago get-all-courses-list.php 1 year ago get-all-spaces-list.php 1 year ago like-post.php 6 months ago list-course-sections.php 10 months ago list-posts-in-space.php 6 months ago remove-user-from-course.php 1 year ago remove-user-from-space.php 1 year ago reply-to-post.php 7 months ago
create-new-post-feed.php
175 lines
1 <?php
2 /**
3 * CreateNewPostFeed.
4 * php version 5.6
5 *
6 * @category CreateNewPostFeed
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\FluentCommunity\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19 use FluentCommunity\Modules\Course\Services\CourseHelper;
20 use FluentCommunity\App\Services\FeedsHelper;
21
22 /**
23 * CreateNewPostFeed
24 *
25 * @category CreateNewPostFeed
26 * @package SureTriggers
27 */
28 class CreateNewPostFeed extends AutomateAction {
29
30 /**
31 * Integration type.
32 *
33 * @var string
34 */
35 public $integration = 'FluentCommunity';
36
37 /**
38 * Action name.
39 *
40 * @var string
41 */
42 public $action = 'fc_create_new_post_feed';
43
44 use SingletonLoader;
45
46 /**
47 * Register an action.
48 *
49 * @param array $actions Actions array.
50 *
51 * @return array
52 */
53 public function register( $actions ) {
54 $actions[ $this->integration ][ $this->action ] = [
55 'label' => __( 'Create New Post in Feed', 'suretriggers' ),
56 'action' => $this->action,
57 'function' => [ $this, 'action_listener' ],
58 ];
59
60 return $actions;
61 }
62
63 /**
64 * Action listener.
65 *
66 * @param int $user_id User ID.
67 * @param int $automation_id Automation ID.
68 * @param array $fields Fields.
69 * @param array $selected_options Selected options.
70 *
71 * @return array|void
72 *
73 * @throws Exception Exception.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 // Sanitize inputs.
77 $space_id = isset( $selected_options['space_id'] ) ? (int) sanitize_text_field( $selected_options['space_id'] ) : 0;
78 $user_email = isset( $selected_options['user_email'] ) ? sanitize_email( $selected_options['user_email'] ) : '';
79 $title = isset( $selected_options['title'] ) ? sanitize_text_field( $selected_options['title'] ) : '';
80 $message = isset( $selected_options['message'] ) ? sanitize_textarea_field( $selected_options['message'] ) : '';
81 $media_url = isset( $selected_options['media_url'] ) ? $selected_options['media_url'] : '';
82
83 // Validate user ID.
84 $user = get_user_by( 'email', $user_email );
85
86 if ( ! $user ) {
87 return [
88 'status' => 'error',
89 'message' => 'User not found with the provided email.',
90 ];
91 }
92
93 // Validate space ID.
94 if ( ! $this->is_valid_space( $space_id ) ) {
95 return [
96 'status' => 'error',
97 'message' => 'Invalid Space ID.',
98 ];
99 }
100
101 $feed_data = [
102 'message' => $message,
103 'title' => $title,
104 'space_id' => (int) $space_id,
105 'user_id' => $user->ID,
106 ];
107
108 if ( ! empty( $media_url ) ) {
109 $supported_images = [ '.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp', '.svg' ];
110 if ( in_array( strtolower( substr( $media_url, -4 ) ), $supported_images, true ) ) {
111 $feed_data['message'] = $message . "\n\n ![]($media_url)";
112 } else {
113 $feed_data['media'] = [
114 'url' => $media_url,
115 'type' => 'oembed',
116 ];
117 }
118 }
119
120 $feed = null;
121 if ( class_exists( '\FluentCommunity\App\Services\FeedsHelper' ) ) {
122 $feed = FeedsHelper::createFeed( $feed_data );
123 }
124
125 if ( is_wp_error( $feed ) ) {
126 return [
127 'status' => 'error',
128 'message' => $feed->get_error_message(),
129 ];
130 }
131
132 $topic_id = [];
133 $topic_name = [];
134 // Attach topics to the feed.
135 if ( isset( $selected_options['topic_ids'] ) && is_array( $selected_options['topic_ids'] ) && ! empty( $selected_options['topic_ids'] ) && is_object( $feed ) && method_exists( $feed, 'attachTopics' ) ) {
136 foreach ( $selected_options['topic_ids'] as $topic ) {
137 $topic_id[] = $topic['value'];
138 $topic_name[] = esc_html( $topic['label'] );
139 }
140
141 $feed->attachTopics( $topic_id );
142 }
143
144
145 return [
146 'status' => 'success',
147 'response' => 'Post created in feed successfully',
148 'space_id' => $space_id,
149 'user_id' => $user->ID,
150 'feed_id' => $feed->id,
151 'title' => $title,
152 'message' => $message,
153 'feed_url' => $feed->getPermalink(),
154 'topics' => $topic_id,
155 ];
156 }
157
158
159 /**
160 * Check if space ID is valid.
161 *
162 * @param int $space_id Space ID.
163 *
164 * @return bool
165 */
166 private function is_valid_space( $space_id ) {
167 global $wpdb;
168 $space = $wpdb->get_row( $wpdb->prepare( "SELECT ID FROM {$wpdb->prefix}fcom_spaces WHERE ID = %d", $space_id ) );
169 return (bool) $space;
170 }
171
172 }
173
174 CreateNewPostFeed::get_instance();
175