PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.3
GiveWP – Donation Plugin and Fundraising Platform v3.0.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 3 years ago give-subscription.php 3 years ago give-subscriptions-api.php 4 years ago give-subscriptions-db.php 3 years ago
give-recurring-cache.php
248 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_cache_filter_group_name', array( $this, 'filter_group_name' ), 999, 2 );
61 add_action( 'give_deleted_give-donations_cache', array( $this, 'flush_on_donation_edit' ), 10 );
62 add_action( 'before_delete_post', array( $this, 'flush_on_donation_delete' ), 10 );
63 }
64
65 /**
66 * Filter the group name
67 *
68 * @param $filtered_group_name
69 * @param $group
70 *
71 *
72 * @return string
73 */
74 public function filter_group_name( $filtered_group_name, $group ) {
75 if ( in_array( $group, $this->groups ) ) {
76 $incrementer = Give_Cache::get_instance()->get_incrementer( false, "{$group}-incrementer" );
77
78 $currenct_blog_id = get_current_blog_id();
79 $filtered_group_name = "{$group}_{$currenct_blog_id}_{$incrementer}";
80 }
81
82 return $filtered_group_name;
83 }
84
85
86 /**
87 * Get instance.
88 *
89 * @since 1.6
90 * @access public
91 * @return Give_Recurring_Cache
92 */
93 public static function get_instance() {
94 if ( null === static::$instance ) {
95 self::$instance = new static();
96
97 self::$instance->setup();
98 }
99
100 return self::$instance;
101 }
102
103 /**
104 * Set subscriptions cache
105 *
106 * @since 1.6
107 *
108 * @param $cache_key
109 * @param $data
110 *
111 * @return bool
112 */
113 public static function set_subscription( $cache_key, $data ) {
114 return Give_Cache::set_group( $cache_key, $data, 'give-subscriptions' );
115 }
116
117 /**
118 * Get subscriptions cache
119 *
120 * @since 1.6
121 *
122 * @param $cache_key
123 *
124 * @return mixed
125 */
126 public static function get_subscription( $cache_key ) {
127 return Give_Cache::get_group( $cache_key, 'give-subscriptions' );
128 }
129
130 /**
131 * Set subscriptions db query cache
132 *
133 * @since 1.6
134 *
135 * @param $cache_key
136 * @param $data
137 *
138 * @return bool
139 */
140 public static function set_db_query( $cache_key, $data ) {
141 return Give_Cache::set_group( $cache_key, $data, 'give-subscriptions-db-query' );
142 }
143
144 /**
145 * Get subscriptions query cache
146 *
147 * @since 1.6
148 *
149 * @param $cache_key
150 *
151 * @return bool
152 */
153 public static function get_db_query( $cache_key ) {
154 return Give_Cache::get_group( $cache_key, 'give-subscriptions-db-query' );
155 }
156
157 /**
158 * Delete subscription db query cache when new subscription creates
159 *
160 * @since 1.6
161 */
162 public function flush_on_subscription_insert() {
163 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
164 }
165
166 /**
167 * Delete subscription cache when subscription deletes
168 *
169 * @since 1.6
170 *
171 * @param $deleted
172 * @param $subscription_id
173 */
174 public function flush_on_subscription_delete( $deleted, $subscription_id ) {
175 // Bailout.
176 if ( ! $deleted ) {
177 return;
178 }
179
180 Give_Cache::delete_group( $subscription_id, 'give-subscriptions' );
181 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
182 }
183
184 /**
185 * Delete subscription cache when subscription updates
186 *
187 * @since 1.6
188 *
189 * @param $updated
190 * @param $subscription_id
191 * @param $data
192 * @param $where
193 */
194 public function flush_on_subscription_update( $updated, $subscription_id, $data, $where ) {
195 // Bailout.
196 if ( ! $updated ) {
197 return;
198 }
199
200 if ( empty( $where ) ) {
201 Give_Cache::delete_group( $subscription_id, 'give-subscriptions' );
202 } else {
203 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-incrementer' );
204 }
205
206 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
207 }
208
209
210 /**
211 * Delete subscription cache when donation update/insert
212 *
213 * @since 1.6
214 *
215 * @param int $donation_id
216 */
217 public function flush_on_donation_edit( $donation_id ) {
218 $donation = get_post( $donation_id );
219
220 // Bailout.
221 if ( ! $donation instanceof WP_Post ) {
222 return;
223 }
224
225 $subscription_id = $donation->post_parent
226 ? $this->sub_db->get_column_by( 'id', 'parent_payment_id', $donation->post_parent )
227 : give_get_meta( $donation_id, 'subscription_id', true );
228
229 if ( $subscription_id ) {
230 Give_Cache::delete_group( $subscription_id, 'give-subscriptions' );
231 Give_Cache::get_instance()->get_incrementer( true, 'give-subscriptions-db-query-incrementer' );
232 }
233 }
234
235 /**
236 * Delete subscription cache when donation delete
237 *
238 * @since 1.6
239 *
240 * @param int $donation_id
241 */
242 public function flush_on_donation_delete( $donation_id ) {
243 $this->flush_on_donation_edit( $donation_id );
244 }
245 }
246
247 Give_Recurring_Cache::get_instance();
248