PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.2.0
GiveWP – Donation Plugin and Fundraising Platform v2.2.0
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 / admin / settings / class-settings-general.php
give / includes / admin / settings Last commit date
class-settings-addon.php 8 years ago class-settings-advanced.php 7 years ago class-settings-cmb2-backward-compatibility.php 8 years ago class-settings-display.php 7 years ago class-settings-email.php 7 years ago class-settings-gateways.php 8 years ago class-settings-general.php 7 years ago class-settings-license.php 8 years ago
class-settings-general.php
538 lines
1 <?php
2 /**
3 * Give Settings Page/Tab
4 *
5 * @package Give
6 * @subpackage Classes/Give_Settings_General
7 * @copyright Copyright (c) 2016, WordImpress
8 * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9 * @since 1.8
10 */
11
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit; // Exit if accessed directly.
14 }
15
16 if ( ! class_exists( 'Give_Settings_General' ) ) :
17
18 /**
19 * Give_Settings_General.
20 *
21 * @sine 1.8
22 */
23 class Give_Settings_General extends Give_Settings_Page {
24
25 /**
26 * Constructor.
27 */
28 public function __construct() {
29 $this->id = 'general';
30 $this->label = __( 'General', 'give' );
31
32 $this->default_tab = 'general-settings';
33
34 if ( $this->id === give_get_current_setting_tab() ) {
35 add_action( 'give_save_settings_give_settings', array( $this, '__give_change_donation_stating_number' ), 10, 3 );
36 add_action( 'give_admin_field_give_sequential_donation_code_preview', array( $this, '__render_give_sequential_donation_code_preview' ), 10, 3 );
37 add_action( 'give_admin_field_give_unlock_all_settings', array( $this, '__render_give_unlock_all_settings' ), 10, 3 );
38 }
39
40 parent::__construct();
41 }
42
43 /**
44 * Get settings array.
45 *
46 * @since 1.8
47 * @return array
48 */
49 public function get_settings() {
50 $settings = array();
51 $current_section = give_get_current_setting_section();
52
53 switch ( $current_section ) {
54 case 'access-control':
55 $settings = array(
56 // Section 3: Access control.
57 array(
58 'id' => 'give_title_session_control_1',
59 'type' => 'title',
60 ),
61 array(
62 'id' => 'session_lifetime',
63 'name' => __( 'Session Lifetime', 'give' ),
64 'desc' => __( 'The length of time a user\'s session is kept alive. Give starts a new session per user upon donation. Sessions allow donors to view their donation receipts without being logged in.', 'give' ),
65 'type' => 'select',
66 'options' => array(
67 '86400' => __( '24 Hours', 'give' ),
68 '172800' => __( '48 Hours', 'give' ),
69 '259200' => __( '72 Hours', 'give' ),
70 '604800' => __( '1 Week', 'give' ),
71 ),
72 ),
73 array(
74 'id' => 'limit_display_donations',
75 'name' => __( 'Limit Donations Displayed', 'give' ),
76 'desc' => __( 'Adjusts the number of donations displayed to a non logged-in user when they attempt to access the Donation History page without an active session. For security reasons, it\'s best to leave this at 1-3 donations.', 'give' ),
77 'default' => '1',
78 'type' => 'number',
79 'css' => 'width:50px;',
80 'attributes' => array(
81 'min' => '1',
82 'max' => '10',
83 ),
84 ),
85 array(
86 'name' => __( 'Email Access', 'give' ),
87 'desc' => __( 'Would you like your donors to be able to access their donation history using only email? Donors whose sessions have expired and do not have an account may still access their donation history via a temporary email access link.', 'give' ),
88 'id' => 'email_access',
89 'type' => 'radio_inline',
90 'default' => 'disabled',
91 'options' => array(
92 'enabled' => __( 'Enabled', 'give' ),
93 'disabled' => __( 'Disabled', 'give' ),
94 ),
95 ),
96 array(
97 'name' => __( 'Enable reCAPTCHA', 'give' ),
98 'desc' => __( 'Would you like to enable the reCAPTCHA feature?', 'give' ),
99 'id' => 'enable_recaptcha',
100 'type' => 'radio_inline',
101 'default' => 'disabled',
102 'options' => array(
103 'enabled' => __( 'Enabled', 'give' ),
104 'disabled' => __( 'Disabled', 'give' ),
105 ),
106 ),
107 array(
108 'id' => 'recaptcha_key',
109 'name' => __( 'reCAPTCHA Site Key', 'give' ),
110 /* translators: %s: https://www.google.com/recaptcha/ */
111 'desc' => sprintf( __( 'If you would like to prevent spam on the email access form navigate to <a href="%s" target="_blank">the reCAPTCHA website</a> and sign up for an API key and paste your reCAPTCHA site key here. The reCAPTCHA uses Google\'s user-friendly single click verification method.', 'give' ), esc_url( 'http://docs.givewp.com/recaptcha' ) ),
112 'default' => '',
113 'type' => 'text',
114 ),
115 array(
116 'id' => 'recaptcha_secret',
117 'name' => __( 'reCAPTCHA Secret Key', 'give' ),
118 'desc' => __( 'Please paste the reCAPTCHA secret key here from your reCAPTCHA API Keys panel.', 'give' ),
119 'default' => '',
120 'type' => 'text',
121 ),
122 array(
123 'name' => __( 'Access Control Docs Link', 'give' ),
124 'id' => 'access_control_docs_link',
125 'url' => esc_url( 'http://docs.givewp.com/settings-access-control' ),
126 'title' => __( 'Access Control', 'give' ),
127 'type' => 'give_docs_link',
128 ),
129 array(
130 'id' => 'give_title_session_control_1',
131 'type' => 'sectionend',
132 ),
133 );
134 break;
135
136 case 'currency-settings' :
137 $currency_position_before = __( 'Before - %s&#x200e;10', 'give' );
138 $currency_position_after = __( 'After - 10%s&#x200f;', 'give' );
139
140 $settings = array(
141 // Section 2: Currency
142 array(
143 'type' => 'title',
144 'id' => 'give_title_general_settings_2',
145 ),
146 array(
147 'name' => __( 'Currency Settings', 'give' ),
148 'desc' => '',
149 'type' => 'give_title',
150 'id' => 'give_title_general_settings_2',
151 ),
152 array(
153 'name' => __( 'Currency', 'give' ),
154 'desc' => __( 'The donation currency. Note that some payment gateways have currency restrictions.', 'give' ),
155 'id' => 'currency',
156 'class' => 'give-select-chosen',
157 'type' => 'select',
158 'options' => give_get_currencies(),
159 'default' => 'USD',
160 ),
161 array(
162 'name' => __( 'Currency Position', 'give' ),
163 'desc' => __( 'The position of the currency symbol.', 'give' ),
164 'id' => 'currency_position',
165 'type' => 'select',
166 'options' => array(
167 /* translators: %s: currency symbol */
168 'before' => sprintf( $currency_position_before, give_currency_symbol( give_get_currency() ) ),
169 /* translators: %s: currency symbol */
170 'after' => sprintf( $currency_position_after, give_currency_symbol( give_get_currency() ) ),
171 ),
172 'default' => 'before',
173 'attributes' => array(
174 'data-before-template' => sprintf( $currency_position_before, '{currency_pos}' ),
175 'data-after-template' => sprintf( $currency_position_after, '{currency_pos}' ),
176 ),
177 ),
178 array(
179 'name' => __( 'Thousands Separator', 'give' ),
180 'desc' => __( 'The symbol (typically , or .) to separate thousands.', 'give' ),
181 'id' => 'thousands_separator',
182 'type' => 'text',
183 'default' => ',',
184 'css' => 'width:12em;',
185 ),
186 array(
187 'name' => __( 'Decimal Separator', 'give' ),
188 'desc' => __( 'The symbol (usually , or .) to separate decimal points.', 'give' ),
189 'id' => 'decimal_separator',
190 'type' => 'text',
191 'default' => '.',
192 'css' => 'width:12em;',
193 ),
194 array(
195 'name' => __( 'Number of Decimals', 'give' ),
196 'desc' => __( 'The number of decimal points displayed in amounts.', 'give' ),
197 'id' => 'number_decimals',
198 'type' => 'text',
199 'default' => 2,
200 'css' => 'width:12em;',
201 ),
202 array(
203 'name' => __( 'Currency Options Docs Link', 'give' ),
204 'id' => 'currency_settings_docs_link',
205 'url' => esc_url( 'http://docs.givewp.com/settings-currency' ),
206 'title' => __( 'Currency Settings', 'give' ),
207 'type' => 'give_docs_link',
208 ),
209 array(
210 'type' => 'sectionend',
211 'id' => 'give_title_general_settings_2',
212 ),
213 );
214
215 break;
216
217 case 'general-settings':
218 // Get default country code.
219 $countries = give_get_country();
220
221 // get the list of the states of which default country is selected.
222 $states = give_get_states( $countries );
223
224 // Get the country list that does not have any states init.
225 $no_states_country = give_no_states_country_list();
226
227 $states_label = give_get_states_label();
228 $country = give_get_country();
229 $label = __( 'State', 'give' );
230 // Check if $country code exists in the array key for states label.
231 if ( array_key_exists( $country, $states_label ) ) {
232 $label = $states_label[ $country ];
233 }
234
235
236 $settings = array(
237 // Section 1: General.
238 array(
239 'type' => 'title',
240 'id' => 'give_title_general_settings_1',
241 ),
242 array(
243 'name' => __( 'General Settings', 'give' ),
244 'desc' => '',
245 'type' => 'give_title',
246 'id' => 'give_title_general_settings_1',
247 ),
248 array(
249 'name' => __( 'Success Page', 'give' ),
250 /* translators: %s: [give_receipt] */
251 'desc' => sprintf( __( 'The page donors are sent to after completing their donations. The %s shortcode should be on this page.', 'give' ), '<code>[give_receipt]</code>' ),
252 'id' => 'success_page',
253 'class' => 'give-select give-select-chosen',
254 'type' => 'select',
255 'options' => give_cmb2_get_post_options( array(
256 'post_type' => 'page',
257 'numberposts' => 30,
258 ) ),
259 'attributes' => array(
260 'data-search-type' => 'pages'
261 )
262 ),
263 array(
264 'name' => __( 'Failed Donation Page', 'give' ),
265 'desc' => __( 'The page donors are sent to if their donation is cancelled or fails.', 'give' ),
266 'class' => 'give-select give-select-chosen',
267 'id' => 'failure_page',
268 'type' => 'select',
269 'options' => give_cmb2_get_post_options( array(
270 'post_type' => 'page',
271 'numberposts' => 30,
272 ) ),
273 'attributes' => array(
274 'data-search-type' => 'pages'
275 )
276 ),
277 array(
278 'name' => __( 'Donation History Page', 'give' ),
279 /* translators: %s: [donation_history] */
280 'desc' => sprintf( __( 'The page showing a complete donation history for the current user. The %s shortcode should be on this page.', 'give' ), '<code>[donation_history]</code>' ),
281 'id' => 'history_page',
282 'class' => 'give-select give-select-chosen',
283 'type' => 'select',
284 'options' => give_cmb2_get_post_options( array(
285 'post_type' => 'page',
286 'numberposts' => 30,
287 ) ),
288 'attributes' => array(
289 'data-search-type' => 'pages'
290 )
291 ),
292 array(
293 'name' => __( 'Base Country', 'give' ),
294 'desc' => __( 'The country your site operates from.', 'give' ),
295 'id' => 'base_country',
296 'type' => 'select',
297 'options' => give_get_country_list(),
298 'class' => 'give-select give-select-chosen',
299 'attributes' => array(
300 'data-search-type' => 'no_ajax'
301 ),
302 'default' => $country,
303 ),
304 /**
305 * Add base state to give setting
306 *
307 * @since 1.8.14
308 */
309 array(
310 'wrapper_class' => ( array_key_exists( $countries, $no_states_country ) ? 'give-hidden' : '' ),
311 'name' => __( 'Base State/Province', 'give' ),
312 'desc' => __( 'The state/province your site operates from.', 'give' ),
313 'id' => 'base_state',
314 'type' => ( empty( $states ) ? 'text' : 'select' ),
315 'class' => ( empty( $states ) ? '' : 'give-select give-select-chosen' ),
316 'options' => $states,
317 'attributes' => array(
318 'data-search-type' => 'no_ajax',
319 'data-placeholder' => $label,
320 ),
321 ),
322 array(
323 'name' => __( 'General Options Docs Link', 'give' ),
324 'id' => 'general_options_docs_link',
325 'url' => esc_url( 'http://docs.givewp.com/settings-general' ),
326 'title' => __( 'General Options', 'give' ),
327 'type' => 'give_docs_link',
328 ),
329 array(
330 'type' => 'sectionend',
331 'id' => 'give_title_general_settings_1',
332 ),
333 );
334 break;
335
336 case 'sequential-ordering':
337 $settings = array(
338
339 // Section 4: Sequential Ordering
340
341 array(
342 'id' => 'give_title_general_settings_4',
343 'type' => 'title'
344 ),
345 array(
346 'name' => __( 'Sequential Ordering', 'give' ),
347 'id' => "{$current_section}_status",
348 'desc' => __( 'Custom donation numbering that increases sequentially to prevent gaps between donation IDs. If disabled, then donation numbers are generated from WordPress post IDs, which will result in gaps between numbers.', 'give' ),
349 'type' => 'radio_inline',
350 'default' => 'disabled',
351 'options' => array(
352 'enabled' => __( 'Enabled', 'give' ),
353 'disabled' => __( 'Disabled', 'give' )
354 )
355 ),
356 array(
357 'name' => __( 'Next Donation Number', 'give' ),
358 'id' => "{$current_section}_number",
359 'desc' => sprintf(
360 __( 'The number used to generate the next donation ID. This value must be greater than or equal to %s to avoid conflicts with existing donation IDs.', 'give' ),
361 '<code>' . Give()->seq_donation_number->get_next_number() . '</code>'
362 ),
363 'type' => 'number',
364 ),
365 array(
366 'name' => __( 'Number Prefix', 'give' ),
367 'id' => "{$current_section}_number_prefix",
368 'desc' => sprintf(
369 __( 'The prefix appended to all sequential donation numbers. Spaces are replaced by %s.', 'give' ),
370 '<code>-</code>'
371 ),
372 'type' => 'text',
373 ),
374 array(
375 'name' => __( 'Number Suffix', 'give' ),
376 'id' => "{$current_section}_number_suffix",
377 'desc' => sprintf(
378 __( 'The suffix appended to all sequential donation numbers. Spaces are replaced by %s.', 'give' ),
379 '<code>-</code>'
380 ),
381 'type' => 'text',
382 ),
383 array(
384 'name' => __( 'Number Padding', 'give' ),
385 'id' => "{$current_section}_number_padding",
386 'desc' => sprintf(
387 __( 'The minimum number of digits in the sequential donation number. Enter %s to display %s as %s.', 'give' ),
388 '<code>4</code>',
389 '<code>1</code>',
390 '<code>0001</code>'
391 ),
392 'type' => 'number',
393 'default' => '0',
394 ),
395 array(
396 'name' => __( 'Donation ID Preview', 'give' ),
397 'id' => "{$current_section}_preview",
398 'type' => 'give_sequential_donation_code_preview',
399 'desc' => __( 'A preview of the next sequential donation ID. This preview cannot be edited directly as it is generated from the settings above.', 'give' ),
400 ),
401 array(
402 'name' => __( 'Sequential Ordering Docs Link', 'give' ),
403 'id' => "{$current_section}_doc link",
404 'url' => esc_url( 'http://docs.givewp.com/settings-sequential-ordering' ),
405 'title' => __( 'Sequential Ordering', 'give' ),
406 'type' => 'give_docs_link',
407 ),
408 array(
409 'id' => 'give_title_general_settings_4',
410 'type' => 'sectionend'
411 )
412 );
413 }
414
415 /**
416 * Filter the general settings.
417 * Backward compatibility: Please do not use this filter. This filter is deprecated in 1.8
418 */
419 $settings = apply_filters( 'give_settings_general', $settings );
420
421 /**
422 * Filter the settings.
423 *
424 * @since 1.8
425 *
426 * @param array $settings
427 */
428 $settings = apply_filters( 'give_get_settings_' . $this->id, $settings );
429
430 // Output.
431 return $settings;
432 }
433
434 /**
435 * Get sections.
436 *
437 * @since 1.8
438 * @return array
439 */
440 public function get_sections() {
441 $sections = array(
442 'general-settings' => __( 'General', 'give' ),
443 'currency-settings' => __( 'Currency', 'give' ),
444 'access-control' => __( 'Access Control', 'give' ),
445 'sequential-ordering' => __( 'Sequential Ordering', 'give' ),
446 );
447
448 return apply_filters( 'give_get_sections_' . $this->id, $sections );
449 }
450
451
452 /**
453 * Set flag to reset sequestion donation number starting point when "Sequential Starting Number" value changes
454 *
455 * @since 2.1
456 * @access public
457 *
458 * @param $update_options
459 * @param $option_name
460 * @param $old_options
461 *
462 * @return bool
463 */
464 public function __give_change_donation_stating_number( $update_options, $option_name, $old_options ) {
465 if ( ! isset( $_POST['sequential-ordering_number'] ) ) {
466 return false;
467 }
468
469 if ( ( $next_number = Give()->seq_donation_number->get_next_number() ) > $update_options['sequential-ordering_number'] ) {
470 give_update_option( 'sequential-ordering_number', $next_number );
471
472 Give_Admin_Settings::add_error(
473 'give-invalid-sequential-starting-number',
474 sprintf(
475 __( 'Next Donation Number must be equal to or larger than %s to avoid conflicts with existing donation IDs.', 'give' ),
476 $next_number
477 )
478 );
479 } elseif ( $update_options['sequential-ordering_number'] !== $old_options['sequential-ordering_number'] ) {
480 update_option( '_give_reset_sequential_number', 1, false );
481 }
482
483 return true;
484 }
485
486
487 /**
488 * Render give_sequential_donation_code_preview field type
489 *
490 * @since 2.1.0
491 * @access public
492 *
493 * @param $field
494 */
495 public function __render_give_sequential_donation_code_preview( $field ) {
496 ?>
497 <tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : '' ?>>
498 <th scope="row" class="titledesc">
499 <label
500 for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ) ?></label>
501 </th>
502 <td class="give-forminp">
503 <input id="<?php echo esc_attr( $field['id'] ); ?>" class="give-input-field" type="text" disabled>
504 <?php echo Give_Admin_Settings::get_field_description( $field ); ?>
505 </td>
506 </tr>
507 <?php
508 }
509
510
511 /**
512 * Render give_unlock_all_settings field type
513 *
514 * @since 2.1.0
515 * @access public
516 *
517 * @param $field
518 */
519 public function __render_give_unlock_all_settings( $field ) {
520 ?>
521 <tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : '' ?>>
522 <th scope="row" class="titledesc">
523 <label
524 for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ) ?></label>
525 </th>
526 <td class="give-forminp">
527 <?php echo Give_Admin_Settings::get_field_description( $field ); ?>
528 <a href="" id="<?php echo $field['id']; ?>" data-message="<?php echo $field['confirmation_msg'] ?>"><?php echo __( 'Unlock all settings', 'give' ); ?></a>
529 </td>
530 </tr>
531 <?php
532 }
533 }
534
535 endif;
536
537 return new Give_Settings_General();
538