init_hooks(); $this->load_dependencies(); } /** * Initialize hooks */ private function init_hooks() { register_activation_hook(__FILE__, array($this, 'activate')); register_deactivation_hook(__FILE__, array($this, 'deactivate')); add_action('init', array($this, 'load_textdomain')); add_action('plugins_loaded', array($this, 'init')); } /** * Load plugin dependencies */ private function load_dependencies() { require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'includes/class-aha-mail-smtp-core.php'; require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'includes/class-aha-mail-smtp-settings.php'; require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'includes/class-aha-mail-smtp-mailer.php'; require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'includes/class-aha-mail-smtp-logger.php'; require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'includes/class-aha-mail-smtp-security.php'; require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'includes/class-aha-mail-smtp-wizard.php'; require_once AHA_MAIL_SMTP_PLUGIN_DIR . 'admin/class-aha-mail-smtp-admin.php'; } /** * Initialize plugin */ public function init() { // Initialize core components AHA_Mail_SMTP_Core::get_instance(); AHA_Mail_SMTP_Settings::get_instance(); AHA_Mail_SMTP_Mailer::get_instance(); AHA_Mail_SMTP_Logger::get_instance(); AHA_Mail_SMTP_Security::get_instance(); if (is_admin()) { AHA_Mail_SMTP_Admin::get_instance(); AHA_Mail_SMTP_Wizard::get_instance(); } } /** * Load plugin textdomain * Note: WordPress automatically loads translations for plugins hosted on WordPress.org since version 4.6 */ public function load_textdomain() { // Removed load_plugin_textdomain() as it's no longer needed for WordPress.org hosted plugins // WordPress will automatically load translations as needed } /** * Plugin activation */ public function activate() { // Create email logs table $this->create_logs_table(); // Set default options $this->set_default_options(); // Flush rewrite rules flush_rewrite_rules(); } /** * Plugin deactivation */ public function deactivate() { // Clean up scheduled events if any wp_clear_scheduled_hook('aha_mail_smtp_cleanup_logs'); } /** * Create email logs table */ private function create_logs_table() { global $wpdb; $table_name = $wpdb->prefix . 'aha_mail_smtp_logs'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name (\n id bigint(20) NOT NULL AUTO_INCREMENT,\n to_email varchar(255) NOT NULL,\n subject text NOT NULL,\n message longtext NOT NULL,\n headers text,\n attachments text,\n status varchar(20) NOT NULL DEFAULT 'pending',\n error_message text,\n date_sent datetime DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (id),\n KEY status (status),\n KEY date_sent (date_sent)\n ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } /** * Set default plugin options */ private function set_default_options() { $default_options = array( 'smtp_host' => '', 'smtp_port' => 587, 'smtp_encryption' => 'tls', 'smtp_auth' => true, 'smtp_username' => '', 'smtp_password' => '', 'from_email' => get_option('admin_email'), 'from_name' => get_bloginfo('name'), 'force_from' => false, 'reply_to_email' => '', 'return_path' => '', 'enable_logging' => true, 'debug_mode' => false, 'provider' => 'generic', 'connection_mode' => 'smtp' ); foreach ($default_options as $key => $value) { if (false === get_option('aha_mail_smtp_' . $key)) { add_option('aha_mail_smtp_' . $key, $value); } } } } // Initialize the plugin AHA_Mail_SMTP::get_instance();