Your IP : 216.73.217.79


Current Path : /var/www/cesa.co.za/cpdadmin/
Upload File :
Current File : /var/www/cesa.co.za/cpdadmin/inc_functions.php

<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/phpmailer/PHPMailer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/phpmailer/SMTP.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/phpmailer/Exception.php';
include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/maill.php');
include_once($_SERVER['DOCUMENT_ROOT'] . '/cesanet/inc_shared.php');

use PHPMailer\PHPMailer\PHPMailer;

$conni = mysqli_connect(EW_CONN_HOST, EW_CONN_USER, EW_CONN_PASS, EW_CONN_DB);

if (isset($_SESSION["NewPwdRequired"]) && ($_SESSION["NewPwdRequired"] === true) && !in_array(basename($_SERVER["REQUEST_URI"]), array("changepwd.php", "forgotpwd.php", "login.php", "logout.php")))
    CheckPasswordChanged($_SESSION[EW_SESSION_USER_NAME]);

$sPDFHeaderHTML = "<html><head>
<style>
.printhide { display:none; }
</style>
</head>
<body>
";
$sPDFFooterHTML = "</body></html>";

if (!function_exists("get_magic_quotes_runtime")) {

    function get_magic_quotes_runtime()
    {
        return 0;
    }
}

if (!function_exists("set_magic_quotes_runtime")) {

    function set_magic_quotes_runtime($i)
    {
        return true;
    }
}

if (!function_exists("get_magic_quotes_gpc")) {

    function get_magic_quotes_gpc()
    {
        return false;
    }
}
if (!function_exists("maill")) {

    function maill($to, $subject, $message, $uploadfile1 = "", $sFrom = "patience@cesa.co.za", $bHtml = false)
    {
        $mail = new PHPMailer;
        $mail->IsMail();  // use PHP mail function
        $mail->From = $sFrom;
        $mail->FromName = "CPD Verification";
        $to = str_replace(";", ",", $to);
        $arrto = explode(",", $to);

        for ($ito = 0; $ito < count($arrto); $ito++) {
            if (!empty($arrto[$ito]))
                $mail->AddAddress(trim($arrto[$ito]));
        }

        $mail->Subject = $subject;
        $mail->IsHtml($bHtml);
        $mail->Body = $message;

        if (!empty($uploadfile1)) {
            $mail->AddAttachment($uploadfile1, basename($uploadfile1));
        }

        $mail->Send();
    }
}

