PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 7.9.7
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v7.9.7
8.0.5 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 All 47 releases
gamipress / integrations / easy-digital-downloads / includes / admin / recount-activity.php

recount-activity.php in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI 7.9.7, at integrations/easy-digital-downloads/includes/admin/recount-activity.php

259 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Recount Activity
4 *
5 * @package GamiPress\Easy_Digital_Downloads\Admin\Recount_Activity
6 * @since 1.0.3
7 */
8 // Exit if accessed directly
9 if( !defined( 'ABSPATH' ) ) exit;
10
11 /**
12 * Add recountable options to the Recount Activity Tool
13 *
14 * @since 1.0.3
15 *
16 * @param array $recountable_activity_triggers
17 *
18 * @return array
19 */
20 function gamipress_edd_recountable_activity_triggers( $recountable_activity_triggers ) {
21
22 // Easy Digital Downloads
23 $recountable_activity_triggers[__( 'Easy Digital Downloads', 'gamipress' )] = array(
24 'edd_purchases' => __( 'Recount purchases', 'gamipress' ),
25 );
26
27 // EDD FES
28 if( class_exists('EDD_Front_End_Submissions') ) {
29
30 // Update purchases label with vendor sales
31 $recountable_activity_triggers[__( 'Easy Digital Downloads', 'gamipress' )]['edd_purchases'] = __( 'Recount purchases and vendor sales', 'gamipress' );
32
33 $recountable_activity_triggers[__( 'EDD - FrontEnd Submissions', 'gamipress' )] = array(
34 'edd_approved_downloads' => __( 'Recount vendor approved downloads', 'gamipress' ),
35 );
36 }
37
38 // EDD Wish Lists
39 if( class_exists('EDD_Wish_Lists') ) {
40 $recountable_activity_triggers[__( 'EDD - Wish Lists', 'gamipress' )] = array(
41 'edd_wish_lists' => __( 'Recount wish lists', 'gamipress' ),
42 );
43 }
44
45 // EDD Downloads Lists
46 if( class_exists('EDD_Downloads_Lists') ) {
47
48 // Update wish list label with downloads list
49 $recountable_activity_triggers[__( 'EDD - Wish Lists', 'gamipress' )]['edd_wish_lists'] = __( 'Recount wish lists and download lists', 'gamipress' );
50 }
51
52 // EDD Reviews
53 if( class_exists('EDD_Reviews') ) {
54 $triggers[__( 'EDD - Reviews', 'gamipress' )] = array(
55 'edd_reviews' => __( 'Recount reviews', 'gamipress' ),
56 );
57 }
58
59 // EDD Download Pages
60 if( class_exists('EDD_Download_Pages') ) {
61
62 // EDD FrontEnd Submissions + EDD Download Pages
63 if( class_exists('EDD_FES') ) {
64 $recountable_activity_triggers[__( 'EDD - Download Pages', 'gamipress' )]['edd_approved_download_pages'] = __( 'Recount vendor approved download pages', 'gamipress' );
65 }
66 }
67
68 // EDD Social Discounts
69 if( class_exists('EDD_Social_Discounts') ) {
70 // Not recountable
71 }
72
73 return $recountable_activity_triggers;
74
75 }
76 add_filter( 'gamipress_recountable_activity_triggers', 'gamipress_edd_recountable_activity_triggers' );
77
78 /**
79 * Recount purchases
80 *
81 * @since 1.0.3
82 *
83 * @param array $response
84 *
85 * @return array $response
86 */
87 function gamipress_edd_activity_recount_purchases( $response ) {
88
89 global $wpdb;
90
91 // Get all published payments
92 $payments = $wpdb->get_results( $wpdb->prepare(
93 "SELECT p.ID FROM $wpdb->posts AS p WHERE p.post_type = %s AND p.post_status = 'publish'",
94 'edd_payment'
95 ) );
96
97 foreach( $payments as $payment ) {
98 // Trigger new purchase action for each payment
99 gamipress_edd_new_purchase( $payment->ID );
100 }
101
102 return $response;
103
104 }
105 add_filter( 'gamipress_activity_recount_edd_purchases', 'gamipress_edd_activity_recount_purchases' );
106
107 /**
108 * Recount approved downloads
109 *
110 * @since 1.0.3
111 *
112 * @param array $response
113 *
114 * @return array $response
115 */
116 function gamipress_edd_activity_recount_approved_downloads( $response ) {
117
118 global $wpdb;
119
120 // Get all published downloads
121 $downloads = $wpdb->get_results( $wpdb->prepare(
122 "SELECT p.ID FROM $wpdb->posts AS p WHERE p.post_type = %s AND p.post_status = 'publish'",
123 'download'
124 ) );
125
126 foreach( $downloads as $download ) {
127 // Trigger new approved download action for each download
128 gamipress_edd_approve_download( $download->ID );
129 }
130
131 return $response;
132
133 }
134 add_filter( 'gamipress_activity_recount_edd_approved_downloads', 'gamipress_edd_activity_recount_approved_downloads' );
135
136 /**
137 * Recount wish list
138 *
139 * @since 1.0.3
140 *
141 * @param array $response
142 *
143 * @return array $response
144 */
145 function gamipress_edd_activity_recount_wish_lists( $response ) {
146
147 global $wpdb;
148
149 // Get all wish lists downloads
150 $lists = $wpdb->get_results( $wpdb->prepare(
151 "SELECT p.ID, p.post_author FROM $wpdb->posts AS p WHERE p.post_type = %s",
152 'edd_wish_list'
153 ) );
154
155 foreach( $lists as $list ) {
156
157 $list_items = get_post_meta( $list->ID, 'edd_wish_list', true );
158
159 if( $list_items ) {
160 foreach( $list_items as $item ) {
161
162 // Trigger wish lists actions
163 gamipress_edd_add_to_wish_list( $list->ID, $item['id'], array() );
164
165 // If download lists is active
166 if( class_exists('EDD_Downloads_Lists') ) {
167
168 foreach( edd_downloads_lists()->get_lists() as $list_type => $list_args ) {
169
170 $user_list = get_user_meta( $list->post_author, 'edd_downloads_lists_' . $list_type . '_id', true );
171
172 if( absint( $user_list ) === absint( $list->ID ) ) {
173 // Trigger downloads lists actions
174 gamipress_edd_add_to_list( $list->ID, $item['id'], array(), $list_type );
175 }
176 }
177
178
179 }
180
181 }
182 }
183
184 }
185
186 return $response;
187
188 }
189 add_filter( 'gamipress_activity_recount_edd_wish_lists', 'gamipress_edd_activity_recount_wish_lists' );
190
191 /**
192 * Recount reviews
193 *
194 * @since 1.0.3
195 *
196 * @param array $response
197 *
198 * @return array $response
199 */
200 function gamipress_edd_activity_recount_reviews( $response ) {
201
202 global $wpdb;
203
204 // Get all stored users
205 $users = $wpdb->get_results( "SELECT {$wpdb->users}.ID FROM {$wpdb->users}" );
206
207 foreach( $users as $user ) {
208 // Get all user approved reviews
209 $comments = $wpdb->get_results( $wpdb->prepare(
210 "
211 SELECT *
212 FROM $wpdb->comments AS c
213 WHERE c.user_id = %s
214 AND c.comment_approved = '1'
215 AND c.comment_type = 'edd_review'
216 ",
217 $user->ID
218 ) );
219
220 foreach( $comments as $comment ) {
221 // Trigger review actions
222 do_action( 'gamipress_edd_specific_new_review', (int) $comment->ID, (int) $comment->user_id, $comment->comment_post_ID, $comment );
223 do_action( 'gamipress_edd_new_review', (int) $comment->ID, (int) $comment->user_id, $comment->comment_post_ID, $comment );
224 }
225 }
226
227 return $response;
228
229 }
230 add_filter( 'gamipress_activity_recount_edd_reviews', 'gamipress_edd_activity_recount_reviews' );
231
232 /**
233 * Recount approved download pages
234 *
235 * @since 1.0.3
236 *
237 * @param array $response
238 *
239 * @return array $response
240 */
241 function gamipress_edd_activity_recount_approved_download_pages( $response ) {
242
243 global $wpdb;
244
245 // Get all published downloads
246 $download_pages = $wpdb->get_results( $wpdb->prepare(
247 "SELECT p.ID FROM $wpdb->posts AS p WHERE p.post_type = %s AND p.post_status = 'publish'",
248 'edd_download_page'
249 ) );
250
251 foreach( $download_pages as $download_page ) {
252 // Trigger new approved download page action for each download page
253 gamipress_edd_approve_download_page( $download_page->ID );
254 }
255
256 return $response;
257
258 }
259 add_filter( 'gamipress_activity_recount_edd_approved_download_pages', 'gamipress_edd_activity_recount_approved_download_pages' );