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 / suredash / triggers / suredash-post-liked.php
suretriggers / src / Integrations / suredash / triggers Last commit date
suredash-comment-deleted.php 8 months ago suredash-comment-edited.php 8 months ago suredash-comment-submitted.php 8 months ago suredash-course-completed.php 10 months ago suredash-item-bookmarked.php 8 months ago suredash-post-deleted.php 8 months ago suredash-post-edited.php 8 months ago suredash-post-liked.php 10 months ago suredash-post-submitted.php 8 months ago suredash-space-deleted.php 8 months ago
suredash-post-liked.php
147 lines
1 <?php
2 /**
3 * SureDashPostLiked trigger for handling post like events.
4 * php version 5.6
5 *
6 * @category SureDashPostLiked
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\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WordPress\WordPress;
18 use SureTriggers\Traits\SingletonLoader;
19 use WP_REST_Request;
20 use WP_REST_Server;
21
22 /**
23 * SureDashPostLiked
24 *
25 * @category SureDashPostLiked
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 */
32 class SureDashPostLiked {
33
34 /**
35 * Integration type.
36 *
37 * @var string
38 */
39 public $integration = 'SureDash';
40
41 /**
42 * Trigger name.
43 *
44 * @var string
45 */
46 public $trigger = 'suredash_post_liked';
47
48 use SingletonLoader;
49
50 /**
51 * Constructor
52 *
53 * @since 1.0.0
54 */
55 public function __construct() {
56 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
57 }
58
59 /**
60 * Register a trigger.
61 *
62 * @param array $triggers triggers.
63 * @return array
64 */
65 public function register( $triggers ) {
66 $triggers[ $this->integration ][ $this->trigger ] = [
67 'label' => __( 'User likes a post', 'suretriggers' ),
68 'action' => 'rest_pre_dispatch',
69 'function' => [ $this, 'trigger_listener' ],
70 'priority' => 10,
71 'accepted_args' => 3,
72 ];
73 return $triggers;
74 }
75
76 /**
77 * Trigger listener for post like events.
78 *
79 * @param mixed $result Response to replace the requested version with.
80 * @param WP_REST_Server $server Server instance.
81 * @param WP_REST_Request $request Request used to generate the response.
82 * @since 1.0.0
83 *
84 * @return mixed
85 */
86 public function trigger_listener( $result, WP_REST_Server $server, WP_REST_Request $request ) {
87 // Check if this is a SureDash entity-reaction endpoint.
88 if ( false === strpos( $request->get_route(), 'entity-reaction' ) ) {
89 return $result;
90 }
91
92 $params = $request->get_params();
93
94 // Check if this is a post like action.
95 if ( empty( $params['entity'] ) || 'post' !== $params['entity'] ) {
96 return $result;
97 }
98
99 $entity_id = ! empty( $params['entity_id'] ) ? absint( $params['entity_id'] ) : 0;
100 $user_id = get_current_user_id();
101
102 if ( ! $entity_id || ! $user_id ) {
103 return $result;
104 }
105
106 // Get current likes before the action.
107 $current_likes = get_post_meta( $entity_id, 'portal_post_likes', true );
108 $current_likes = is_array( $current_likes ) ? $current_likes : [];
109 $user_already_liked = in_array( $user_id, $current_likes, true );
110
111 // Use shutdown hook to check final like status after processing.
112 add_action(
113 'shutdown',
114 function() use ( $entity_id, $user_id, $user_already_liked ) {
115 $new_likes = get_post_meta( $entity_id, 'portal_post_likes', true );
116 $new_likes = is_array( $new_likes ) ? $new_likes : [];
117 $user_now_likes = in_array( $user_id, $new_likes, true );
118
119 // If user didn't like before but likes now, trigger the event.
120 if ( ! $user_already_liked && $user_now_likes ) {
121 $post = get_post( $entity_id );
122 if ( ! $post instanceof \WP_Post ) {
123 return;
124 }
125
126 $context = WordPress::get_user_context( $user_id );
127 $context['post_id'] = $entity_id;
128 $context['post_title'] = $post->post_title;
129 $context['post_author'] = $post->post_author;
130 $context['suredash_post'] = $entity_id;
131
132 AutomationController::sure_trigger_handle_trigger(
133 [
134 'trigger' => $this->trigger,
135 'context' => $context,
136 ]
137 );
138 }
139 }
140 );
141
142 return $result;
143 }
144 }
145
146 SureDashPostLiked::get_instance();
147