PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.4.3
GiveWP – Donation Plugin and Fundraising Platform v2.4.3
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 7 years ago api 7 years ago deprecated 7 years ago donors 7 years ago emails 7 years ago forms 7 years ago frontend 7 years ago gateways 7 years ago libraries 7 years ago payments 7 years ago actions.php 7 years ago ajax-functions.php 7 years ago class-give-async-process.php 7 years ago class-give-background-updater.php 7 years ago class-give-cache-setting.php 7 years ago class-give-cache.php 7 years ago class-give-cli-commands.php 7 years ago class-give-comment.php 7 years ago class-give-cron.php 7 years ago class-give-db-comments-meta.php 7 years ago class-give-db-comments.php 7 years ago class-give-db-donor-meta.php 7 years ago class-give-db-donors.php 7 years ago class-give-db-form-meta.php 7 years ago class-give-db-logs-meta.php 7 years ago class-give-db-logs.php 7 years ago class-give-db-meta.php 7 years ago class-give-db-payment-meta.php 7 years ago class-give-db-sequential-ordering.php 7 years ago class-give-db-sessions.php 7 years ago class-give-db.php 7 years ago class-give-donate-form.php 7 years ago class-give-donor-wall-widget.php 7 years ago class-give-donor.php 7 years ago class-give-email-access.php 7 years ago class-give-license-handler.php 7 years ago class-give-logging.php 7 years ago class-give-readme-parser.php 7 years ago class-give-roles.php 7 years ago class-give-scripts.php 7 years ago class-give-session.php 7 years ago class-give-stats.php 7 years ago class-give-template-loader.php 8 years ago class-give-tooltips.php 7 years ago class-give-translation.php 8 years ago class-notices.php 7 years ago country-functions.php 7 years ago currencies-list.php 7 years ago currency-functions.php 7 years ago error-tracking.php 7 years ago filters.php 7 years ago formatting.php 7 years ago install.php 7 years ago login-register.php 7 years ago misc-functions.php 7 years ago plugin-compatibility.php 7 years ago post-types.php 7 years ago price-functions.php 7 years ago process-donation.php 7 years ago setting-functions.php 7 years ago shortcodes.php 7 years ago template-functions.php 7 years ago user-functions.php 7 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 static private $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 = array(
59 'give_settings' => array(),
60 'give_version' => '',
61 'give_completed_upgrades' => array(),
62 'currencies' => array(),
63 'gateways' => array(),
64 );
65
66 /**
67 * Array of cached setting db option names
68 *
69 * @since 2.4.0
70 * @access private
71 * @var array
72 */
73 private $db_option_ids = array(
74 'give_settings',
75 'give_version',
76 'give_completed_upgrades',
77 );
78
79 /**
80 * Array of cached setting option names
81 *
82 * @since 2.4.0
83 * @access private
84 * @var array
85 */
86 static private $all_option_ids;
87
88 /**
89 * Singleton pattern.
90 *
91 * @since 2.4.0
92 * @access private
93 */
94 private function __construct() {
95 }
96
97
98 /**
99 * Get instance.
100 *
101 * @since 2.4.0
102 * @access public
103 * @return Give_Cache_Setting
104 */
105 public static function get_instance() {
106 if ( null === static::$instance ) {
107 self::$instance = new static();
108
109 self::$instance->setup();
110 }
111
112 return self::$instance;
113 }
114
115 /**
116 * Setup
117 *
118 * @since 2.4.0
119 * @access private
120 */
121 private function setup() {
122 self::$all_option_ids = array_keys( $this->settings );
123
124 $this->load_plugin_settings();
125
126 add_action( 'added_option', array( $this, '__reload_plugin_settings' ) );
127 add_action( 'updated_option', array( $this, '__reload_plugin_settings' ) );
128 add_action( 'deleted_option', array( $this, '__reload_plugin_settings' ) );
129
130 add_action( 'give_init', array( $this, '__setup_currencies_list' ), 11 );
131 add_action( 'give_init', array( $this, '__setup_gateways_list' ), 11 );
132 }
133
134 /**
135 * Load plugin settings
136 *
137 * @since 2.4.0
138 * @access private
139 */
140 private function load_plugin_settings() {
141 global $wpdb;
142
143 /**
144 * Fire the filter
145 *
146 * This filter can be used if admin facing any caching issue.
147 * This is a switch to enable or disable setting cache.
148 * Thus filter can be removed in future.
149 *
150 * @since 2.4.1
151 *
152 */
153 if( ! apply_filters( 'give_disable_setting_cache', false ) ){
154 $cache = wp_cache_get( $this->cache_key, $this->cache_group );
155
156 // Load options from cache.
157 if ( ! empty( $cache ) ) {
158 $this->settings = $cache;
159
160 return;
161 }
162 }
163
164 $db_option_ids = '\'' . implode( '\',\'', $this->db_option_ids ) . '\'';
165
166 $sql = "SELECT option_name, option_value FROM $wpdb->options WHERE option_name IN ({$db_option_ids}) ";
167 $results = $wpdb->get_results( $sql );
168
169 if ( ! empty( $results ) ) {
170
171 /* @var stdClass $result */
172 foreach ( $results as $result ) {
173 $this->settings[ $result->option_name ] = maybe_unserialize( $result->option_value );
174 }
175
176 wp_cache_set( $this->cache_key, $this->settings, $this->cache_group );
177 }
178 }
179
180 /**
181 * Reload option when add, update or delete
182 *
183 * Note: only for internal logic
184 *
185 * @since 2.4.0
186 *
187 * @param $option_name
188 */
189 public function __reload_plugin_settings( $option_name ) {
190 // Bailout.
191 if ( ! in_array( $option_name, $this->db_option_ids ) ) {
192 return;
193 }
194
195 wp_cache_delete( $this->cache_key, $this->cache_group );
196 $this->load_plugin_settings();
197 }
198
199 /**
200 * Setup currencies list
201 *
202 * @since 2.4.0
203 */
204 public function __setup_currencies_list() {
205 $currencies = require_once GIVE_PLUGIN_DIR . 'includes/currencies-list.php';
206
207 /**
208 * Filter the supported currency list
209 *
210 * @since 2.4.0
211 */
212 $currencies = apply_filters( 'give_register_currency', $currencies );
213
214 $this->settings['currencies'] = $currencies;
215 }
216
217
218 /**
219 * Setup gateway list
220 *
221 * @since 2.4.0
222 */
223 public function __setup_gateways_list() {
224 // Default, built-in gateways
225 $gateways = array(
226 'paypal' => array(
227 'admin_label' => __( 'PayPal Standard', 'give' ),
228 'checkout_label' => __( 'PayPal', 'give' ),
229 ),
230 'manual' => array(
231 'admin_label' => __( 'Test Donation', 'give' ),
232 'checkout_label' => __( 'Test Donation', 'give' ),
233 ),
234 'offline' => array(
235 'admin_label' => esc_attr__( 'Offline Donation', 'give' ),
236 'checkout_label' => esc_attr__( 'Offline Donation', 'give' ),
237 ),
238 );
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::$instance->settings['give_settings'] );
286 }
287 }
288
289 Give_Cache_Setting::get_instance();
290