From 47e77f9fac1155c536b2b87fec552c7fcce66fa6 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 01 Jun 2026 18:06:34 +0000
Subject: [PATCH] =Timeline block fixes. Next up: adding article schema classes
---
inc/integrations/PostMark.php | 64 ++++++++++++++++++--------------
1 files changed, 36 insertions(+), 28 deletions(-)
diff --git a/inc/integrations/PostMark.php b/inc/integrations/PostMark.php
index 41f467c..7ac31e6 100644
--- a/inc/integrations/PostMark.php
+++ b/inc/integrations/PostMark.php
@@ -15,6 +15,13 @@
*/
class PostMark extends Integrations
{
+ protected ?string $server_token = null;
+ protected string $message_stream = 'outbound';
+ protected string $from_email;
+ protected string $from_name;
+ protected bool $track_open;
+ protected bool $track_links;
+ protected ?string $lastMessageId = null;
/**
* Constructor
*/
@@ -22,9 +29,10 @@
{
$this->service_name = 'postmark';
$this->title = 'PostMark';
- $this->description = 'Professional transactional email delivery service';
$this->icon = 'envelope-simple';
+ $this->cacheName = ($userID)? 'gmb_'.$userID : 'postmark';
+
// PostMark API configuration
$this->apiBase = 'https://api.postmarkapp.com';
$this->apiVersion = 'v1';
@@ -48,12 +56,13 @@
];
// Required credentials
- $this->requiredCredentials = [
+ $this->fields = [
'server_token' => [
'label' => 'Server API Token',
- 'type' => 'password',
+ 'type' => 'text',
+ 'subtype'=> 'password',
'placeholder' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
- 'description' => 'Your PostMark Server API Token'
+ 'hint' => 'Your PostMark Server API Token'
],
'message_stream' => [
'label' => 'Message Stream ID',
@@ -101,7 +110,7 @@
parent::__construct($userID);
// Hook into WordPress mail system if integration is healthy
- if ($this->is_healthy && $this->hasValidCredentials()) {
+ if ($this->is_healthy && $this->isSetUp()) {
$this->initializeMailHooks();
}
}
@@ -157,10 +166,12 @@
$result = $this->sendEmail($payload);
if ($result === true) {
+ error_log('================================ Email sent! ================================');
// Prevent default wp_mail from sending
add_filter('pre_wp_mail', '__return_true');
do_action('postmark_email_sent', $args, $payload);
} else {
+ error_log('=-======================[POSTMARK]Something went wrong... ================================');
// Log failure but allow fallback to default mail
do_action('postmark_email_failed', $args, $result);
@@ -249,9 +260,12 @@
*/
protected function sendEmail(array $payload): bool|WP_Error
{
+ if (!$this->isSetUp()) {
+ return false;
+ }
try {
$response = $this->postRequest('email', $payload);
-
+ error_log('================================ POSTMARK RESPONSE: ================================'.print_r($response, true));
if (is_wp_error($response)) {
return $response;
}
@@ -271,7 +285,7 @@
return true;
} catch (\Exception $e) {
- $this->handleException($e, 'email');
+ $this->logError('[POSTMARK]', ['method' => 'sendEmail', 'error' => $e->getMessage()]);
return new WP_Error(
'postmark_send_failed',
$e->getMessage()
@@ -407,9 +421,7 @@
// Clean up whitespace
$text = preg_replace('/\s+/', ' ', $text);
- $text = trim($text);
-
- return $text;
+ return trim($text);
}
/**
@@ -459,22 +471,15 @@
/**
* Override makeRequest to add PostMark headers
*/
- protected function makeRequest(
- string $method,
- string $endpoint,
- array $params = [],
- array $headers = []
- ): mixed {
+ protected function getRequestHeaders(): array {
$credentials = $this->getCredentials();
// Add PostMark specific headers
- $headers = array_merge([
+ return [
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'X-Postmark-Server-Token' => $credentials['server_token'] ?? ''
- ], $headers);
-
- return parent::makeRequest($method, $endpoint, $params, $headers);
+ ];
}
/**
@@ -500,7 +505,7 @@
return $stats;
}
} catch (\Exception $e) {
- $this->handleException($e, 'stats/outbound');
+ $this->logError('stats/outbound', ['error' => $e->getMessage()]);
}
return [];
@@ -517,7 +522,7 @@
'offset' => $offset
]);
} catch (\Exception $e) {
- $this->handleException($e, 'bounces');
+ $this->logError('[POSTMARK]', ['method' => 'getBounces', 'error' => $e->getMessage()]);
return [];
}
}
@@ -634,11 +639,14 @@
protected function initialize(): void
{
- // TODO: Implement initialize() method.
- }
-
- protected function getRequestHeaders(): array
- {
- // TODO: Implement getRequestHeaders() method.
+ if (empty($this->credentials)) {
+ $this->loadCredentials();
+ }
+ $this->server_token = (array_key_exists('server_token', $this->credentials)) ? $this->credentials['server_token'] : null;
+ $this->from_email = (array_key_exists('from_email', $this->credentials)) ? $this->credentials['from_email'] : get_bloginfo('admin_email');
+ $this->from_name = (array_key_exists('from_name', $this->credentials)) ? $this->credentials['from_name'] : get_bloginfo('name');
+ $this->message_stream = (array_key_exists('message_stream', $this->credentials)) ? $this->credentials['message_stream'] : 'outbound';
+ $this->track_open = (array_key_exists('track_open', $this->credentials)) ? $this->credentials['track_open'] : false;
+ $this->track_links = (array_key_exists('track_links', $this->credentials)) ? $this->credentials['track_links'] : false;
}
}
--
Gitblit v1.10.0