* @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; class SendMail extends AdminController { public static $user; public static $subscribe; public function __construct() { parent::__construct(); self::$title = 'Admin - Send Mail'; self::$user = new User; self::$subscribe = new Subscribe; } private function emailSubscribers( $params ) { $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' ); } }