Your IP : 216.73.217.79


Current Path : /var/www/cesa.co.za/cceadmin/
Upload File :
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.';
}