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 / voxel / actions / add-post-to-collection.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 11 months ago get-coordinates-by-address.php 11 months 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
add-post-to-collection.php
142 lines
1 <?php
2 /**
3 * AddPostToCollection.
4 * php version 5.6
5 *
6 * @category AddPostToCollection
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 * AddPostToCollection
22 *
23 * @category AddPostToCollection
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 AddPostToCollection 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_add_post_to_collection';
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' => __( 'Add Post to Collection', 'suretriggers' ),
57 'action' => 'voxel_add_post_to_collection',
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 $collection_id = (int) $selected_options['collection_post_id'];
78 $post_id = $selected_options['post_id'];
79
80 if ( ! class_exists( 'Voxel\Post' ) ) {
81 return false;
82 }
83
84 // In case multiple posts, explode the post ID.
85 $post_ids = explode( ',', $post_id );
86 $items = [];
87 // Loop through the post IDs.
88 foreach ( $post_ids as $c_post_id ) {
89 // Get the post.
90 $post = \Voxel\Post::force_get( $c_post_id );
91 if ( ! $post ) {
92 return [
93 'status' => 'error',
94 'message' => 'Post not found',
95 ];
96 }
97
98 // Get the collection.
99 $collection = \Voxel\Post::force_get( $collection_id );
100 if ( ! (
101 $collection
102 && $collection->post_type
103 && $collection->get_status() === 'publish'
104 && $collection->post_type->get_key() === 'collection'
105 ) ) {
106 return [
107 'status' => 'error',
108 'message' => 'Collection not found',
109 ];
110 }
111
112 // Get the items field.
113 $field = $collection->get_field( 'items' );
114 $items = $field->get_value();
115 // If items are not available, then set as empty array.
116 if ( ! $items ) {
117 $items = [];
118 }
119 // If the post is already in the collection, then skip.
120 if ( in_array( $c_post_id, $items, true ) ) {
121 continue;
122 }
123 // Add the post to the items.
124 $items[] = (int) $c_post_id;
125 $items = array_unique( $items );
126 $field->set_value( $items );
127 }
128
129 return [
130 'success' => true,
131 'message' => esc_attr__( 'Post added to collection successfully', 'suretriggers' ),
132 'post_id' => $post_id,
133 'collection_id' => $collection_id,
134 'collection_url' => get_permalink( $collection_id ),
135 'collection_items' => wp_json_encode( $items ),
136 ];
137 }
138
139 }
140
141 AddPostToCollection::get_instance();
142