* @license https://files.froxlor.org/misc/COPYING.txt GPLv2 */ const AREA = 'admin'; require __DIR__ . '/lib/init.php'; use Froxlor\Database\Database; use Froxlor\FroxlorLogger; use Froxlor\UI\Panel\UI; use Froxlor\UI\Request; use Froxlor\UI\Response; use Froxlor\User; $id = (int)Request::any('id'); $note_type = null; $note_msg = null; if ($page == 'message') { if ($action == '') { $log->logAction(FroxlorLogger::ADM_ACTION, LOG_NOTICE, 'viewed panel_message'); if (isset($_POST['send']) && $_POST['send'] == 'send') { if ($_POST['recipient'] == 0 && $userinfo['customers_see_all'] == '1') { $log->logAction(FroxlorLogger::ADM_ACTION, LOG_NOTICE, 'sending messages to admins'); $result = Database::query('SELECT `name`, `email` FROM `' . TABLE_PANEL_ADMINS . "`"); } elseif ($_POST['recipient'] == 1) { if ($userinfo['customers_see_all'] == '1') { $log->logAction(FroxlorLogger::ADM_ACTION, LOG_NOTICE, 'sending messages to ALL customers'); $result = Database::query('SELECT `firstname`, `name`, `company`, `email` FROM `' . TABLE_PANEL_CUSTOMERS . "`"); } else { $log->logAction(FroxlorLogger::ADM_ACTION, LOG_NOTICE, 'sending messages to customers'); $result = Database::prepare(' SELECT `firstname`, `name`, `company`, `email` FROM `' . TABLE_PANEL_CUSTOMERS . "` WHERE `adminid` = :adminid"); Database::pexecute($result, [ 'adminid' => $userinfo['adminid'] ]); } } else { Response::standardError('norecipientsgiven'); } $subject = $_POST['subject']; $message = wordwrap($_POST['message'], 70); if (!empty($message)) { $mailcounter = 0; $mail->Body = $message; $mail->Subject = $subject; while ($row = $result->fetch(PDO::FETCH_ASSOC)) { $row['firstname'] = isset($row['firstname']) ? $row['firstname'] : ''; $row['company'] = isset($row['company']) ? $row['company'] : ''; $mail->AddAddress($row['email'], User::getCorrectUserSalutation([ 'firstname' => $row['firstname'], 'name' => $row['name'], 'company' => $row['company'] ])); $mail->From = $userinfo['email']; $mail->FromName = (isset($userinfo['firstname']) ? $userinfo['firstname'] . ' ' : '') . $userinfo['name']; if (!$mail->Send()) { if ($mail->ErrorInfo != '') { $mailerr_msg = $mail->ErrorInfo; } else { $mailerr_msg = $row['email']; } $log->logAction(FroxlorLogger::ADM_ACTION, LOG_ERR, 'Error sending mail: ' . $mailerr_msg); Response::standardError('errorsendingmail', $row['email']); } $mailcounter++; $mail->ClearAddresses(); } Response::redirectTo($filename, [ 'page' => $page, 'action' => 'showsuccess', 'sentitems' => $mailcounter ]); } else { Response::standardError('nomessagetosend'); } } } elseif ($action == 'showsuccess') { $sentitems = isset($_GET['sentitems']) ? (int)$_GET['sentitems'] : 0; if ($sentitems == 0) { $note_type = 'info'; $note_msg = lng('message.norecipients'); } else { $note_type = 'success'; $note_msg = str_replace('%s', $sentitems, lng('message.success')); } } $recipients = []; if ($userinfo['customers_see_all'] == '1') { $recipients[0] = lng('panel.reseller'); } $recipients[1] = lng('panel.customer'); $messages_add_data = include_once dirname(__FILE__) . '/lib/formfields/admin/messages/formfield.messages_add.php'; UI::view('user/form-note.html.twig', [ 'formaction' => $linker->getLink(['section' => 'message']), 'formdata' => $messages_add_data['messages_add'], 'actions_links' => [ [ 'href' => $linker->getLink([ 'section' => 'settings', 'page' => 'overview', 'part' => 'system', 'em' => 'system_mail_use_smtp' ]), 'label' => lng('admin.smtpsettings'), 'icon' => 'fa-solid fa-gears', 'class' => 'btn-outline-secondary' ] ], // alert-box 'type' => $note_type, 'alert_msg' => $note_msg ]); }