summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2019-09-13 11:29:33 +0000
committeryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2019-09-13 11:29:33 +0000
commitcaa73945f9fe69875171ea2aade2c53e60b21bbe (patch)
treedbcc35d42a519d3796c82c3942891226a425c2e7
parent5f134fb5839bf3e161385727c2a2009b54444878 (diff)
downloadPost-SMTP-caa73945f9fe69875171ea2aade2c53e60b21bbe.zip
hooks + sanitize bug
-rw-r--r--Postman/Postman-Configuration/PostmanConfigurationController.php20
-rw-r--r--Postman/Postman-Configuration/PostmanRegisterConfigurationSettings.php15
-rw-r--r--Postman/Postman-Configuration/postman_manual_config.js3
-rw-r--r--Postman/Postman-Configuration/postman_wizard.js2
-rw-r--r--Postman/Postman-Email-Log/PostmanEmailLogService.php2
-rw-r--r--Postman/PostmanAdminController.php2
-rw-r--r--Postman/PostmanLogFields.php18
-rw-r--r--Postman/PostmanViewController.php4
-rw-r--r--postman-smtp.php5
9 files changed, 52 insertions, 19 deletions
diff --git a/Postman/Postman-Configuration/PostmanConfigurationController.php b/Postman/Postman-Configuration/PostmanConfigurationController.php
index ee14ad8..59fbdb8 100644
--- a/Postman/Postman-Configuration/PostmanConfigurationController.php
+++ b/Postman/Postman-Configuration/PostmanConfigurationController.php
@@ -390,17 +390,19 @@ class PostmanConfigurationController {
print '<section id="notifications">';
do_settings_sections( PostmanAdminController::NOTIFICATIONS_OPTIONS );
- $currentKey = $this->options->getNotificationService();
- $pushover = $currentKey == 'pushover' ? 'block' : 'none';
- $slack = $currentKey == 'slack' ? 'block' : 'none';
+ $currentKey = $this->options->getNotificationService();
+ $pushover = $currentKey == 'pushover' ? 'block' : 'none';
+ $slack = $currentKey == 'slack' ? 'block' : 'none';
- echo '<div id="pushover_cred" style="display: ' . $pushover . ';">';
- do_settings_sections( PostmanAdminController::NOTIFICATIONS_PUSHOVER_CRED );
- echo '</div>';
+ echo '<div id="pushover_cred" style="display: ' . $pushover . ';">';
+ do_settings_sections( PostmanAdminController::NOTIFICATIONS_PUSHOVER_CRED );
+ echo '</div>';
- echo '<div id="slack_cred" style="display: ' . $slack . ';">';
- do_settings_sections( PostmanAdminController::NOTIFICATIONS_SLACK_CRED );
- echo '</div>';
+ echo '<div id="slack_cred" style="display: ' . $slack . ';">';
+ do_settings_sections( PostmanAdminController::NOTIFICATIONS_SLACK_CRED );
+ echo '</div>';
+
+ do_action( 'post_smtp_notification_settings' );
print '</section>';
diff --git a/Postman/Postman-Configuration/PostmanRegisterConfigurationSettings.php b/Postman/Postman-Configuration/PostmanRegisterConfigurationSettings.php
index 6ddebd7..705ef23 100644
--- a/Postman/Postman-Configuration/PostmanRegisterConfigurationSettings.php
+++ b/Postman/Postman-Configuration/PostmanRegisterConfigurationSettings.php
@@ -234,6 +234,7 @@ class PostmanSettingsRegistry {
'notification_chrome_uid_callback',
), PostmanAdminController::NOTIFICATIONS_OPTIONS, PostmanAdminController::NOTIFICATIONS_SECTION );
+ do_action( 'post_smtp_settings' );
}
}
@@ -443,12 +444,20 @@ class PostmanSettingsRegistry {
public function notification_service_callback() {
$inputDescription = __( 'Select the notification service you want to recieve alerts about failed emails.' );
+
+ $options = apply_filters('post_smtp_notification_service', array(
+ 'default' => __( 'WP Admin Email', 'post-smtp' ),
+ 'pushover' => __( 'Pushover', 'post-smtp' ),
+ 'slack' => __( 'Slack', 'post-smtp' ),
+ ));
+
printf( '<select id="input_%2$s" class="input_%2$s" name="%1$s[%2$s]">', PostmanOptions::POSTMAN_OPTIONS, PostmanOptions::NOTIFICATION_SERVICE );
$currentKey = $this->options->getNotificationService();
- $this->printSelectOption( __( 'Email', 'post-smtp' ), 'default', $currentKey );
- $this->printSelectOption( __( 'Pushover', 'post-smtp' ), 'pushover', $currentKey );
- $this->printSelectOption( __( 'Slack', 'post-smtp' ), 'slack', $currentKey );
+ foreach ( $options as $key => $label ) {
+ $this->printSelectOption( $label, $key, $currentKey );
+ }
+
printf( '</select><br/><span class="postman_input_description">%s</span>', $inputDescription );
}
diff --git a/Postman/Postman-Configuration/postman_manual_config.js b/Postman/Postman-Configuration/postman_manual_config.js
index a47df1a..49438fc 100644
--- a/Postman/Postman-Configuration/postman_manual_config.js
+++ b/Postman/Postman-Configuration/postman_manual_config.js
@@ -40,6 +40,9 @@ jQuery(document).ready(
$('#pushover_cred').fadeOut('fast');
$('#slack_cred').fadeIn();
}
+
+ Hook.call( 'post_smtp_notification_change', selected );
+
});
diff --git a/Postman/Postman-Configuration/postman_wizard.js b/Postman/Postman-Configuration/postman_wizard.js
index d844322..cbd2031 100644
--- a/Postman/Postman-Configuration/postman_wizard.js
+++ b/Postman/Postman-Configuration/postman_wizard.js
@@ -517,6 +517,8 @@ function handleConfigurationResponse(response) {
jQuery('#pushover_cred').fadeOut('fast');
jQuery('#slack_cred').fadeIn();
}
+
+ Hook.call( 'post_smtp_notification_change', selected );
});
// add an event on the user port override field
diff --git a/Postman/Postman-Email-Log/PostmanEmailLogService.php b/Postman/Postman-Email-Log/PostmanEmailLogService.php
index 1afb4fc..2538700 100644
--- a/Postman/Postman-Email-Log/PostmanEmailLogService.php
+++ b/Postman/Postman-Email-Log/PostmanEmailLogService.php
@@ -212,6 +212,8 @@ if ( ! class_exists( 'PostmanEmailLogService' ) ) {
$notifyer = new PostmanMailNotify;
}
+ $notifyer = apply_filters( 'post_smtp_notifier', $notifyer, $notification_service );
+
// Notifications
$notify = new PostmanNotify( $notifyer );
$notify->send($message, $log);
diff --git a/Postman/PostmanAdminController.php b/Postman/PostmanAdminController.php
index 3d0486f..1e43c6d 100644
--- a/Postman/PostmanAdminController.php
+++ b/Postman/PostmanAdminController.php
@@ -128,11 +128,13 @@ if ( ! class_exists( 'PostmanAdminController' ) ) {
$this->logger->debug( 'Looking for grant code' );
if ( isset( $_GET ['code'] ) ) {
$this->logger->debug( 'Found authorization grant code' );
+
// queue the function that processes the incoming grant code
$this->registerInitFunction( 'handleAuthorizationGrant' );
return;
}
}
+ do_action('post_smtp_handle_oauth', $this->messageHandler );
// continue to initialize the AdminController
add_action( 'init', array(
diff --git a/Postman/PostmanLogFields.php b/Postman/PostmanLogFields.php
index 84a3121..6e04b8d 100644
--- a/Postman/PostmanLogFields.php
+++ b/Postman/PostmanLogFields.php
@@ -3,11 +3,11 @@ class PostmanLogFields {
private $fields = array(
'success' => 'sanitize_text_field',
- 'from_header' => 'sanitize_text_field',
- 'to_header' => 'sanitize_text_field',
- 'cc_header' => 'sanitize_text_field',
- 'bcc_header' => 'sanitize_text_field',
- 'reply_to_header' => 'sanitize_text_field',
+ 'from_header' => '',
+ 'to_header' => '',
+ 'cc_header' => '',
+ 'bcc_header' => '',
+ 'reply_to_header' => '',
'transport_uri' => 'sanitize_text_field',
'original_to' => 'sanitize_text_field',
'original_subject' => 'sanitize_text_field',
@@ -75,7 +75,11 @@ class PostmanLogFields {
private function sanitize( $key, $value ) {
$callback = is_array( $value ) ? 'array_map' : 'call_user_func';
- return $callback( $this->fields[$key], $value );
+ if ( ! empty( $this->fields[$key] ) ) {
+ return $callback( $this->fields[$key], $value );
+ }
+
+ return filter_var( $value, FILTER_SANITIZE_STRING | FILTER_SANITIZE_SPECIAL_CHARS );
}
private function sanitize_message( $message ) {
@@ -92,4 +96,4 @@ class PostmanLogFields {
return $value;
}
-}
+} \ No newline at end of file
diff --git a/Postman/PostmanViewController.php b/Postman/PostmanViewController.php
index 726880b..050033f 100644
--- a/Postman/PostmanViewController.php
+++ b/Postman/PostmanViewController.php
@@ -347,7 +347,11 @@ if ( ! class_exists( 'PostmanViewController' ) ) {
print '<ul>';
// Grant permission with Google
+ ob_start();
PostmanTransportRegistry::getInstance()->getSelectedTransport()->printActionMenuItem();
+ $oauth_link = ob_get_clean();
+
+ echo apply_filters( 'post_smtp_oauth_actions', $oauth_link );
if ( PostmanWpMailBinder::getInstance()->isBound() ) {
printf( '<li><a href="%s" class="welcome-icon send_test_email">%s</a></li>', $this->getPageUrl( PostmanSendTestEmailController::EMAIL_TEST_SLUG ), __( 'Send a Test Email', 'post-smtp' ) );
diff --git a/postman-smtp.php b/postman-smtp.php
index 07454ed..80dc8da 100644
--- a/postman-smtp.php
+++ b/postman-smtp.php
@@ -116,6 +116,11 @@ function post_dismiss_not_configured() {
}
add_action( 'admin_footer', 'post_dismiss_not_configured' );
+function post_smtp_general_scripts() {
+ wp_enqueue_script( 'post-smtp-hooks', POST_SMTP_URL . '/script/post-smtp-hooks.js', [], false );
+}
+add_action( 'admin_enqueue_scripts', 'post_smtp_general_scripts', 8 );
+
/**
* Create the main Postman class to start Postman
*