PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.14.0
GiveWP – Donation Plugin and Fundraising Platform v2.14.0
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 / includes / class-give-cache-setting.php
give / includes Last commit date
admin 4 years ago api 5 years ago database 5 years ago deprecated 4 years ago donors 5 years ago emails 4 years ago forms 4 years ago frontend 6 years ago gateways 4 years ago libraries 6 years ago payments 4 years ago actions.php 5 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 4 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 4 years ago class-give-donor.php 5 years ago class-give-email-access.php 5 years ago class-give-license-handler.php 5 years ago class-give-logging.php 5 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 4 years ago country-functions.php 5 years ago currencies-list.php 6 years ago currency-functions.php 5 years ago error-tracking.php 6 years ago filters.php 5 years ago formatting.php 6 years ago install.php 5 years ago login-register.php 6 years ago misc-functions.php 4 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 4 years ago user-functions.php 5 years ago
class-give-cache-setting.php
306 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 * @since 2.4.0
232 * @unreleased Set payment gateway checkout label to admin defined payment gateway checkout label.
233 */
234 public function setup_gateways_list() {
235 // Default, built-in gateways
236 $gateways = [
237 'manual' => [
238 'admin_label' => __( 'Test Donation', 'give' ),
239 'checkout_label' => __( 'Test Donation', 'give' ),
240 ],
241 'offline' => [
242 'admin_label' => esc_attr__( 'Offline Donation', 'give' ),
243 'checkout_label' => esc_attr__( 'Offline Donation', 'give' ),
244 ],
245 ];
246
247 /**
248 * Filter the supported gateways list
249 *
250 * @since 2.4.0
251 */
252 $gateways = apply_filters( 'give_register_gateway', $gateways );
253
254 // Replace payment gateway checkout label with admin defined checkout label.
255 if ( ! empty( $this->settings['give_settings']['gateways_label'] ) ) {
256 foreach ( $this->settings['give_settings']['gateways_label'] as $gatewayId => $checkoutLabel ) {
257 if ( $checkoutLabel ) {
258 $gateways[ $gatewayId ]['checkout_label'] = $checkoutLabel;
259 }
260 }
261 }
262
263 $this->settings['gateways'] = $gateways;
264 }
265
266
267 /**
268 * Get option
269 *
270 * @since 2.4.0
271 * @access public
272 *
273 * @param $option_name
274 * @param bool $default
275 *
276 * @return mixed
277 */
278 public static function get_option( $option_name, $default = false ) {
279 $value = $default;
280
281 if ( in_array( $option_name, self::$all_option_ids ) ) {
282 $value = ! empty( self::$instance->settings[ $option_name ] )
283 ? self::$instance->settings[ $option_name ]
284 : $default;
285 }
286
287 return $value;
288 }
289
290 /**
291 * Get plugin settings
292 *
293 * @since 2.4.0
294 * @access public
295 */
296 public static function get_settings() {
297
298 /**
299 * Filter the plugin setting
300 */
301 return (array) apply_filters( 'give_get_settings', self::get_option( 'give_settings', [] ) );
302 }
303 }
304
305 Give_Cache_Setting::get_instance();
306