PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.29.2
GiveWP – Donation Plugin and Fundraising Platform v2.29.2
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 / settings / class-settings-email.php
give / includes / admin / settings Last commit date
class-settings-addon.php 6 years ago class-settings-advanced.php 3 years ago class-settings-display.php 4 years ago class-settings-email.php 3 years ago class-settings-gateways.php 3 years ago class-settings-general.php 3 years ago class-settings-license.php 4 years ago class-settings-recurring.php 3 years ago
class-settings-email.php
398 lines
1 <?php
2 /**
3 * Give Settings Page/Tab
4 *
5 * @package Give
6 * @subpackage Classes/Give_Settings_Email
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_Email' ) ) :
17
18 /**
19 * Give_Settings_Email.
20 *
21 * @sine 1.8
22 */
23 class Give_Settings_Email extends Give_Settings_Page {
24
25 /**
26 * Constructor.
27 */
28 public function __construct() {
29 $this->id = 'emails';
30 $this->label = esc_html__( 'Emails', 'give' );
31
32 $this->default_tab = 'donor-email';
33
34 parent::__construct();
35
36 $this->enable_save = ! ( Give_Admin_Settings::is_setting_page( 'emails', 'donor-email' ) || Give_Admin_Settings::is_setting_page( 'emails', 'admin-email' ) );
37
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 );
40 }
41
42 /**
43 * Render give_currency_code_preview field type
44 *
45 * @since 2.3.0
46 * @access public
47 *
48 * @param array $field Field Attributes array.
49 *
50 * @return void
51 */
52 public function _render_give_sendwp_button( $field, $value ) {
53 // Connection status partial label based on the state of the SendWP email sending setting (Tools -> SendWP)
54 $connected = '<a href="https://app.sendwp.com/dashboard" target="_blank" rel="noopener noreferrer">';
55 $connected .= __( 'Access your SendWP account', 'give' );
56 $connected .= '</a>.';
57
58 $disconnected = sprintf(
59 __( '<em><strong>Note:</strong> Email sending is currently disabled. <a href="' . admin_url( '/tools.php?page=sendwp' ) . '">Click here</a> to enable it.</em>', 'give' )
60 );
61
62 // Checks if SendWP is connected
63 $client_connected = function_exists( 'sendwp_client_connected' ) && sendwp_client_connected() ? true : false;
64
65 // Checks if email sending is enabled in SendWP
66 $forwarding_enabled = function_exists( 'sendwp_forwarding_enabled' ) && sendwp_forwarding_enabled() ? true : false;
67
68 // Output the appropriate button and label based on connection status
69 if( $client_connected ) :
70 ?>
71 <tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : ''; ?>>
72 <th scope="row" class="titledesc">
73 <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ); ?></label>
74 </th>
75 <td class="give-forminp">
76 <p><?php _e( 'SendWP plugin activated.', 'give' ); ?> <?php echo $forwarding_enabled ? $connected : $disconnected ; ?></p>
77
78 <br style="margin-bottom: 0.5rem;"/>
79
80 <button id="give-sendwp-disconnect" class="button"><?php _e( 'Disconnect SendWP', 'give' ); ?></button>
81 </td>
82 </tr>
83 <?php
84 else :
85 ?>
86 <tr valign="top" <?php echo ! empty( $field['wrapper_class'] ) ? 'class="' . $field['wrapper_class'] . '"' : ''; ?>>
87 <th scope="row" class="titledesc">
88 <label for="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['name'] ); ?></label>
89 </th>
90 <td class="give-forminp">
91 <div class="give-field-description">
92 <?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>' ); ?>
93 </div>
94
95 <br style="margin-bottom: 0.5rem;"/>
96
97 <button type="button" id="give-sendwp-connect" class="button button-primary"><?php esc_html_e( 'Connect with SendWP', 'give' ); ?>
98 </button>
99 </td>
100 </tr>
101
102 <script>
103 jQuery('#give-sendwp-connect').on('click', function(e) {
104
105 e.preventDefault();
106 jQuery(this).html( 'Connecting <span class="give-loading"></span>' );
107 document.body.style.cursor = 'wait';
108 give_sendwp_remote_install();
109
110 });
111
112 jQuery('#give-sendwp-disconnect').on('click', function(e) {
113 e.preventDefault();
114 jQuery(this).html( 'Disconnecting <span class="give-loading dark"></span>' );
115 document.body.style.cursor = 'wait';
116 give_sendwp_disconnect();
117
118 });
119
120 function give_sendwp_remote_install() {
121 var data = {
122 'action': 'give_sendwp_remote_install',
123 };
124
125 // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
126 jQuery.post(ajaxurl, data, function( response ) {
127
128 if( ! response.success ) {
129
130 if( confirm( response.data.error ) ) {
131 location.reload();
132 return;
133 }
134 }
135
136 give_sendwp_register_client(
137 response.data.register_url,
138 response.data.client_name,
139 response.data.client_secret,
140 response.data.client_redirect,
141 response.data.partner_id
142 );
143 });
144 }
145
146 function give_sendwp_disconnect() {
147 var data = {
148 'action': 'give_sendwp_disconnect',
149 };
150
151 jQuery.post(ajaxurl, data, function( response ) {
152 location.reload();
153 });
154 }
155
156 function give_sendwp_register_client(register_url, client_name, client_secret, client_redirect, partner_id) {
157
158 var form = document.createElement("form");
159 form.setAttribute("method", 'POST');
160 form.setAttribute("action", register_url);
161
162 function give_sendwp_append_form_input(name, value) {
163 var input = document.createElement("input");
164 input.setAttribute("type", "hidden");
165 input.setAttribute("name", name);
166 input.setAttribute("value", value);
167 form.appendChild(input);
168 }
169
170 give_sendwp_append_form_input('client_name', client_name);
171 give_sendwp_append_form_input('client_secret', client_secret);
172 give_sendwp_append_form_input('client_redirect', client_redirect);
173 give_sendwp_append_form_input('partner_id', partner_id);
174
175 document.body.appendChild(form);
176 form.submit();
177 }
178 </script>
179 <?php
180 endif;
181 }
182
183 /**
184 * Get settings array.
185 *
186 * @since 1.8
187 * @return array
188 */
189 public function get_settings() {
190 $settings = array();
191 $current_section = give_get_current_setting_section();
192
193 switch ( $current_section ) {
194 case 'email-settings':
195 $settings = array(
196
197 // Section 1: Email Sender Setting
198 array(
199 'id' => 'give_title_email_settings_1',
200 'type' => 'title',
201 ),
202 array(
203 'id' => 'email_template',
204 'name' => esc_html__( 'Email Template', 'give' ),
205 'desc' => esc_html__( 'Choose your template from the available registered template types.', 'give' ),
206 'type' => 'select',
207 'options' => give_get_email_templates(),
208 ),
209 array(
210 'id' => 'email_logo',
211 'name' => esc_html__( 'Logo', 'give' ),
212 'desc' => esc_html__( 'Upload or choose a logo to be displayed at the top of the donation receipt emails. Displayed on HTML emails only.', 'give' ),
213 'type' => 'file',
214 ),
215 array(
216 'id' => 'from_name',
217 'name' => esc_html__( 'From Name', 'give' ),
218 'desc' => esc_html__( 'The name which appears in the "From" field in all GiveWP donation emails.', 'give' ),
219 'default' => get_bloginfo( 'name' ),
220 'type' => 'text',
221 ),
222 array(
223 'id' => 'from_email',
224 'name' => esc_html__( 'From Email', 'give' ),
225 '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' ),
226 'default' => get_bloginfo( 'admin_email' ),
227 'type' => 'text',
228 ),
229 array(
230 'id' => 'sendwp',
231 'name' => esc_html__( 'SendWP', 'give' ),
232 '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' ),
233 'type' => 'give_sendwp_button',
234 ),
235 array(
236 'name' => esc_html__( 'Donation Notification Settings Docs Link', 'give' ),
237 'id' => 'donation_notification_settings_docs_link',
238 'url' => esc_url( 'http://docs.givewp.com/settings-donation-notification' ),
239 'title' => __( 'Donation Notification Settings', 'give' ),
240 'type' => 'give_docs_link',
241 ),
242 array(
243 'id' => 'give_title_email_settings_3',
244 'type' => 'sectionend',
245 ),
246 );
247 break;
248
249 case 'donor-email':
250 $settings = array(
251
252 // Section 1: Donor Email Notification Listing.
253 array(
254 'desc' => __( 'Email notifications sent from GiveWP for donor are listed below. Click on an email to configure it.', 'give' ),
255 'type' => 'title',
256 'id' => 'give_donor_email_notification_settings',
257 'table_html' => false,
258 ),
259 array(
260 'type' => 'email_notification',
261 ),
262 array(
263 'type' => 'sectionend',
264 'id' => 'give_donor_email_notification_settings',
265 ),
266
267 );
268 break;
269
270 case 'admin-email':
271 $settings = array(
272
273 // Section 1: Admin Email Notification Listing.
274 array(
275 'desc' => __( 'Email notifications sent from GiveWP for admin are listed below. Click on an email to configure it.', 'give' ),
276 'type' => 'title',
277 'id' => 'give_admin_email_notification_settings',
278 'table_html' => false,
279 ),
280 array(
281 'type' => 'email_notification',
282 ),
283 array(
284 'type' => 'sectionend',
285 'id' => 'give_admin_email_notification_settings',
286 ),
287
288 );
289 break;
290
291 case 'contact':
292 $settings = array(
293
294 array(
295 'id' => 'give_title_general_settings_5',
296 'type' => 'title',
297 ),
298 array(
299 'name' => __( 'Admin Email Address', 'give' ),
300 'id' => 'contact_admin_email',
301 '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' ) ),
302 'type' => 'text',
303 'default' => give_email_admin_email(),
304
305 ),
306 array(
307 'name' => __( 'Offline Mailing Address', 'give' ),
308 'id' => 'contact_offline_mailing_address',
309 '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' ) ),
310 'type' => 'wysiwyg',
311 '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>',
312 ),
313 array(
314 'id' => 'give_title_general_settings_4',
315 'type' => 'sectionend',
316 ),
317 );
318
319 break;
320 }// End switch().
321
322 /**
323 * Filter the emails settings.
324 * Backward compatibility: Please do not use this filter. This filter is deprecated in 1.8
325 */
326 $settings = apply_filters( 'give_settings_emails', $settings );
327
328 /**
329 * Filter the settings.
330 *
331 * @since 1.8
332 *
333 * @param array $settings
334 */
335 $settings = apply_filters( 'give_get_settings_' . $this->id, $settings );
336
337 // Output.
338 return $settings;
339 }
340
341 /**
342 * Get sections.
343 *
344 * @since 1.8
345 * @return array
346 */
347 public function get_sections() {
348 $sections = array(
349 'donor-email' => esc_html__( 'Donor Emails', 'give' ),
350 'admin-email' => esc_html__( 'Admin Emails', 'give' ),
351 'email-settings' => esc_html__( 'Email Settings', 'give' ),
352 'contact' => esc_html__( 'Contact Information', 'give' ),
353 );
354
355 return apply_filters( 'give_get_sections_' . $this->id, $sections );
356 }
357
358 /**
359 * Render email_notification field type
360 *
361 * @since 2.0
362 * @access public
363 */
364 public function email_notification_setting() {
365 // Load email notification table.
366 require_once GIVE_PLUGIN_DIR . 'includes/admin/emails/class-email-notification-table.php';
367
368 // Init table.
369 $email_notifications_table = new Give_Email_Notification_Table();
370
371 // Print table.
372 $email_notifications_table->prepare_items();
373 $email_notifications_table->display();
374 }
375
376 /**
377 * Output the settings.
378 *
379 * Note: if you want to overwrite this function then manage show/hide save button in your class.
380 *
381 * @since 1.8
382 * @return void
383 */
384 public function output() {
385 if ( $this->enable_save ) {
386 $GLOBALS['give_hide_save_button'] = apply_filters( 'give_hide_save_button_on_email_admin_setting_page', false );
387 }
388
389 $settings = $this->get_settings();
390
391 Give_Admin_Settings::output_fields( $settings, 'give_settings' );
392 }
393 }
394
395 endif;
396
397 return new Give_Settings_Email();
398