PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.3
GiveWP – Donation Plugin and Fundraising Platform v2.19.3
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / LegacySubscriptions / includes / give-recurring-cache.php
give / src / LegacySubscriptions / includes Last commit date
give-recurring-cache.php 4 years ago give-recurring-cron.php 4 years ago give-recurring-db-subscription-meta.php 4 years ago give-recurring-helpers.php 4 years ago give-recurring-subscriber.php 4 years ago give-subscription.php 4 years ago give-subscriptions-api.php 4 years ago give-subscriptions-db.php 4 years ago
give-recurring-cache.php
249 lines
1 <?php
2 // Exit if accessed directly.
3 if ( ! defined( 'ABSPATH' ) ) {
4 exit;
5 }
6
7 /**
8 * @since 2.19.0 - migrated from give-recurring
9 */
10 class Give_Recurring_Cache {
11 /**
12 * Instance.
13 *
14 * @since 1.6
15 * @access private
16 * @var
17 */
18 static private $instance;
19
20 /**
21 * List of cache groups
22 *
23 * @since 1.6
24 *
25 * @var array
26 */
27 private $groups = array(
28 'give-subscriptions-db-query',
29 'give-subscriptions'
30 );
31
32 /**
33 * List of cache groups
34 *
35 * @since 1.6
36 *
37 * @var Give_Subscriptions_DB
38 */
39 private $sub_db;
40
41 /**
42 * Singleton pattern.
43 *
44 * @since 1.6
45 * @access private
46 */
47 private function __construct() {
48 }
49
50 /**
51 * Setup hooks
52 *
53 * @since 1.6
54 */
55 public function setup() {
56 $this->sub_db = new Give_Subscriptions_DB();
57
58 add_action( 'give_subscription_inserted', array( $this, 'flush_on_subscription_insert' ) );
59 add_action( 'give_subscription_deleted', array( $this, 'flush_on_subscription_delete' ), 10, 2 );
60 add_action( 'give_subscription_updated', array( $this, 'flush_on_subscription_update' ), 10, 4 );
61 add_action( 'give_cache_filter_group_name', array( $this, 'filter_group_name' ), 999, 2 );
62 add_action( 'give_deleted_give-donations_cache', array( $this, 'flush_on_donation_edit' ), 10 );
63 add_action( 'before_delete_post', array( $this, 'flush_on_donation_delete' ), 10 );
64 }
65
66 /**
67 * Filter the group name
68 *
69 * @param $filtered_group_name
70 * @param $group
71 *
72 *
73 * @return string
74 */
75 public function filter_group_name( $filtered_group_name, $group ) {
76 if ( in_array( $group, $this->groups ) ) {
77 $incrementer = Give_Cache::get_instance()->get_incrementer( false, "{$group}-incrementer" );
78
79 $currenct_blog_id = get_current_blog_id();
80 $filtered_group_name = "{$group}_{$currenct_blog_id}_{$incrementer}";
81 }
82
83 return $filtered_group_name;
84 }
85
86
87 /**
88 * Get instance.
89 *
90 * @since 1.6
91 * @access public
92 * @return Give_Recurring_Cache
93 */
94 public static function get_instance() {
95 if ( null === static::$instance ) {
96 self::$instance = new static();
97
98 self::$instance->setup();
99 }
100
101 return self::$instance;
102 }
103
104 /**
105 * Set subscriptions cache
106 *
107 * @since 1.6
108 *
109 * @param $cache_key
110 * @param $data
111 *
112 * @return bool
113 */
114 public static function set_subscription( $cache_key, $data ) {
115 return Give_Cache::set_group( $cache_key, $data, 'give-subscriptions' );
116 }
117
118 /**
119 * Get subscriptions cache
120 *
121 * @since 1.6
122 *
123 * @param $cache_key
124 *
125 * @return mixed
126 */
127 public static function get_subscription( $cache_key ) {
128 return Give_Cache::get_group( $cache_key, 'give-subscriptions' );
129 }
130
131 /**
132 * Set subscriptions db query cache
133 *
134 * @since 1.6
135 *
136 * @param $cache_key
137 * @param $data
138 *
139 * @return bool
140 */
141 public static function set_db_query( $cache_key, $data ) {
142 return Give_Cache::set_group( $cache_key, $data, 'give-subscriptions-db-query' );
143 }
144
145 /**
146 * Get subscriptions query cache
147 *
148 * @since 1.6
149 *
150 * @param $cache_key
151 *
152 * @return bool
153 */
154 public static function get_db_query( $cache_key ) {
155 return Give_Cache::get_group( $cache_key, 'give-subscriptions-db-query' );
156 }
157
158 /**
159 * Delete subscription db query cache when new subscription creates
160 *
161 * @since 1.6
162 */
163 public function flush_on_subscription_insert() {
164 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
165 }
166
167 /**
168 * Delete subscription cache when subscription deletes
169 *
170 * @since 1.6
171 *
172 * @param $deleted
173 * @param $subscription_id
174 */
175 public function flush_on_subscription_delete( $deleted, $subscription_id ) {
176 // Bailout.
177 if ( ! $deleted ) {
178 return;
179 }
180
181 Give_Cache::delete_group( $subscription_id, 'give-subscriptions' );
182 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
183 }
184
185 /**
186 * Delete subscription cache when subscription updates
187 *
188 * @since 1.6
189 *
190 * @param $updated
191 * @param $subscription_id
192 * @param $data
193 * @param $where
194 */
195 public function flush_on_subscription_update( $updated, $subscription_id, $data, $where ) {
196 // Bailout.
197 if ( ! $updated ) {
198 return;
199 }
200
201 if ( empty( $where ) ) {
202 Give_Cache::delete_group( $subscription_id, 'give-subscriptions' );
203 } else {
204 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-incrementer' );
205 }
206
207 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
208 }
209
210
211 /**
212 * Delete subscription cache when donation update/insert
213 *
214 * @since 1.6
215 *
216 * @param int $donation_id
217 */
218 public function flush_on_donation_edit( $donation_id ) {
219 $donation = get_post( $donation_id );
220
221 // Bailout.
222 if ( ! $donation instanceof WP_Post ) {
223 return;
224 }
225
226 $subscription_id = $donation->post_parent
227 ? $this->sub_db->get_column_by( 'id', 'parent_payment_id', $donation->post_parent )
228 : give_get_meta( $donation_id, 'subscription_id', true );
229
230 if ( $subscription_id ) {
231 Give_Cache::delete_group( $subscription_id, 'give-subscriptions' );
232 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
233 }
234 }
235
236 /**
237 * Delete subscription cache when donation delete
238 *
239 * @since 1.6
240 *
241 * @param int $donation_id
242 */
243 public function flush_on_donation_delete( $donation_id ) {
244 $this->flush_on_donation_edit( $donation_id );
245 }
246 }
247
248 Give_Recurring_Cache::get_instance();
249