PluginProbe
Charitable – Donation & Fundraising Platform (Donation Forms, Recurring Donations & Fundraising Campaigns) / 1.8.12
Charitable – Donation & Fundraising Platform (Donation Forms, Recurring Donations & Fundraising Campaigns) v1.8.12
1.8.12.3 1.8.12.2 1.8.12.1 1.8.12 1.8.11.3 1.8.11.2 1.8.11.1 1.8.11 1.6.6 1.6.60 1.6.7 1.6.8 1.6.9 1.7.0 1.7.0.1 1.7.0.11 1.7.0.12 1.7.0.14 1.7.0.2 1.7.0.3 1.7.0.5 1.7.0.6 1.7.0.7 1.7.0.9 1.8.0 All 210 releases
charitable / includes / admin / views / settings / settings.php

settings.php in Charitable – Donation & Fundraising Platform (Donation Forms, Recurring Donations & Fundraising Campaigns) 1.8.12, at includes/admin/views/settings/settings.php

197 lines 7.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // Exit if accessed directly.
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8 /**
9 * Display the main settings page wrapper.
10 *
11 * @author David Bisset
12 * @package Charitable/Admin View/Settings
13 * @copyright Copyright (c) 2023, WP Charitable LLC
14 * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
15 * @since 1.0.0
16 * @version 1.8.9
17 */
18
19 $charitable_active_tab = isset( $_GET['tab'] ) ? esc_html( $_GET['tab'] ) : 'general'; // phpcs:ignore
20 $charitable_active_sub_tab = isset( $_GET['sub_tab'] ) ? esc_html( $_GET['sub_tab'] ) : ''; // phpcs:ignore
21 $charitable_tab_no_form_tag = array( 'import', 'export', 'tools' );
22 $charitable_group = isset( $_GET['group'] ) ? esc_html( $_GET['group'] ) : $charitable_active_tab; // phpcs:ignore
23 $charitable_sections = charitable_get_admin_settings()->get_sections();
24 $charitable_sub_sections = 'marketing' === $charitable_active_tab ? charitable_get_admin_settings()->get_sub_sections_marketing() : array();
25 $charitable_newsletter_addon_active = class_exists( 'Charitable_Newsletter_Connect' );
26 $charitable_show_return = $charitable_group !== $charitable_active_tab;
27 $charitable_css = '';
28
29 // Resolve the effective sub_tab for routing. Marketing always has a sub_tab; default to newsletters.
30 if ( 'marketing' === $charitable_active_tab && '' === $charitable_active_sub_tab ) {
31 $charitable_active_sub_tab = 'newsletters';
32 }
33
34 if ( $charitable_show_return ) {
35 /**
36 * Filter the return link text.
37 *
38 * @since 1.6.19
39 *
40 * @param string $default The default return link text.
41 * @param string $active_tab The active tab.
42 * @param string $group The current group.
43 */
44 $charitable_return_tab_text = apply_filters(
45 'charitable_settings_return_tab_text',
46 sprintf(
47 /* translators: %s: tab name */
48 __( '&#8592; Return to %s', 'charitable' ),
49 $charitable_active_tab
50 ),
51 $charitable_active_tab,
52 $charitable_group
53 );
54
55 /**
56 * Filter the return link URL.
57 *
58 * @since 1.6.19
59 *
60 * @param string $default The default return link URL
61 * @param string $active_tab The active tab.
62 * @param string $group The current group.
63 */
64 $charitable_return_tab_url = apply_filters(
65 'charitable_settings_return_tab_url',
66 add_query_arg(
67 array( 'tab' => $charitable_active_tab ),
68 admin_url( 'admin.php?page=charitable-settings' )
69 ),
70 $charitable_active_tab,
71 $charitable_group
72 );
73 }
74
75 ob_start();
76 ?>
77 <div id="charitable-settings" class="wrap">
78 <h1 class="screen-reader-text"><?php echo get_admin_page_title(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></h1>
79 <h1><?php echo get_admin_page_title(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></h1>
80 <?php do_action( 'charitable_maybe_show_notification' ); ?>
81 <h2 class="nav-tab-wrapper">
82 <?php foreach ( $charitable_sections as $charitable_section_key => $charitable_section_name ) : ?>
83 <?php
84 $charitable_url_query_arg_array = array( 'tab' => $charitable_section_key );
85 if ( 'marketing' === $charitable_section_key ) {
86 $charitable_url_query_arg_array['sub_tab'] = 'newsletters';
87 }
88 ?>
89 <a href="<?php echo esc_url( add_query_arg( $charitable_url_query_arg_array, admin_url( 'admin.php?page=charitable-settings' ) ) ); ?>" class="nav-tab nav-tab-<?php echo esc_attr( $charitable_section_key ); ?> <?php echo ( esc_attr( $charitable_active_tab ) === esc_attr( $charitable_section_key ) ) ? ' nav-tab-active' : ''; ?>"><?php echo esc_html( $charitable_section_name ); ?></a>
90 <?php endforeach ?>
91 </h2>
92 <?php if ( 'marketing' === $charitable_active_tab && ! empty( $charitable_sub_sections ) ) : ?>
93 <h3 class="nav-sub-tab-wrapper">
94 <?php foreach ( $charitable_sub_sections as $charitable_sub_section_key => $charitable_sub_section_label ) :
95 $charitable_sub_tab_slug = str_replace( 'marketing__', '', $charitable_sub_section_key );
96 $charitable_is_active = ( $charitable_active_sub_tab === $charitable_sub_tab_slug );
97 ?>
98 <a href="<?php echo esc_url( add_query_arg( array( 'tab' => 'marketing', 'sub_tab' => $charitable_sub_tab_slug ), admin_url( 'admin.php?page=charitable-settings' ) ) ); ?>" class="nav-tab nav-tab-marketing nav-sub-tab-<?php echo esc_attr( $charitable_sub_tab_slug ); ?><?php echo $charitable_is_active ? ' nav-tab-active' : ''; ?>"><?php
99 echo wp_kses(
100 $charitable_sub_section_label,
101 array(
102 'span' => array( 'class' => array() ),
103 )
104 );
105 ?></a>
106 <?php endforeach ?>
107 </h3>
108 <?php endif; ?>
109 <?php if ( $charitable_show_return ) : ?>
110 <?php /* translators: %s: active settings tab label */ ?>
111 <p><a href="<?php echo esc_url( $charitable_return_tab_url ); ?>"><?php echo $charitable_return_tab_text; // phpcs:ignore ?></a></p>
112 <?php endif ?>
113 <?php
114 /**
115 * Do or render something right before the settings form.
116 *
117 * @since 1.0.0
118 *
119 * @param string $group The settings group we are viewing.
120 */
121 do_action( 'charitable_before_admin_settings', $charitable_group );
122
123 ?>
124
125 <?php
126 // Donors → always show CTA in Lite.
127 // Marketing → render the real form only on Newsletters sub-tab when the Newsletter
128 // Connect addon is active (it works on Lite). All other Marketing sub-tabs
129 // (conversion_tracking, google_analytics) — and Newsletters with no addon —
130 // render their CTA via the charitable_pro_settings_cta action.
131 $charitable_show_cta = 'donors' === $charitable_active_tab
132 || ( 'marketing' === $charitable_active_tab
133 && ( 'newsletters' !== $charitable_active_sub_tab || ! $charitable_newsletter_addon_active )
134 );
135
136 // When rendering the real form for the Newsletters sub-tab, route fields to the
137 // marketing__newsletters group. The legacy addon still hooks into the extensions
138 // section, so we use 'extensions' as the field-group key for the form (see the
139 // bridge in Charitable_Settings::register_settings()).
140 if ( 'marketing' === $charitable_active_tab && 'newsletters' === $charitable_active_sub_tab && $charitable_newsletter_addon_active && empty( $_GET['group'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
141 $charitable_group = 'extensions';
142 }
143
144 if ( $charitable_show_cta ) :
145 ?>
146 <?php do_action( 'charitable_pro_settings_cta', $charitable_active_tab ); ?>
147 <?php else : ?>
148
149 <?php if ( ! in_array( strtolower( $charitable_active_tab ), $charitable_tab_no_form_tag ) ) : // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict ?>
150 <form method="post" action="options.php">
151 <?php endif; ?>
152 <table class="form-table">
153 <?php
154 if ( ! in_array( strtolower( $charitable_active_tab ), $charitable_tab_no_form_tag ) ) : // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
155 settings_fields( 'charitable_settings' );
156 endif;
157
158 charitable_do_settings_fields( 'charitable_settings_' . $charitable_group, 'charitable_settings_' . $charitable_group );
159 ?>
160 </table>
161 <?php if ( ! in_array( strtolower( $charitable_active_tab ), $charitable_tab_no_form_tag ) ) : // phpcs:ignore ?>
162 <?php
163 /**
164 * Filter the submit button at the bottom of the settings table.
165 *
166 * @since 1.6.0
167 *
168 * @param string $button The button output.
169 */
170 echo apply_filters( 'charitable_settings_button_' . $charitable_group, get_submit_button( null, 'primary', 'submit', true, null ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
171 ?>
172 <?php endif; ?>
173 <?php if ( ! in_array( strtolower( $charitable_active_tab ), $charitable_tab_no_form_tag ) ) : // phpcs:ignore ?>
174 </form>
175 <?php endif; ?>
176
177 <?php endif; ?>
178
179 <?php if ( 'security' === $charitable_active_tab) : ?>
180 <?php do_action( 'charitable_pro_settings_cta', $charitable_active_tab ); ?>
181 <?php endif; ?>
182
183 <?php
184 /**
185 * Do or render something right after the settings form.
186 *
187 * @since 1.0.0
188 *
189 * @param string $group The settings group we are viewing.
190 */
191 do_action( 'charitable_after_admin_settings', $charitable_group );
192 ?>
193 </div>
194 <?php
195
196 echo ob_get_clean(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
197