PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 5 months ago class-settings-display.php 2 years ago class-settings-email.php 11 months ago class-settings-gateways.php 1 year ago class-settings-general.php 1 year ago class-settings-license.php 1 month ago class-settings-recurring.php 1 year ago
class-settings-email.php
402 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.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
187 /**
188 * Get settings array.
189 *
190 * @since 1.8
191 * @return array
192 */
193 public function get_settings() {
194 $settings = array();
195 $current_section = give_get_current_setting_section();
196
197 switch ( $current_section ) {
198 case 'email-settings':
199 $settings = array(
200
201 // Section 1: Email Sender Setting
202 array(
203 'id' => 'give_title_email_settings_1',
204 'type' => 'title',
205 ),
206 array(
207 'id' => 'email_template',
208 'name' => esc_html__( 'Email Template', 'give' ),
209 'desc' => esc_html__( 'Choose your template from the available registered template types.', 'give' ),
210 'type' => 'select',
211 'options' => give_get_email_templates(),
212 ),
213 array(
214 'id' => 'email_logo',
215 'name' => esc_html__( 'Logo', 'give' ),
216 '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' ),
217 'type' => 'file',
218 ),
219 array(
220 'id' => 'from_name',
221 'name' => esc_html__( 'From Name', 'give' ),
222 'desc' => esc_html__( 'The name which appears in the "From" field in all GiveWP donation emails.', 'give' ),
223 'default' => get_bloginfo( 'name' ),
224 'type' => 'text',
225 ),
226 array(
227 'id' => 'from_email',
228 'name' => esc_html__( 'From Email', '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' ),
230 'default' => get_bloginfo( 'admin_email' ),
231 'type' => 'text',
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 ),
239 array(
240 'name' => esc_html__( 'Donation Notification Settings Docs Link', 'give' ),
241 'id' => 'donation_notification_settings_docs_link',
242 'url' => esc_url( 'http://docs.givewp.com/settings-donation-notification' ),
243 'title' => __( 'Donation Notification Settings', 'give' ),
244 'type' => 'give_docs_link',
245 ),
246 array(
247 'id' => 'give_title_email_settings_3',
248 'type' => 'sectionend',
249 ),
250 );
251 break;
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
295 case 'contact':
296 $settings = array(
297
298 array(
299 'id' => 'give_title_general_settings_5',
300 'type' => 'title',
301 ),
302 array(
303 'name' => __( 'Admin Email Address', 'give' ),
304 'id' => 'contact_admin_email',
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' ) ),
306 'type' => 'text',
307 'default' => give_email_admin_email(),
308
309 ),
310 array(
311 'name' => __( 'Offline Mailing Address', 'give' ),
312 'id' => 'contact_offline_mailing_address',
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' ) ),
314 'type' => 'wysiwyg',
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>',
316 ),
317 array(
318 'id' => 'give_title_general_settings_4',
319 'type' => 'sectionend',
320 ),
321 );
322
323 break;
324 }// End switch().
325
326 /**
327 * Filter the emails settings.
328 * Backward compatibility: Please do not use this filter. This filter is deprecated in 1.8
329 */
330 $settings = apply_filters( 'give_settings_emails', $settings );
331
332 /**
333 * Filter the settings.
334 *
335 * @since 1.8
336 *
337 * @param array $settings
338 */
339 $settings = apply_filters( 'give_get_settings_' . $this->id, $settings );
340
341 // Output.
342 return $settings;
343 }
344
345 /**
346 * Get sections.
347 *
348 * @since 1.8
349 * @return array
350 */
351 public function get_sections() {
352 $sections = array(
353 'donor-email' => esc_html__( 'Donor Emails', 'give' ),
354 'admin-email' => esc_html__( 'Admin Emails', 'give' ),
355 'email-settings' => esc_html__( 'Email Settings', 'give' ),
356 'contact' => esc_html__( 'Contact Information', 'give' ),
357 );
358
359 return apply_filters( 'give_get_sections_' . $this->id, $sections );
360 }
361
362 /**
363 * Render email_notification field type
364 *
365 * @since 2.0
366 * @access public
367 */
368 public function email_notification_setting() {
369 // Load email notification table.
370 require_once GIVE_PLUGIN_DIR . 'includes/admin/emails/class-email-notification-table.php';
371
372 // Init table.
373 $email_notifications_table = new Give_Email_Notification_Table();
374
375 // Print table.
376 $email_notifications_table->prepare_items();
377 $email_notifications_table->display();
378 }
379
380 /**
381 * Output the settings.
382 *
383 * Note: if you want to overwrite this function then manage show/hide save button in your class.
384 *
385 * @since 1.8
386 * @return void
387 */
388 public function output() {
389 if ( $this->enable_save ) {
390 $GLOBALS['give_hide_save_button'] = apply_filters( 'give_hide_save_button_on_email_admin_setting_page', false );
391 }
392
393 $settings = $this->get_settings();
394
395 Give_Admin_Settings::output_fields( $settings, 'give_settings' );
396 }
397 }
398
399 endif;
400
401 return new Give_Settings_Email();
402