PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.3
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.3
8.0.4 8.0.3 8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 7.8.8 7.8.7 All 46 releases
gamipress / integrations / wp-ulike / includes / rules-engine.php

rules-engine.php in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI 8.0.3, at integrations/wp-ulike/includes/rules-engine.php

114 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Rules Engine
4 *
5 * @package GamiPress\WP_Ulike\Rules_Engine
6 * @since 1.0.0
7 */
8 // Exit if accessed directly
9 if( !defined( 'ABSPATH' ) ) exit;
10
11 /**
12 * Checks if given requirement meets the requirements of triggered event
13 *
14 * @since 1.2.5
15 *
16 * @param int $requirement_id
17 * @param string $trigger
18 * @param array $args
19 *
20 * @return bool
21 */
22 function gamipress_wp_ulike_check_if_meets_requirements( $requirement_id, $trigger, $args ) {
23
24 // Initialize the return value
25 $return = true;
26
27 if( $trigger === 'gamipress_wp_ulike_post_type_like' ) {
28
29 $post_type = $args[2];
30
31 $required_post_type = get_post_meta( $requirement_id, '_gamipress_wp_ulike_post_type', true );
32
33 // True if post type is the same than post type required
34 $return = (bool) ( $post_type === $required_post_type );
35
36 }
37
38 if( $trigger === 'gamipress_wp_ulike_get_post_type_like') {
39
40 $post_type = $args[3];
41
42 $required_post_type = get_post_meta( $requirement_id, '_gamipress_wp_ulike_post_type', true );
43
44 // True if post type is the same than post type required
45 $return = (bool) ( $post_type === $required_post_type );
46 }
47
48 return $return;
49
50 }
51
52 /**
53 * Filter triggered requirements to reduce the number of requirements to check by the awards engine
54 *
55 * @since 1.2.5
56 *
57 * @param array $triggered_requirements
58 * @param integer $user_id
59 * @param string $trigger
60 * @param integer $site_id
61 * @param array $args
62 *
63 * @return array
64 */
65 function gamipress_wp_ulike_filter_triggered_requirements( $triggered_requirements, $user_id, $trigger, $site_id, $args ) {
66
67 $new_requirements = array();
68
69 foreach( $triggered_requirements as $i => $requirement ) {
70
71 // Skip item
72 if( ! gamipress_wp_ulike_check_if_meets_requirements( $requirement->ID, $trigger, $args ) ) {
73 continue;
74 }
75
76 // Keep the requirement on the list of requirements to check by the awards engine
77 $new_requirements[] = $requirement;
78
79 }
80
81 return $new_requirements;
82
83 }
84 add_filter( 'gamipress_get_triggered_requirements', 'gamipress_wp_ulike_filter_triggered_requirements', 20, 5 );
85
86 /**
87 * Checks if an user is allowed to work on a given requirement related to a minimum of score
88 *
89 * @since 1.0.0
90 *
91 * @param bool $return The default return value
92 * @param int $user_id The given user's ID
93 * @param int $requirement_id The given requirement's post ID
94 * @param string $trigger The trigger triggered
95 * @param int $site_id The site id
96 * @param array $args Arguments of this trigger
97 *
98 * @return bool True if user has access to the requirement, false otherwise
99 */
100 function gamipress_wp_ulike_user_has_access_to_achievement( $return = false, $user_id = 0, $requirement_id = 0, $trigger = '', $site_id = 0, $args = array() ) {
101
102 // If we're not working with a requirement, bail here
103 if ( ! in_array( get_post_type( $requirement_id ), gamipress_get_requirement_types_slugs() ) )
104 return $return;
105
106 // Check if user has access to the achievement ($return will be false if user has exceed the limit or achievement is not published yet)
107 if( ! $return )
108 return $return;
109
110 // Send back our eligibility
111 return gamipress_wp_ulike_check_if_meets_requirements( $requirement_id, $trigger, $args );
112
113 }
114 add_filter( 'user_has_access_to_achievement', 'gamipress_wp_ulike_user_has_access_to_achievement', 10, 6 );