Files
thetempusproject/app/controllers/admin/send_mail.php
2025-01-23 22:39:11 -05:00

110 lines
3.8 KiB
PHP

<?php
/**
* app/controllers/admin/send_mail.php
*
* This is the admin email controller. The only real use is to send out emails to the various lists.
*
* @version 3.0
* @author Joey Kimsey <Joey@thetempusproject.com>
* @link https://TheTempusProject.com
* @license https://opensource.org/licenses/MIT [MIT LICENSE]
*/
namespace TheTempusProject\Controllers\Admin;
use TheTempusProject\Classes\AdminController;
use TheTempusProject\Classes\Email;
use TheTempusProject\Bedrock\Functions\Input;
use TheTempusProject\Houdini\Classes\Issues;
use TheTempusProject\Houdini\Classes\Views;
use TheTempusProject\Models\User;
use TheTempusProject\Models\Subscribe;
use TheTempusProject\Plugins\Subscribe as Plugin;
class SendMail extends AdminController {
public static $user;
public static $subscribe;
public function __construct() {
parent::__construct();
self::$title = 'Admin - Send Mail';
self::$user = new User;
if ( class_exists( 'TheTempusProject\Plugins\Subscribe' ) ) {
$plugin = new Plugin;
if ( ! $plugin->checkEnabled() ) {
Issues::add( 'notice', 'Subscriptions are disabled so those feature will be unavailable.' );
} else {
self::$subscribe = new Subscribe;
}
} else {
Issues::add( 'notice', 'Subscriptions plugin is not installed so those feature will be unavailable.' );
}
}
private function emailSubscribers( $params ) {
if ( empty( self::$subscribe ) ) {
Issues::add( 'error', 'Subscriptions plugin is unavailable' );
return;
}
$list = self::$subscribe->list();
if ( empty( $list ) ) {
Issues::add( 'error', 'No subscribers found' );
return;
}
foreach ( $list as $recipient ) {
$params[ 'confirmationCode' ] = $recipient->confirmationCode;
Email::send( $recipient->email, 'contact', $params, [ 'template' => true, 'unsubscribe' => true ] );
}
}
private function emailUsers( $params, $limit = null ) {
$list = self::$user->userList( $limit );
foreach ( $list as $recipient ) {
Email::send( $recipient->email, 'contact', $params, [ 'template' => true ] );
}
}
public function index() {
if ( Input::exists( 'mailType' ) ) {
$params = [
'subject' => Input::post( 'mailSubject' ),
'title' => Input::post( 'mailTitle' ),
'message' => Input::post( 'mailMessage' ),
];
switch ( Input::post( 'mailType' ) ) {
case 'registered':
$this->emailUsers( $params );
Issues::add( 'success', 'Email(s) Sent' );
break;
case 'newsletter':
$this->emailUsers( $params, 'newsletter' );
Issues::add( 'success', 'Email(s) Sent' );
break;
case 'all':
$this->emailUsers( $params );
$this->emailSubscribers( $params );
Issues::add( 'success', 'Email(s) Sent' );
break;
case 'opt':
$this->emailUsers( $params, 'newsletter' );
$this->emailSubscribers( $params );
Issues::add( 'success', 'Email(s) Sent' );
break;
case 'subscribers':
$this->emailSubscribers( $params );
Issues::add( 'success', 'Email(s) Sent' );
break;
default:
Issues::add( 'error', 'Invalid Request' );
break;
}
}
Views::view( 'admin.contact' );
}
}