PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.2
GiveWP – Donation Plugin and Fundraising Platform v2.9.2
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 / includes / class-give-cache-setting.php
give / includes Last commit date
admin 5 years ago api 5 years ago database 6 years ago deprecated 5 years ago donors 5 years ago emails 6 years ago forms 5 years ago frontend 6 years ago gateways 5 years ago libraries 6 years ago payments 5 years ago actions.php 6 years ago ajax-functions.php 5 years ago class-give-async-process.php 6 years ago class-give-background-updater.php 6 years ago class-give-cache-setting.php 5 years ago class-give-cache.php 6 years ago class-give-cli-commands.php 6 years ago class-give-comment.php 6 years ago class-give-cron.php 6 years ago class-give-donate-form.php 6 years ago class-give-donor.php 6 years ago class-give-email-access.php 6 years ago class-give-license-handler.php 5 years ago class-give-logging.php 6 years ago class-give-readme-parser.php 6 years ago class-give-roles.php 6 years ago class-give-scripts.php 5 years ago class-give-session.php 5 years ago class-give-stats.php 6 years ago class-give-template-loader.php 6 years ago class-give-tooltips.php 6 years ago class-give-translation.php 6 years ago class-notices.php 5 years ago country-functions.php 5 years ago currencies-list.php 6 years ago currency-functions.php 6 years ago error-tracking.php 6 years ago filters.php 6 years ago formatting.php 6 years ago install.php 5 years ago login-register.php 6 years ago misc-functions.php 5 years ago plugin-compatibility.php 6 years ago post-types.php 5 years ago price-functions.php 6 years ago process-donation.php 5 years ago setting-functions.php 6 years ago shortcodes.php 6 years ago template-functions.php 6 years ago user-functions.php 6 years ago
class-give-cache-setting.php
295 lines
1 <?php
2 /**
3 * Class for managing plugin settings cache
4 *
5 * Note: only use for internal purpose.
6 *
7 * @package Give
8 * @subpackage Classes/Give_Cache_Setting
9 * @copyright Copyright (c) 2018, GiveWP
10 * @license https://opensource.org/licenses/gpl-license GNU Public License
11 * @since 2.4.0
12 */
13
14 // Exit if accessed directly.
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 /**
20 * Class Give_Cache_Setting
21 */
22 class Give_Cache_Setting {
23 /**
24 * Instance.
25 *
26 * @since 2.4.0
27 * @access private
28 * @var Give_Cache_Setting
29 */
30 private static $instance;
31
32 /**
33 * Cache key.
34 *
35 * @since 2.4.0
36 * @access private
37 * @var string
38 */
39 private $cache_key = 'giveAllOptions';
40
41
42 /**
43 * Cache group.
44 *
45 * @since 2.4.0
46 * @access private
47 * @var string
48 */
49 private $cache_group = 'give-options';
50
51 /**
52 * Array of cached settings
53 *
54 * @since 2.4.0
55 * @access private
56 * @var array
57 */
58 private $settings = [
59 'give_settings' => [],
60 'give_version' => '',
61 'give_completed_upgrades' => [],
62 'give_doing_upgrade' => [],
63 'give_paused_batches' => [],
64 'give_install_pages_created' => '',
65 'give_show_db_upgrade_complete_notice' => '',
66 'give_addon_last_activated' => '',
67 'currencies' => [],
68 'gateways' => [],
69 ];
70
71 /**
72 * Array of cached setting db option names
73 *
74 * @since 2.4.0
75 * @access private
76 * @var array
77 */
78 private $db_option_ids = [
79 'give_settings',
80 'give_version',
81 'give_completed_upgrades',
82 'give_doing_upgrade',
83 'give_install_pages_created',
84 'give_show_db_upgrade_complete_notice',
85 'give_addon_last_activated',
86 'give_paused_batches',
87 ];
88
89 /**
90 * Array of cached setting option names
91 *
92 * @since 2.4.0
93 * @access private
94 * @var array
95 */
96 private static $all_option_ids;
97
98 /**
99 * Singleton pattern.
100 *
101 * @since 2.4.0
102 * @access private
103 */
104 private function __construct() {
105 }
106
107
108 /**
109 * Get instance.
110 *
111 * @since 2.4.0
112 * @access public
113 * @return Give_Cache_Setting
114 */
115 public static function get_instance() {
116 if ( null === static::$instance ) {
117 self::$instance = new static();
118
119 self::$instance->setup();
120 }
121
122 return self::$instance;
123 }
124
125 /**
126 * Setup
127 *
128 * @since 2.4.0
129 * @access private
130 */
131 private function setup() {
132 self::$all_option_ids = array_keys( $this->settings );
133
134 $this->load_plugin_settings();
135
136 add_action( 'added_option', [ $this, 'reload_plugin_settings' ] );
137 add_action( 'updated_option', [ $this, 'reload_plugin_settings' ] );
138 add_action( 'deleted_option', [ $this, 'reload_plugin_settings' ] );
139
140 add_action( 'give_init', [ $this, 'setup_currencies_list' ], 11 );
141 add_action( 'give_init', [ $this, 'setup_gateways_list' ], 11 );
142 }
143
144 /**
145 * Load plugin settings
146 *
147 * @since 2.4.0
148 * @access private
149 */
150 private function load_plugin_settings() {
151 global $wpdb;
152
153 /**
154 * Fire the filter
155 *
156 * This filter can be used if admin facing any caching issue.
157 * This is a switch to enable or disable setting cache.
158 * Thus filter can be removed in future.
159 *
160 * @since 2.4.1
161 */
162 if ( ! apply_filters( 'give_disable_setting_cache', false ) ) {
163 $cache = wp_cache_get( $this->cache_key, $this->cache_group );
164
165 // Load options from cache.
166 if ( ! empty( $cache ) ) {
167 $this->settings = $cache;
168
169 return;
170 }
171 }
172
173 $db_option_ids = '\'' . implode( '\',\'', $this->db_option_ids ) . '\'';
174
175 $sql = "SELECT option_name, option_value FROM $wpdb->options WHERE option_name IN ({$db_option_ids}) ";
176 $results = $wpdb->get_results( $sql );
177
178 if ( ! empty( $results ) ) {
179
180 /* @var stdClass $result */
181 foreach ( $results as $result ) {
182 $this->settings[ $result->option_name ] = maybe_unserialize( $result->option_value );
183 }
184
185 wp_cache_set( $this->cache_key, $this->settings, $this->cache_group );
186 }
187 }
188
189 /**
190 * Reload option when add, update or delete
191 *
192 * Note: only for internal logic
193 *
194 * @since 2.4.0
195 *
196 * @param $option_name
197 */
198 public function reload_plugin_settings( $option_name ) {
199 // Bailout.
200 if ( ! in_array( $option_name, $this->db_option_ids ) ) {
201 return;
202 }
203
204 wp_cache_delete( $this->cache_key, $this->cache_group );
205 $this->load_plugin_settings();
206 }
207
208 /**
209 * Setup currencies list
210 *
211 * @since 2.4.0
212 */
213 public function setup_currencies_list() {
214 $currencies = require_once GIVE_PLUGIN_DIR . 'includes/currencies-list.php';
215
216 /**
217 * Filter the supported currency list
218 *
219 * @since 2.4.0
220 */
221 $currencies = apply_filters( 'give_register_currency', $currencies );
222
223 $this->settings['currencies'] = $currencies;
224 }
225
226
227 /**
228 * Setup gateway list
229 *
230 * @since 2.4.0
231 */
232 public function setup_gateways_list() {
233 // Default, built-in gateways
234 $gateways = [
235 'manual' => [
236 'admin_label' => __( 'Test Donation', 'give' ),
237 'checkout_label' => __( 'Test Donation', 'give' ),
238 ],
239 'offline' => [
240 'admin_label' => esc_attr__( 'Offline Donation', 'give' ),
241 'checkout_label' => esc_attr__( 'Offline Donation', 'give' ),
242 ],
243 ];
244
245 /**
246 * Filter the supported gateways list
247 *
248 * @since 2.4.0
249 */
250 $gateways = apply_filters( 'give_register_gateway', $gateways );
251
252 $this->settings['gateways'] = $gateways;
253 }
254
255
256 /**
257 * Get option
258 *
259 * @since 2.4.0
260 * @access public
261 *
262 * @param $option_name
263 * @param bool $default
264 *
265 * @return mixed
266 */
267 public static function get_option( $option_name, $default = false ) {
268 $value = $default;
269
270 if ( in_array( $option_name, self::$all_option_ids ) ) {
271 $value = ! empty( self::$instance->settings[ $option_name ] )
272 ? self::$instance->settings[ $option_name ]
273 : $default;
274 }
275
276 return $value;
277 }
278
279 /**
280 * Get plugin settings
281 *
282 * @since 2.4.0
283 * @access public
284 */
285 public static function get_settings() {
286
287 /**
288 * Filter the plugin setting
289 */
290 return (array) apply_filters( 'give_get_settings', self::get_option( 'give_settings', [] ) );
291 }
292 }
293
294 Give_Cache_Setting::get_instance();
295