Horriblesubs/fansub/options/setting-smtp-email.php

105 lines
5.1 KiB
PHP

<?php
if(!function_exists('add_filter')) exit;
$parent_slug = 'options-general.php';
$option_smtp = new FANSUB_Option(__('SMTP Email', 'fansub'), 'fansub_option_smtp_email');
$option_smtp->set_parent_slug($parent_slug);
$option_smtp->add_section(array('id' => 'smtp_option', 'title' => __('SMTP Options', 'fansub'), 'description' => __('These options only apply if you have chosen to send mail by SMTP above.', 'fansub')));
$option_smtp->add_section(array('id' => 'testing', 'title' => __('Configuration Testing', 'fansub'), 'description' => __('If you do not feel very confident with the above configuration, you can send a test mail to know the results.', 'fansub')));
$option_smtp->add_field(array('id' => 'mail_from', 'title' => __('From Email', 'fansub'), 'description' => __('You can specify the email address that emails should be sent from. If you leave this blank, the default email will be used.', 'fansub')));
$option_smtp->add_field(array('id' => 'mail_from_name', 'title' => __('From Name', 'fansub'), 'description' => __('You can specify the name that emails should be sent from. If you leave this blank, the emails will be sent from WordPress.', 'fansub')));
$field_options = array(
array(
'id' => 'mailer_smtp',
'label' => __('Send all WordPress emails via SMTP.', 'fansub'),
'option_value' => 'smtp'
),
array(
'id' => 'mailer_mail',
'label' => __('Use the PHP mail() function to send emails.', 'fansub'),
'option_value' => 'mail'
)
);
$option_smtp->add_field(array('id' => 'mailer', 'title' => __('Mailer', 'fansub'), 'field_callback' => 'fansub_field_input_radio', 'options' => $field_options));
$field_options = array(
array(
'id' => 'mail_set_return_path',
'label' => __('Set the return-path to match the From Email.', 'fansub')
)
);
$option_smtp->add_field(array('id' => 'mail_set_return_path', 'title' => __('Return Path', 'fansub'), 'field_callback' => 'fansub_field_input_checkbox', 'options' => $field_options));
$option_smtp->add_field(array('id' => 'smtp_host', 'title' => __('SMTP Host', 'fansub'), 'default' => 'localhost', 'section' => 'smtp_option'));
$option_smtp->add_field(array('id' => 'smtp_port', 'title' => __('SMTP Port', 'fansub'), 'default' => 25, 'section' => 'smtp_option'));
$field_options = array(
array(
'id' => 'smtp_ssl_none',
'label' => __('No encryption.', 'fansub'),
'option_value' => 'none'
),
array(
'id' => 'smtp_ssl_ssl',
'label' => __('Use SSL encryption.', 'fansub'),
'option_value' => 'ssl'
),
array(
'id' => 'smtp_ssl_tls',
'label' => __('Use TLS encryption. This is not the same as STARTTLS. For most servers SSL is the recommended option.', 'fansub'),
'option_value' => 'tls'
)
);
$option_smtp->add_field(array('id' => 'smtp_ssl', 'title' => __('Encryption', 'fansub'), 'field_callback' => 'fansub_field_input_radio', 'options' => $field_options, 'section' => 'smtp_option'));
$field_options = array(
array(
'id' => 'smtp_auth_true',
'label' => __('Yes: Use SMTP authentication.', 'fansub'),
'option_value' => 'true'
),
array(
'id' => 'smtp_auth_false',
'label' => __('No: Do not use SMTP authentication.', 'fansub'),
'option_value' => 'false'
)
);
$option_smtp->add_field(array('id' => 'smtp_auth', 'title' => __('Authentication', 'fansub'), 'field_callback' => 'fansub_field_input_radio', 'options' => $field_options, 'section' => 'smtp_option'));
$option_smtp->add_field(array('id' => 'smtp_user', 'title' => __('Username', 'fansub'), 'section' => 'smtp_option'));
$option_smtp->add_field(array('id' => 'smtp_pass', 'title' => __('Password', 'fansub'), 'section' => 'smtp_option', 'type' => 'password'));
$option_smtp->add_field(array('id' => 'to_email', 'title' => __('To', 'fansub'), 'section' => 'testing', 'description' => __('Type an email address here and then click Send Test to generate a test email.', 'fansub'), 'type' => 'email'));
$option_smtp->init();
fansub_option_add_object_to_list($option_smtp);
function fansub_sanitize_option_smtp_mail($input) {
if(isset($input['to_email'])) {
if(is_email($input['to_email'])) {
set_transient('fansub_test_smtp_email', $input['to_email']);
}
}
unset($input['to_email']);
return $input;
}
add_filter('fansub_sanitize_option_' . $option_smtp->get_option_name_no_prefix(), 'fansub_sanitize_option_smtp_mail');
function fansub_option_smtp_mail_update($input) {
return $input;
}
add_action('fansub_sanitize_' . $option_smtp->get_option_name_no_prefix() . '_option', 'fansub_option_smtp_mail_update');
function fansub_option_smtp_email_testing() {
if(false !== ($email = get_transient('fansub_test_smtp_email'))) {
if(is_email($email)) {
unset($_GET['settings-updated']);
$test_message = fansub_mail_test_smtp_setting($email);
set_transient('fansub_test_smtp_email_message', $test_message);
delete_transient('fansub_test_smtp_email');
add_action('admin_notices', 'fansub_option_smtp_email_testing_message');
unset($phpmailer);
}
}
}
add_action('admin_init', 'fansub_option_smtp_email_testing');
function fansub_option_smtp_email_testing_message() {
if(false !== ($message = get_transient('fansub_test_smtp_email_message'))) {
fansub_admin_notice(array('text' => $message));
delete_transient('fansub_test_smtp_email_message');
}
}