Changeset 3479227
- Timestamp:
- 03/10/2026 03:43:54 PM (3 weeks ago)
- Location:
- nanomailer-for-aws-ses/trunk
- Files:
-
- 1 added
- 2 deleted
- 40 edited
-
App/Config.php (modified) (2 diffs)
-
App/Events/AdminEnqueueScriptsEvent.php (modified) (1 diff)
-
App/Events/AdminMenuEvent.php (modified) (1 diff)
-
App/Events/PreWpMailEvent.php (modified) (1 diff)
-
App/Events/WpAjaxEvent.php (modified) (1 diff)
-
App/Fields/ActivityRecordField.php (modified) (1 diff)
-
App/Fields/VerifiedEmailTesterField.php (modified) (1 diff)
-
App/Handlers/AjaxSendTest.php (modified) (2 diffs)
-
App/Handlers/EnqueueScripts.php (modified) (1 diff)
-
App/Handlers/EnqueueStyles.php (modified) (1 diff)
-
App/Handlers/Frontend (deleted)
-
App/Handlers/RouteWpMailToSes.php (modified) (2 diffs)
-
App/MenusAndPages/NanomailerAwsSesMenu.php (modified) (2 diffs)
-
App/MenusAndPages/NanomailerAwsSesPage.php (modified) (5 diffs)
-
App/Rules/Validation.php (modified) (2 diffs)
-
App/Services/WpMailToSes.php (modified) (1 diff)
-
App/Tests (deleted)
-
App/Utilities/Log.php (modified) (1 diff)
-
App/Utilities/RecordActivity.php (modified) (1 diff)
-
App/Utilities/TestOutput.php (modified) (1 diff)
-
App/bootstrap.php (modified) (1 diff)
-
App/config/app.php (modified) (1 diff)
-
Lib/Classes/V1/BaseLog.php (modified) (1 diff)
-
Lib/Classes/V1/BaseMenu.php (modified) (2 diffs)
-
Lib/Classes/V1/BasePage.php (modified) (1 diff)
-
Lib/Classes/V1/BaseValidationRule.php (modified) (1 diff)
-
Lib/Classes/V1/Builder.php (modified) (4 diffs)
-
Lib/Classes/V1/Field.php (modified) (3 diffs)
-
Lib/Classes/V1/OptionValidator.php (modified) (1 diff)
-
Lib/Classes/V1/RegisterSetting.php (modified) (2 diffs)
-
Lib/Classes/V1/RuntimeOutput.php (modified) (1 diff)
-
Lib/Classes/V1/Sanitiser.php (modified) (1 diff)
-
Lib/Init/V1/AdminEnqueueScriptsEvent.php (modified) (1 diff)
-
Lib/Init/V1/AdminMenuEvent.php (modified) (1 diff)
-
Lib/Init/V1/AdminNoticesEvent.php (modified) (1 diff)
-
Lib/Init/V1/EnqueueStyles.php (modified) (1 diff)
-
Lib/Init/V1/ParentMenuPage.php (modified) (1 diff)
-
Lib/Init/V1/RemoveParentSubmenuPage.php (modified) (1 diff)
-
Lib/Init/V1/RenderAdminNotices.php (modified) (2 diffs)
-
Lib/config/app.php (modified) (1 diff)
-
autoload.php (added)
-
nanomailer-for-aws-ses.php (modified) (2 diffs)
-
readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
nanomailer-for-aws-ses/trunk/App/Config.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer ;2 namespace ExpandOps\Nanomailer\App; 3 3 defined('ABSPATH') || exit; 4 4 class Config … … 12 12 } 13 13 $base_dir = dirname(__DIR__); 14 $default_config = file_exists($base_dir . '/ lib/config/app.php') ? require $base_dir . '/lib/config/app.php' : [];15 $app_config = file_exists($base_dir . '/ app/config/app.php') ? require $base_dir . '/app/config/app.php' : [];14 $default_config = file_exists($base_dir . '/Lib/config/app.php') ? require $base_dir . '/Lib/config/app.php' : []; 15 $app_config = file_exists($base_dir . '/App/config/app.php') ? require $base_dir . '/App/config/app.php' : []; 16 16 self::$config = array_merge($default_config, $app_config); 17 17 } -
nanomailer-for-aws-ses/trunk/App/Events/AdminEnqueueScriptsEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Events;2 namespace ExpandOps\Nanomailer\App\Events; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;6 use ExpandOps\Nanomailer\ Handlers\EnqueueScripts;7 use ExpandOps\Nanomailer\ Handlers\EnqueueStyles;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 use ExpandOps\Nanomailer\App\Handlers\EnqueueScripts; 7 use ExpandOps\Nanomailer\App\Handlers\EnqueueStyles; 8 8 class AdminEnqueueScriptsEvent 9 9 { 10 10 public static function register() 11 11 { 12 add_action( 'admin_enqueue_scripts', array( __CLASS__, 'allCb' ) );12 add_action( 'admin_enqueue_scripts', array( self::class, 'allCb' ) ); 13 13 } 14 14 public static function allCb() -
nanomailer-for-aws-ses/trunk/App/Events/AdminMenuEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Events;2 namespace ExpandOps\Nanomailer\App\Events; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ MenusAndPages\NanomailerAwsSesMenu;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\MenusAndPages\NanomailerAwsSesMenu; 6 6 class AdminMenuEvent 7 7 { 8 8 public static function register() 9 9 { 10 add_action( 'admin_menu', array( __CLASS__, 'menusCb' ), 10 );10 add_action( 'admin_menu', array( self::class, 'menusCb' ), 10 ); 11 11 } 12 12 public static function menusCb() -
nanomailer-for-aws-ses/trunk/App/Events/PreWpMailEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Events;2 namespace ExpandOps\Nanomailer\App\Events; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;6 use ExpandOps\Nanomailer\ Handlers\RouteWpMailToSes;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 use ExpandOps\Nanomailer\App\Handlers\RouteWpMailToSes; 7 7 class PreWpMailEvent 8 8 { 9 9 public static function register() 10 10 { 11 add_filter( 'pre_wp_mail', array( __CLASS__, 'routeWpMailToSesCb' ), PHP_INT_MAX, 2 );11 add_filter( 'pre_wp_mail', array( self::class, 'routeWpMailToSesCb' ), PHP_INT_MAX, 2 ); 12 12 } 13 13 public static function routeWpMailToSesCb( $null, $args ) -
nanomailer-for-aws-ses/trunk/App/Events/WpAjaxEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Events;2 namespace ExpandOps\Nanomailer\App\Events; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;6 use ExpandOps\Nanomailer\ Handlers\AjaxSendTest;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 use ExpandOps\Nanomailer\App\Handlers\AjaxSendTest; 7 7 class WpAjaxEvent 8 8 { 9 9 public static function register() 10 10 { 11 add_action( 'wp_ajax_expandops_nanomailer_ajax_test', array( __CLASS__, 'expandopsNanomailerTestCb' ) );11 add_action( 'wp_ajax_expandops_nanomailer_ajax_test', array( self::class, 'expandopsNanomailerTestCb' ) ); 12 12 } 13 13 public static function expandopsNanomailerTestCb() -
nanomailer-for-aws-ses/trunk/App/Fields/ActivityRecordField.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Fields;2 namespace ExpandOps\Nanomailer\App\Fields; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 6 class ActivityRecordField 7 7 { -
nanomailer-for-aws-ses/trunk/App/Fields/VerifiedEmailTesterField.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Fields;2 namespace ExpandOps\Nanomailer\App\Fields; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 6 class VerifiedEmailTesterField 7 7 { -
nanomailer-for-aws-ses/trunk/App/Handlers/AjaxSendTest.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Handlers;2 namespace ExpandOps\Nanomailer\App\Handlers; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Utilities\TestOutput;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Utilities\TestOutput; 6 6 class AjaxSendTest 7 7 { … … 52 52 ]); 53 53 } 54 $subject = ' Verified Email Test';54 $subject = 'Nanomailer Verified Email Test'; 55 55 $body = 'This test email was sent by the Nanomailer for AWS SES WordPress plugin at ' . expandops_shared_timestamp(); 56 56 $headers = [ -
nanomailer-for-aws-ses/trunk/App/Handlers/EnqueueScripts.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Handlers;2 namespace ExpandOps\Nanomailer\App\Handlers; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 6 class EnqueueScripts 7 7 { -
nanomailer-for-aws-ses/trunk/App/Handlers/EnqueueStyles.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Handlers;2 namespace ExpandOps\Nanomailer\App\Handlers; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 6 class EnqueueStyles 7 7 { -
nanomailer-for-aws-ses/trunk/App/Handlers/RouteWpMailToSes.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Handlers;2 namespace ExpandOps\Nanomailer\App\Handlers; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;6 use ExpandOps\Nanomailer\ Services\WpMailToSes;7 use ExpandOps\Nanomailer\ Utilities\RecordActivity;8 use ExpandOps\Nanomailer\ Utilities\TestOutput;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 use ExpandOps\Nanomailer\App\Services\WpMailToSes; 7 use ExpandOps\Nanomailer\App\Utilities\RecordActivity; 8 use ExpandOps\Nanomailer\App\Utilities\TestOutput; 9 9 class RouteWpMailToSes 10 10 { … … 104 104 } 105 105 if ( $ajax_test ){ TestOutput::info( 'Finished processing args and headers.' ); } 106 $redirect_all_emails_to = trim( (string) ( $option['redirect_all_emails_to'] ?? '' ) ); 107 if ( $redirect_all_emails_to !== '' ) 108 { 109 $validated_to_array = [ $redirect_all_emails_to ]; 110 $validated_cc = []; 111 $validated_bcc = []; 112 if ( $ajax_test ) 113 { 114 TestOutput::warning( 115 'Email redirect active. All recipients replaced with: ' . sanitize_email( $redirect_all_emails_to ) 116 ); 117 } 118 } 106 119 $verified_email_identities = explode(',', $option['verified_email_identities']); 107 120 if ( -
nanomailer-for-aws-ses/trunk/App/MenusAndPages/NanomailerAwsSesMenu.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ MenusAndPages;2 namespace ExpandOps\Nanomailer\App\MenusAndPages; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseMenu;5 use ExpandOps\Nanomailer\ Config;6 use ExpandOps\Nanomailer\ MenusAndPages\NanomailerAwsSesPage;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseMenu; 5 use ExpandOps\Nanomailer\App\Config; 6 use ExpandOps\Nanomailer\App\MenusAndPages\NanomailerAwsSesPage; 7 7 class NanomailerAwsSesMenu extends BaseMenu 8 8 { … … 13 13 'slug' => 'nanomailer-aws-ses', 14 14 'id' => 'expandops_' . 'nanomailer', 15 'parent_slug' => Config::get('parent_ menu_slug'),15 'parent_slug' => Config::get('parent_slug'), 16 16 'page_class' => NanomailerAwsSesPage::class, 17 17 'validation_class' => Config::get('validation_class'), -
nanomailer-for-aws-ses/trunk/App/MenusAndPages/NanomailerAwsSesPage.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ MenusAndPages;2 namespace ExpandOps\Nanomailer\App\MenusAndPages; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BasePage;5 use ExpandOps\Nanomailer\ Utilities\Log;6 use ExpandOps\Nanomailer\ Config;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BasePage; 5 use ExpandOps\Nanomailer\App\Utilities\Log; 6 use ExpandOps\Nanomailer\App\Config; 7 7 class NanomailerAwsSesPage extends BasePage 8 8 { … … 17 17 $this->setActivityTab(); 18 18 $this->setTestingTroubleshootingTab(); 19 $this->setAdvancedTab(); 19 20 } 20 21 protected function setSettingsTab() … … 173 174 'id' => 'activity_record', 174 175 'title' => 'Activity Record', 175 'callback' => \ExpandOps\Nanomailer\ Fields\ActivityRecordField::class,176 'callback' => \ExpandOps\Nanomailer\App\Fields\ActivityRecordField::class, 176 177 'args' => [] 177 178 ], … … 196 197 'id' => 'verified_email_tester', 197 198 'title' => 'Verified Email Tester', 198 'callback' => \ExpandOps\Nanomailer\ Fields\VerifiedEmailTesterField::class,199 'callback' => \ExpandOps\Nanomailer\App\Fields\VerifiedEmailTesterField::class, 199 200 'args' => [] 200 201 ], … … 204 205 ]; 205 206 } 207 protected function setAdvancedTab() 208 { 209 $this->page_tabs[] = [ 210 'id' => 'advanced', 211 'title' => 'Advanced', 212 'slug' => 'advanced', 213 'sections' => [ 214 [ 215 'id' => 'redirects', 216 'title' => 'Redirects', 217 'callback' => '__return_false', 218 'fields' => [ 219 [ 220 'id' => 'redirect_all_emails_to', 221 'title' => 'Redirect All Emails To', 222 'callback' => 'email', 223 'args' => [ 224 'desc' => 'Enter a valid email address to redirect ALL outgoing emails (such as from contact forms, WooCommerce, or other site features) to this address instead of the original recipients. This is useful when testing a site to ensure customers or users do not receive test emails. Leave this field empty to disable redirection.' 225 ] 226 ], 227 ], 228 ], 229 ], 230 ]; 231 } 206 232 } -
nanomailer-for-aws-ses/trunk/App/Rules/Validation.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Rules;2 namespace ExpandOps\Nanomailer\App\Rules; 3 3 defined('ABSPATH') || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseValidationRule;5 use ExpandOps\Nanomailer\ Utilities\Log;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseValidationRule; 5 use ExpandOps\Nanomailer\App\Utilities\Log; 6 6 class Validation extends BaseValidationRule 7 7 { … … 125 125 protected function reply_to($value) 126 126 { 127 $value = (string) $value; 127 $value = trim( (string) $value ); 128 if ( $value === '' ) { 129 return $value; 130 } 131 if ( !is_email($value) ) 132 { 133 return $this->failureMessage("Value must be a valid email."); 134 } 135 if ( mb_strlen($value) > 100 ) 136 { 137 return $this->failureMessage("Value must not exceed 100 characters."); 138 } 139 return $value; 140 } 141 protected function redirect_all_emails_to($value) 142 { 143 $value = trim( (string) $value ); 128 144 if ( $value === '' ) { 129 145 return $value; -
nanomailer-for-aws-ses/trunk/App/Services/WpMailToSes.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Services;2 namespace ExpandOps\Nanomailer\App\Services; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;5 use ExpandOps\Nanomailer\ Config;6 use ExpandOps\Nanomailer\ Utilities\RecordActivity;7 use ExpandOps\Nanomailer\ Utilities\TestOutput;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 use ExpandOps\Nanomailer\App\Config; 6 use ExpandOps\Nanomailer\App\Utilities\RecordActivity; 7 use ExpandOps\Nanomailer\App\Utilities\TestOutput; 8 8 class WpMailToSes 9 9 { -
nanomailer-for-aws-ses/trunk/App/Utilities/Log.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Utilities;2 namespace ExpandOps\Nanomailer\App\Utilities; 3 3 defined('ABSPATH') || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;5 use ExpandOps\Nanomailer\ Config;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 use ExpandOps\Nanomailer\App\Config; 6 6 class Log extends BaseLog 7 7 { -
nanomailer-for-aws-ses/trunk/App/Utilities/RecordActivity.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Utilities;2 namespace ExpandOps\Nanomailer\App\Utilities; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\Nanomailer\ Utilities\Log;4 use ExpandOps\Nanomailer\App\Utilities\Log; 5 5 class RecordActivity 6 6 { -
nanomailer-for-aws-ses/trunk/App/Utilities/TestOutput.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\Nanomailer\ Utilities;2 namespace ExpandOps\Nanomailer\App\Utilities; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class TestOutput -
nanomailer-for-aws-ses/trunk/App/bootstrap.php
r3479214 r3479227 1 1 <?php 2 use ExpandOps\Nanomailer\App\Config; 2 3 defined( 'ABSPATH' ) || exit; 3 \ExpandOps\Nanomailer\Config::load(); 4 $config = ExpandOps\Nanomailer\Config::get(); 5 \ExpandOps\AAAFoundation\Init\V1\AdminMenuEvent::register( $config['parent_menu_title'], $config['parent_menu_slug'] ); 6 \ExpandOps\AAAFoundation\Init\V1\AdminEnqueueScriptsEvent::register( $config['plugin_url'], $config['version'] ); 7 \ExpandOps\AAAFoundation\Init\V1\AdminNoticesEvent::register(); 8 $events = [ 9 \ExpandOps\Nanomailer\Events\AdminMenuEvent::class, 10 \ExpandOps\Nanomailer\Events\PreWpMailEvent::class, 11 \ExpandOps\Nanomailer\Events\WpAjaxEvent::class, 12 \ExpandOps\Nanomailer\Events\AdminEnqueueScriptsEvent::class, 13 ]; 4 Config::load(); 5 $is_admin = is_admin(); 6 if ( $is_admin ) 7 { 8 \ExpandOps\Nanomailer\Lib\Init\V1\AdminMenuEvent::register( Config::get('parent_title'), Config::get('parent_slug') ); 9 \ExpandOps\Nanomailer\Lib\Init\V1\AdminEnqueueScriptsEvent::register( Config::get('plugin_url'), Config::get('version') ); 10 \ExpandOps\Nanomailer\Lib\Init\V1\AdminNoticesEvent::register(); 11 } 12 $events = []; 13 $events[] = \ExpandOps\Nanomailer\App\Events\PreWpMailEvent::class; 14 if ( $is_admin ) 15 { 16 $events[] = \ExpandOps\Nanomailer\App\Events\AdminMenuEvent::class; 17 $events[] = \ExpandOps\Nanomailer\App\Events\AdminEnqueueScriptsEvent::class; 18 $events[] = \ExpandOps\Nanomailer\App\Events\WpAjaxEvent::class; 19 } 20 else 21 { 22 } 14 23 foreach ( $events as $event ) 15 24 { -
nanomailer-for-aws-ses/trunk/App/config/app.php
r3479214 r3479227 2 2 defined( 'ABSPATH' ) || exit; 3 3 return [ 4 'version' => '1.0.0', 5 'validation_class' => \ExpandOps\Nanomailer\Rules\Validation::class, 4 'version' => '1.0.1', 5 'primary_title' => 'Nanomailer for AWS SES', 6 'primary_slug' => 'nanomailer-aws-ses', 7 'primary_id' => 'expandops_' . 'nanomailer', 8 'validation_class' => \ExpandOps\Nanomailer\App\Rules\Validation::class, 6 9 'log_prefix' => 'Nanomailer for AWS SES', 7 10 ]; -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BaseLog.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class BaseLog -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BaseMenu.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 5 class BaseMenu 6 6 { … … 38 38 { 39 39 add_action( 'admin_init', function () { 40 \ExpandOps\ AAAFoundation\Classes\V1\RegisterSetting::add( $this->page_id, $this->validation_class );40 \ExpandOps\Nanomailer\Lib\Classes\V1\RegisterSetting::add( $this->page_id, $this->validation_class ); 41 41 }); 42 42 } -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BasePage.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\Builder;5 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Classes\V1\Builder; 5 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 6 6 class BasePage 7 7 { -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BaseValidationRule.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined('ABSPATH') || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 5 class BaseValidationRule 6 6 { -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/Builder.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;5 use ExpandOps\ AAAFoundation\Classes\V1\Sanitiser;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 use ExpandOps\Nanomailer\Lib\Classes\V1\Sanitiser; 6 6 class Builder 7 7 { … … 29 29 $section['id'], 30 30 $section['title'], 31 $section['callback'], 31 function() use ( $section ) { 32 $this->renderSectionCallback( $section['callback'] ?? null ); 33 }, 32 34 $this->page_slug . '&tab=' . $tab['slug'] 33 35 ); 34 36 if( !empty($section['fields']) ) 35 37 { 38 $field_renderer = new Field(); 36 39 foreach( $section['fields'] as $field ) 37 40 { … … 39 42 $field['id'], 40 43 $field['title'], 41 function($args) use ($field ) {42 $field_ instance = new Field($args);43 echo wp_kses( $field_ instance->render( $field['callback'] ), Sanitiser::allowedFieldTags() );44 function($args) use ($field, $field_renderer) { 45 $field_renderer->useArgs($args); 46 echo wp_kses( $field_renderer->render( $field['callback'] ), Sanitiser::allowedFieldTags() ); 44 47 }, 45 48 $this->page_slug . '&tab=' . $tab['slug'], … … 81 84 <?php 82 85 } 86 private function renderSectionCallback( $callback ) 87 { 88 if ( empty( $callback ) ) { 89 return; 90 } 91 if ( is_callable( $callback ) ) { 92 call_user_func( $callback ); 93 return; 94 } 95 echo wp_kses( 96 $callback, 97 [ 98 'p' => [], 99 'b' => [], 100 'strong' => [], 101 'br' => [], 102 'a' => [ 103 'href' => [], 104 'target' => [], 105 'rel' => [], 106 ], 107 ] 108 ); 109 } 83 110 } -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/Field.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 5 class Field 6 6 { … … 24 24 private array $checked_options; 25 25 private array $disabled_options; 26 function __construct( $args )26 public function useArgs( $args ) 27 27 { 28 28 $options = get_option( $args['option_name'] ); … … 192 192 ob_start(); 193 193 $current_value = $this->current_value; 194 $name = $this->name . '[]';194 $name = count($this->field_options) > 1 ? $this->name . '[]' : $this->name; 195 195 $i = 0; 196 196 ?> -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/OptionValidator.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class OptionValidator -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/RegisterSetting.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;5 use ExpandOps\ AAAFoundation\Classes\V1\OptionValidator;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 use ExpandOps\Nanomailer\Lib\Classes\V1\OptionValidator; 6 6 class RegisterSetting 7 7 { … … 14 14 $page_id, 15 15 [ 16 'sanitize_callback' => [ __CLASS__, 'sanitize_options' ]16 'sanitize_callback' => [ self::class, 'sanitize_options' ] 17 17 ] 18 18 ); -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/RuntimeOutput.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class RuntimeOutput -
nanomailer-for-aws-ses/trunk/Lib/Classes/V1/Sanitiser.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Classes\V1;2 namespace ExpandOps\Nanomailer\Lib\Classes\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 5 5 class Sanitiser 6 6 { -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/AdminEnqueueScriptsEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Init\V1\EnqueueStyles;5 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Init\V1\EnqueueStyles; 5 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 6 6 class AdminEnqueueScriptsEvent 7 7 { 8 8 private static $plugin_url; 9 9 private static $plugin_version; 10 public static function register( $plugin_url , $plugin_version)10 public static function register( $plugin_url = '', $plugin_version = '' ) 11 11 { 12 if( !$plugin_url || !$plugin_version)12 if( empty($plugin_url) || empty($plugin_version) ) 13 13 { 14 14 BaseLog::error('Both $plugin_url and $plugin_version must be provided.'); 15 throw new \InvalidArgumentException('Both $plugin_url and $plugin_version must be provided.');15 return; 16 16 } 17 17 self::$plugin_url = $plugin_url; 18 18 self::$plugin_version = $plugin_version; 19 add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueueSharedStylesScriptsCb' ));19 add_action( 'admin_enqueue_scripts', [ self::class, 'enqueueSharedStylesScriptsCb' ] ); 20 20 } 21 21 public static function enqueueSharedStylesScriptsCb() -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/AdminMenuEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Init\V1\ParentMenuPage;5 use ExpandOps\ AAAFoundation\Init\V1\RemoveParentSubmenuPage;6 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Init\V1\ParentMenuPage; 5 use ExpandOps\Nanomailer\Lib\Init\V1\RemoveParentSubmenuPage; 6 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 7 7 class AdminMenuEvent 8 8 { 9 private static $parent_ menu_title;10 private static $parent_ menu_slug;11 public static function register( $parent_ menu_title, $parent_menu_slug, $remove_parent_submenu_page = true )9 private static $parent_title; 10 private static $parent_slug; 11 public static function register( $parent_title = '', $parent_slug = '', $remove_parent_submenu_page = true ) 12 12 { 13 if( !$parent_menu_title || !$parent_menu_slug)13 if( empty($parent_title) || empty($parent_slug) ) 14 14 { 15 BaseLog::error('Both $parent_ menu_title and $parent_menu_slug must be provided.');16 throw new \InvalidArgumentException('Both $parent_menu_title and $parent_menu_slug must be provided.');15 BaseLog::error('Both $parent_title and $parent_slug must be provided.'); 16 return; 17 17 } 18 self::$parent_ menu_title = $parent_menu_title;19 self::$parent_ menu_slug = $parent_menu_slug;20 add_action( 'admin_menu', array( __CLASS__, 'parentMenuPageCb' ), 1);18 self::$parent_title = $parent_title; 19 self::$parent_slug = $parent_slug; 20 add_action( 'admin_menu', [ self::class, 'parentMenuPageCb' ], 1); 21 21 if( $remove_parent_submenu_page ) 22 22 { 23 add_action( 'admin_menu', array( __CLASS__, 'removeParentSubmenuPageCb' ), 99 );23 add_action( 'admin_menu', [ self::class, 'removeParentSubmenuPageCb' ], 99 ); 24 24 } 25 25 } 26 26 public static function parentMenuPageCb() 27 27 { 28 ParentMenuPage::handle( self::$parent_ menu_title, self::$parent_menu_slug );28 ParentMenuPage::handle( self::$parent_title, self::$parent_slug ); 29 29 } 30 30 public static function removeParentSubmenuPageCb( ) 31 31 { 32 RemoveParentSubmenuPage::handle( self::$parent_ menu_slug );32 RemoveParentSubmenuPage::handle( self::$parent_slug ); 33 33 } 34 34 } -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/AdminNoticesEvent.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 use ExpandOps\ AAAFoundation\Init\V1\RenderAdminNotices;5 use ExpandOps\ AAAFoundation\Classes\V1\BaseLog;4 use ExpandOps\Nanomailer\Lib\Init\V1\RenderAdminNotices; 5 use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog; 6 6 class AdminNoticesEvent 7 7 { 8 8 public static function register() 9 9 { 10 add_action( 'admin_notices', array( __CLASS__, 'renderAdminNoticesCb' ) );10 add_action( 'admin_notices', array( self::class, 'renderAdminNoticesCb' ) ); 11 11 } 12 12 public static function renderAdminNoticesCb() -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/EnqueueStyles.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class EnqueueStyles -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/ParentMenuPage.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class ParentMenuPage 5 5 { 6 public static function handle( $parent_ menu_title, $parent_menu_slug )6 public static function handle( $parent_title, $parent_slug ) 7 7 { 8 if ( !menu_page_url($parent_ menu_slug, false) )8 if ( !menu_page_url($parent_slug, false) ) 9 9 { 10 10 add_menu_page( 11 $parent_ menu_title,12 $parent_ menu_title,13 ' edit_users',14 $parent_ menu_slug,11 $parent_title, 12 $parent_title, 13 'manage_options', 14 $parent_slug, 15 15 '__return_true', 16 16 'data:image/svg+xml;base64,' . base64_encode('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 126.71 99.77"><path d="M11.31 88.46L22.63 99.77 66.88 55.52c3.12-3.12 3.12-8.19 0-11.31L22.63 0 11.31 11.31 49.86 49.91 11.31 88.46z" fill="black"/></svg>'), 17 95 ,17 95 18 18 ); 19 19 } -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/RemoveParentSubmenuPage.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class RemoveParentSubmenuPage 5 5 { 6 public static function handle( $parent_ menu_slug )6 public static function handle( $parent_slug ) 7 7 { 8 if( menu_page_url($parent_ menu_slug, false) )8 if( menu_page_url($parent_slug, false) ) 9 9 { 10 remove_submenu_page( $parent_ menu_slug, $parent_menu_slug );10 remove_submenu_page( $parent_slug, $parent_slug ); 11 11 } 12 12 } -
nanomailer-for-aws-ses/trunk/Lib/Init/V1/RenderAdminNotices.php
r3479214 r3479227 1 1 <?php 2 namespace ExpandOps\ AAAFoundation\Init\V1;2 namespace ExpandOps\Nanomailer\Lib\Init\V1; 3 3 defined( 'ABSPATH' ) || exit; 4 4 class RenderAdminNotices … … 7 7 { 8 8 $notices = get_transient('expandops_admin_notices'); 9 if ( !$notices)9 if ( empty($notices) ) 10 10 { 11 11 return; -
nanomailer-for-aws-ses/trunk/Lib/config/app.php
r3479214 r3479227 3 3 return [ 4 4 'version' => '1.0.0', 5 'parent_ menu_title' => 'ExpandOps',6 'parent_ menu_slug' => 'expandops',7 'validation_class' => \ExpandOps\ AAAFoundation\Classes\V1\BaseValidation::class,5 'parent_title' => 'ExpandOps', 6 'parent_slug' => 'expandops', 7 'validation_class' => \ExpandOps\Nanomailer\Lib\Classes\V1\BaseValidation::class, 8 8 'plugin_path' => dirname(__DIR__, 2), 9 9 'plugin_url' => untrailingslashit( plugin_dir_url( dirname(__DIR__, 1) ) ), 10 'log_prefix' => 'Nanomailer ',10 'log_prefix' => 'Nanomailer for AWS SES', 11 11 'upload_subdir_path' => wp_upload_dir()['basedir'] . '/expandops', 12 12 'upload_subdir_url' => wp_upload_dir()['baseurl'] . '/expandops' -
nanomailer-for-aws-ses/trunk/nanomailer-for-aws-ses.php
r3359902 r3479227 4 4 * Plugin URI: https://expandops.dev/wordpress-plugins/nanomailer-for-aws-ses 5 5 * Description: A lightweight, easy-to-use plugin that integrates WP with Amazon Web Services (AWS) Simple Email Service (SES) to improve email delivery. 6 * Version: 1.0. 06 * Version: 1.0.1 7 7 * Requires at least: 5.8 8 8 * Requires PHP: 8.0 … … 14 14 defined( 'ABSPATH' ) || exit; 15 15 require 'shared/functions/expandops-functions.php'; 16 require 'app/autoload.php'; 17 if( !class_exists( 'ExpandOps\AAAFoundation\Classes\V1\Builder', false) ) 18 { 19 require 'lib/autoload.php'; 20 } 21 require 'app/bootstrap.php'; 16 require 'autoload.php'; 17 require 'App/bootstrap.php'; 22 18 register_uninstall_hook( __FILE__, 'expandops_nanomailer_uninstall' ); 23 19 function expandops_nanomailer_uninstall() -
nanomailer-for-aws-ses/trunk/readme.txt
r3359902 r3479227 3 3 Tags: aws, ses, amazon, email, wp_mail 4 4 Requires at least: 5.8 5 Tested up to: 6. 85 Tested up to: 6.9.1 6 6 Requires PHP: 8.0 7 Stable tag: 1.0. 07 Stable tag: 1.0.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 72 72 == Changelog == 73 73 74 = 1.0.1 = 75 - Added email redirect option in the new Advanced tab, allowing all outgoing emails to be routed to a single address for safe testing environments. 76 - Internal: Foundation changes. 77 74 78 = 1.0.0 = 75 79 Initial release
Note: See TracChangeset
for help on using the changeset viewer.