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 /** * Per-module exam and assignment marks and 60/40 weighted totals for CCE convenor reports. */ class CCEModuleMarksService { const EXAM_WEIGHT = 0.6; const ASSIGNMENT_WEIGHT = 0.4; /** Modules shown on the exam results grid (M1–M4). */ const EXAM_REPORT_MODULE_COUNT = 4; /** @var array<int,int>|null ModuleNum => CCEModuleID */ private static $moduleNumToId = null; /** * @param int $studentId * @param int $moduleNum CCEModules.ModuleNum * @return float|null Exam percentage (0–100), or null if none */ public function getExamPercentByModuleNum($studentId, $moduleNum) { global $conni; $studentId = (int) $studentId; $moduleNum = (int) $moduleNum; if ($studentId <= 0 || $moduleNum <= 0) { return null; } $sql = "SELECT SUM(CCEExamMarks.Question_Score)/CCEExams.Score*100 AS TotalScore " . "FROM CCEExams " . "JOIN CCEExamMarks USING (Questionnaire_ID) " . "JOIN CCEModules USING (CCEModuleID) " . "WHERE CCEExamMarks.CCEStudentID=" . $studentId . " " . "AND CCEExamMarks.Archived=0 " . "AND CCEModules.ModuleNum=" . $moduleNum . " " . "GROUP BY CCEExamMarks.ExamTimingId ORDER BY CCEExamMarks.DateMarked ASC"; $rec = mysqli_query($conni, $sql); if (!$rec) { return null; } $score = null; while ($row = mysqli_fetch_assoc($rec)) { if ($row['TotalScore'] !== '' && $row['TotalScore'] !== null && $score === null) { $score = (float) $row['TotalScore']; } } mysqli_free_result($rec); return $score; } /** * @param int $studentId * @param int $cceModuleId CCEModules.CCEModuleID * @return float|null */ public function getExamPercentByCceModuleId($studentId, $cceModuleId) { global $conni; $studentId = (int) $studentId; $cceModuleId = (int) $cceModuleId; if ($studentId <= 0 || $cceModuleId <= 0) { return null; } $sql = "SELECT SUM(CCEExamMarks.Question_Score)/CCEExams.Score*100 AS TotalScore " . "FROM CCEExams " . "JOIN CCEExamMarks USING (Questionnaire_ID) " . "JOIN CCEModules USING (CCEModuleID) " . "WHERE CCEExamMarks.CCEStudentID=" . $studentId . " " . "AND CCEExamMarks.Archived=0 " . "AND CCEModules.CCEModuleID=" . $cceModuleId . " " . "GROUP BY CCEExamMarks.ExamTimingId ORDER BY CCEExamMarks.DateMarked ASC"; $rec = mysqli_query($conni, $sql); if (!$rec) { return null; } $score = null; while ($row = mysqli_fetch_assoc($rec)) { if ($row['TotalScore'] !== '' && $row['TotalScore'] !== null && $score === null) { $score = (float) $row['TotalScore']; } } mysqli_free_result($rec); return $score; } /** * Assignment average as a percentage (0–100). * * @param int $studentId * @param int $cceModuleId * @param int $year Submission year; 0 = current calendar year in GetAverageAssigScore * @param bool $interim Use marking scores (true) or final AssignmentScore (false) * @return float|null Null when no average is available */ public function getAssignmentPercentByCceModuleId($studentId, $cceModuleId, $year = 0, $interim = false) { $studentId = (int) $studentId; $cceModuleId = (int) $cceModuleId; $year = (int) $year; if ($cceModuleId <= 0) { return null; } $avg = GetAverageAssigScore($studentId, $interim, $cceModuleId, $year); if ($avg === '' || $avg === null) { return null; } $avg = (float) $avg; if ($avg <= 0 && $studentId > 0) { return null; } return round($avg / 10 * 100, 1); } /** * @param float|null $examPercent * @param float|null $assignmentPercent * @return float|null Weighted total percent, or null if either input is missing */ public function calculateWeightedTotal($examPercent, $assignmentPercent) { if ($examPercent === null || $assignmentPercent === null) { return null; } return round( ((float) $examPercent) * self::EXAM_WEIGHT + ((float) $assignmentPercent) * self::ASSIGNMENT_WEIGHT, 0 ); } /** * @param int $moduleNum * @return int|null */ public function getCceModuleIdByModuleNum($moduleNum) { $this->loadModuleMap(); $moduleNum = (int) $moduleNum; return isset(self::$moduleNumToId[$moduleNum]) ? self::$moduleNumToId[$moduleNum] : null; } /** * HTML for assignment summary module summary column. * * @param int $studentId * @param int $cceModuleId * @param int $year * @return string */ public function formatAssignmentSummaryModuleCell($studentId, $cceModuleId, $year) { $assigInterim = GetAverageAssigScore($studentId, true, $cceModuleId, $year); $assigPct = $this->getAssignmentPercentByCceModuleId($studentId, $cceModuleId, $year, true); $examPct = $this->getExamPercentByCceModuleId($studentId, $cceModuleId); $totalPct = $this->calculateWeightedTotal($examPct, $assigPct); $html = '<div class="module-marks-summary">'; $html .= '<div>' . htmlspecialchars((string) $assigInterim, ENT_QUOTES, 'UTF-8') . '</div>'; $html .= '<div class="module-marks-exam">E:' . $this->formatPercentLabel($examPct) . '</div>'; $html .= '<div class="module-marks-total">T:' . $this->formatPercentLabel($totalPct) . '</div>'; $html .= '</div>'; return $html; } /** * @param float|null $percent * @param bool $useHighlight Wrap in exam-results highlight span * @return string */ public function formatPercentLabel($percent, $useHighlight = false) { if ($percent === null) { return '—'; } $label = intval($percent) . '%'; if (!$useHighlight) { return $label; } $class = function_exists('getExamResultCssClass') ? getExamResultCssClass($percent) : ''; return "<span class='highlight " . $class . "'>" . $label . "</span>"; } /** * @param float|null $percent * @return string */ public function formatPercentCell($percent) { if ($percent === null) { return ' '; } return $this->formatPercentLabel($percent, true); } private function loadModuleMap() { if (self::$moduleNumToId !== null) { return; } global $conni; self::$moduleNumToId = array(); $rec = mysqli_query($conni, "SELECT CCEModuleID, ModuleNum FROM CCEModules WHERE CCECourseID=1 ORDER BY ModuleNum"); if (!$rec) { return; } while ($row = mysqli_fetch_assoc($rec)) { self::$moduleNumToId[(int) $row['ModuleNum']] = (int) $row['CCEModuleID']; } mysqli_free_result($rec); } }