PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.5.13
GiveWP – Donation Plugin and Fundraising Platform v2.5.13
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 / admin / abstract-admin-settings-page.php
give / includes / admin Last commit date
add-ons 6 years ago donors 6 years ago emails 6 years ago forms 6 years ago payments 6 years ago reports 7 years ago settings 6 years ago shortcodes 6 years ago tools 6 years ago upgrades 6 years ago views 6 years ago abstract-admin-settings-page.php 6 years ago admin-actions.php 6 years ago admin-filters.php 7 years ago admin-footer.php 6 years ago admin-pages.php 6 years ago class-addon-activation-banner.php 6 years ago class-admin-settings.php 6 years ago class-api-keys-table.php 7 years ago class-blank-slate.php 6 years ago class-give-admin.php 6 years ago class-give-html-elements.php 7 years ago class-give-welcome.php 6 years ago class-i18n-module.php 6 years ago dashboard-widgets.php 6 years ago give-metabox-functions.php 6 years ago import-functions.php 7 years ago misc-functions.php 6 years ago plugins.php 6 years ago setting-page-functions.php 6 years ago welcome.php 6 years ago
abstract-admin-settings-page.php
307 lines
1 <?php
2 /**
3 * Give Settings Page/Tab
4 *
5 * @package Give
6 * @subpackage Classes/Give_Settings_Page
7 * @copyright Copyright (c) 2016, GiveWP
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_Page' ) ) :
17
18 /**
19 * Give_Settings_Page.
20 *
21 * @sine 1.8
22 */
23 class Give_Settings_Page {
24
25 /**
26 * Setting page id.
27 *
28 * @since 1.8
29 * @var string
30 */
31 protected $id = '';
32
33 /**
34 * Setting page label.
35 *
36 * @since 1.8
37 * @var string
38 */
39 protected $label = '';
40
41
42 /**
43 * Default tab.
44 *
45 * @since 1.8
46 * @var string
47 */
48 protected $default_tab = '';
49
50 /**
51 * Current setting page.
52 *
53 * @since 1.8
54 * @var string|null
55 */
56 private $current_setting_page = null;
57
58 /**
59 * Flag to check if enable saving option for setting page or not
60 *
61 * @since 1.8.17
62 * @var bool
63 */
64 protected $enable_save = true;
65
66 /**
67 * Constructor.
68 */
69 public function __construct() {
70 // Get current setting page.
71 $this->current_setting_page = give_get_current_setting_page();
72
73 // Get current section.
74 $this->current_section = give_get_current_setting_section();
75
76 add_filter( "give_default_setting_tab_section_{$this->id}", array( $this, 'set_default_setting_tab' ), 10 );
77 add_filter( "{$this->current_setting_page}_tabs_array", array( $this, 'add_settings_page' ), 20 );
78 add_action( "{$this->current_setting_page}_settings_{$this->id}_page", array( $this, 'output' ) );
79
80 // Output sections.
81 add_action(
82 "{$this->current_setting_page}_sections_{$this->id}_page",
83 array(
84 $this,
85 'output_sections',
86 )
87 );
88
89 // Save hide button by default.
90 $GLOBALS['give_hide_save_button'] = true;
91
92 // Enable saving feature.
93 if ( $this->enable_save ) {
94 add_action( "{$this->current_setting_page}_save_{$this->id}", array( $this, 'save' ) );
95 }
96 }
97
98
99 /**
100 * Get setting id
101 *
102 * @since 1.8.17
103 * @access public
104 * @return string
105 */
106 public function get_id() {
107 return $this->id;
108 }
109
110 /**
111 * Default setting tab.
112 *
113 * @since 1.8
114 *
115 * @param $setting_tab
116 *
117 * @return string
118 */
119 function set_default_setting_tab( $setting_tab ) {
120 return $this->default_tab;
121 }
122
123 /**
124 * Add this page to settings.
125 *
126 * @since 1.8
127 *
128 * @param array $pages Lst of pages.
129 *
130 * @return array
131 */
132 public function add_settings_page( $pages ) {
133 $pages[ $this->id ] = $this->label;
134
135 return $pages;
136 }
137
138 /**
139 * Get settings array.
140 *
141 * @since 1.8
142 * @return array
143 */
144 public function get_settings() {
145 /**
146 * Filter the settings.
147 *
148 * @since 1.8
149 *
150 * @param array $settings
151 */
152 $settings = apply_filters( 'give_get_settings_' . $this->id, array() );
153
154 // Output.
155 return $settings;
156 }
157
158 /**
159 * Get sections.
160 *
161 * @since 1.8
162 * @return array
163 */
164 public function get_sections() {
165 return apply_filters( 'give_get_sections_' . $this->id, array() );
166 }
167
168 /**
169 * Output sections.
170 *
171 * @since 1.8
172 * @return void
173 */
174 public function output_sections() {
175 // Get current section.
176 $current_section = give_get_current_setting_section();
177
178 // Get all sections.
179 $sections = $this->get_sections();
180
181 // Bailout.
182 if ( empty( $sections ) ) {
183 return;
184 }
185
186 // Show section settings only if setting section exist.
187 if ( $current_section && ! in_array( $current_section, array_keys( $sections ), true ) ) {
188 echo wp_kses_post( '<div class="error"><p>' . __( 'Oops, this settings page does not exist.', 'give' ) . '</p></div>' );
189 $GLOBALS['give_hide_save_button'] = true;
190
191 return;
192 }
193
194 if ( is_null( $this->current_setting_page ) ) {
195 $this->current_setting_page = give_get_current_setting_page();
196 }
197
198 $section_list = array();
199 foreach ( $sections as $id => $label ) {
200
201 // If the `$label` return array then get title from the array as a label.
202 if ( is_array( $label ) && ! empty( $label['title'] ) ) {
203 $label = $label['title'];
204 }
205
206 /**
207 * Fire the filter to hide particular section on tab.
208 *
209 * @since 2.0
210 */
211 if ( apply_filters( "give_hide_section_{$id}_on_{$this->id}_page", false, $sections, $this->id ) ) {
212 continue;
213 }
214
215 $section_list[] = '<li><a href="' . admin_url( 'edit.php?post_type=give_forms&page=' . $this->current_setting_page . '&tab=' . $this->id . '&section=' . sanitize_title( $id ) ) . '" class="' . ( $current_section === $id ? 'current' : '' ) . '">' . $label . '</a>';
216 }
217
218 echo wp_kses_post( sprintf(
219 '<ul class="give-subsubsub">%s</ul><br class="clear" /><hr>',
220 implode( ' | </li>', $section_list )
221 ) );
222 }
223
224 /**
225 * Output the settings.
226 *
227 * Note: if you want to overwrite this function then manage show/hide save button in your class.
228 *
229 * @since 1.8
230 * @return void
231 */
232 public function output() {
233 if ( $this->enable_save ) {
234 $GLOBALS['give_hide_save_button'] = false;
235 }
236
237 $settings = $this->get_settings();
238
239 Give_Admin_Settings::output_fields( $settings, 'give_settings' );
240 }
241
242 /**
243 * Save settings.
244 *
245 * @since 1.8
246 * @return void
247 */
248 public function save() {
249 $settings = $this->get_settings();
250 $current_section = give_get_current_setting_section();
251
252 /**
253 * Use this filter if you want to implement your custom save logic.
254 *
255 * @since 2.1
256 */
257 if ( apply_filters( "give_save_options_{$this->id}_{$current_section}", true ) ) {
258 Give_Admin_Settings::save_fields( $settings, 'give_settings' );
259 }
260
261 /**
262 * Trigger Action
263 *
264 * @since 1.8
265 */
266 do_action( 'give_update_options_' . $this->id . '_' . $current_section );
267 }
268
269 /**
270 * Get heading labels
271 *
272 * @since 1.8.7
273 * @access private
274 *
275 * @return array
276 */
277 private function get_heading() {
278 $heading[] = give_get_admin_page_menu_title();
279 $heading[] = $this->label;
280 $section = $this->get_sections();
281 $current_section = give_get_current_setting_section();
282
283 if ( array_key_exists( $current_section, $section ) ) {
284 $heading[] = $section[ $current_section ];
285 }
286
287 return array_unique( $heading );
288 }
289
290 /**
291 * Get heading html
292 *
293 * @since 1.8.7
294 * @access private
295 *
296 * @return string
297 */
298 public function get_heading_html() {
299 return sprintf(
300 '<h1 class="wp-heading-inline">%s</h1>',
301 implode( ' <span class="give-settings-heading-sep dashicons dashicons-arrow-right-alt2"></span> ', $this->get_heading() )
302 );
303 }
304 }
305
306 endif;
307