summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2018-04-24 03:11:12 +0000
committeryehudah <yehudah@b8457f37-d9ea-0310-8a92-e5e31aec5664>2018-04-24 03:11:12 +0000
commite29acbabf9c56df1b7e110ec1e328c8d3bdb6eca (patch)
tree5df22b85c34e2482ed1e03dc5a0dc78fbdd29886
parent3e80abbf531755154b42ca5433f9faa3793cc554 (diff)
downloadPost-SMTP-e29acbabf9c56df1b7e110ec1e328c8d3bdb6eca.zip
didn't noice contact form 7 file was not added to svn
-rw-r--r--Postman/Postman-Mail/PostmanContactForm7.php39
1 files changed, 39 insertions, 0 deletions
diff --git a/Postman/Postman-Mail/PostmanContactForm7.php b/Postman/Postman-Mail/PostmanContactForm7.php
new file mode 100644
index 0000000..64f4f5f
--- /dev/null
+++ b/Postman/Postman-Mail/PostmanContactForm7.php
@@ -0,0 +1,39 @@
+<?php
+class Postsmtp_ContactForm7 {
+
+ private $result_error;
+
+ public function __construct() {
+ add_action( 'wpcf7_mail_failed', array( $this, 'save_error' ) );
+ add_filter( 'wpcf7_ajax_json_echo', array( $this, 'change_rest_response' ), 10, 2 );
+ }
+
+ public function save_error($contact_form) {
+ $this->result_error = apply_filters( 'postman_wp_mail_result', null );
+ }
+
+ public function change_rest_response( $response ) {
+ if ( $response['status'] == 'mail_failed' ) {
+ $message = $this->result_error ['exception']->getMessage();
+
+ if ( ! $message || $message == '' ) {
+ return $response;
+ }
+
+ $currentTransport = PostmanOptions::getInstance()->getTransportType();
+ $result = json_decode($message);
+ $is_json = (json_last_error() == JSON_ERROR_NONE);
+
+ switch ($currentTransport) {
+ case 'gmail_api':
+ $response['message'] = $is_json ? $result->error->message : $message;
+ break;
+ default:
+ $response['message'] = $is_json ? json_encode(json_decode($message), JSON_PRETTY_PRINT) : $message;
+ }
+ }
+
+ return $response;
+ }
+
+}