PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.7.5
GiveWP – Donation Plugin and Fundraising Platform v2.7.5
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 6 years ago database 6 years ago deprecated 6 years ago donors 5 years ago emails 6 years ago forms 5 years ago frontend 6 years ago gateways 6 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 6 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 6 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 6 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 6 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 6 years ago login-register.php 6 years ago misc-functions.php 5 years ago plugin-compatibility.php 6 years ago post-types.php 6 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
299 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 = array(
59 'give_settings' => array(),
60 'give_version' => '',
61 'give_completed_upgrades' => array(),
62 'give_doing_upgrade' => array(),
63 'give_paused_batches' => array(),
64 'give_install_pages_created' => '',
65 'give_show_db_upgrade_complete_notice' => '',
66 'give_addon_last_activated' => '',
67 'currencies' => array(),
68 'gateways' => array(),
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 = array(
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', array( $this, 'reload_plugin_settings' ) );
137 add_action( 'updated_option', array( $this, 'reload_plugin_settings' ) );
138 add_action( 'deleted_option', array( $this, 'reload_plugin_settings' ) );
139
140 add_action( 'give_init', array( $this, 'setup_currencies_list' ), 11 );
141 add_action( 'give_init', array( $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 = array(
235 'paypal' => array(
236 'admin_label' => __( 'PayPal Standard', 'give' ),
237 'checkout_label' => __( 'PayPal', 'give' ),
238 ),
239 'manual' => array(
240 'admin_label' => __( 'Test Donation', 'give' ),
241 'checkout_label' => __( 'Test Donation', 'give' ),
242 ),
243 'offline' => array(
244 'admin_label' => esc_attr__( 'Offline Donation', 'give' ),
245 'checkout_label' => esc_attr__( 'Offline Donation', 'give' ),
246 ),
247 );
248
249 /**
250 * Filter the supported gateways list
251 *
252 * @since 2.4.0
253 */
254 $gateways = apply_filters( 'give_register_gateway', $gateways );
255
256 $this->settings['gateways'] = $gateways;
257 }
258
259
260 /**
261 * Get option
262 *
263 * @since 2.4.0
264 * @access public
265 *
266 * @param $option_name
267 * @param bool $default
268 *
269 * @return mixed
270 */
271 public static function get_option( $option_name, $default = false ) {
272 $value = $default;
273
274 if ( in_array( $option_name, self::$all_option_ids ) ) {
275 $value = ! empty( self::$instance->settings[ $option_name ] )
276 ? self::$instance->settings[ $option_name ]
277 : $default;
278 }
279
280 return $value;
281 }
282
283 /**
284 * Get plugin settings
285 *
286 * @since 2.4.0
287 * @access public
288 */
289 public static function get_settings() {
290
291 /**
292 * Filter the plugin setting
293 */
294 return (array) apply_filters( 'give_get_settings', self::get_option( 'give_settings', array() ) );
295 }
296 }
297
298 Give_Cache_Setting::get_instance();
299