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