function GenPassword()
{
    // Password generation
    $length = 8; // Must be a multiple of 2
    $conso = array("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "x", "y", "z");
    $vocal = array("a", "e", "i", "o", "u");
    $password = "";
    srand((float) microtime() * 1000000);
    $max = $length / 2;
    for ($i = 1; $i <= $max; $i++) {
        $password .= $conso[rand(0, 19)];
        $password .= $vocal[rand(0, 4)];
    }

    return $password;
}

function GenStrongPassword()
{
    // Password generation
    $length = 6; // Must be a multiple of 2
    $upper = array("B", "C", "D", "F", "G", "H");
    $special = array("!", "@", "#", "$", "%", "&", "*");
    $conso = array("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "x", "y", "z");
    $vocal = array("a", "e", "i", "o", "u");
    $password = "";
    srand((float) microtime() * 1000000);
    $max = $length / 2;
    for ($i = 1; $i <= $max; $i++) {
        $password .= $conso[rand(0, 19)];
        $password .= $vocal[rand(0, 4)];
    }

    return $upper[rand(0, 5)] . $password . $special[rand(0, 6)];
}

function isStrongPassword($password)
{
    $uppercase = preg_match('@[A-Z]@', $password);
    $lowercase = preg_match('@[a-z]@', $password);
    $number = preg_match('@[0-9]@', $password);
    $specialChars = preg_match('@[^\w]@', $password);

    if (!$uppercase || !$lowercase || !$number || !$specialChars || strlen($password) < 8) {
        return false;
    } else {
        return true;
    }
}

function CheckPasswordChanged($usr)
{
    global $conni;
    /* 	$sql="SELECT pwdchanged FROM CPDAdminUsers WHERE adminusername='".mysqli_escape_string($conni, $usr)."'";
      $rec=mysqli_query($conni, $sql);
      if ($row=mysqli_fetch_assoc($rec)) {
      if (empty($row["pwdchanged"]) || (strtotime($row["pwdchanged"])<strtotime("-3 months"))) {
      $_SESSION[EW_SESSION_MESSAGE]="Your password was last changed more than 3 months ago. Please create a new password now.";
      $_SESSION["NewPwdRequired"]=true;
      header("Location: ".URLROOT."changepwd.php");
      die();
      }
      } else {
     */
    $_SESSION["NewPwdRequired"] = false;
    //	}
}

function AddTopSaveButton($pageobj, $formname)
{
    $pageobj->setMessage("<input type='button' value='Save' onClick='javascript:document.getElementById(\"" . $formname . "\").submit()'>");
}

function CPDSPReviewDone($rs)
{
    global $conni;

    $iSPID = $rs["CPDProviderID"];
    $iRID = $rs["CPDSPRID"];
    if (empty($iRID))
        $iRID = $_REQUEST["x_CPDSPRID"];

    // echo 'Please ignore debug info:';
    // var_dump($rs);
    // exit;

    if ($rs["ReviewOutcome"] == "A" && (empty($rs["SPNumber"]) || ($rs["SPNumber"] == "Declined"))) {

        $sAccredNum = "";
        $sql = "SELECT ConfigValue FROM Config WHERE ConfigName='NextSPNum'";
        $rec = mysqli_query($conni, $sql);
        if ($row = mysqli_fetch_assoc($rec)) {
            $iAccredNum = intval($row["ConfigValue"]);
            $dtValidUntil = date("Y-m-d", strtotime("+3 years", strtotime($rs["ApprovedFrom"])));
            $sAccredNum = "CESA-SPV-" . substr("000" . $iAccredNum, -4) . "-" . date("m", strtotime($dtValidUntil)) . "/" . date("Y", strtotime($dtValidUntil));
            $sql = "UPDATE Config SET ConfigValue='" . (intval($iAccredNum) + 1) . "' WHERE ConfigName='NextSPNum'";
            mysqli_query($conni, $sql);
        }
        mysqli_free_result($rec);

        $sql = "UPDATE CPDServiceProvider SET SPNumber='" . $sAccredNum . "', Approved='A', DateAssessed='" . $rs["ApprovedFrom"]
            . "', DateExpires='" . date("Y-m-d", strtotime("+3 years", strtotime($rs["ApprovedFrom"]))) . "' WHERE CPDProviderID=" . $iSPID;
        mysqli_query($conni, $sql);

        $sql = "UPDATE CPDSPReview SET SPNumber='" . $sAccredNum . "' WHERE CPDSPRID=" . $iRID;
        mysqli_query($conni, $sql);

        if (!empty($sFilename)) {
            $sql = "SELECT CompanyName, ContactFirstName, ContactSurname, ContactEmail FROM CPDServiceProvider WHERE CPDProviderID=" . $iSPID;
            $rec = mysqli_query($conni, $sql);
            if ($row = mysqli_fetch_assoc($rec)) {
                if (!empty($row["ContactEmail"]) && ($rs["SendCertificate"] == 1)) {
                    $sTo = $row["ContactEmail"] . ",cpdverification@cesa.co.za";
                    //$sTo="julia@xe.co.za";
                    $sMsg = "<p>Dear " . $row["ContactFirstName"] . " " . $row["ContactSurname"] . ",</p>
					<p>Your application for " . $row["CompanyName"] . " to be verified as an ECSA Service Provider was successful.</p>
					<p>Your Service Provider Verification Number is: " . $sAccredNum . "</p>
					<p>Please find your certificate attached.</p>
					<p>Kind regards,<br>
					CPD Verification Assessments<br>
					CESA</p>";
                    maill($sTo, "Approved: Application to be verified as an ECSA Service Provider", $sMsg, $_SERVER['DOCUMENT_ROOT'] . "/cpdadmin/certificates/" . $sFilename, "cpd@cesa.co.za", true);
                }
            }
            mysqli_free_result($rec);
        }
    }

    if ($rs["ReviewOutcome"] == "A") {
        //Always regenerate the certificate
        $sFilename = "";
        include_once($_SERVER['DOCUMENT_ROOT'] . "/cpdadmin/genspcertificate.php");

        $sql = "UPDATE CPDSPReview SET CertificateFile='" . $sFilename . "' WHERE CPDSPRID=" . $iRID;
        mysqli_query($conni, $sql);
    }

    if (($rs["ReviewOutcome"] == "D") && ($rs["SPNumber"] != "Declined")) {

        $sAccredNum = "Declined";

        $sql = "UPDATE CPDSPReview SET CertificateFile='', SPNumber='" . $sAccredNum . "' WHERE CPDSPRID=" . $iRID;
        mysqli_query($conni, $sql);

        $sql = "UPDATE CPDServiceProvider SET SPNumber='" . $sAccredNum . "', Approved='D', DateAssessed='" . date("Y-m-d") . "', DateExpires=NULL WHERE CPDProviderID=" . $iSPID;
        mysqli_query($conni, $sql);

        $sql = "SELECT CompanyName, ContactFirstName, ContactSurname, ContactEmail FROM CPDServiceProvider WHERE CPDProviderID=" . $iSPID;
        $rec = mysqli_query($conni, $sql);
        if ($row = mysqli_fetch_assoc($rec)) {
            if (!empty($row["ContactEmail"])) {
                $sTo = $row["ContactEmail"] . ",cpdverification@cesa.co.za";
                //$sTo="julia@xe.co.za";
                $sMsg = "<p>Dear " . $row["ContactFirstName"] . " " . $row["ContactSurname"] . ",</p>
				<p>Your application for " . $row["CompanyName"] . " to be verified as an ECSA Service Provider was unfortunately not successful.</p>
				<p>Please contact us at cpdverification@cesa.co.za for more information.</p>
				<p>Kind regards,<br>
				CPD Verification Assessments<br>
				CESA</p>";
                maill($sTo, "Declined: Application to be verified as an ECSA Service Provider", $sMsg, "", "cpd@cesa.co.za", true);
            }
        }
        mysqli_free_result($rec);
    }
}

function CPDTMReviewDone($rs)
{
    global $conni;

    $iMID = $rs["MaterialID"];

    $sql = "SELECT `Status`, AccredNum, DateExpires FROM CPDTrainingMaterial WHERE MaterialID=" . $iMID;

    $rec = mysqli_query($conni, $sql);
    if ($row = mysqli_fetch_assoc($rec)) {
        if (($row["Status"] == "Approved") && (($row["AccredNum"] == "Pending") || empty($row["AccredNum"]))) {
            $dtValidUntil = date("Y-m-d", strtotime($row["DateExpires"]));
            $sAccredNum = "";
            $sql = "SELECT ConfigValue FROM Config WHERE ConfigName='NextAccredNum'";
            //	echo $sql."<br>";
            $rec = mysqli_query($conni, $sql);
            if ($row = mysqli_fetch_assoc($rec)) {
                $iAccredNum = intval($row["ConfigValue"]);
                $sAccredNum = "CESA-" . substr("000" . $iAccredNum, -4) . "-" . date("m", strtotime($dtValidUntil)) . "/" . date("Y", strtotime($dtValidUntil));
                $sql = "UPDATE CPDTrainingMaterial SET AccredNum='" . $sAccredNum . "' WHERE MaterialID=" . $iMID;
                mysqli_query($conni, $sql);

                $sql = "UPDATE Config SET ConfigValue='" . (intval($iAccredNum) + 1) . "' WHERE ConfigName='NextAccredNum'";
                //	echo $sql."<br>";
                mysqli_query($conni, $sql);
            }
            mysqli_free_result($rec);
        }
    }
}

function CPDTrainingMaterialListOptions_Load(&$obj)
{
    $obj->ListOptions->Add("new");
}

function CPDTrainingMaterialListOptions_Rendered(&$obj)
{
    global $CPDTrainingMaterial;
    //var_dump($obj);
    if (($CPDTrainingMaterial->Status->CurrentValue == 'Approved') && !empty($CPDTrainingMaterial->AccredNum->CurrentValue))
        $obj->ListOptions->Items["new"]->Body = "<span class='phpmaker'><a href='gentmcertificate.php?id=" . $CPDTrainingMaterial->MaterialID->CurrentValue . "' target='_blank'>Certificate</a></span>";
}

function CPDGetProviderID()
{
    global $conni;
    $iProvID = 0;
    // Get the master/detail MaterialID session value, so we can choose the right provider
    // for the current training material parent record
    $sWhere = $_SESSION[EW_PROJECT_NAME . "_CPDTMReview_" . EW_TABLE_MASTER_FILTER];
    if (!empty($sWhere)) {
        $sql = "SELECT ProviderID FROM CPDTrainingMaterial WHERE " . $sWhere;
        $rec = mysqli_query($conni, $sql);
        if ($row = mysqli_fetch_assoc($rec)) {
            $iProvID = $row["ProviderID"];
        }
        mysqli_free_result($rec);
    }
    return $iProvID;
}

// These are the events for the CPDTMReview table

function sendReviewApprovedNotifications($rs)
{
    global $conni; // database connection object

    $subject = 'Unknown';

    $sql = "SELECT MaterialID, Subject, AccredNum FROM CPDTrainingMaterial "
        . "WHERE MaterialID = " . $rs['MaterialID'];

    $rec = mysqli_query($conni, $sql);

    if ($material = mysqli_fetch_assoc($rec)) {
        $subject = $material['Subject'];

        if (strlen($subject) > 0) {
            $subject .= ' - ';
        }

        $subject .= $material['AccredNum'];
    }

    $sql = "SELECT * FROM CPDAdminUsers "
        . "WHERE activated = 1 AND level = -1 "
        . "GROUP BY email";

    $rec = mysqli_query($conni, $sql);

    while ($user = mysqli_fetch_assoc($rec)) {

        $message = 'The following training material has been reviewed and approved: ' . $subject . "\r\n\r\n"
            . 'Click here to view the Training Material: https://www.cesa.co.za/cpdadmin/CPDTrainingMaterialview.php?MaterialID=' . $rs['MaterialID'];

        maill($user['email'], 'Training material review Approved', $message, '', 'cpd@cesa.co.za');
    }
}

function updateTrainingMaterialStatus($status, $materialID)
{
    global $conni; // database connection object

    $trainingMaterialStatus = 'Pending';
    $setDate = '';

    if (in_array($status, array("a", "c"))) {
        $trainingMaterialStatus = 'Approved';
        $setDate = ', DateApproved = NOW() ';
    } elseif (in_array($status, array("d"))) {
        $trainingMaterialStatus = 'Declined';
    }

    $sql = "UPDATE CPDTrainingMaterial "
        . "SET Status = '" . $trainingMaterialStatus . "' "
        . $setDate
        . "WHERE MaterialID = " . $materialID;

    $rec = mysqli_query($conni, $sql);

    if (!is_resource($rec)) {
        //something went wrong
    }

    return $trainingMaterialStatus;
}

function CPDTMReview_Inserted($rs)
{

    // Update the status of CPDTrainingMaterial to match the status saved by the reviewer
    // If $rs["Status"] == "a" or "c" then it is approved,
    // so set CPDTrainingMaterial.Status to the text string "Approved", and CPDTrainingMaterial.DateApproved to now
    // where CPDTrainingMaterial.MaterialID = $rs["MaterialID"]
    // If it is declined ("d") then the Status text should be "Declined"
    $newStatus = updateTrainingMaterialStatus($rs["FinalStatus"], $rs['MaterialID']);

    if ($newStatus == 'Approved') {
        sendReviewApprovedNotifications($rs);
    }
}

function CPDTMReview_Updated($rsold, $rsnew)
{

    $newStatus = updateTrainingMaterialStatus($rsnew["FinalStatus"], $rsold['MaterialID']);
    //    echo $newStatus;
    //    exit;

    if ($newStatus == 'Approved' && $rsold["FinalStatus"] != $rsnew["FinalStatus"]) {
        sendReviewApprovedNotifications($rsold);
    }
}

function CPDFilterAssessorList()
{
    global $Security;
    if ($Security->CurrentUserLevelID() == 11) {
        // Reviewers
        return "CPDAssessors.adminusername='" . addslashes($Security->CurrentUserName()) . "' AND CPDAssessors.Active=1";
    } else {
        return "CPDAssessors.Active=1";
    }
}

function CPDCurrentAssessorID()
{
    global $conni, $Security;
    if ($Security->CurrentUserLevelID() == 11) {
        // Reviewers
        $sql = "SELECT CPDAssessorID FROM CPDAssessors WHERE adminusername='" . addslashes($Security->CurrentUserName()) . "' AND `Active`=1";
        $rec = mysqli_query($conni, $sql);
        if ($row = mysqli_fetch_assoc($rec)) {
            return $row["CPDAssessorID"];
        } else {
            return "0";
        }
    } else {
        return "";
    }
}

function CPDFilterTMForAssessor()
{
    global $conni, $Security;
    if ($Security->CurrentUserLevelID() == 11) {
        // Reviewers
        $iID = CPDCurrentAssessorID();
        return "(CPDTrainingMaterial.EvaluatorID=" . $iID . " OR CPDTrainingMaterial.EvaluatorID2=" . $iID . " OR CPDTrainingMaterial.EvaluatorID3=" . $iID . ")";
    } else {
        return "";
    }
}

function CPDFilterTMReviews()
{
    global $conni, $Security;
    if ($Security->CurrentUserLevelID() == 11) {
        // Reviewers
        $iID = CPDCurrentAssessorID();
        return "CPDTMReview.CPDAssessorID=" . $iID;
    } else {
        return "";
    }
}