PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 256 releases
← All changes | includes/admin/settings/class-settings-email.php +211 -29 2.3.04.17.0 View file →
@@ -3,9 +3,9 @@
3 3 * Give Settings Page/Tab
4 4 *
5 5 * @package Give
6 6 * @subpackage Classes/Give_Settings_Email
7 - * @copyright Copyright (c) 2016, WordImpress
7 + * @copyright Copyright (c) 2016, GiveWP
8 8 * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9 9 * @since 1.8
10 10 */
11 11
@@ -28,15 +28,163 @@
28 28 public function __construct() {
29 29 $this->id = 'emails';
30 30 $this->label = esc_html__( 'Emails', 'give' );
31 31
32 - $this->default_tab = 'email-settings';
32 + $this->default_tab = 'donor-email';
33 33
34 34 parent::__construct();
35 35
36 + $this->enable_save = ! ( Give_Admin_Settings::is_setting_page( 'emails', 'donor-email' ) || Give_Admin_Settings::is_setting_page( 'emails', 'admin-email' ) );
37 +
36 38 add_action( 'give_admin_field_email_notification', array( $this, 'email_notification_setting' ) );
39 + add_action( 'give_admin_field_give_sendwp_button', [ $this, '_render_give_sendwp_button' ], 10, 3 );
37 40 }
38 41
42 + /**
43 + * Render give_currency_code_preview field type
44 + *
45 + * @since 2.33.4 added nonce to give_sendwp_remote_install
46 + * @since 2.3.0
47 + * @access public
48 + *
49 + * @param array $field Field Attributes array.
50 + *
51 + * @return void
52 + */
53 + public function _render_give_sendwp_button( $field, $value ) {
54 + // Connection status partial label based on the state of the SendWP email sending setting (Tools -> SendWP)
55 + $connected = '<a href="https://app.sendwp.com/dashboard" target="_blank" rel="noopener noreferrer">';
56 + $connected .= __( 'Access your SendWP account', 'give' );
57 + $connected .= '</a>.';
58 +
59 + $disconnected = sprintf(
60 + __( '<em><strong>Note:</strong> Email sending is currently disabled. <a href="%s">Click here</a> to enable it.</em>', 'give' ),
61 + esc_url( admin_url( '/tools.php?page=sendwp' ) )
62 + );
63 +
64 + // Checks if SendWP is connected
65 + $client_connected = function_exists( 'sendwp_client_connected' ) && sendwp_client_connected() ? true : false;
66 +
67 + // Checks if email sending is enabled in SendWP
68 + $forwarding_enabled = function_exists( 'sendwp_forwarding_enabled' ) && sendwp_forwarding_enabled() ? true : false;
69 +
70 + // Output the appropriate button and label based on connection status
71 + if( $client_connected ) :
72 + ?>
73 + <tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : ''; ?>>
74 + <th scope="row" class="titledesc">
75 + <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ); ?></label>
76 + </th>
77 + <td class="give-forminp">
78 + <p><?php _e( 'SendWP plugin activated.', 'give' ); ?> <?php echo $forwarding_enabled ? $connected : $disconnected ; ?></p>
79 +
80 + <br style="margin-bottom: 0.5rem;"/>
81 +
82 + <button id="give-sendwp-disconnect" class="button"><?php _e( 'Disconnect SendWP', 'give' ); ?></button>
83 + </td>
84 + </tr>
85 + <?php
86 + else :
87 + ?>
88 + <tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : ''; ?>>
89 + <th scope="row" class="titledesc">
90 + <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ); ?></label>
91 + </th>
92 + <td class="give-forminp">
93 + <div class="give-field-description">
94 + <?php _e( 'GiveWP recommends SendWP to ensure quick and reliable delivery of all emails sent from your site, such as donation receipts, recurring donation renewal reminders, password resets, and more.', 'give' ); ?> <?php printf( __( '%sLearn more%s', 'give' ), '<a href="https://go.givewp.com/sendwpinternal" target="_blank" rel="noopener noreferrer">', '</a>' ); ?>
95 + </div>
96 +
97 + <br style="margin-bottom: 0.5rem;"/>
98 +
99 + <button type="button" id="give-sendwp-connect" class="button button-primary"><?php esc_html_e( 'Connect with SendWP', 'give' ); ?>
100 + </button>
101 + </td>
102 + </tr>
103 +
104 + <script>
105 + jQuery('#give-sendwp-connect').on('click', function(e) {
106 +
107 + e.preventDefault();
108 + jQuery(this).html( 'Connecting <span class="give-loading"></span>' );
109 + document.body.style.cursor = 'wait';
110 + give_sendwp_remote_install();
111 +
112 + });
113 +
114 + jQuery('#give-sendwp-disconnect').on('click', function(e) {
115 + e.preventDefault();
116 + jQuery(this).html( 'Disconnecting <span class="give-loading dark"></span>' );
117 + document.body.style.cursor = 'wait';
118 + give_sendwp_disconnect();
119 +
120 + });
121 +
122 + function give_sendwp_remote_install() {
123 + var data = {
124 + 'action': 'give_sendwp_remote_install',
125 + '_ajax_nonce': '<?php echo wp_create_nonce( 'give_sendwp_remote_install'); ?>'
126 + };
127 +
128 + // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
129 + jQuery.post(ajaxurl, data, function( response ) {
130 +
131 + if( ! response.success ) {
132 +
133 + if( confirm( response.data.error ) ) {
134 + location.reload();
135 + return;
136 + }
137 + }
138 +
139 + give_sendwp_register_client(
140 + response.data.register_url,
141 + response.data.client_name,
142 + response.data.client_secret,
143 + response.data.client_redirect,
144 + response.data.partner_id
145 + );
146 + });
147 + }
148 +
149 + function give_sendwp_disconnect() {
150 + var data = {
151 + 'action': 'give_sendwp_disconnect',
152 + '_ajax_nonce': '<?php echo wp_create_nonce( 'give_sendwp_disconnect' ); ?>'
153 + };
154 +
155 + jQuery.post(ajaxurl, data, function( response ) {
156 + location.reload();
157 + });
158 + }
159 +
160 + function give_sendwp_register_client(register_url, client_name, client_secret, client_redirect, partner_id) {
161 +
162 + var form = document.createElement("form");
163 + form.setAttribute("method", 'POST');
164 + form.setAttribute("action", register_url);
165 +
166 + function give_sendwp_append_form_input(name, value) {
167 + var input = document.createElement("input");
168 + input.setAttribute("type", "hidden");
169 + input.setAttribute("name", name);
170 + input.setAttribute("value", value);
171 + form.appendChild(input);
172 + }
173 +
174 + give_sendwp_append_form_input('client_name', client_name);
175 + give_sendwp_append_form_input('client_secret', client_secret);
176 + give_sendwp_append_form_input('client_redirect', client_redirect);
177 + give_sendwp_append_form_input('partner_id', partner_id);
178 +
179 + document.body.appendChild(form);
180 + form.submit();
181 + }
182 + </script>
183 + <?php
184 + endif;
185 + }
186 +
39 187 /**
40 188 * Get settings array.
41 189 *
42 190 * @since 1.8
@@ -46,33 +194,17 @@
46 194 $settings = array();
47 195 $current_section = give_get_current_setting_section();
48 196
49 197 switch ( $current_section ) {
50 - case 'email-settings' :
198 + case 'email-settings':
51 199 $settings = array(
52 200
53 - // Section 1: Email Notification Listing.
201 + // Section 1: Email Sender Setting
54 202 array(
55 - 'desc' => __( 'Email notifications sent from Give are listed below. Click on an email to configure it.', 'give' ),
56 - 'type' => 'title',
57 - 'id' => 'give_email_notification_settings',
58 - 'table_html' => false,
203 + 'id' => 'give_title_email_settings_1',
204 + 'type' => 'title',
59 205 ),
60 206 array(
61 - 'type' => 'email_notification',
62 - ),
63 - array(
64 - 'type' => 'sectionend',
65 - 'id' => 'give_email_notification_settings',
66 - ),
67 -
68 - // Section 2: Email Sender Setting
69 - array(
70 - 'title' => __( 'Email Sender Options', 'give' ),
71 - 'id' => 'give_title_email_settings_1',
72 - 'type' => 'title',
73 - ),
74 - array(
75 207 'id' => 'email_template',
76 208 'name' => esc_html__( 'Email Template', 'give' ),
77 209 'desc' => esc_html__( 'Choose your template from the available registered template types.', 'give' ),
78 210 'type' => 'select',
@@ -86,9 +218,9 @@
86 218 ),
87 219 array(
88 220 'id' => 'from_name',
89 221 'name' => esc_html__( 'From Name', 'give' ),
90 - 'desc' => esc_html__( 'The name which appears in the "From" field in all Give donation emails.', 'give' ),
222 + 'desc' => esc_html__( 'The name which appears in the "From" field in all GiveWP donation emails.', 'give' ),
91 223 'default' => get_bloginfo( 'name' ),
92 224 'type' => 'text',
93 225 ),
94 226 array(
@@ -93,12 +225,18 @@
93 225 ),
94 226 array(
95 227 'id' => 'from_email',
96 228 'name' => esc_html__( 'From Email', 'give' ),
97 - 'desc' => esc_html__( 'Email address from which all Give emails are sent from. This will act as the "from" and "reply-to" email address.', 'give' ),
229 + 'desc' => esc_html__( 'Email address from which all GiveWP emails are sent from. This will act as the "from" and "reply-to" email address.', 'give' ),
98 230 'default' => get_bloginfo( 'admin_email' ),
99 231 'type' => 'text',
100 232 ),
233 + array(
234 + 'id' => 'sendwp',
235 + 'name' => esc_html__( 'SendWP', 'give' ),
236 + 'desc' => esc_html__( 'We recommend SendWP to ensure quick and reliable delivery of all emails sent from your store, such as donation receipts, recurring donation renewal reminders, password resets, and more.', 'give' ),
237 + 'type' => 'give_sendwp_button',
238 + ),
101 239 array(
102 240 'name' => esc_html__( 'Donation Notification Settings Docs Link', 'give' ),
103 241 'id' => 'donation_notification_settings_docs_link',
104 242 'url' => esc_url( 'http://docs.givewp.com/settings-donation-notification' ),
@@ -111,18 +249,60 @@
111 249 ),
112 250 );
113 251 break;
114 252
253 + case 'donor-email':
254 + $settings = array(
255 +
256 + // Section 1: Donor Email Notification Listing.
257 + array(
258 + 'desc' => __( 'Email notifications sent from GiveWP for donor are listed below. Click on an email to configure it.', 'give' ),
259 + 'type' => 'title',
260 + 'id' => 'give_donor_email_notification_settings',
261 + 'table_html' => false,
262 + ),
263 + array(
264 + 'type' => 'email_notification',
265 + ),
266 + array(
267 + 'type' => 'sectionend',
268 + 'id' => 'give_donor_email_notification_settings',
269 + ),
270 +
271 + );
272 + break;
273 +
274 + case 'admin-email':
275 + $settings = array(
276 +
277 + // Section 1: Admin Email Notification Listing.
278 + array(
279 + 'desc' => __( 'Email notifications sent from GiveWP for admin are listed below. Click on an email to configure it.', 'give' ),
280 + 'type' => 'title',
281 + 'id' => 'give_admin_email_notification_settings',
282 + 'table_html' => false,
283 + ),
284 + array(
285 + 'type' => 'email_notification',
286 + ),
287 + array(
288 + 'type' => 'sectionend',
289 + 'id' => 'give_admin_email_notification_settings',
290 + ),
291 +
292 + );
293 + break;
294 +
115 295 case 'contact':
116 296 $settings = array(
117 297
118 298 array(
119 299 'id' => 'give_title_general_settings_5',
120 - 'type' => 'title'
300 + 'type' => 'title',
121 301 ),
122 302 array(
123 303 'name' => __( 'Admin Email Address', 'give' ),
124 - 'id' => "contact_admin_email",
304 + 'id' => 'contact_admin_email',
125 305 'desc' => sprintf( '%1$s <code>{admin_email}</code> %2$s', __( 'By default, the', 'give' ), __( 'tag will use your WordPress admin email. If you would like to customize this address you can do so in the field above.', 'give' ) ),
126 306 'type' => 'text',
127 307 'default' => give_email_admin_email(),
128 308
@@ -128,9 +308,9 @@
128 308
129 309 ),
130 310 array(
131 311 'name' => __( 'Offline Mailing Address', 'give' ),
132 - 'id' => "contact_offline_mailing_address",
312 + 'id' => 'contact_offline_mailing_address',
133 313 'desc' => sprintf( '%1$s <code>{offline_mailing_address}</code> %2$s', __( 'Set the mailing address to where you would like your donors to send their offline donations. This will customize the', 'give' ), __( 'email tag for the Offline Donations payment gateway.', 'give' ) ),
134 314 'type' => 'wysiwyg',
135 315 'default' => '&nbsp;&nbsp;&nbsp;&nbsp;<em>' . get_bloginfo( 'sitename' ) . '</em><br>&nbsp;&nbsp;&nbsp;&nbsp;<em>111 Not A Real St.</em><br>&nbsp;&nbsp;&nbsp;&nbsp;<em>Anytown, CA 12345 </em><br>',
136 316 ),
@@ -135,10 +315,10 @@
135 315 'default' => '&nbsp;&nbsp;&nbsp;&nbsp;<em>' . get_bloginfo( 'sitename' ) . '</em><br>&nbsp;&nbsp;&nbsp;&nbsp;<em>111 Not A Real St.</em><br>&nbsp;&nbsp;&nbsp;&nbsp;<em>Anytown, CA 12345 </em><br>',
136 316 ),
137 317 array(
138 318 'id' => 'give_title_general_settings_4',
139 - 'type' => 'sectionend'
140 - )
319 + 'type' => 'sectionend',
320 + ),
141 321 );
142 322
143 323 break;
144 324 }// End switch().
@@ -169,8 +349,10 @@
169 349 * @return array
170 350 */
171 351 public function get_sections() {
172 352 $sections = array(
353 + 'donor-email' => esc_html__( 'Donor Emails', 'give' ),
354 + 'admin-email' => esc_html__( 'Admin Emails', 'give' ),
173 355 'email-settings' => esc_html__( 'Email Settings', 'give' ),
174 356 'contact' => esc_html__( 'Contact Information', 'give' ),
175 357 );
176 358