| Current Path : /var/www/cesa.co.za/cceadmin/ |
| Current File : /var/www/cesa.co.za/cceadmin/inc_sendmessage.php |
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/Utils.php');
include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/CceUploadedFileService.php');
$cceMessageSendResult = array(
'ok' => false,
'message' => 'Your message could not be sent. Please try again.',
'mail_errors' => array(),
'attachment_errors' => array(),
);
if (!isset($sSubject) || empty($sSubject))
$sSubject = $_POST["subject"];
if (!isset($sMessage) || empty($sMessage))
$sMessage = $_POST["message"];
$sMessage = sanitizeCceMessageHtml($sMessage);
if (!isset($sModuleID) || empty($sModuleID))
$sModuleID = $_POST["modid"];
if (!isset($sFrom) || empty($sFrom)) {
$cceMessageSendResult['message'] = 'Could not identify the sender. Please log in again and retry.';
return;
}
$sSentTo = "";
$arrEmails = array();
$test = false;
$sModule = "None / General";
if (!empty($sModuleID)) {
$sql = "SELECT * FROM CCEModules WHERE CCEModuleID=" . $sModuleID;
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
$sModule = $row["ModuleName"];
}
mysqli_free_result($rec);
}
$uploaddir = $_SERVER['DOCUMENT_ROOT'] . '/cceadmin/msgattach/';
$uploadFileNames = array();
$uploadFilePaths = array();
if (!function_exists('storeCceMessageAttachment')) {
function storeCceMessageAttachment($uploaddir, $originalName, $tmpFilePath, &$uploadFileNames, &$uploadFilePaths)
{
if (empty($originalName)) {
return;
}
$safeFilename = strtolower(str_replace(array("'", "\"", "(", ")", "#", " "), "_", basename(stripslashes($originalName))));
if ($safeFilename === '') {
return;
}
$uploadPath = $uploaddir . $safeFilename;
$ifilenum = 1;
while (file_exists($uploadPath)) {
$uploadPath = $uploaddir . $ifilenum . "_" . $safeFilename;
$ifilenum++;
}
if (!empty($tmpFilePath) && @move_uploaded_file($tmpFilePath, $uploadPath)) {
$uploadFileNames[] = basename($uploadPath);
$uploadFilePaths[] = $uploadPath;
}
}
}
if (isset($attachmentfile)) {
$cceFileService = new CceUploadedFileService();
$documentRoot = isset($_SERVER['DOCUMENT_ROOT']) ? (string) $_SERVER['DOCUMENT_ROOT'] : '';
$attachmentNames = is_array($attachmentfile) ? $attachmentfile : array($attachmentfile);
foreach ($attachmentNames as $attachmentName) {
if (empty($attachmentName)) {
continue;
}
$resolvedPath = $cceFileService->resolveFilePath(
$documentRoot,
CceUploadedFileService::STORAGE_MSGATTACH,
(string) $attachmentName
);
if ($resolvedPath === null) {
$cceMessageSendResult['attachment_errors'][] = 'Attachment not found: ' . $attachmentName;
continue;
}
$uploadFileNames[] = (string) $attachmentName;
$uploadFilePaths[] = $resolvedPath;
}
} else {
if (isset($_FILES['file1']) && isset($_FILES['file1']['name'])) {
if (is_array($_FILES['file1']['name'])) {
$fileCount = count($_FILES['file1']['name']);
for ($fileIdx = 0; $fileIdx < $fileCount; $fileIdx++) {
storeCceMessageAttachment(
$uploaddir,
$_FILES['file1']['name'][$fileIdx],
$_FILES['file1']['tmp_name'][$fileIdx],
$uploadFileNames,
$uploadFilePaths
);
}
} else {
storeCceMessageAttachment(
$uploaddir,
$_FILES['file1']['name'],
$_FILES['file1']['tmp_name'],
$uploadFileNames,
$uploadFilePaths
);
}
}
}
$uploadfilename1 = implode(',', $uploadFileNames);
$mailAttachmentConfig = array();
for ($attachmentIdx = 0; $attachmentIdx < count($uploadFilePaths); $attachmentIdx++) {
$mailAttachmentConfig[] = array(
'path' => $uploadFilePaths[$attachmentIdx],
'name' => $uploadFileNames[$attachmentIdx],
);
}
$sendMessageMail = function ($to, $subject, $message) use ($mailAttachmentConfig, &$cceMessageSendResult, &$allMailOk) {
if (count($cceMessageSendResult['attachment_errors']) > 0) {
$allMailOk = false;
return false;
}
$mailConfig = array(
'from-address' => 'no-reply@cesa.co.za',
'reply-to-address' => 'blessings@cesa.co.za',
'isHTML' => false,
'from-name' => 'BCE CESAnet'
);
if (count($mailAttachmentConfig) > 0) {
$mailConfig['attachments'] = $mailAttachmentConfig;
}
$sent = maill($to, $subject, $message, null, $mailConfig);
if (!$sent) {
$allMailOk = false;
$cceMessageSendResult['mail_errors'][] = 'Failed to send to ' . $to . ' (' . $subject . ')';
}
return $sent;
};
if (is_null($arrSendTo) || !is_countable($arrSendTo) || count($arrSendTo) === 0) {
$cceMessageSendResult['message'] = 'No recipients selected.';
return;
}
if (count($cceMessageSendResult['attachment_errors']) > 0) {
$cceMessageSendResult['ok'] = false;
$cceMessageSendResult['message'] = 'Could not access attachment: ' . implode('; ', $cceMessageSendResult['attachment_errors']);
return;
}
$allMailOk = true;
for ($i = 0; $i < count($arrSendTo); $i++) {
if ($arrSendTo[$i] == "TEST") {
$sSentTo .= "Testing CESA Programme Coordinator, ";
$test = true;
} elseif ($arrSendTo[$i] == "CESA") {
$sSentTo .= "CESA Programme Coordinators, ";
} elseif ($arrSendTo[$i] == "brenda") {
$sSentTo .= "Brenda Lacey-Smith, ";
} elseif ($arrSendTo[$i] == "melissa") {
$sSentTo .= "Melissa Jardine, ";
} elseif ($arrSendTo[$i] == "blessings") {
$sSentTo .= "Blessings Banda, ";
} elseif ($arrSendTo[$i] == "FAll") {
$sSentTo .= "All Convenors, ";
} elseif ($arrSendTo[$i] == "EAll") {
$sSentTo .= "All Facilitators, ";
} elseif ($arrSendTo[$i] == "SAll") {
$sSentTo .= "All Students, ";
} elseif (substr($arrSendTo[$i], 0, 1) == "F") {
$sql = "SELECT FacilitatorID, FacilitatorName, EmailAddress "
. "FROM CCEFacilitators WHERE FacilitatorID=" . substr($arrSendTo[$i], 1);
// echo $sql . '<br />';
// exit;
$rec = mysqli_query($conni, $sql);
if ($rec && $row = mysqli_fetch_assoc($rec)) {
$sSentTo .= $row["FacilitatorName"] . ", ";
mysqli_free_result($rec);
}
} elseif (substr($arrSendTo[$i], 0, 1) == "E") {
$sql = "SELECT ExpertID, ExpertName, EmailAddress FROM CCESubjectExperts WHERE ExpertID=" . substr($arrSendTo[$i], 1);
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
$sSentTo .= $row["ExpertName"] . ", ";
}
mysqli_free_result($rec);
} elseif (substr($arrSendTo[$i], 0, 1) == "S") {
$sql = "SELECT CCEStudentID, FirstName, KnownAs, Surname, EmailAddress "
. "FROM CCEStudents WHERE CCEStudentID=" . substr($arrSendTo[$i], 1);
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
if ($row["KnownAs"] != '') {
$row["FirstName"] = $row["KnownAs"];
}
$sSentTo .= $row["FirstName"] . " " . $row["Surname"] . ", ";
}
mysqli_free_result($rec);
} elseif (substr($arrSendTo[$i], 0, 1) == "M") {
$sql = "SELECT CCEStudentID, MentorFirstName, MentorSurname, MentorEmail "
. "FROM CCEStudents WHERE CCEStudentID=" . substr($arrSendTo[$i], 1);
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
$sSentTo .= "Mentor " . $row["MentorFirstName"] . " " . $row["MentorSurname"] . ", ";
}
mysqli_free_result($rec);
}
}
if (substr($sSentTo, -2) == ", ") {
$sSentTo = substr($sSentTo, 0, -2);
}
// echo $arrSendTo[0] . ' - ' . $sSentTo;
// exit;
$sSendMessage = "You have received the following CESAnet message (please reply through CESAnet, and NOT to this email):
From: " . $sFrom . "
Sent To: " . $sSentTo . "
Module: " . $sModule . "
Subject: " . $sSubject . "
" . cleanHTMLMessageText($sMessage) . "
";
$sStudentFooter = ""; //"Please login to CESAnet to respond: www.cesa.co.za/cesanet";
$sFacilitatorFooter = ""; //"Please login to CESAnet to respond: www.cesa.co.za/cceconvenors";
if (!isset($SystemMessage)) {
$SystemMessage = 0;
}
if (empty($sModuleID))
$sModuleID = "NULL";
if (!isset($SentByStudentID))
$SentByStudentID = "NULL";
if (!isset($SentByFacilitatorID))
$SentByFacilitatorID = "NULL";
$isCesaTestStudent = ((int) $SentByStudentID === 54);
// echo 'Please ignore debug info: ' . $test . "\r\n\r\n";
// var_dump($arrSendTo);
// echo "\r\n\r\n";
// echo count($arrSendTo) . '<br />';
// exit;
if (!$test) {
$sql = "INSERT INTO CCEMessages (CCEModuleID, SentByName, SentTo, SentDateTime, MessageSubject, MessageText, SentByStudentID,
SentByFacilitatorID, MessageFile, SystemMessage)
VALUES (" . $sModuleID . ", '" . $sFrom . "', '" . $sSentTo . "', '" . date("Y-m-d H:i:s") . "',
'" . addslashes(stripslashes($sSubject)) . "', '" . addslashes(stripslashes($sMessage)) . "',
" . $SentByStudentID . ", " . $SentByFacilitatorID . ", '" . $uploadfilename1 . "', " . $SystemMessage . ")";
// mail("julia@xe.co.za", "CESAnetMessage", $sql);
// echo "Please ignore debug info: " . $sql . "\r\n\r\n";
if (!mysqli_query($conni, $sql)) {
$cceMessageSendResult['message'] = 'Could not save your message. Please try again.';
return;
}
$CCEMessageID = mysqli_insert_id($conni);
if (empty($CCEMessageID)) {
$sql = "SELECT MAX(CCEMessageID) AS CCEMessageID FROM CCEMessages WHERE MessageSubject='" . addslashes(stripslashes($sSubject)) . "'";
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
$CCEMessageID = $row["CCEMessageID"];
}
mysqli_free_result($rec);
}
if (empty($CCEMessageID)) {
$cceMessageSendResult['message'] = 'Could not save your message. Please try again.';
return;
}
} else {
// echo 'only a test' . "\r\n";
}
// var_dump($arrSendTo);
// exit;
for ($i = 0; $i < count($arrSendTo); $i++) {
// echo substr($arrSendTo[$i], 0, 1) . '<br />';
// , array('bcc' => array('cesa-messages@igotafrica.com'))
// echo $arrSendTo[$i];
// exit;
if ($arrSendTo[$i] == "TEST") {
$sendMessageMail(
"cesa-testing@igot.africa",
"CESAnet Message Received",
$sSendMessage
);
} elseif ($arrSendTo[$i] == "CESA") {
$sendMessageMail(
"brenda@cesa.co.za,blessings@cesa.co.za,melissa@cesa.co.za",
"CESAnet Message Received",
$sSendMessage
);
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Coordinators', 0)");
} elseif ($arrSendTo[$i] == "brenda") {
$sendMessageMail(
"brenda@cesa.co.za",
"CESAnet Message Received",
$sSendMessage
);
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Coordinator', 0)");
} elseif ($arrSendTo[$i] == "melissa") {
$sendMessageMail(
"melissa@cesa.co.za",
"CESAnet Message Received",
$sSendMessage
);
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Coordinator', 0)");
} elseif ($arrSendTo[$i] == "blessings") {
$sendMessageMail(
"blessings@cesa.co.za",
"CESAnet Message Received",
$sSendMessage
);
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Coordinator', 0)");
} elseif ($arrSendTo[$i] == "FAll") {
$sql = "SELECT FacilitatorID, EmailAddress FROM CCEFacilitators WHERE Archived = 0 AND ReceiveMailToAll = 1";
$rec = mysqli_query($conni, $sql);
while ($row = mysqli_fetch_assoc($rec)) {
if (!$isCesaTestStudent) {
$sendMessageMail(
$row["EmailAddress"],
"CESAnet Message Received",
$sSendMessage . $sFacilitatorFooter
);
}
$arrEmails[] = $row["EmailAddress"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID)
VALUES ('" . $CCEMessageID . "', 'Facilitator', '" . $row["FacilitatorID"] . "')");
}
mysqli_free_result($rec);
} elseif ($arrSendTo[$i] == "EAll") {
$sql = "SELECT ExpertID, EmailAddress FROM CCESubjectExperts WHERE Archived=0";
$rec = mysqli_query($conni, $sql);
while ($row = mysqli_fetch_assoc($rec)) {
$sendMessageMail(
$row["EmailAddress"],
"CESAnet Message Received",
$sSendMessage . $sFacilitatorFooter
);
$arrEmails[] = $row["EmailAddress"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Subject Expert', '" . $row["ExpertID"] . "')");
}
mysqli_free_result($rec);
} elseif ($arrSendTo[$i] == "SAll") {
$sql = "SELECT CCEStudentID, EmailAddress FROM CCEStudents WHERE BlockAccess='n' AND Archived=0";
$rec = mysqli_query($conni, $sql);
while ($row = mysqli_fetch_assoc($rec)) {
$sendMessageMail(
$row["EmailAddress"],
"CESAnet Message Received",
$sSendMessage . $sStudentFooter
);
$arrEmails[] = $row["EmailAddress"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Student', '" . $row["CCEStudentID"] . "')");
}
mysqli_free_result($rec);
} elseif (substr($arrSendTo[$i], 0, 1) == "F") {
$sql = "SELECT FacilitatorID, FacilitatorName, EmailAddress "
. "FROM CCEFacilitators WHERE FacilitatorID=" . substr($arrSendTo[$i], 1);
// echo $sql . '<br />';
$rec = mysqli_query($conni, $sql);
if ($rec && $row = mysqli_fetch_assoc($rec)) {
if (!in_array($row["EmailAddress"], $arrEmails)) {
if (!$isCesaTestStudent) {
$sendMessageMail(
$row["EmailAddress"],
"CESAnet Message Received",
$sSendMessage . $sFacilitatorFooter
);
}
$arrEmails[] = $row["EmailAddress"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Facilitator', '" . $row["FacilitatorID"] . "')");
}
mysqli_free_result($rec);
}
} elseif (substr($arrSendTo[$i], 0, 1) == "E") {
$sql = "SELECT ExpertID, EmailAddress FROM CCESubjectExperts WHERE ExpertID=" . substr($arrSendTo[$i], 1);
$rec = mysqli_query($conni, $sql);
while ($row = mysqli_fetch_assoc($rec)) {
$sendMessageMail(
$row["EmailAddress"],
"CESAnet Message Received",
$sSendMessage . $sFacilitatorFooter
);
$arrEmails[] = $row["EmailAddress"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID)
VALUES ('" . $CCEMessageID . "', 'Subject Expert', '" . $row["ExpertID"] . "')");
}
mysqli_free_result($rec);
} elseif (substr($arrSendTo[$i], 0, 1) == "S") {
$sql = "SELECT CCEStudentID, FirstName, Surname, EmailAddress "
. "FROM CCEStudents WHERE CCEStudentID=" . substr($arrSendTo[$i], 1);
// echo $sql . '<br />';
// exit;
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
if (!in_array($row["EmailAddress"], $arrEmails)) {
$sendMessageMail(
$row["EmailAddress"],
"CESAnet Message Received",
$sSendMessage . $sStudentFooter
);
$arrEmails[] = $row["EmailAddress"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID) "
. "VALUES ('" . $CCEMessageID . "', 'Student', '" . $row["CCEStudentID"] . "')");
}
}
mysqli_free_result($rec);
} elseif (substr($arrSendTo[$i], 0, 1) == "M") {
$sql = "SELECT CCEStudentID, FirstName, Surname, MentorFirstName, MentorSurname, MentorEmail "
. "FROM CCEStudents WHERE CCEStudentID=" . substr($arrSendTo[$i], 1);
// echo $sql . '<br />';
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
if (strlen($row["MentorEmail"]) > 0 && !in_array($row["MentorEmail"], $arrEmails)) {
$sendMessageMail(
$row["MentorEmail"],
"CESAnet Message RE " . $row["FirstName"] . " " . $row["Surname"],
$sSendMessage . $sMentorFooter
);
$arrEmails[] = $row["MentorEmail"];
mysqli_query($conni, "INSERT INTO CCEMessagesSentTo (CCEMessageID, SentType, SentID)
VALUES ('" . $CCEMessageID . "', 'Mentor', '" . $row["CCEStudentID"] . "')");
}
}
mysqli_free_result($rec);
}
} //for
if (!$allMailOk || count($cceMessageSendResult['mail_errors']) > 0) {
$cceMessageSendResult['ok'] = false;
$cceMessageSendResult['message'] = 'One or more notification e-mails could not be sent.';
if (count($cceMessageSendResult['mail_errors']) > 0) {
$cceMessageSendResult['message'] .= ' ' . implode('; ', $cceMessageSendResult['mail_errors']);
}
} else {
$cceMessageSendResult['ok'] = true;
$cceMessageSendResult['message'] = 'Your message has been sent successfully.';
}