summaryrefslogtreecommitdiff
path: root/Postman/Postman-Email-Log/PostmanEmailLogService.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Email-Log/PostmanEmailLogService.php')
-rw-r--r--Postman/Postman-Email-Log/PostmanEmailLogService.php41
1 files changed, 34 insertions, 7 deletions
diff --git a/Postman/Postman-Email-Log/PostmanEmailLogService.php b/Postman/Postman-Email-Log/PostmanEmailLogService.php
index 103dcc1..dd51974 100644
--- a/Postman/Postman-Email-Log/PostmanEmailLogService.php
+++ b/Postman/Postman-Email-Log/PostmanEmailLogService.php
@@ -16,6 +16,10 @@ if ( ! class_exists( 'PostmanEmailLog' ) ) {
public $originalSubject;
public $originalMessage;
public $originalHeaders;
+
+ public function setStatusMessage( $message ) {
+ $this->statusMessage .= $message;
+ }
}
}
@@ -95,7 +99,7 @@ if ( ! class_exists( 'PostmanEmailLogService' ) ) {
public function writeFailureLog( PostmanEmailLog $log, PostmanMessage $message = null, $transcript, PostmanModuleTransport $transport, $statusMessage ) {
if ( PostmanOptions::getInstance()->isMailLoggingEnabled() ) {
$this->createLog( $log, $message, $transcript, $statusMessage, false, $transport );
- $this->writeToEmailLog( $log );
+ $this->writeToEmailLog( $log,$message );
}
}
@@ -104,21 +108,43 @@ if ( ! class_exists( 'PostmanEmailLogService' ) ) {
*
* From http://wordpress.stackexchange.com/questions/8569/wp-insert-post-php-function-and-custom-fields
*/
- private function writeToEmailLog( PostmanEmailLog $log ) {
+ private function writeToEmailLog( PostmanEmailLog $log, PostmanMessage $message = null ) {
+
+ $options = PostmanOptions::getInstance();
+
+ $this->checkForLogErrors( $log ,$message );
+ $new_status = $log->statusMessage;
+
+ if ( $options->is_fallback && empty( $log->statusMessage ) ) {
+ $new_status = 'Sent ( ** Fallback ** )';
+ }
+
+ if ( $options->is_fallback && ! empty( $log->statusMessage ) ) {
+ $new_status = '( ** Fallback ** ) ' . $log->statusMessage;
+ }
- $this->checkForLogErrors( $log );
// nothing here is sanitized as WordPress should take care of
// making database writes safe
$my_post = array(
'post_type' => PostmanEmailLogPostType::POSTMAN_CUSTOM_POST_TYPE_SLUG,
'post_title' => $log->subject,
'post_content' => $log->body,
- 'post_excerpt' => $log->statusMessage,
+ 'post_excerpt' => $new_status,
'post_status' => PostmanEmailLogService::POSTMAN_CUSTOM_POST_STATUS_PRIVATE,
);
// Insert the post into the database (WordPress gives us the Post ID)
- $post_id = wp_insert_post( $my_post );
+ $post_id = wp_insert_post( $my_post, true );
+
+ if ( is_wp_error( $post_id ) ) {
+ add_action( 'admin_notices', function() use( $post_id ) {
+ $class = 'notice notice-error';
+ $message = $post_id->get_error_message();
+
+ printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
+ });
+ }
+
$this->logger->debug( sprintf( 'Saved message #%s to the database', $post_id ) );
$this->logger->trace( $log );
@@ -155,7 +181,7 @@ if ( ! class_exists( 'PostmanEmailLogService' ) ) {
$purger->truncateLogItems( PostmanOptions::getInstance()->getMailLoggingMaxEntries() );
}
- private function checkForLogErrors( PostmanEmailLog $log ) {
+ private function checkForLogErrors( PostmanEmailLog $log, $postMessage ) {
$message = __( 'You getting this message because an error detected while delivered your email.', Postman::TEXT_DOMAIN );
$message .= "\r\n" . sprintf( __( 'For the domain: %1$s',Postman::TEXT_DOMAIN ), get_bloginfo('url') );
$message .= "\r\n" . __( 'The log to paste when you open a support issue:', Postman::TEXT_DOMAIN ) . "\r\n";
@@ -180,7 +206,8 @@ if ( ! class_exists( 'PostmanEmailLogService' ) ) {
$notifyer = new PostmanMailNotify;
}
- $notify = new PostmanNotify( $notifyer, $message );
+ // Notifications
+ $notify = new PostmanNotify( $notifyer );
$notify->send($message, $log);
$notify->push_to_chrome($log->statusMessage);
}