Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
cesa.co.za /
php /
includes /
Delete
Unzip
Name
Size
Permission
Date
Action
error_handling
[ DIR ]
drwxr-sr-x
2025-07-07 15:54
mail
[ DIR ]
drwxr-sr-x
2025-06-14 11:17
ADQAnswers.php
3.16
KB
-rw-r--r--
2026-06-03 05:55
ADQAudit.php
6.51
KB
-rw-r--r--
2026-06-03 05:55
ADQAuditAnswers.php
1.21
KB
-rw-r--r--
2026-06-03 05:55
ADQFirms.php
18.41
KB
-rw-r--r--
2025-12-31 10:56
ADQuestionnairesAnswers.php
1.05
KB
-rw-r--r--
2026-06-03 05:55
ADQuestionnairesAudit.php
2.01
KB
-rw-r--r--
2026-06-03 05:55
ADecQuestionnaires.php
3.31
KB
-rw-r--r--
2026-06-03 05:55
ADecQuestions.php
541
B
-rw-r--r--
2026-06-03 05:55
ADec_Contacts.php
1.61
KB
-rw-r--r--
2026-06-03 05:55
ADec_OfficeContacts.php
7.43
KB
-rw-r--r--
2026-06-03 05:55
ADec_PIUnderwriters.php
742
B
-rw-r--r--
2026-06-03 05:55
ADec_Transformation.php
817
B
-rw-r--r--
2026-06-03 05:55
ADec_tblMemberFirmOffices.php
1.49
KB
-rw-r--r--
2026-06-03 05:55
ADec_tblMemberFirmSkills.php
2.38
KB
-rw-r--r--
2026-06-03 05:55
ADec_tblMemberFirms.php
19.37
KB
-rw-r--r--
2026-06-03 05:55
AnonRespondees.php
4.25
KB
-rw-r--r--
2026-06-05 11:41
AwardsEntries.php
2.4
KB
-rw-r--r--
2026-06-06 10:48
BaseTableClass.php
950
B
-rw-r--r--
2026-04-26 08:24
BatchJob.php
4.46
KB
-rw-r--r--
2026-06-03 05:55
BceAssignmentFeedbackFormsReportService.php
6.77
KB
-rw-r--r--
2026-05-25 13:06
CCEAssignment.php
12.44
KB
-rw-r--r--
2026-05-26 14:26
CCEAssignmentMarking.php
26.26
KB
-rw-r--r--
2026-08-14 12:06
CCEBooks.php
524
B
-rw-r--r--
2026-06-03 05:55
CCEConvenorAuth.php
3.06
KB
-rw-r--r--
2026-08-19 11:18
CCECourseSchedules.php
579
B
-rw-r--r--
2026-06-03 05:55
CCEDocCategories.php
529
B
-rw-r--r--
2026-06-03 05:55
CCEDocuments.php
8.15
KB
-rw-r--r--
2026-08-20 12:16
CCEExam.php
15.87
KB
-rw-r--r--
2026-06-03 06:35
CCEExamQuestion.php
1.76
KB
-rw-r--r--
2026-06-03 05:55
CCEFacilitatorUser.php
931
B
-rw-r--r--
2026-06-03 05:55
CCEMessageLog.php
951
B
-rw-r--r--
2026-06-03 05:55
CCEMessages.php
8.88
KB
-rw-r--r--
2026-07-01 13:20
CCEModuleMarksService.php
7.16
KB
-rw-r--r--
2026-05-26 10:30
CCEModules.php
1.16
KB
-rw-r--r--
2026-06-03 05:55
CCEResourceGroups.php
591
B
-rw-r--r--
2026-06-03 05:55
CCEResources.php
896
B
-rw-r--r--
2026-06-03 05:55
CCESetup.php
256
B
-rw-r--r--
2026-02-09 16:20
CCEStAssigExtension.php
2.07
KB
-rw-r--r--
2026-06-03 05:55
CCEStAssigExtensionRequest.php
6.65
KB
-rw-r--r--
2026-06-03 05:55
CCEStudentAssignment.php
16.61
KB
-rw-r--r--
2026-07-15 14:44
CCEStudentCourses.php
611
B
-rw-r--r--
2026-06-03 05:55
CCEStudentDisplayOrder.php
4.96
KB
-rw-r--r--
2026-05-26 09:32
CCEStudents.php
8.4
KB
-rw-r--r--
2026-08-19 11:18
CCETemplates.php
896
B
-rw-r--r--
2026-06-03 05:55
CCEWeeklySessions.php
2.27
KB
-rw-r--r--
2026-02-09 16:25
CPDSPReview.php
624
B
-rw-r--r--
2026-06-03 05:55
CPDServiceProvider.php
4.57
KB
-rw-r--r--
2026-06-12 11:48
CPDTrainingMaterial.php
3.96
KB
-rw-r--r--
2026-06-12 11:48
CceUploadedFileService.php
34.9
KB
-rw-r--r--
2026-06-24 12:03
Certificates.php
8.93
KB
-rw-r--r--
2026-08-18 15:42
Contact.php
690
B
-rw-r--r--
2026-06-03 05:55
ErrorLog.php
1.22
KB
-rw-r--r--
2026-08-24 10:12
EventSchedules.php
5.39
KB
-rw-r--r--
2025-12-20 10:03
FileUploads.php
2.1
KB
-rw-r--r--
2026-06-03 05:55
HTMLHelper.php
17.2
KB
-rw-r--r--
2026-06-03 05:55
KeyValue.php
4.9
KB
-rw-r--r--
2026-04-25 09:34
Mailer.php
12.78
KB
-rw-r--r--
2026-07-15 09:50
MarketingAttendees.php
36.87
KB
-rw-r--r--
2026-08-14 12:06
MarketingPayments.php
2.52
KB
-rw-r--r--
2026-06-03 05:55
MemberContact.php
1.04
KB
-rw-r--r--
2026-06-03 05:55
MemberFirm.php
17.71
KB
-rw-r--r--
2026-06-03 05:55
MemberFirmOffices.php
752
B
-rw-r--r--
2026-06-03 05:55
MemberFirmSkill.php
18.04
KB
-rw-r--r--
2026-06-03 05:55
MemberPortalTransformationProxy.php
4.44
KB
-rw-r--r--
2026-05-20 09:08
MemberPortalUrls.php
1.82
KB
-rw-r--r--
2026-05-20 09:53
MsgAttachFileService.php
4.92
KB
-rw-r--r--
2026-06-22 08:37
OfficeContact.php
1.01
KB
-rw-r--r--
2026-06-03 05:55
Picklists.php
539
B
-rw-r--r--
2026-06-03 05:55
Questionnaires.php
849
B
-rw-r--r--
2026-01-23 12:39
SchoolAttendeeBulkMailerService.php
34.26
KB
-rw-r--r--
2026-08-11 10:45
SchoolAttendees.php
73.21
KB
-rw-r--r--
2026-08-11 10:45
SchoolCourses.php
7.98
KB
-rw-r--r--
2026-08-19 11:59
SchoolEvents.php
45.54
KB
-rw-r--r--
2026-08-18 15:42
SchoolPayments.php
4.48
KB
-rw-r--r--
2026-04-13 09:33
SchoolPresenters.php
1.86
KB
-rw-r--r--
2026-01-23 12:43
SchoolWeeksCoursesDashboardProxy.php
10.69
KB
-rw-r--r--
2026-08-14 12:32
TrainingProvider.php
8.06
KB
-rw-r--r--
2026-01-23 12:43
TrainingProviderDoc.php
554
B
-rw-r--r--
2026-06-03 05:55
Transformation.php
10.87
KB
-rw-r--r--
2026-05-13 09:36
UnempPractitioners.php
1.43
KB
-rw-r--r--
2026-06-03 05:55
Utils.php
13.72
KB
-rw-r--r--
2026-07-23 07:28
WeeklySessionsParser.php
7.87
KB
-rw-r--r--
2026-02-09 16:20
cceMessageAttachmentUpload.inc.php
5.12
KB
-rw-r--r--
2026-06-03 05:55
cceMessageEditor.inc.php
9.26
KB
-rw-r--r--
2026-07-01 13:20
cce_file_download_endpoint.php
1.75
KB
-rw-r--r--
2026-06-24 08:38
cstUnreadMessages.php
2.1
KB
-rw-r--r--
2026-07-01 13:20
cstWeeksCourses.php
1.84
KB
-rw-r--r--
2026-08-14 12:06
load_phpmailer.php
742
B
-rw-r--r--
2026-07-17 14:57
maill.php
19.45
KB
-rw-r--r--
2026-08-19 12:23
require_ewmysql.php
1.2
KB
-rw-r--r--
2026-08-24 10:12
sqlFunctions.php
10.48
KB
-rw-r--r--
2026-08-24 10:12
Save
Rename
<?php /* * Contact otto@igotafrica.com for details */ include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/BaseTableClass.php'); /** * Class for control of SchoolCourses * * @author otto */ class SchoolCourses extends BaseTableClass { public function checkCreateTable() { $tableCreateSQL = "DROP TABLE IF EXISTS `SchoolCourses`; CREATE TABLE IF NOT EXISTS `SchoolCourses` ( `SchoolCourseID` int(11) NOT NULL AUTO_INCREMENT, `CourseName` varchar(255) DEFAULT NULL, `Level` varchar(255) DEFAULT NULL, `CPD` varchar(50) DEFAULT NULL, `AccredNum` varchar(255) DEFAULT NULL, `CourseDescription` longtext DEFAULT NULL, `FileAttachment` varchar(255) DEFAULT NULL, `WebCategory` int(11) DEFAULT NULL, `Hours` int(11) DEFAULT NULL, `NQFLevel` varchar(50) DEFAULT NULL, `Category` varchar(50) DEFAULT NULL, `SACPCMPNum` varchar(255) DEFAULT NULL, `OtherCPDPoints` decimal(10,2) DEFAULT NULL, `AccredNum2` varchar(255) DEFAULT NULL, `CourseType` varchar(255) DEFAULT NULL, `DescOverview` longtext DEFAULT NULL, `DescWhyAttend` longtext DEFAULT NULL, `DescOutcomes` longtext DEFAULT NULL, `DescObjectives` longtext DEFAULT NULL, `DescProgram` longtext DEFAULT NULL, `DescWhoAttend` longtext DEFAULT NULL, `FacilitatorID` int(11) DEFAULT NULL, `CurrentlyOffered` tinyint(1) NOT NULL DEFAULT 1, `ProviderID` int(11) DEFAULT NULL, `AdvertInfo` longtext DEFAULT NULL, `TrainingProviderID` int(11) DEFAULT NULL, `TempDescOverview` longtext DEFAULT NULL, `TempDescWhyAttend` longtext DEFAULT NULL, `TempDescOutcomes` longtext DEFAULT NULL, `TempDescProgram` longtext DEFAULT NULL, `TempDescWhoAttend` longtext DEFAULT NULL, `AcceptTemp` char(1) NOT NULL DEFAULT '', `Testimonials` longtext DEFAULT NULL, `NonCPDCourse` tinyint(1) NOT NULL DEFAULT 0, `Archived` tinyint(1) NOT NULL DEFAULT 0, PRIMARY KEY (`SchoolCourseID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;"; } public function findById($courseId) { global $conni; $sql = "SELECT * FROM SchoolCourses WHERE SchoolCourseID = " . mysqli_real_escape_string($conni, $courseId); return $this->sqlf->getRow($sql); } /** * Find course by exact course name * @param string $courseName * @return array|false */ public function findByCourseName($courseName) { global $conni; $courseName = mysqli_real_escape_string($conni, $courseName); $sql = "SELECT * FROM SchoolCourses WHERE CourseName = '" . $courseName . "' AND (Archived = 0 OR Archived IS NULL) AND CurrentlyOffered = 1 LIMIT 1"; return $this->sqlf->getRow($sql); } /** * Get select list array for courses * @return array */ public function getSelectList($fromYear = 0) { $sql = "SELECT SchoolCourseID, CourseName FROM SchoolCourses WHERE (Archived = 0 OR Archived IS NULL) "; if ($fromYear > 0) { $sql .= " AND SchoolCourses.SchoolCourseID IN (SELECT SchoolCourseID FROM SchoolEvents WHERE YEAR(StartDate) >= " . intval($fromYear) . ")"; } $sql .= " ORDER BY CourseName"; $result = $this->sqlf->getAll($sql); $courses = array(); if (is_array($result)) { foreach ($result as $row) { $courses[$row['CourseName']] = $row['SchoolCourseID']; } } return $courses; } /** * Public SCE course catalogue rows for the Course List page. * * @param string $availability "scheduled" (has upcoming public event) or "on_request" (none) * @param int $windowMonths Lookahead window for EventSchedules (default 24) * @return array<int, array<string, mixed>> */ public function getPublicCatalogueCourses($availability = 'scheduled', $windowMonths = 24) { $availability = ($availability === 'on_request') ? 'on_request' : 'scheduled'; $windowMonths = intval($windowMonths); if ($windowMonths <= 0) { $windowMonths = 24; } $today = date('Y-m-d'); $windowEnd = date('Y-m-01', strtotime('+' . $windowMonths . ' months', strtotime(date('Y-m') . '-01'))); include_once($_SERVER['DOCUMENT_ROOT'] . '/php/includes/SchoolEvents.php'); $notCancelled = SchoolEvents::sqlExcludeCancelledForPublic('se'); $hasUpcomingSql = "EXISTS (" . "SELECT 1 FROM SchoolEvents se " . "WHERE se.SchoolCourseID = SchoolCourses.SchoolCourseID " . "AND " . $notCancelled . " " . "AND (se.WebCategory IS NULL OR se.WebCategory <> 11) " . "AND (" . " (se.EndDate IS NOT NULL AND se.EndDate >= '" . $today . "') " . " OR EXISTS (" . " SELECT 1 FROM EventSchedules es " . " WHERE es.EventID = se.EventID " . " AND es.ScheduleDate >= '" . $today . "' " . " AND es.ScheduleDate < '" . $windowEnd . "'" . " )" . ")" . ")"; $sql = "SELECT " . "MAX(SchoolCourses.SchoolCourseID) AS SchoolCourseID, " . "SchoolCourses.CourseName, " . "MAX(SchoolCourses.Category) AS Category " . "FROM SchoolCourses " . "WHERE SchoolCourses.CurrentlyOffered = 1 " . "AND IFNULL(SchoolCourses.Archived, 0) = 0 " . "AND (SchoolCourses.WebCategory IS NULL OR SchoolCourses.WebCategory <> 11) " . "AND " . ($availability === 'scheduled' ? $hasUpcomingSql : ("NOT " . $hasUpcomingSql)) . " " . "GROUP BY SchoolCourses.CourseName " . "ORDER BY MAX(SchoolCourses.Category), SchoolCourses.CourseName"; $rows = $this->sqlf->getAll($sql); if (!is_array($rows)) { return array(); } foreach ($rows as &$row) { $row['category_slug'] = $this->slugifyCategory(isset($row['Category']) ? $row['Category'] : ''); } unset($row); return $rows; } /** * Group catalogue rows by Category for rendering. * * @param array<int, array<string, mixed>> $rows * @return array<int, array{category:string, category_slug:string, courses:array}> */ public function groupPublicCatalogueByCategory(array $rows) { $groups = array(); $indexBySlug = array(); foreach ($rows as $row) { $category = isset($row['Category']) ? trim((string) $row['Category']) : ''; if ($category === '') { $category = 'Other'; } $slug = isset($row['category_slug']) && $row['category_slug'] !== '' ? (string) $row['category_slug'] : $this->slugifyCategory($category); if (!isset($indexBySlug[$slug])) { $indexBySlug[$slug] = count($groups); $groups[] = array( 'category' => $category, 'category_slug' => $slug, 'courses' => array(), ); } $groups[$indexBySlug[$slug]]['courses'][] = array( 'SchoolCourseID' => intval($row['SchoolCourseID']), 'CourseName' => (string) $row['CourseName'], ); } return $groups; } /** * @param string $category * @return string */ public function slugifyCategory($category) { $slug = strtolower(str_replace(' ', '-', trim((string) $category))); $slug = preg_replace('/[^a-z0-9-]/', '-', $slug); $slug = trim(preg_replace('/-+/', '-', $slug), '-'); if ($slug === '') { $slug = 'other'; } return $slug; } } function SchoolCoursesPageLoad($objThis) { if (!isset($_REQUEST['z_Archived'])) { $_REQUEST['z_Archived'] = '='; } if (!isset($_REQUEST['x_Archived'])) { $_REQUEST['x_Archived'] = '0'; } if (!isset($_GET['z_Archived'])) { $_GET['z_Archived'] = '='; } if (!isset($_GET['x_Archived'])) { $_GET['x_Archived'] = '0'; } }