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 / admin / admin-filters.php
give / includes / admin Last commit date
add-ons 4 years ago donors 7 months ago emails 3 days ago forms 1 day ago payments 1 year ago reports 1 year ago settings 1 month ago shortcodes 1 year ago tools 4 months ago upgrades 5 months ago views 1 year ago abstract-admin-settings-page.php 2 years ago admin-actions.php 1 month ago admin-filters.php 9 months ago admin-footer.php 2 years ago admin-pages.php 5 months ago class-addon-activation-banner.php 9 months ago class-admin-settings.php 1 year ago class-api-keys-table.php 4 years ago class-blank-slate.php 1 year ago class-give-admin.php 5 years ago class-give-html-elements.php 1 year ago class-i18n-module.php 4 years ago dashboard-widgets.php 3 years ago give-metabox-functions.php 3 years ago import-functions.php 11 months ago misc-functions.php 2 years ago plugins.php 9 months ago setting-page-functions.php 6 years ago
admin-filters.php
281 lines
1 <?php
2 /**
3 * Admin Filters
4 *
5 * @package Give
6 * @subpackage Admin/Filters
7 * @copyright Copyright (c) 2016, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 1.0
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Sanitize number of decimals setting field.
19 *
20 * 1. User can only set absolute integer value as number of decimals.
21 * 2. number_decimals setting will be zero if no decimal separator defined
22 *
23 * @since 4.9.0 rename function - PHP 8 compatibility
24 * @since 1.8
25 * @used-by Give_Plugin_Settings::give_settings()
26 *
27 * @param string $value
28 *
29 * @return mixed
30 */
31 function give_sanitize_number_decimals_setting_field( $value ) {
32 $value_changed = false;
33 $show_notice = false;
34 $old_value = $value;
35
36 if ( isset( $_POST['decimal_separator'] ) ) {
37 $value = ! empty( $_POST['decimal_separator'] ) ? $value : 0;
38 $value_changed = true;
39 }
40
41 if ( $value_changed && ( $old_value !== $value ) ) {
42 Give_Admin_Settings::add_error( 'give-number-decimal', __( 'The \'Number of Decimals\' option has been automatically set to zero because the \'Decimal Separator\' is not set.', 'give' ) );
43 }
44
45 $value = absint( $value );
46 $is_currency_set_to_bitcoin = ( 'XBT' === give_get_option( 'currency' ) && ! isset( $_POST['currency'] ) ) || 'XBT' === $_POST['currency'];
47
48 if ( $is_currency_set_to_bitcoin && 8 < $value ) {
49 $value = 8;
50 $show_notice = true;
51 } elseif ( ! $is_currency_set_to_bitcoin && 6 <= $value ) {
52 $value = 5;
53 $show_notice = true;
54 }
55
56 if ( $show_notice ) {
57 Give_Admin_Settings::add_error(
58 'give-number-decimal',
59 sprintf(
60 __( 'The \'Number of Decimals\' option has been automatically set to %s because you entered a number higher than the maximum allowed.', 'give' ),
61 $value
62 )
63 );
64 }
65
66 return absint( $value );
67 }
68
69 add_filter( 'give_admin_settings_sanitize_option_number_decimals', 'give_sanitize_number_decimals_setting_field', 10 );
70
71
72 /**
73 * Sanitize number of decimals setting field.
74 *
75 * 1. User can only set absolute integer value as number of decimals.
76 * 2. number_decimals setting will be zero if no decimal separator defined
77 *
78 * @since 4.9.0 rename function - PHP 8 compatibility
79 * @since 1.8
80 * @used-by Give_Plugin_Settings::give_settings()
81 *
82 * @param string $value
83 *
84 * @return mixed
85 */
86 function give_validate_decimal_separator_setting_field( $value ) {
87 $thousand_separator = isset( $_POST['thousands_separator'] ) ? give_clean( $_POST['thousands_separator'] ) : '';
88 $decimal_separator = isset( $_POST['decimal_separator'] ) ? give_clean( $_POST['decimal_separator'] ) : '';
89
90 if ( $decimal_separator === $thousand_separator ) {
91 $value = '';
92 $_POST['number_decimals'] = 0;
93 Give_Admin_Settings::add_error( 'give-decimal-separator', __( 'The \'Decimal Separator\' option has automatically been set to empty because it can not be equal to the \'Thousand Separator\'', 'give' ) );
94 }
95
96 return $value;
97 }
98
99 add_filter( 'give_admin_settings_sanitize_option_decimal_separator', 'give_validate_decimal_separator_setting_field', 10 );
100
101 /**
102 * Change $delimiter text to symbol.
103 *
104 * @since 4.9.0 rename function - PHP 8 compatibility
105 * @since 1.8.14
106 *
107 * @param string $delimiter
108 *
109 * @return string $delimiter.
110 */
111 function give_import_delimiter_set_callback( $delimiter ) {
112 $delimite_type = array(
113 'csv' => ',',
114 'tab-separated-values' => "\t",
115 );
116
117 return ( array_key_exists( $delimiter, $delimite_type ) ? $delimite_type[ $delimiter ] : ',' );
118 }
119
120 add_filter( 'give_import_delimiter_set', 'give_import_delimiter_set_callback', 10 );
121
122 /**
123 * Give unset the page id from the core setting data from the json files.
124 *
125 * @since 1.8.17
126 *
127 * @param array $json_to_array Data from json file
128 * @param string $type
129 *
130 * @return array $json_to_array
131 */
132 function give_import_core_settings_merge_pages( $json_to_array, $type ) {
133 if ( 'merge' === $type ) {
134 unset( $json_to_array['success_page'] );
135 unset( $json_to_array['failure_page'] );
136 unset( $json_to_array['history_page'] );
137 }
138
139 return $json_to_array;
140 }
141
142 add_filter( 'give_import_core_settings_data', 'give_import_core_settings_merge_pages', 11, 2 );
143
144 /**
145 * Give check the image size from the core setting data from the json files.
146 *
147 * @since 1.8.17
148 *
149 * @param $json_to_array
150 * @param string $type
151 *
152 * @return array $json_to_array
153 */
154 function give_import_core_settings_merge_image_size( $json_to_array, $type ) {
155 if ( 'merge' === $type ) {
156 // Featured image sizes import under Display Options > Post Types > Featured Image Size.
157 if (
158 ! empty( $json_to_array['form_featured_img'] )
159 && ! empty( $json_to_array['featured_image_size'] )
160 && give_is_setting_enabled( $json_to_array['form_featured_img'] )
161 ) {
162 $images_sizes = get_intermediate_image_sizes();
163
164 if ( ! in_array( $json_to_array['featured_image_size'], $images_sizes, true ) ) {
165 unset( $json_to_array['featured_image_size'] );
166 }
167 }
168 }
169
170 return $json_to_array;
171 }
172
173 add_filter( 'give_import_core_settings_data', 'give_import_core_settings_merge_image_size', 12, 2 );
174
175 /**
176 * Give upload the image logo from the core setting data from the json files.
177 *
178 * @since 1.8.17
179 *
180 * @param $json_to_array
181 * @param string $type
182 *
183 * @return array $json_to_array
184 */
185 function give_import_core_settings_merge_upload_image( $json_to_array, $type ) {
186 if ( 'merge' === $type ) {
187 // Emails > Email Settings > Logo.
188 if ( ! empty( $json_to_array['email_logo'] ) ) {
189
190 // Need to require these files.
191 if ( ! function_exists( 'media_handle_upload' ) ) {
192 require_once ABSPATH . 'wp-admin/includes/image.php';
193 require_once ABSPATH . 'wp-admin/includes/file.php';
194 require_once ABSPATH . 'wp-admin/includes/media.php';
195 }
196
197 $url = $json_to_array['email_logo'];
198 $new_url = media_sideload_image( $url, 0, null, 'src' );
199 if ( ! is_wp_error( $new_url ) ) {
200 $json_to_array['email_logo'] = $new_url;
201 } else {
202 unset( $json_to_array['email_logo'] );
203 }
204 }
205 }
206
207 return $json_to_array;
208 }
209
210 add_filter( 'give_import_core_settings_data', 'give_import_core_settings_merge_upload_image', 13, 2 );
211
212 /**
213 * Give unset the license key from the core setting data from the json files.
214 *
215 * @since 1.8.17
216 *
217 * @param array $json_to_array Data from json file
218 * @param string $type
219 *
220 * @return array $json_to_array
221 */
222 function give_import_core_settings_merge_license_key( $json_to_array, $type ) {
223 if ( 'merge' === $type ) {
224 foreach ( $json_to_array as $key => $value ) {
225 $is_license_key = strpos( '_license_key', $key );
226 if ( ! empty( $is_license_key ) ) {
227 unset( $json_to_array[ $key ] );
228 }
229 }
230 }
231
232 return $json_to_array;
233 }
234
235 add_filter( 'give_import_core_settings_data', 'give_import_core_settings_merge_license_key', 14, 2 );
236
237 /**
238 * Give merge the json data and setting data.
239 *
240 * @since 1.8.17
241 *
242 * @param $json_to_array
243 * @param $type
244 * @param $host_give_options
245 *
246 * @return array $json_to_array
247 */
248 function give_import_core_settings_merge_data( $json_to_array, $type, $host_give_options ) {
249 if ( 'merge' === $type ) {
250 $json_to_array_merge = array_merge( $host_give_options, $json_to_array );
251 $json_to_array = $json_to_array_merge;
252 }
253
254 return $json_to_array;
255 }
256
257 add_filter( 'give_import_core_settings_data', 'give_import_core_settings_merge_data', 1000, 3 );
258
259 /**
260 * Backward Compatibility - Cleanup User Roles.
261 *
262 * @param array $caps List of capabilities.
263 *
264 * @since 1.8.17
265 *
266 * @return mixed
267 */
268 function give_bc_1817_cleanup_user_roles( $caps ) {
269
270 if (
271 ! give_has_upgrade_completed( 'v1817_cleanup_user_roles' ) &&
272 ! isset( $caps['view_give_payments'] )
273 ) {
274 give_v1817_process_cleanup_user_roles();
275 }
276
277 return $caps;
278 }
279
280 add_filter( 'user_has_cap', 'give_bc_1817_cleanup_user_roles' );
281