Your IP : 216.73.217.79


Current Path : /var/www/cesa.co.za/php/includes/
Upload File :
Current File : /var/www/cesa.co.za/php/includes/CPDTrainingMaterial.php

<?php

/*
 * Contact otto@igotafrica.com for details
 */

include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/BaseTableClass.php');

/**
 * Control the  CPDTrainingMaterial table
 *
 * @author Otto Saayman
 */
class CPDTrainingMaterial extends BaseTableClass {

    const REMINDER_DAYS_BEFORE_EXPIRY = 90;
    const REMINDER_INTERVAL_DAYS = 28;

    public function find($tmId) {

        $sql = "SELECT * FROM CPDTrainingMaterial WHERE MaterialID = " . addslashes($tmId);

        return $this->sqlf->getRow($sql);
    }

    /**
     * Activities due for an expiry reminder (legacy name retained for cron callers).
     */
    public function findExpiringIn60() {
        $asOf = new DateTime('today');
        $windowEnd = clone $asOf;
        $windowEnd->modify('+' . self::REMINDER_DAYS_BEFORE_EXPIRY . ' days');

        $earliestLastReminder = clone $asOf;
        $earliestLastReminder->modify('-' . self::REMINDER_INTERVAL_DAYS . ' days');

        $sql = "SELECT * FROM CPDTrainingMaterial "
                . "WHERE CPDTrainingMaterial.DateExpires >= '" . $asOf->format('Y-m-d') . "' "
                . "AND CPDTrainingMaterial.DateExpires <= '" . $windowEnd->format('Y-m-d') . "' "
                . "AND (CPDTrainingMaterial.LastReminder IS NULL OR CPDTrainingMaterial.LastReminder <= '" . $earliestLastReminder->format('Y-m-d') . "') "
                . "AND CPDTrainingMaterial.Status "
                . "NOT IN ('Declined', 'Discontinued', 'Pending') AND CPDTrainingMaterial.Archived = 0";

        return $this->sqlf->getAll($sql);
    }

    public function isDueForExpiryReminder($dateExpires, $lastReminder, DateTimeInterface $asOf = null)
    {
        if ($dateExpires === null || $dateExpires === '' || strpos((string) $dateExpires, '0000-00-00') === 0) {
            return false;
        }

        $asOf = $asOf ? DateTimeImmutable::createFromInterface($asOf)->setTime(0, 0, 0) : new DateTimeImmutable('today');
        $expires = new DateTimeImmutable(substr((string) $dateExpires, 0, 10));

        if ($expires < $asOf) {
            return false;
        }

        $windowEnd = $asOf->modify('+' . self::REMINDER_DAYS_BEFORE_EXPIRY . ' days');
        if ($expires > $windowEnd) {
            return false;
        }

        if ($lastReminder === null || $lastReminder === '' || strpos((string) $lastReminder, '0000-00-00') === 0) {
            return true;
        }

        $lastReminderDate = new DateTimeImmutable(substr((string) $lastReminder, 0, 10));
        $earliestNextReminder = $asOf->modify('-' . self::REMINDER_INTERVAL_DAYS . ' days');

        return $lastReminderDate <= $earliestNextReminder;
    }

    public function updateReminderSent($trainingMaterial) {
        $materialId = intval($trainingMaterial['MaterialID'] ?? 0);
        if ($materialId <= 0) {
            return false;
        }

        $numReminders = intval($trainingMaterial['NumReminders'] ?? 0) + 1;
        $today = (new DateTime('today'))->format('Y-m-d');

        return $this->sqlf->autoExecute(
            'CPDTrainingMaterial',
            array(
                'LastReminder' => $today,
                'NumReminders' => $numReminders,
            ),
            'UPDATE',
            'MaterialID = ' . $materialId,
            'MaterialID'
        );
    }
}

function CPDTrainingMaterialViewPage($objThis, $CPDTrainingMaterial) {

//    $objThis->LoadRow();

    global $sqlf;

    $tmObj = new CPDTrainingMaterial($sqlf);
    $tm = $tmObj->find($_REQUEST['MaterialID']);

//    var_dump($tm);
//    exit;
//    echo $CPDTrainingMaterial->CourseBrochure->ViewValue . ' - ' . $CPDTrainingMaterial->CourseBrochure->HrefValue . ' - ' . $CPDTrainingMaterial->CourseBrochure->Upload->DbValue . ' is the course brochure<br />';

    $courseBrochure = $tm['CourseBrochure'];

//    if (!file_exists("../uploads/" . $courseBrochure) && file_exists(file_exists("../cpdadmin/providerdocs/" . $courseBrochure))) {
//        file_move("../cpdadmin/providerdocs/" . $courseBrochure, "../uploads/" . $courseBrochure);
//    }
}