PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / trunk
OttoKit: All-in-One Automation Platform vtrunk
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 / learndash-achievements / actions / award-achievement-to-user.php
suretriggers / src / Integrations / learndash-achievements / actions Last commit date
award-achievement-to-user.php 11 months ago
award-achievement-to-user.php
150 lines
1 <?php
2 /**
3 * AwardAchievementToUser.
4 * php version 5.6
5 *
6 * @category AwardAchievementToUser
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\LearnDashAchievements\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use LearnDash\Achievements\Database;
20 use Exception;
21
22 /**
23 * AwardAchievementToUser
24 *
25 * @category AwardAchievementToUser
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 AwardAchievementToUser extends AutomateAction {
33
34
35 /**
36 * Integration type.
37 *
38 * @var string
39 */
40 public $integration = 'LearnDashAchievements';
41
42 /**
43 * Action name.
44 *
45 * @var string
46 */
47 public $action = 'learndash_award_achievement_to_user';
48
49 use SingletonLoader;
50
51 /**
52 * Register an action.
53 *
54 * @param array $actions actions.
55 * @return array
56 */
57 public function register( $actions ) {
58 $actions[ $this->integration ][ $this->action ] = [
59 'label' => __( 'Award Achievement to User', 'suretriggers' ),
60 'action' => $this->action,
61 'function' => [ $this, 'action_listener' ],
62 ];
63 return $actions;
64 }
65
66 /**
67 * Action listener.
68 *
69 * @param int $user_id user id.
70 * @param int $automation_id automation_id.
71 * @param array $fields template fields.
72 * @param array $selected_options saved template data.
73 * @throws Exception Exception.
74 *
75 * @return bool|array
76 */
77 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
78
79 $award_id = $selected_options['achievement_id'];
80
81 $user_email = $selected_options['wp_user_email'];
82
83 $award = get_post( $award_id );
84
85 if ( is_email( $user_email ) ) {
86 $user = get_user_by( 'email', $user_email );
87
88 if ( $user ) {
89 $user_id = $user->ID;
90 if ( class_exists( '\LearnDash\Achievements\Achievement' ) ) {
91 /**
92 *
93 * Ignore line
94 *
95 * @phpstan-ignore-next-line
96 */
97 if ( method_exists( '\LearnDash\Achievements\Achievement', 'store' ) ) {
98 $stored = \LearnDash\Achievements\Achievement::store( $award, $user_id );
99 if ( false === $stored ) {
100 return [
101 'status' => 'error',
102 'message' => 'Something went wrong.',
103 ];
104 }
105 $context = WordPress::get_user_context( $user_id );
106 if ( class_exists( '\Database' ) ) {
107 $achievements = \Database::get_user_achievements( $user_id );
108 foreach ( $achievements as $value ) {
109 foreach ( $value as $key => $val ) {
110 $context['achievement'][ $key ] = $val;
111 if ( 'post_id' == $key ) {
112 $context['achievement_title'] = get_the_title( $val );
113 }
114 }
115 }
116 }
117 return $context;
118 }
119 return [
120 'status' => 'error',
121 'message' => 'Store method not exists.',
122 ];
123
124 } else {
125 return [
126 'status' => 'error',
127 'message' => 'Achievement class not found.',
128 ];
129 }
130 } else {
131 return [
132 'status' => 'error',
133 'message' => 'User not found.',
134 ];
135 }
136 } else {
137 $error = [
138 'status' => esc_attr__( 'Error', 'suretriggers' ),
139 'response' => esc_attr__( 'Please enter valid email address.', 'suretriggers' ),
140
141 ];
142
143 return $error;
144 }
145 }
146
147 }
148
149 AwardAchievementToUser::get_instance();
150