PluginProbe
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI / 6.0.4
AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI v6.0.4
6.0.4 6.0.3 6.0.2 6.0.1 6.0.0 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0 5.7.9.2 5.7.9.1 5.7.8 5.7.9 5.7.6 5.7.7 5.7.5 5.7.4 5.7.3 5.7.2 5.7.1 trunk 5.6.0 All 35 releases
automatorwp / integrations / gamipress / includes / triggers / earn-achievement.php

earn-achievement.php in AutomatorWP – No-Code Workflow Automation, Integration & Webhooks Plugin, now with AI 6.0.4, at integrations/gamipress/includes/triggers/earn-achievement.php

117 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Earn Achievement
4 *
5 * @package AutomatorWP\Integrations\GamiPress\Triggers\Earn_Achievement
6 * @author AutomatorWP <[email protected]>, Ruben Garcia <[email protected]>
7 * @since 1.0.0
8 */
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 class AutomatorWP_GamiPress_Earn_Achievement extends AutomatorWP_Integration_Trigger {
13
14 public $integration = 'gamipress';
15 public $trigger = 'gamipress_earn_achievement';
16
17 /**
18 * Register the trigger
19 *
20 * @since 1.0.0
21 */
22 public function register() {
23
24 automatorwp_register_trigger( $this->trigger, array(
25 'integration' => $this->integration,
26 'label' => __( 'User earns an achievement', 'automatorwp' ),
27 'select_option' => __( 'User earns <strong>an achievement</strong>', 'automatorwp' ),
28 /* translators: %1$s: Post title. %2$s: Number of times. */
29 'edit_label' => sprintf( __( 'User earns %1$s %2$s time(s)', 'automatorwp' ), '{post}', '{times}' ),
30 /* translators: %1$s: Post title. */
31 'log_label' => sprintf( __( 'User earns %1$s', 'automatorwp' ), '{post}' ),
32 'action' => 'gamipress_award_achievement',
33 'function' => array( $this, 'listener' ),
34 'priority' => 10,
35 'accepted_args' => 5,
36 'options' => array(
37 'post' => automatorwp_gamipress_utilities_post_option( array(
38 'name' => __( 'Achievement:', 'automatorwp' ),
39 'option_none_label' => __( 'any achievement', 'automatorwp' ),
40 'post_type_cb' => 'gamipress_get_achievement_types_slugs'
41 ) ),
42 'times' => automatorwp_utilities_times_option(),
43 ),
44 'tags' => array_merge(
45 automatorwp_utilities_post_tags(),
46 automatorwp_utilities_times_tag()
47 )
48 ) );
49
50 }
51
52 /**
53 * Trigger listener
54 *
55 * @since 1.0.0
56 *
57 * @param int $user_id The user ID
58 * @param int $achievement_id The achievement ID
59 * @param string $trigger The trigger
60 * @param int $site_id Site ID
61 * @param array $args Event arguments
62 */
63 public function listener( $user_id, $achievement_id, $trigger, $site_id, $args ) {
64
65 $post = get_post( $achievement_id );
66
67 // Bail if not post instanced
68 if( ! $post instanceof WP_Post ) {
69 return;
70 }
71
72 // Bail if post type is not an achievement
73 if( ! in_array( $post->post_type, gamipress_get_achievement_types_slugs() ) ) {
74 return;
75 }
76
77 automatorwp_trigger_event( array(
78 'trigger' => $this->trigger,
79 'user_id' => $user_id,
80 'post_id' => $post->ID,
81 ) );
82
83 }
84
85 /**
86 * User deserves check
87 *
88 * @since 1.0.0
89 *
90 * @param bool $deserves_trigger True if user deserves trigger, false otherwise
91 * @param stdClass $trigger The trigger object
92 * @param int $user_id The user ID
93 * @param array $event Event information
94 * @param array $trigger_options The trigger's stored options
95 * @param stdClass $automation The trigger's automation object
96 *
97 * @return bool True if user deserves trigger, false otherwise
98 */
99 public function user_deserves_trigger( $deserves_trigger, $trigger, $user_id, $event, $trigger_options, $automation ) {
100
101 // Don't deserve if post is not received
102 if( ! isset( $event['post_id'] ) ) {
103 return false;
104 }
105
106 // Don't deserve if post doesn't match with the trigger option
107 if( ! automatorwp_posts_matches( $event['post_id'], $trigger_options['post'] ) ) {
108 return false;
109 }
110
111 return $deserves_trigger;
112
113 }
114
115 }
116
117 new AutomatorWP_GamiPress_Earn_Achievement();