Plugin Directory

Changeset 3479227


Ignore:
Timestamp:
03/10/2026 03:43:54 PM (3 weeks ago)
Author:
expandops
Message:

Prepare trunk for 1.0.1 release

Location:
nanomailer-for-aws-ses/trunk
Files:
1 added
2 deleted
40 edited

Legend:

Unmodified
Added
Removed
  • nanomailer-for-aws-ses/trunk/App/Config.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer;
     2namespace ExpandOps\Nanomailer\App;
    33defined('ABSPATH') || exit;
    44class Config
     
    1212        }
    1313        $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' : [];
    1616        self::$config = array_merge($default_config, $app_config);
    1717    }
  • nanomailer-for-aws-ses/trunk/App/Events/AdminEnqueueScriptsEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Events;
     2namespace ExpandOps\Nanomailer\App\Events;
    33defined( '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;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
     6use ExpandOps\Nanomailer\App\Handlers\EnqueueScripts;
     7use ExpandOps\Nanomailer\App\Handlers\EnqueueStyles;
    88class AdminEnqueueScriptsEvent
    99{
    1010    public static function register()
    1111    {
    12         add_action( 'admin_enqueue_scripts', array( __CLASS__, 'allCb' ) );
     12        add_action( 'admin_enqueue_scripts', array( self::class, 'allCb' ) );
    1313    }
    1414    public static function allCb()
  • nanomailer-for-aws-ses/trunk/App/Events/AdminMenuEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Events;
     2namespace ExpandOps\Nanomailer\App\Events;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\MenusAndPages\NanomailerAwsSesMenu;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\MenusAndPages\NanomailerAwsSesMenu;
    66class AdminMenuEvent
    77{
    88    public static function register()
    99    {
    10         add_action( 'admin_menu', array( __CLASS__, 'menusCb' ), 10 );
     10        add_action( 'admin_menu', array( self::class, 'menusCb' ), 10 );
    1111    }
    1212    public static function menusCb()
  • nanomailer-for-aws-ses/trunk/App/Events/PreWpMailEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Events;
     2namespace ExpandOps\Nanomailer\App\Events;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Config;
    6 use ExpandOps\Nanomailer\Handlers\RouteWpMailToSes;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
     6use ExpandOps\Nanomailer\App\Handlers\RouteWpMailToSes;
    77class PreWpMailEvent
    88{
    99    public static function register()
    1010    {
    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 );
    1212    }
    1313    public static function routeWpMailToSesCb( $null, $args )
  • nanomailer-for-aws-ses/trunk/App/Events/WpAjaxEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Events;
     2namespace ExpandOps\Nanomailer\App\Events;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Config;
    6 use ExpandOps\Nanomailer\Handlers\AjaxSendTest;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
     6use ExpandOps\Nanomailer\App\Handlers\AjaxSendTest;
    77class WpAjaxEvent
    88{
    99    public static function register()
    1010    {
    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' ) );
    1212    }
    1313    public static function expandopsNanomailerTestCb()
  • nanomailer-for-aws-ses/trunk/App/Fields/ActivityRecordField.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Fields;
     2namespace ExpandOps\Nanomailer\App\Fields;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Config;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
    66class ActivityRecordField
    77{
  • nanomailer-for-aws-ses/trunk/App/Fields/VerifiedEmailTesterField.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Fields;
     2namespace ExpandOps\Nanomailer\App\Fields;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Config;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
    66class VerifiedEmailTesterField
    77{
  • nanomailer-for-aws-ses/trunk/App/Handlers/AjaxSendTest.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Handlers;
     2namespace ExpandOps\Nanomailer\App\Handlers;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Utilities\TestOutput;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Utilities\TestOutput;
    66class AjaxSendTest
    77{
     
    5252            ]);
    5353        }
    54         $subject = 'Verified Email Test';
     54        $subject = 'Nanomailer Verified Email Test';
    5555        $body = 'This test email was sent by the Nanomailer for AWS SES WordPress plugin at ' . expandops_shared_timestamp();
    5656        $headers = [
  • nanomailer-for-aws-ses/trunk/App/Handlers/EnqueueScripts.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Handlers;
     2namespace ExpandOps\Nanomailer\App\Handlers;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Config;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
    66class EnqueueScripts
    77{
  • nanomailer-for-aws-ses/trunk/App/Handlers/EnqueueStyles.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Handlers;
     2namespace ExpandOps\Nanomailer\App\Handlers;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
    5 use ExpandOps\Nanomailer\Config;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
    66class EnqueueStyles
    77{
  • nanomailer-for-aws-ses/trunk/App/Handlers/RouteWpMailToSes.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Handlers;
     2namespace ExpandOps\Nanomailer\App\Handlers;
    33defined( '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;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
     6use ExpandOps\Nanomailer\App\Services\WpMailToSes;
     7use ExpandOps\Nanomailer\App\Utilities\RecordActivity;
     8use ExpandOps\Nanomailer\App\Utilities\TestOutput;
    99class RouteWpMailToSes
    1010{
     
    104104        }
    105105        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        }
    106119        $verified_email_identities = explode(',', $option['verified_email_identities']);
    107120        if (
  • nanomailer-for-aws-ses/trunk/App/MenusAndPages/NanomailerAwsSesMenu.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\MenusAndPages;
     2namespace ExpandOps\Nanomailer\App\MenusAndPages;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseMenu;
    5 use ExpandOps\Nanomailer\Config;
    6 use ExpandOps\Nanomailer\MenusAndPages\NanomailerAwsSesPage;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseMenu;
     5use ExpandOps\Nanomailer\App\Config;
     6use ExpandOps\Nanomailer\App\MenusAndPages\NanomailerAwsSesPage;
    77class NanomailerAwsSesMenu extends BaseMenu
    88{
     
    1313            'slug' => 'nanomailer-aws-ses',
    1414            'id' => 'expandops_' . 'nanomailer',
    15             'parent_slug' => Config::get('parent_menu_slug'),
     15            'parent_slug' => Config::get('parent_slug'),
    1616            'page_class' => NanomailerAwsSesPage::class,
    1717            'validation_class' => Config::get('validation_class'),
  • nanomailer-for-aws-ses/trunk/App/MenusAndPages/NanomailerAwsSesPage.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\MenusAndPages;
     2namespace ExpandOps\Nanomailer\App\MenusAndPages;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BasePage;
    5 use ExpandOps\Nanomailer\Utilities\Log;
    6 use ExpandOps\Nanomailer\Config;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BasePage;
     5use ExpandOps\Nanomailer\App\Utilities\Log;
     6use ExpandOps\Nanomailer\App\Config;
    77class NanomailerAwsSesPage extends BasePage
    88{
     
    1717        $this->setActivityTab();
    1818        $this->setTestingTroubleshootingTab();
     19        $this->setAdvancedTab();
    1920    }
    2021    protected function setSettingsTab()
     
    173174                            'id' => 'activity_record',
    174175                            'title' => 'Activity Record',
    175                             'callback' => \ExpandOps\Nanomailer\Fields\ActivityRecordField::class,
     176                            'callback' => \ExpandOps\Nanomailer\App\Fields\ActivityRecordField::class,
    176177                            'args' => []
    177178                        ],
     
    196197                            'id' => 'verified_email_tester',
    197198                            'title' => 'Verified Email Tester',
    198                             'callback' => \ExpandOps\Nanomailer\Fields\VerifiedEmailTesterField::class,
     199                            'callback' => \ExpandOps\Nanomailer\App\Fields\VerifiedEmailTesterField::class,
    199200                            'args' => []
    200201                        ],
     
    204205        ];
    205206    }
     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    }
    206232}
  • nanomailer-for-aws-ses/trunk/App/Rules/Validation.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Rules;
     2namespace ExpandOps\Nanomailer\App\Rules;
    33defined('ABSPATH') || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseValidationRule;
    5 use ExpandOps\Nanomailer\Utilities\Log;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseValidationRule;
     5use ExpandOps\Nanomailer\App\Utilities\Log;
    66class Validation extends BaseValidationRule
    77{
     
    125125    protected function reply_to($value)
    126126    {
    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 );
    128144        if ( $value === '' ) {
    129145            return $value;
  • nanomailer-for-aws-ses/trunk/App/Services/WpMailToSes.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Services;
     2namespace ExpandOps\Nanomailer\App\Services;
    33defined( '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;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
     5use ExpandOps\Nanomailer\App\Config;
     6use ExpandOps\Nanomailer\App\Utilities\RecordActivity;
     7use ExpandOps\Nanomailer\App\Utilities\TestOutput;
    88class WpMailToSes
    99{
  • nanomailer-for-aws-ses/trunk/App/Utilities/Log.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Utilities;
     2namespace ExpandOps\Nanomailer\App\Utilities;
    33defined('ABSPATH') || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
    5 use ExpandOps\Nanomailer\Config;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
     5use ExpandOps\Nanomailer\App\Config;
    66class Log extends BaseLog
    77{
  • nanomailer-for-aws-ses/trunk/App/Utilities/RecordActivity.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Utilities;
     2namespace ExpandOps\Nanomailer\App\Utilities;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\Nanomailer\Utilities\Log;
     4use ExpandOps\Nanomailer\App\Utilities\Log;
    55class RecordActivity
    66{
  • nanomailer-for-aws-ses/trunk/App/Utilities/TestOutput.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\Nanomailer\Utilities;
     2namespace ExpandOps\Nanomailer\App\Utilities;
    33defined( 'ABSPATH' ) || exit;
    44class TestOutput
  • nanomailer-for-aws-ses/trunk/App/bootstrap.php

    r3479214 r3479227  
    11<?php
     2use ExpandOps\Nanomailer\App\Config;
    23defined( '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 ];
     4Config::load();
     5$is_admin = is_admin();
     6if ( $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;
     14if ( $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}
     20else
     21{
     22}
    1423foreach ( $events as $event )
    1524{
  • nanomailer-for-aws-ses/trunk/App/config/app.php

    r3479214 r3479227  
    22defined( 'ABSPATH' ) || exit;
    33return [
    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,
    69    'log_prefix' => 'Nanomailer for AWS SES',
    710];
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BaseLog.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    44class BaseLog
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BaseMenu.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    55class BaseMenu
    66{
     
    3838    {
    3939        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 );
    4141        });
    4242    }
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BasePage.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\Builder;
    5 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\Builder;
     5use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    66class BasePage
    77{
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/BaseValidationRule.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined('ABSPATH') || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    55class BaseValidationRule
    66{
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/Builder.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
    5 use ExpandOps\AAAFoundation\Classes\V1\Sanitiser;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
     5use ExpandOps\Nanomailer\Lib\Classes\V1\Sanitiser;
    66class Builder
    77{
     
    2929                    $section['id'],
    3030                    $section['title'],
    31                     $section['callback'],
     31                    function() use ( $section ) {
     32                        $this->renderSectionCallback( $section['callback'] ?? null );
     33                    },
    3234                    $this->page_slug . '&tab=' . $tab['slug']
    3335                );
    3436                if( !empty($section['fields']) )
    3537                {
     38                    $field_renderer = new Field();
    3639                    foreach( $section['fields'] as $field )
    3740                    {
     
    3942                            $field['id'],
    4043                            $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() );
    4447                            },
    4548                            $this->page_slug . '&tab=' . $tab['slug'],
     
    8184        <?php
    8285    }
     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    }
    83110}
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/Field.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    55class Field
    66{
     
    2424    private array $checked_options;
    2525    private array $disabled_options;
    26     function __construct( $args )
     26    public function useArgs( $args )
    2727    {
    2828        $options = get_option( $args['option_name'] );
     
    192192        ob_start();
    193193        $current_value = $this->current_value;
    194         $name = $this->name . '[]';
     194        $name = count($this->field_options) > 1 ? $this->name . '[]' : $this->name;
    195195        $i = 0;
    196196        ?>
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/OptionValidator.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    44class OptionValidator
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/RegisterSetting.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
    5 use ExpandOps\AAAFoundation\Classes\V1\OptionValidator;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
     5use ExpandOps\Nanomailer\Lib\Classes\V1\OptionValidator;
    66class RegisterSetting
    77{
     
    1414            $page_id,
    1515            [
    16                 'sanitize_callback' => [ __CLASS__, 'sanitize_options' ]
     16                'sanitize_callback' => [ self::class, 'sanitize_options' ]
    1717            ]
    1818        );
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/RuntimeOutput.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    44class RuntimeOutput
  • nanomailer-for-aws-ses/trunk/Lib/Classes/V1/Sanitiser.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Classes\V1;
     2namespace ExpandOps\Nanomailer\Lib\Classes\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    55class Sanitiser
    66{
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/AdminEnqueueScriptsEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Init\V1\EnqueueStyles;
    5 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Init\V1\EnqueueStyles;
     5use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    66class AdminEnqueueScriptsEvent
    77{
    88    private static $plugin_url;
    99    private static $plugin_version;
    10     public static function register( $plugin_url, $plugin_version )
     10    public static function register( $plugin_url = '', $plugin_version = '' )
    1111    {
    12         if( !$plugin_url || !$plugin_version )
     12        if( empty($plugin_url) || empty($plugin_version) )
    1313        {
    1414            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;
    1616        }
    1717        self::$plugin_url = $plugin_url;
    1818        self::$plugin_version = $plugin_version;
    19         add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueueSharedStylesScriptsCb' ) );
     19        add_action( 'admin_enqueue_scripts', [ self::class, 'enqueueSharedStylesScriptsCb' ] );
    2020    }
    2121    public static function enqueueSharedStylesScriptsCb()
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/AdminMenuEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Init\V1\ParentMenuPage;
    5 use ExpandOps\AAAFoundation\Init\V1\RemoveParentSubmenuPage;
    6 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Init\V1\ParentMenuPage;
     5use ExpandOps\Nanomailer\Lib\Init\V1\RemoveParentSubmenuPage;
     6use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    77class AdminMenuEvent
    88{
    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 )
    1212    {
    13         if( !$parent_menu_title || !$parent_menu_slug )
     13        if( empty($parent_title) || empty($parent_slug) )
    1414        {
    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;
    1717        }
    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);
    2121        if( $remove_parent_submenu_page )
    2222        {
    23             add_action( 'admin_menu', array( __CLASS__, 'removeParentSubmenuPageCb' ), 99 );
     23            add_action( 'admin_menu', [ self::class, 'removeParentSubmenuPageCb' ], 99 );
    2424        }
    2525    }
    2626    public static function parentMenuPageCb()
    2727    {
    28         ParentMenuPage::handle( self::$parent_menu_title, self::$parent_menu_slug );
     28        ParentMenuPage::handle( self::$parent_title, self::$parent_slug );
    2929    }
    3030    public static function removeParentSubmenuPageCb( )
    3131    {
    32         RemoveParentSubmenuPage::handle( self::$parent_menu_slug );
     32        RemoveParentSubmenuPage::handle( self::$parent_slug );
    3333    }
    3434}
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/AdminNoticesEvent.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    4 use ExpandOps\AAAFoundation\Init\V1\RenderAdminNotices;
    5 use ExpandOps\AAAFoundation\Classes\V1\BaseLog;
     4use ExpandOps\Nanomailer\Lib\Init\V1\RenderAdminNotices;
     5use ExpandOps\Nanomailer\Lib\Classes\V1\BaseLog;
    66class AdminNoticesEvent
    77{
    88    public static function register()
    99    {
    10         add_action( 'admin_notices', array( __CLASS__, 'renderAdminNoticesCb' ) );
     10        add_action( 'admin_notices', array( self::class, 'renderAdminNoticesCb' ) );
    1111    }
    1212    public static function renderAdminNoticesCb()
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/EnqueueStyles.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    44class EnqueueStyles
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/ParentMenuPage.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    44class ParentMenuPage
    55{
    6     public static function handle( $parent_menu_title, $parent_menu_slug )
     6    public static function handle( $parent_title, $parent_slug )
    77    {
    8         if ( !menu_page_url($parent_menu_slug, false) )
     8        if ( !menu_page_url($parent_slug, false) )
    99        {
    1010            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,
    1515                '__return_true',
    1616                '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
    1818            );
    1919        }
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/RemoveParentSubmenuPage.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    44class RemoveParentSubmenuPage
    55{
    6     public static function handle( $parent_menu_slug )
     6    public static function handle( $parent_slug )
    77    {
    8         if( menu_page_url($parent_menu_slug, false) )
     8        if( menu_page_url($parent_slug, false) )
    99        {
    10             remove_submenu_page( $parent_menu_slug, $parent_menu_slug );
     10            remove_submenu_page( $parent_slug, $parent_slug );
    1111        }
    1212    }
  • nanomailer-for-aws-ses/trunk/Lib/Init/V1/RenderAdminNotices.php

    r3479214 r3479227  
    11<?php
    2 namespace ExpandOps\AAAFoundation\Init\V1;
     2namespace ExpandOps\Nanomailer\Lib\Init\V1;
    33defined( 'ABSPATH' ) || exit;
    44class RenderAdminNotices
     
    77    {
    88        $notices = get_transient('expandops_admin_notices');
    9         if ( !$notices )
     9        if ( empty($notices) )
    1010        {
    1111           return;
  • nanomailer-for-aws-ses/trunk/Lib/config/app.php

    r3479214 r3479227  
    33return [
    44    '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,
    88    'plugin_path' => dirname(__DIR__, 2),
    99    'plugin_url' => untrailingslashit( plugin_dir_url( dirname(__DIR__, 1) ) ),
    10     'log_prefix' => 'Nanomailer',
     10    'log_prefix' => 'Nanomailer for AWS SES',
    1111    'upload_subdir_path' => wp_upload_dir()['basedir'] . '/expandops',
    1212    'upload_subdir_url' => wp_upload_dir()['baseurl'] . '/expandops'
  • nanomailer-for-aws-ses/trunk/nanomailer-for-aws-ses.php

    r3359902 r3479227  
    44 * Plugin URI:        https://expandops.dev/wordpress-plugins/nanomailer-for-aws-ses
    55 * 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.0
     6 * Version:           1.0.1
    77 * Requires at least: 5.8
    88 * Requires PHP:      8.0
     
    1414defined( 'ABSPATH' ) || exit;
    1515require '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';
     16require 'autoload.php';
     17require 'App/bootstrap.php';
    2218register_uninstall_hook( __FILE__, 'expandops_nanomailer_uninstall' );
    2319function expandops_nanomailer_uninstall()
  • nanomailer-for-aws-ses/trunk/readme.txt

    r3359902 r3479227  
    33Tags: aws, ses, amazon, email, wp_mail
    44Requires at least: 5.8
    5 Tested up to: 6.8
     5Tested up to: 6.9.1
    66Requires PHP: 8.0
    7 Stable tag: 1.0.0
     7Stable tag: 1.0.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html 
     
    7272== Changelog ==
    7373
     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
    7478= 1.0.0 =
    7579Initial release
Note: See TracChangeset for help on using the changeset viewer.