PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.0.7
GiveWP – Donation Plugin and Fundraising Platform v2.0.7
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
donors 7 years ago emails 7 years ago forms 7 years ago payments 7 years ago reports 7 years ago settings 7 years ago shortcodes 7 years ago tools 7 years ago upgrades 7 years ago views 7 years ago EDD_SL_Plugin_Updater.php 7 years ago abstract-admin-settings-page.php 7 years ago add-ons.php 7 years ago admin-actions.php 7 years ago admin-filters.php 7 years ago admin-footer.php 7 years ago admin-pages.php 7 years ago class-addon-activation-banner.php 7 years ago class-admin-settings.php 7 years ago class-api-keys-table.php 7 years ago class-blank-slate.php 7 years ago class-give-settings.php 7 years ago class-i18n-module.php 7 years ago dashboard-widgets.php 7 years ago give-metabox-functions.php 7 years ago plugins.php 7 years ago welcome.php 7 years ago
abstract-admin-settings-page.php
291 lines
1 <?php
2 /**
3 * Give Settings Page/Tab
4 *
5 * @package Give
6 * @subpackage Classes/Give_Settings_Page
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_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 add_filter( "give_default_setting_tab_section_{$this->id}", array( $this, 'set_default_setting_tab' ), 10 );
74 add_filter( "{$this->current_setting_page}_tabs_array", array( $this, 'add_settings_page' ), 20 );
75 add_action( "{$this->current_setting_page}_settings_{$this->id}_page", array( $this, 'output' ) );
76
77 // Output section only if exist.
78 $sections = $this->get_sections();
79 if ( ! empty( $sections ) ) {
80 add_action( "{$this->current_setting_page}_sections_{$this->id}_page", array(
81 $this,
82 'output_sections',
83 ) );
84 }
85
86 // Save hide button by default.
87 $GLOBALS['give_hide_save_button'] = true;
88
89 // Enable saving feature.
90 if ( $this->enable_save ) {
91 add_action( "{$this->current_setting_page}_save_{$this->id}", array( $this, 'save' ) );
92 }
93 }
94
95
96 /**
97 * Get setting id
98 *
99 * @since 1.8.17
100 * @access public
101 * @return string
102 */
103 public function get_id() {
104 return $this->id;
105 }
106
107 /**
108 * Default setting tab.
109 *
110 * @since 1.8
111 *
112 * @param $setting_tab
113 *
114 * @return string
115 */
116 function set_default_setting_tab( $setting_tab ) {
117 return $this->default_tab;
118 }
119
120 /**
121 * Add this page to settings.
122 *
123 * @since 1.8
124 *
125 * @param array $pages Lst of pages.
126 *
127 * @return array
128 */
129 public function add_settings_page( $pages ) {
130 $pages[ $this->id ] = $this->label;
131
132 return $pages;
133 }
134
135 /**
136 * Get settings array.
137 *
138 * @since 1.8
139 * @return array
140 */
141 public function get_settings() {
142 /**
143 * Filter the settings.
144 *
145 * @since 1.8
146 *
147 * @param array $settings
148 */
149 $settings = apply_filters( 'give_get_settings_' . $this->id, array() );
150
151 // Output.
152 return $settings;
153 }
154
155 /**
156 * Get sections.
157 *
158 * @since 1.8
159 * @return array
160 */
161 public function get_sections() {
162 return apply_filters( 'give_get_sections_' . $this->id, array() );
163 }
164
165 /**
166 * Output sections.
167 *
168 * @since 1.8
169 * @return void
170 */
171 public function output_sections() {
172 // Get current section.
173 $current_section = give_get_current_setting_section();
174
175 // Get all sections.
176 $sections = $this->get_sections();
177
178 // Bailout.
179 if ( empty( $sections ) ) {
180 return;
181 }
182
183 // Show section settings only if setting section exist.
184 if ( $current_section && ! in_array( $current_section, array_keys( $sections ) ) ) {
185 echo '<div class="error"><p>' . __( 'Oops, this settings page does not exist.', 'give' ) . '</p></div>';
186 $GLOBALS['give_hide_save_button'] = true;
187
188 return;
189 }
190
191 if ( is_null( $this->current_setting_page ) ) {
192 $this->current_setting_page = give_get_current_setting_page();
193 }
194
195 $section_list = array();
196 foreach ( $sections as $id => $label ) {
197 /**
198 * Fire the filter to hide particular section on tab.
199 *
200 * @since 2.0
201 */
202 if ( apply_filters( "give_hide_section_{$id}_on_{$this->id}_page", false, $sections, $this->id ) ) {
203 continue;
204 }
205
206 $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>';
207 }
208
209 echo sprintf(
210 '<ul class="subsubsub">%s</ul><br class="clear" /><hr>',
211 implode( ' | </li>', $section_list )
212 );
213 }
214
215 /**
216 * Output the settings.
217 *
218 * Note: if you want to overwrite this function then manage show/hide save button in your class.
219 *
220 * @since 1.8
221 * @return void
222 */
223 public function output() {
224 if ( $this->enable_save ) {
225 $GLOBALS['give_hide_save_button'] = false;
226 }
227
228 $settings = $this->get_settings();
229
230 Give_Admin_Settings::output_fields( $settings, 'give_settings' );
231 }
232
233 /**
234 * Save settings.
235 *
236 * @since 1.8
237 * @return void
238 */
239 public function save() {
240 $settings = $this->get_settings();
241 $current_section = give_get_current_setting_section();
242
243 Give_Admin_Settings::save_fields( $settings, 'give_settings' );
244
245 /**
246 * Trigger Action
247 *
248 * @since 1.8
249 */
250 do_action( 'give_update_options_' . $this->id . '_' . $current_section );
251 }
252
253 /**
254 * Get heading labels
255 *
256 * @since 1.8.7
257 * @access private
258 *
259 * @return array
260 */
261 private function get_heading() {
262 $heading[] = give_get_admin_page_menu_title();
263 $heading[] = $this->label;
264 $section = $this->get_sections();
265 $current_section = give_get_current_setting_section();
266
267 if ( array_key_exists( $current_section, $section ) ) {
268 $heading[] = $section[ $current_section ];
269 }
270
271 return array_unique( $heading );
272 }
273
274 /**
275 * Get heading html
276 *
277 * @since 1.8.7
278 * @access private
279 *
280 * @return string
281 */
282 public function get_heading_html() {
283 return sprintf(
284 '<h1 class="wp-heading-inline">%s</h1><hr class="wp-header-end">',
285 implode( ' <span class="give-settings-heading-sep dashicons dashicons-arrow-right-alt2"></span> ', $this->get_heading() )
286 );
287 }
288 }
289
290 endif;
291