| Current Path : /var/www/cesa.co.za/php/includes/ |
| 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);
// }
}