PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 day ago api 3 years ago database 5 months ago deprecated 1 month ago donors 5 months ago emails 9 months ago forms 1 day ago frontend 6 years ago gateways 9 months ago libraries 9 months ago payments 2 months ago actions.php 9 months ago ajax-functions.php 3 days ago class-give-async-process.php 1 year ago class-give-background-updater.php 9 months ago class-give-cache-setting.php 1 year ago class-give-cache.php 9 months ago class-give-cli-commands.php 1 year ago class-give-comment.php 9 months ago class-give-cron.php 9 months 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 month ago class-give-logging.php 9 months ago class-give-readme-parser.php 4 years ago class-give-roles.php 5 months ago class-give-scripts.php 2 weeks ago class-give-session.php 9 months 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 9 months ago country-functions.php 7 months ago currencies-list.php 7 months ago currency-functions.php 3 years ago error-tracking.php 6 years ago filters.php 9 months ago formatting.php 9 months ago install.php 9 months ago login-register.php 2 years ago misc-functions.php 1 month 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 1 year ago user-functions.php 3 years ago
class-give-cache-setting.php
291 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 4.3.0 use init hook for currency and gateway list
129 * @since 2.4.0
130 * @access private
131 */
132 private function setup() {
133 self::$all_option_ids = array_keys( $this->settings );
134
135 $this->load_plugin_settings();
136
137 add_action( 'added_option', [ $this, 'reload_plugin_settings' ] );
138 add_action( 'updated_option', [ $this, 'reload_plugin_settings' ] );
139 add_action( 'deleted_option', [ $this, 'reload_plugin_settings' ] );
140
141 add_action( 'init', [ $this, 'setup_currencies_list' ]);
142 add_action( 'init', [ $this, 'setup_gateways_list' ]);
143 }
144
145 /**
146 * Load plugin settings
147 *
148 * @since 2.4.0
149 * @access private
150 */
151 private function load_plugin_settings() {
152 global $wpdb;
153
154 /**
155 * Fire the filter
156 *
157 * This filter can be used if admin facing any caching issue.
158 * This is a switch to enable or disable setting cache.
159 * Thus filter can be removed in future.
160 *
161 * @since 2.4.1
162 */
163 if ( ! apply_filters( 'give_disable_setting_cache', false ) ) {
164 $cache = wp_cache_get( $this->cache_key, $this->cache_group );
165
166 // Load options from cache.
167 if ( ! empty( $cache ) ) {
168 $this->settings = $cache;
169
170 return;
171 }
172 }
173
174 $db_option_ids = '\'' . implode( '\',\'', $this->db_option_ids ) . '\'';
175
176 $sql = "SELECT option_name, option_value FROM $wpdb->options WHERE option_name IN ({$db_option_ids}) ";
177 $results = $wpdb->get_results( $sql );
178
179 if ( ! empty( $results ) ) {
180
181 /* @var stdClass $result */
182 foreach ( $results as $result ) {
183 $this->settings[ $result->option_name ] = maybe_unserialize( $result->option_value );
184 }
185
186 wp_cache_set( $this->cache_key, $this->settings, $this->cache_group );
187 }
188 }
189
190 /**
191 * Reload option when add, update or delete
192 *
193 * Note: only for internal logic
194 *
195 * @since 2.4.0
196 *
197 * @param $option_name
198 */
199 public function reload_plugin_settings( $option_name ) {
200 // Bailout.
201 if ( ! in_array( $option_name, $this->db_option_ids ) ) {
202 return;
203 }
204
205 wp_cache_delete( $this->cache_key, $this->cache_group );
206 $this->load_plugin_settings();
207 }
208
209 /**
210 * Setup currencies list
211 *
212 * @since 2.4.0
213 * @since 2.9.6 Replaced require_once with require to support multiple calls.
214 */
215 public function setup_currencies_list() {
216 $currencies = require GIVE_PLUGIN_DIR . 'includes/currencies-list.php';
217
218 /**
219 * Filter the supported currency list
220 *
221 * @since 2.4.0
222 */
223 $currencies = apply_filters( 'give_register_currency', $currencies );
224
225 $this->settings['currencies'] = $currencies;
226 }
227
228
229 /**
230 * Setup gateway list
231 *
232 * Note: use give_get_enabled_payment_gateways function to get list of registered gateway.
233 *
234 * @since 3.0.0 test and offline gateways are defaulted in the new Gateway API
235 * @since 2.4.0
236 * @since 2.15.0 Set payment gateway checkout label to admin defined payment gateway checkout label.
237 */
238 public function setup_gateways_list() {
239 $gateways = [];
240
241 /**
242 * Filter the supported gateways list
243 *
244 * @since 2.4.0
245 */
246 $gateways = apply_filters( 'give_register_gateway', $gateways );
247
248 $this->settings['gateways'] = $gateways;
249 }
250
251
252 /**
253 * Get option
254 *
255 * @since 2.4.0
256 * @access public
257 *
258 * @param $option_name
259 * @param bool $default
260 *
261 * @return mixed
262 */
263 public static function get_option( $option_name, $default = false ) {
264 $value = $default;
265
266 if ( in_array( $option_name, self::$all_option_ids ) ) {
267 $value = ! empty( self::$instance->settings[ $option_name ] )
268 ? self::$instance->settings[ $option_name ]
269 : $default;
270 }
271
272 return $value;
273 }
274
275 /**
276 * Get plugin settings
277 *
278 * @since 2.4.0
279 * @access public
280 */
281 public static function get_settings() {
282
283 /**
284 * Filter the plugin setting
285 */
286 return (array) apply_filters( 'give_get_settings', self::get_option( 'give_settings', [] ) );
287 }
288 }
289
290 Give_Cache_Setting::get_instance();
291