<?php
/**
 * Plugin Name:       SMTP Amazon SES (by ROBOTSTXT)
 * Plugin URI:        https://www.robotstxt.es/
 * Description:       Adds Amazon SES configuration support to the ROBOTSTXT SMTP plugin.
 * Version:           1.0.0
 * Requires at least: 6.0
 * Requires PHP:      8.2
 * Author:            ROBOTSTXT
 * Author URI:        https://www.robotstxt.es/
 * Text Domain:       robotstxt-smtp-amazonses
 * Domain Path:       /languages
 * Requires Plugins:  robotstxt-smtp
 * License:           GPL-3.0-or-later
 * License URI:       https://www.gnu.org/licenses/gpl-3.0.html
 * Gitea Plugin URI:  ROBOTSTXT/robotstxt-smtp-amazonses
 * Gitea Plugin URI:  https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-amazonses
 * Plugin ID:         did:plc:z74fjcsglfynz7grselq5xos
 *
 * @package Robotstxt_SMTP_AmazonSES
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION' ) ) {
	define( 'ROBOTSTXT_SMTP_AMAZONSES_VERSION', '1.0.0' );
}

if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_FILE' ) ) {
	define( 'ROBOTSTXT_SMTP_AMAZONSES_FILE', __FILE__ );
}

if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_PATH' ) ) {
	define( 'ROBOTSTXT_SMTP_AMAZONSES_PATH', plugin_dir_path( __FILE__ ) );
}

if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_URL' ) ) {
	define( 'ROBOTSTXT_SMTP_AMAZONSES_URL', plugin_dir_url( __FILE__ ) );
}

if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_SLUG' ) ) {
	define( 'ROBOTSTXT_SMTP_AMAZONSES_SLUG', 'robotstxt-smtp-amazonses' );
}

if ( ! defined( 'ROBOTSTXT_SMTP_AMAZONSES_BASENAME' ) ) {
	define( 'ROBOTSTXT_SMTP_AMAZONSES_BASENAME', plugin_basename( ROBOTSTXT_SMTP_AMAZONSES_FILE ) );
}

$autoload = ROBOTSTXT_SMTP_AMAZONSES_PATH . 'vendor/autoload.php';

if ( \is_readable( $autoload ) ) {
	require_once $autoload;
}

require_once ROBOTSTXT_SMTP_AMAZONSES_PATH . 'includes/class-plugin.php';

if ( ! function_exists( 'robotstxt_smtp_amazonses_dependencies_satisfied' ) ) {
	/**
	 * Determines whether all plugin dependencies are available.
	 *
	 * @since 1.0.1
	 *
	 * @return bool
	 */
	function robotstxt_smtp_amazonses_dependencies_satisfied(): bool {
		return class_exists( '\\Robotstxt_SMTP\\Plugin' ) && class_exists( '\\Robotstxt_SMTP\\Admin\\Settings_Page' );
	}
}

if ( ! function_exists( 'robotstxt_smtp_amazonses_register_dependency_notice' ) ) {
	/**
	 * Registers the admin notice shown when the core plugin is missing.
	 *
	 * @since 1.0.1
	 *
	 * @return void
	 */
	function robotstxt_smtp_amazonses_register_dependency_notice(): void {
		if ( ! is_admin() ) {
			return;
		}

		$callback = static function (): void {
			$screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null;

			if ( $screen && 'plugins' !== $screen->id && 'plugins-network' !== $screen->id ) {
				return;
			}

			$message = sprintf(
				/* translators: %s: plugin name. */
				esc_html__( 'The %s add-on requires the ROBOTSTXT SMTP plugin to be installed and active.', 'robotstxt-smtp-amazonses' ),
				esc_html__( 'ROBOTSTXT SMTP Amazon SES', 'robotstxt-smtp-amazonses' )
			);
			?>
			<div class="notice notice-error">
				<p><?php echo esc_html( $message ); ?></p>
			</div>
			<?php
		};

		add_action( 'admin_notices', $callback );
		add_action( 'network_admin_notices', $callback );
	}
}

if ( robotstxt_smtp_amazonses_dependencies_satisfied() ) {
	\Robotstxt_SMTP_AmazonSES\Plugin::get_instance()->run();
} else {
	robotstxt_smtp_amazonses_register_dependency_notice();
}


