PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 1 year ago api 3 years ago database 2 years ago deprecated 3 years ago donors 1 year ago emails 3 years ago forms 1 year ago frontend 6 years ago gateways 1 year ago libraries 2 years ago payments 1 year ago actions.php 5 years ago ajax-functions.php 2 years ago class-give-async-process.php 1 year ago class-give-background-updater.php 2 years ago class-give-cache-setting.php 2 years ago class-give-cache.php 3 years ago class-give-cli-commands.php 3 years ago class-give-comment.php 6 years ago class-give-cron.php 6 years ago class-give-donate-form.php 1 year ago class-give-donor.php 2 years ago class-give-email-access.php 5 years ago class-give-license-handler.php 1 year ago class-give-logging.php 5 years ago class-give-readme-parser.php 4 years ago class-give-roles.php 6 years ago class-give-scripts.php 2 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 4 years ago class-notices.php 2 years ago country-functions.php 1 year ago currencies-list.php 3 years ago currency-functions.php 3 years ago error-tracking.php 6 years ago filters.php 3 years ago formatting.php 1 year ago install.php 2 years ago login-register.php 2 years ago misc-functions.php 1 year ago plugin-compatibility.php 6 years ago post-types.php 1 year ago price-functions.php 6 years ago process-donation.php 1 year ago setting-functions.php 6 years ago shortcodes.php 1 year ago template-functions.php 4 years ago user-functions.php 3 years ago
class-give-cache-setting.php
290 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 * @since 2.9.6 Replaced require_once with require to support multiple calls.
213 */
214 public function setup_currencies_list() {
215 $currencies = require GIVE_PLUGIN_DIR . 'includes/currencies-list.php';
216
217 /**
218 * Filter the supported currency list
219 *
220 * @since 2.4.0
221 */
222 $currencies = apply_filters( 'give_register_currency', $currencies );
223
224 $this->settings['currencies'] = $currencies;
225 }
226
227
228 /**
229 * Setup gateway list
230 *
231 * Note: use give_get_enabled_payment_gateways function to get list of registered gateway.
232 *
233 * @since 3.0.0 test and offline gateways are defaulted in the new Gateway API
234 * @since 2.4.0
235 * @since 2.15.0 Set payment gateway checkout label to admin defined payment gateway checkout label.
236 */
237 public function setup_gateways_list() {
238 $gateways = [];
239
240 /**
241 * Filter the supported gateways list
242 *
243 * @since 2.4.0
244 */
245 $gateways = apply_filters( 'give_register_gateway', $gateways );
246
247 $this->settings['gateways'] = $gateways;
248 }
249
250
251 /**
252 * Get option
253 *
254 * @since 2.4.0
255 * @access public
256 *
257 * @param $option_name
258 * @param bool $default
259 *
260 * @return mixed
261 */
262 public static function get_option( $option_name, $default = false ) {
263 $value = $default;
264
265 if ( in_array( $option_name, self::$all_option_ids ) ) {
266 $value = ! empty( self::$instance->settings[ $option_name ] )
267 ? self::$instance->settings[ $option_name ]
268 : $default;
269 }
270
271 return $value;
272 }
273
274 /**
275 * Get plugin settings
276 *
277 * @since 2.4.0
278 * @access public
279 */
280 public static function get_settings() {
281
282 /**
283 * Filter the plugin setting
284 */
285 return (array) apply_filters( 'give_get_settings', self::get_option( 'give_settings', [] ) );
286 }
287 }
288
289 Give_Cache_Setting::get_instance();
290