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 /
cceconvenors /
Delete
Unzip
Name
Size
Permission
Date
Action
ajax
[ DIR ]
drwxr-sr-x
2026-08-20 17:27
calendar
[ DIR ]
drwxr-sr-x
2012-03-23 11:54
ckeditor
[ DIR ]
drwxr-sr-x
2017-10-25 14:17
facilitators
[ DIR ]
drwxrwsr-x
2026-08-21 09:23
images
[ DIR ]
drwxr-sr-x
2012-03-23 11:54
js
[ DIR ]
drwxr-sr-x
2026-06-22 10:29
lang
[ DIR ]
drwxr-sr-x
2022-03-03 15:20
txt
[ DIR ]
drwxrwsr-x
2012-03-23 11:55
yui280
[ DIR ]
drwxr-sr-x
2012-03-23 11:53
.htaccess
133
B
-rw-r--r--
2017-10-25 14:17
CCEAssignments_ModeratedFile_bv.php
6.86
KB
-rw-r--r--
2025-10-20 06:40
CCEAssignmentsadd.php
53.93
KB
-rw-r--r--
2022-09-15 21:41
CCEAssignmentsedit.php
57.93
KB
-rw-r--r--
2022-09-15 21:41
CCEAssignmentsinfo.php
30.54
KB
-rw-r--r--
2025-10-20 06:40
CCEAssignmentslist.php
99.82
KB
-rw-r--r--
2025-10-20 06:40
CCEAssignmentsmaster.php
3.43
KB
-rw-r--r--
2025-10-20 06:40
CCEAssignmentsview.php
63.95
KB
-rw-r--r--
2025-10-20 06:40
CCEBooks_DocumentFile_bv.php
6.6
KB
-rw-r--r--
2022-09-15 21:41
CCEBooksadd.php
35.91
KB
-rw-r--r--
2022-09-15 21:41
CCEBooksdelete.php
21.24
KB
-rw-r--r--
2022-09-15 21:41
CCEBooksedit.php
38.91
KB
-rw-r--r--
2022-09-15 21:41
CCEBooksinfo.php
23.34
KB
-rw-r--r--
2022-09-15 21:42
CCEBookslist.php
53.54
KB
-rw-r--r--
2022-09-15 21:41
CCEBooksview.php
44.97
KB
-rw-r--r--
2022-09-15 21:41
CCECoursesinfo.php
19.07
KB
-rw-r--r--
2022-09-15 21:42
CCECourseslist.php
48.24
KB
-rw-r--r--
2022-09-15 21:41
CCECoursesview.php
31.44
KB
-rw-r--r--
2022-09-15 21:41
CCEDocCategoriesinfo.php
18.41
KB
-rw-r--r--
2022-09-15 21:42
CCEDocCategorieslist.php
47.07
KB
-rw-r--r--
2022-09-15 21:41
CCEDocCategoriesview.php
31.03
KB
-rw-r--r--
2022-09-15 21:41
CCEDocuments_DocumentFile_bv.php
6.52
KB
-rw-r--r--
2024-03-25 13:10
CCEDocumentsadd.php
37.55
KB
-rw-r--r--
2022-09-15 21:41
CCEDocumentsedit.php
40.95
KB
-rw-r--r--
2022-09-15 21:41
CCEDocumentsinfo.php
33.94
KB
-rw-r--r--
2024-03-25 13:10
CCEDocumentslist.php
106.2
KB
-rw-r--r--
2024-03-25 13:10
CCEDocumentssrch.php
25.68
KB
-rw-r--r--
2022-09-15 21:41
CCEDocumentsview.php
58.71
KB
-rw-r--r--
2024-03-25 13:10
CCEExamTiminginfo.php
25.62
KB
-rw-r--r--
2022-09-15 21:42
CCEExamTiminglist.php
58.72
KB
-rw-r--r--
2022-09-15 21:41
CCEFacilitatorUsersinfo.php
23.18
KB
-rw-r--r--
2022-09-15 21:42
CCEFacilitators_CVFile_bv.php
6.68
KB
-rw-r--r--
2022-09-15 21:41
CCEFacilitators_Photograph_bv.php
6.72
KB
-rw-r--r--
2022-09-15 21:41
CCEFacilitatorsedit.php
47.15
KB
-rw-r--r--
2025-10-24 14:30
CCEFacilitatorsinfo.php
24.83
KB
-rw-r--r--
2025-10-24 14:30
CCEFacilitatorslist.php
66.11
KB
-rw-r--r--
2025-10-24 14:30
CCEFacilitatorsview.php
47.85
KB
-rw-r--r--
2025-10-24 14:30
CCEFeedbackinfo.php
25.85
KB
-rw-r--r--
2022-09-15 21:42
CCEFeedbacklist.php
62.5
KB
-rw-r--r--
2022-09-15 21:41
CCEFeedbackview.php
46.69
KB
-rw-r--r--
2022-09-15 21:41
CCEMessages_MessageFile_bv.php
6.76
KB
-rw-r--r--
2022-09-15 21:41
CCEMessagesinfo.php
25.03
KB
-rw-r--r--
2022-09-15 21:42
CCEMessageslist.php
61.31
KB
-rw-r--r--
2022-09-15 21:41
CCEMessagesmaster.php
3.74
KB
-rw-r--r--
2013-03-05 16:55
CCEMessagesview.php
39.91
KB
-rw-r--r--
2022-09-15 21:41
CCEModulesinfo.php
22.01
KB
-rw-r--r--
2022-09-15 21:42
CCEModuleslist.php
57.02
KB
-rw-r--r--
2022-09-15 21:41
CCEModulesmaster.php
2.12
KB
-rw-r--r--
2012-03-25 18:46
CCEModulesview.php
38.12
KB
-rw-r--r--
2022-09-15 21:41
CCENoticeBoard_DocumentFile_bv.php
6.72
KB
-rw-r--r--
2022-09-15 21:41
CCENoticeBoard_DocumentName_bv.php
6.72
KB
-rw-r--r--
2022-09-15 21:41
CCENoticeBoardinfo.php
20.09
KB
-rw-r--r--
2022-09-15 21:42
CCENoticeBoardlist.php
51.02
KB
-rw-r--r--
2022-09-15 21:41
CCENoticeBoardview.php
39.2
KB
-rw-r--r--
2022-09-15 21:41
CCEPopupMessagesadd.php
24.72
KB
-rw-r--r--
2022-09-15 21:41
CCEPopupMessagesdelete.php
19.81
KB
-rw-r--r--
2022-09-15 21:41
CCEPopupMessagesedit.php
26.61
KB
-rw-r--r--
2022-09-15 21:41
CCEPopupMessagesinfo.php
22.49
KB
-rw-r--r--
2022-09-15 21:42
CCEPopupMessageslist.php
59.26
KB
-rw-r--r--
2022-09-15 21:41
CCEPopupMessagesview.php
36.92
KB
-rw-r--r--
2022-09-15 21:41
CCEResourceGroupsadd.php
18.61
KB
-rw-r--r--
2022-09-15 21:41
CCEResourceGroupsdelete.php
17.34
KB
-rw-r--r--
2022-09-15 21:41
CCEResourceGroupsedit.php
19.13
KB
-rw-r--r--
2022-09-15 21:41
CCEResourceGroupsinfo.php
19.75
KB
-rw-r--r--
2022-09-15 21:42
CCEResourceGroupslist.php
51.44
KB
-rw-r--r--
2022-09-15 21:41
CCEResourceGroupsmaster.php
1.94
KB
-rw-r--r--
2012-07-02 08:00
CCEResourceGroupsview.php
32.53
KB
-rw-r--r--
2022-09-15 21:41
CCEResourcesadd.php
26.13
KB
-rw-r--r--
2022-09-15 21:41
CCEResourcesdelete.php
19.26
KB
-rw-r--r--
2022-09-15 21:41
CCEResourcesedit.php
26.66
KB
-rw-r--r--
2022-09-15 21:41
CCEResourcesinfo.php
23.47
KB
-rw-r--r--
2022-09-15 21:42
CCEResourceslist.php
57.96
KB
-rw-r--r--
2022-09-15 21:41
CCEResourcesview.php
37.01
KB
-rw-r--r--
2022-09-15 21:41
CCERulingCodesinfo.php
18.49
KB
-rw-r--r--
2025-10-29 09:47
CCERulingCodeslist.php
51.37
KB
-rw-r--r--
2025-10-29 09:47
CCERulingCodesview.php
31.46
KB
-rw-r--r--
2025-10-29 09:47
CCEStAssigExtensionRequests_SupportingDoc_bv.php
6.62
KB
-rw-r--r--
2023-08-16 09:33
CCEStAssigExtensionRequestsedit.php
52.52
KB
-rw-r--r--
2025-03-11 12:03
CCEStAssigExtensionRequestsinfo.php
28.83
KB
-rw-r--r--
2024-03-14 12:42
CCEStAssigExtensionRequestslist.php
89.45
KB
-rw-r--r--
2024-03-14 12:41
CCEStAssigExtensionRequestssrch.php
45.25
KB
-rw-r--r--
2024-03-14 12:41
CCEStAssigExtensionRequestsview.php
51.11
KB
-rw-r--r--
2024-03-14 12:41
CCEStudentActivities_AssignmentFile1_bv.php
7.15
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivities_AssignmentFile2_bv.php
7.15
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivities_AssignmentFile3_bv.php
7.15
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivities_AssignmentFile4_bv.php
7.15
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivities_AssignmentFile5_bv.php
7.15
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivities_AssignmentFile6_bv.php
7.15
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivitiesedit.php
73.68
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivitiesinfo.php
29.55
KB
-rw-r--r--
2022-09-15 21:42
CCEStudentActivitieslist.php
77.43
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentActivitiesview.php
67.13
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentAssignments_AssignmentFile1_bv.php
7.18
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignments_AssignmentFile2_bv.php
7.18
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignments_AssignmentFile3_bv.php
7.18
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignments_AssignmentFile4_bv.php
7.18
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignments_AssignmentFile5_bv.php
7.18
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignments_MsgAttachment_bv.php
7.15
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignmentsedit.php
99.52
KB
-rw-r--r--
2025-10-20 06:40
CCEStudentAssignmentsinfo.php
36.28
KB
-rw-r--r--
2025-10-29 10:29
CCEStudentAssignmentslist.php
115.48
KB
-rw-r--r--
2025-10-29 10:29
CCEStudentAssignmentssrch.php
77.85
KB
-rw-r--r--
2025-10-29 10:04
CCEStudentAssignmentsview.php
75.2
KB
-rw-r--r--
2025-10-29 10:04
CCEStudents_AgreementFile_bv.php
6.67
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_CVFile_bv.php
6.59
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_ExamResultLetter_bv.php
6.43
KB
-rw-r--r--
2024-09-05 08:27
CCEStudents_IDFile_bv.php
6.59
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_MemorandumFile_bv.php
6.68
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_MotivationalLetter_bv.php
6.73
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_PhotoFile_bv.php
6.57
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_QualCertificate1_bv.php
6.7
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_QualCertificate2_bv.php
6.7
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_QualCertificate3_bv.php
6.7
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_ResultLetter_bv.php
6.66
KB
-rw-r--r--
2022-09-15 21:41
CCEStudents_SupplementalExamLetter_bv.php
6.5
KB
-rw-r--r--
2024-09-05 08:27
CCEStudents_Trimester1Report_bv.php
6.43
KB
-rw-r--r--
2024-09-05 08:27
CCEStudents_Trimester2Report_bv.php
6.43
KB
-rw-r--r--
2024-09-05 08:27
CCEStudents_Trimester3Report_bv.php
6.43
KB
-rw-r--r--
2024-09-05 08:27
CCEStudentsedit.php
128.59
KB
-rw-r--r--
2022-09-15 21:41
CCEStudentsinfo.php
59.59
KB
-rw-r--r--
2025-10-24 14:30
CCEStudentslist.php
143.56
KB
-rw-r--r--
2025-10-24 14:30
CCEStudentsmaster.php
11.83
KB
-rw-r--r--
2025-10-24 14:30
CCEStudentsview.php
153.43
KB
-rw-r--r--
2024-12-19 14:12
CCETemplates_TemplateFile_bv.php
6.68
KB
-rw-r--r--
2022-09-15 21:41
CCETemplatesadd.php
21.79
KB
-rw-r--r--
2022-09-15 21:41
CCETemplatesdelete.php
18.99
KB
-rw-r--r--
2022-09-15 21:41
CCETemplatesedit.php
24.42
KB
-rw-r--r--
2022-09-15 21:41
CCETemplatesinfo.php
21.5
KB
-rw-r--r--
2022-09-15 21:42
CCETemplateslist.php
53.18
KB
-rw-r--r--
2022-09-15 21:41
CCETemplatesview.php
36.42
KB
-rw-r--r--
2022-09-15 21:41
CCEUploads_DocFile_bv.php
6.3
KB
-rw-r--r--
2023-04-20 12:59
CCEUploadsadd.php
31.62
KB
-rw-r--r--
2023-04-20 12:59
CCEUploadsdelete.php
22.75
KB
-rw-r--r--
2023-04-20 12:59
CCEUploadsedit.php
35.42
KB
-rw-r--r--
2023-04-20 12:59
CCEUploadsinfo.php
24.76
KB
-rw-r--r--
2023-04-20 12:59
CCEUploadslist.php
77.8
KB
-rw-r--r--
2023-04-20 12:59
CCEUploadsview.php
40.69
KB
-rw-r--r--
2023-04-20 12:59
CCEWeeklySessionsadd.php
43
KB
-rw-r--r--
2022-09-15 21:41
CCEWeeklySessionsdelete.php
28.37
KB
-rw-r--r--
2022-09-15 21:41
CCEWeeklySessionsedit.php
45.82
KB
-rw-r--r--
2022-09-15 21:41
CCEWeeklySessionsinfo.php
29.08
KB
-rw-r--r--
2022-09-15 21:42
CCEWeeklySessionslist.php
75.65
KB
-rw-r--r--
2022-09-15 21:41
CESA_Convenors.css
10.78
KB
-rw-r--r--
2026-03-10 15:35
SpryMenuBarHorizontal.css
5.52
KB
-rw-r--r--
2012-03-25 18:23
SpryMenuBarVertical.css
4.52
KB
-rw-r--r--
2012-03-25 18:23
activitysummary.php
4.74
KB
-rw-r--r--
2026-05-26 09:34
assigextensions.php
3.84
KB
-rw-r--r--
2022-06-16 20:23
assignmentanswers.php
3.46
KB
-rw-r--r--
2022-06-16 20:23
assignmentinfo.php
3.25
KB
-rw-r--r--
2024-03-25 13:10
assignments.php
5.5
KB
-rw-r--r--
2024-03-16 16:03
assigsetquestions.php
2.2
KB
-rw-r--r--
2022-06-09 11:00
assigsummary.php
44.95
KB
-rw-r--r--
2026-08-04 09:21
changepwd.php
14.03
KB
-rw-r--r--
2023-05-25 09:46
cstArchivedAssignments_AssignmentPDF_bv.php
6.91
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedAssignments_ModeratedFile2_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedAssignments_ModeratedFile3_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedAssignments_ModeratedFile_bv.php
6.91
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedAssignmentsinfo.php
33.99
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedAssignmentslist.php
83.57
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedAssignmentsview.php
63.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedBooks_DocumentFile_bv.php
6.77
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedBooksinfo.php
25.13
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedBookslist.php
59.78
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedBooksview.php
50.23
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedDocuments_DocumentFile_bv.php
6.85
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedDocumentsinfo.php
25.39
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedDocumentslist.php
61.78
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedDocumentsview.php
46.75
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedGallery_GalleryImage_bv.php
5.42
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedGalleryinfo.php
21.44
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedGallerylist.php
56.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedResourcesinfo.php
23.98
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedResourceslist.php
59.65
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedResourcesview.php
40.82
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012info.php
44.88
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedStudents2012list.php
108.55
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2012master.php
5.51
KB
-rw-r--r--
2019-04-17 10:01
cstArchivedStudents2012view.php
121.49
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013info.php
45.78
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedStudents2013list.php
110.52
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2013master.php
6.14
KB
-rw-r--r--
2019-04-17 10:02
cstArchivedStudents2013view.php
135.68
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014info.php
44.94
KB
-rw-r--r--
2022-09-15 21:42
cstArchivedStudents2014list.php
109.12
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2014master.php
5.51
KB
-rw-r--r--
2019-04-17 10:02
cstArchivedStudents2014view.php
123.17
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015info.php
44.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015list.php
109.12
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2015master.php
5.51
KB
-rw-r--r--
2019-04-17 10:02
cstArchivedStudents2015view.php
123.17
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016info.php
44.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016list.php
109.12
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2016master.php
5.51
KB
-rw-r--r--
2019-04-17 10:02
cstArchivedStudents2016view.php
123.17
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017info.php
44.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017list.php
109.14
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2017master.php
5.51
KB
-rw-r--r--
2019-04-17 10:02
cstArchivedStudents2017view.php
123.17
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018info.php
47.5
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018list.php
118.47
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2018master.php
8.59
KB
-rw-r--r--
2019-04-17 10:02
cstArchivedStudents2018view.php
123.17
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019info.php
47.5
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019list.php
118.47
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2019master.php
8.59
KB
-rw-r--r--
2021-01-18 12:48
cstArchivedStudents2019view.php
123.17
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020info.php
48.56
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020list.php
121.41
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2020master.php
9.29
KB
-rw-r--r--
2021-03-18 07:33
cstArchivedStudents2020view.php
124.97
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_AgreementFile_bv.php
6.93
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_CVFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_IDFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_MemorandumFile_bv.php
6.94
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_QualCertificate1_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_QualCertificate2_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_QualCertificate3_bv.php
6.96
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021_ResultLetter_bv.php
6.92
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021info.php
48.56
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021list.php
122.41
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents2021master.php
9.41
KB
-rw-r--r--
2022-03-17 12:31
cstArchivedStudents2021view.php
123.27
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudentsAll_AgreementFile_bv.php
6.91
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_CVFile_bv.php
6.82
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_IDFile_bv.php
6.82
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_MemorandumFile_bv.php
6.92
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_QualCertificate1_bv.php
6.94
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_QualCertificate2_bv.php
6.94
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_QualCertificate3_bv.php
6.94
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAll_ResultLetter_bv.php
6.89
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAllinfo.php
48.87
KB
-rw-r--r--
2025-04-10 09:00
cstArchivedStudentsAlllist.php
174.59
KB
-rw-r--r--
2025-04-10 09:00
cstArchivedStudentsAllmaster.php
8.67
KB
-rw-r--r--
2022-09-16 10:46
cstArchivedStudentsAllview.php
120.43
KB
-rw-r--r--
2025-04-10 09:00
cstArchivedStudents_AgreementFile_bv.php
6.84
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents_CVFile_bv.php
6.76
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents_MemorandumFile_bv.php
6.85
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents_QualCertificate1_bv.php
6.88
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents_QualCertificate2_bv.php
6.88
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents_QualCertificate3_bv.php
6.88
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudents_ResultLetter_bv.php
6.83
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudentsinfo.php
45.26
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudentslist.php
106.72
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedStudentsmaster.php
5.81
KB
-rw-r--r--
2014-02-18 08:12
cstArchivedStudentsview.php
130.12
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedTemplates_TemplateFile_bv.php
6.85
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedTemplatesinfo.php
23.07
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedTemplateslist.php
59.24
KB
-rw-r--r--
2022-09-15 21:41
cstArchivedTemplatesview.php
40.4
KB
-rw-r--r--
2022-09-15 21:41
cstAssigAllFeedbackinfo.php
23.28
KB
-rw-r--r--
2022-09-15 21:41
cstAssigAllFeedbacklist.php
59.64
KB
-rw-r--r--
2022-09-15 21:41
cstAssigFeedback_MsgAttachment_bv.php
6.79
KB
-rw-r--r--
2022-09-15 21:41
cstAssigFeedbackinfo.php
28.04
KB
-rw-r--r--
2022-09-15 21:41
cstAssigFeedbacklist.php
66.48
KB
-rw-r--r--
2022-09-15 21:41
cstAssigFeedbackview.php
45.99
KB
-rw-r--r--
2022-09-15 21:41
cstAvgScoresinfo.php
20.82
KB
-rw-r--r--
2022-09-15 21:41
cstAvgScoreslist.php
51.17
KB
-rw-r--r--
2022-09-15 21:41
cstCourseYearsinfo.php
17.96
KB
-rw-r--r--
2022-09-16 10:46
cstCourseYearslist.php
39.12
KB
-rw-r--r--
2022-09-16 10:46
cstFacilitatorMessagesinfo.php
22.21
KB
-rw-r--r--
2022-09-15 21:41
cstFacilitatorMessageslist.php
57.72
KB
-rw-r--r--
2022-09-15 21:41
cstFacilitatorModulesinfo.php
22.71
KB
-rw-r--r--
2022-09-15 21:41
cstFacilitatorModuleslist.php
57.64
KB
-rw-r--r--
2022-09-15 21:41
cstFutureStudents_AgreementFile_bv.php
6.53
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudents_CVFile_bv.php
6.44
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudents_IDFile_bv.php
6.44
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudents_MemorandumFile_bv.php
6.54
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudents_QualCertificate1_bv.php
6.56
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudents_QualCertificate2_bv.php
6.56
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudents_QualCertificate3_bv.php
6.56
KB
-rw-r--r--
2023-11-21 14:12
cstFutureStudentsinfo.php
49.43
KB
-rw-r--r--
2025-02-04 10:23
cstFutureStudentslist.php
118.22
KB
-rw-r--r--
2025-02-04 10:23
cstFutureStudentsview.php
123.69
KB
-rw-r--r--
2024-12-19 14:12
cstSendFeedbackToinfo.php
23.32
KB
-rw-r--r--
2022-09-15 21:41
cstSendFeedbackTolist.php
53.54
KB
-rw-r--r--
2022-09-15 21:41
cstSendToinfo.php
21.64
KB
-rw-r--r--
2022-09-15 21:41
cstSendTolist.php
47.98
KB
-rw-r--r--
2022-09-15 21:41
cstStudentAssigArchived_AssignmentFile1_bv.php
8.31
KB
-rw-r--r--
2022-09-15 21:41
cstStudentAssigArchived_AssignmentFile2_bv.php
8.31
KB
-rw-r--r--
2022-09-15 21:41
cstStudentAssigArchived_AssignmentFile3_bv.php
8.31
KB
-rw-r--r--
2022-09-15 21:41
cstStudentAssigArchivedinfo.php
34.13
KB
-rw-r--r--
2022-09-15 21:41
cstStudentAssigArchivedlist.php
104.52
KB
-rw-r--r--
2022-09-15 21:41
cstStudentAssigArchivedview.php
56.89
KB
-rw-r--r--
2022-09-15 21:41
cstStudentMentorsinfo.php
23.55
KB
-rw-r--r--
2023-02-21 13:13
cstStudentMentorslist.php
64.15
KB
-rw-r--r--
2023-02-21 07:47
cstStudentReadMessagesinfo.php
21.13
KB
-rw-r--r--
2022-09-15 21:41
cstStudentReadMessageslist.php
46.86
KB
-rw-r--r--
2022-09-15 21:41
cstSubmittedActivitiesinfo.php
26.06
KB
-rw-r--r--
2022-09-15 21:41
cstSubmittedActivitieslist.php
64.16
KB
-rw-r--r--
2022-09-15 21:41
cstSubmittedActivitiesmaster.php
3.68
KB
-rw-r--r--
2012-08-20 19:14
cstSubmittedAssign_AssignmentFile1_bv.php
5.22
KB
-rw-r--r--
2023-04-20 12:59
cstSubmittedAssigninfo.php
31.99
KB
-rw-r--r--
2023-04-20 12:59
cstSubmittedAssignlist.php
74.86
KB
-rw-r--r--
2023-04-20 12:59
cstUnreadMessages_ReadBy_bv.php
5.36
KB
-rw-r--r--
2022-09-15 21:41
cstUnreadMessages_SentToList_bv.php
5.39
KB
-rw-r--r--
2022-09-15 21:41
cstUnreadMessagesinfo.php
23.61
KB
-rw-r--r--
2025-08-06 12:43
cstUnreadMessageslist.php
80.39
KB
-rw-r--r--
2024-07-18 11:12
date.php
34
B
-rw-r--r--
2012-05-07 07:34
document-pdf-proxy.php
1.82
KB
-rw-r--r--
2026-04-29 08:31
document-view.php
5.5
KB
-rw-r--r--
2026-04-29 08:31
english.xml
175.75
KB
-rw-r--r--
2012-05-02 09:47
ewbv7.php
1.81
KB
-rw-r--r--
2012-03-25 18:10
ewcfg7.php
15.71
KB
-rw-r--r--
2026-08-24 10:13
ewemail7.php
1.84
KB
-rw-r--r--
2012-03-25 18:10
ewlookup7.php
2.69
KB
-rw-r--r--
2012-03-25 18:10
ewmenu.php
3.92
KB
-rw-r--r--
2026-04-08 14:49
ewmysql7.php
25.12
KB
-rw-r--r--
2026-08-20 18:30
ewshared7.php
26.13
KB
-rw-r--r--
2023-02-15 06:27
exams.php
6.59
KB
-rw-r--r--
2026-06-17 13:48
examsreport.php
36.9
KB
-rw-r--r--
2026-08-04 08:14
feedbackformsreport.php
423
B
-rw-r--r--
2026-05-25 12:17
feedbackformsreportexport.php
308
B
-rw-r--r--
2026-05-25 12:17
file-download.php
479
B
-rw-r--r--
2026-06-24 12:03
footer.php
1.56
KB
-rw-r--r--
2025-03-06 11:05
forgotpwd.php
13.07
KB
-rw-r--r--
2023-03-10 09:09
guideline-view.php
872
B
-rw-r--r--
2026-02-13 11:49
guideline.php
1.27
KB
-rw-r--r--
2026-02-13 11:49
header.php
8.46
KB
-rw-r--r--
2026-08-20 17:50
inc_functions.php
80
B
-rw-r--r--
2023-10-23 07:38
inc_sendmessage.php
3.84
KB
-rw-r--r--
2012-03-25 18:23
index.php
7.16
KB
-rw-r--r--
2023-10-06 09:57
library.php
987
B
-rw-r--r--
2026-04-29 07:23
log_20240106.txt
148
B
-rw-r--r--
2024-01-06 07:20
log_20240107.txt
145
B
-rw-r--r--
2024-01-07 14:58
log_20240109.txt
232
B
-rw-r--r--
2024-01-09 09:09
log_20240110.txt
224
B
-rw-r--r--
2024-01-10 08:10
log_20240111.txt
148
B
-rw-r--r--
2024-01-11 06:14
log_20240114.txt
149
B
-rw-r--r--
2024-01-14 04:38
log_20240115.txt
368
B
-rw-r--r--
2024-01-15 09:26
log_20240116.txt
340
B
-rw-r--r--
2024-01-16 15:14
log_20240117.txt
302
B
-rw-r--r--
2024-01-17 13:49
log_20240118.txt
420
B
-rw-r--r--
2024-01-18 14:06
log_20240119.txt
340
B
-rw-r--r--
2024-01-19 09:30
log_20240121.txt
149
B
-rw-r--r--
2024-01-21 05:21
log_20240122.txt
324
B
-rw-r--r--
2024-01-22 14:59
log_20240123.txt
308
B
-rw-r--r--
2024-01-23 15:25
log_20240126.txt
148
B
-rw-r--r--
2024-01-26 10:41
log_20240128.txt
149
B
-rw-r--r--
2024-01-28 15:24
log_20240130.txt
148
B
-rw-r--r--
2024-01-30 15:31
log_20240131.txt
422
B
-rw-r--r--
2024-01-31 14:26
log_20240201.txt
471
B
-rw-r--r--
2024-02-01 13:55
log_20240202.txt
478
B
-rw-r--r--
2024-02-02 12:10
log_20240205.txt
563
B
-rw-r--r--
2024-02-05 15:48
log_20240206.txt
337
B
-rw-r--r--
2024-02-06 15:00
log_20240207.txt
779
B
-rw-r--r--
2024-02-07 14:42
log_20240208.txt
369
B
-rw-r--r--
2024-02-08 15:32
log_20240209.txt
459
B
-rw-r--r--
2024-02-09 13:00
log_20240211.txt
225
B
-rw-r--r--
2024-02-11 10:41
log_20240212.txt
533
B
-rw-r--r--
2024-02-12 15:12
log_20240213.txt
374
B
-rw-r--r--
2024-02-13 15:21
log_20240214.txt
615
B
-rw-r--r--
2024-02-14 15:20
log_20240215.txt
464
B
-rw-r--r--
2024-02-15 15:11
log_20240216.txt
452
B
-rw-r--r--
2024-02-16 14:02
log_20240217.txt
148
B
-rw-r--r--
2024-02-17 04:53
log_20240218.txt
232
B
-rw-r--r--
2024-02-18 06:19
log_20240219.txt
542
B
-rw-r--r--
2024-02-19 17:43
log_20240220.txt
533
B
-rw-r--r--
2024-02-20 15:05
log_20240221.txt
398
B
-rw-r--r--
2024-02-21 20:04
log_20240222.txt
315
B
-rw-r--r--
2024-02-22 11:45
log_20240223.txt
468
B
-rw-r--r--
2024-02-23 13:07
log_20240224.txt
226
B
-rw-r--r--
2024-02-24 07:49
log_20240225.txt
307
B
-rw-r--r--
2024-02-25 13:30
log_20240226.txt
862
B
-rw-r--r--
2024-02-26 16:08
log_20240227.txt
852
B
-rw-r--r--
2024-02-27 13:15
log_20240228.txt
714
B
-rw-r--r--
2024-02-28 13:04
log_20240229.txt
620
B
-rw-r--r--
2024-02-29 14:55
log_20240301.txt
550
B
-rw-r--r--
2024-03-01 15:57
log_20240302.txt
533
B
-rw-r--r--
2024-03-02 15:11
log_20240303.txt
408
B
-rw-r--r--
2024-03-03 11:06
log_20240304.txt
615
B
-rw-r--r--
2024-03-04 15:41
log_20240305.txt
962
B
-rw-r--r--
2024-03-05 13:09
log_20240306.txt
847
B
-rw-r--r--
2024-03-06 12:08
log_20240307.txt
300
B
-rw-r--r--
2024-03-07 13:58
log_20240308.txt
376
B
-rw-r--r--
2024-03-08 12:23
log_20240309.txt
224
B
-rw-r--r--
2024-03-09 15:36
log_20240310.txt
384
B
-rw-r--r--
2024-03-10 11:49
log_20240311.txt
1.03
KB
-rw-r--r--
2024-03-11 15:44
log_20240312.txt
1.23
KB
-rw-r--r--
2024-03-12 15:01
log_20240313.txt
722
B
-rw-r--r--
2024-03-13 16:17
log_20240314.txt
2.57
KB
-rw-r--r--
2024-03-14 16:02
log_20240315.txt
886
B
-rw-r--r--
2024-03-15 13:03
log_20240316.txt
934
B
-rw-r--r--
2024-03-16 15:19
log_20240317.txt
567
B
-rw-r--r--
2024-03-17 14:13
log_20240318.txt
1.03
KB
-rw-r--r--
2024-03-18 15:55
log_20240319.txt
738
B
-rw-r--r--
2024-03-19 15:21
log_20240320.txt
776
B
-rw-r--r--
2024-03-20 12:35
log_20240321.txt
148
B
-rw-r--r--
2024-03-21 11:02
log_20240322.txt
642
B
-rw-r--r--
2024-03-22 14:20
log_20240323.txt
172
B
-rw-r--r--
2024-03-23 12:00
log_20240324.txt
148
B
-rw-r--r--
2024-03-24 07:50
log_20240325.txt
1.34
KB
-rw-r--r--
2024-03-25 15:07
log_20240326.txt
1.37
KB
-rw-r--r--
2024-03-26 14:55
log_20240327.txt
545
B
-rw-r--r--
2024-03-27 13:20
log_20240328.txt
455
B
-rw-r--r--
2024-03-28 16:35
log_20240329.txt
149
B
-rw-r--r--
2024-03-29 05:05
log_20240330.txt
302
B
-rw-r--r--
2024-03-30 16:15
log_20240331.txt
305
B
-rw-r--r--
2024-03-31 14:02
log_20240401.txt
380
B
-rw-r--r--
2024-04-01 13:34
log_20240402.txt
1.38
KB
-rw-r--r--
2024-04-02 15:04
log_20240403.txt
1.07
KB
-rw-r--r--
2024-04-03 12:42
log_20240404.txt
475
B
-rw-r--r--
2024-04-04 11:41
log_20240405.txt
692
B
-rw-r--r--
2024-04-05 15:16
log_20240406.txt
384
B
-rw-r--r--
2024-04-06 09:47
log_20240407.txt
247
B
-rw-r--r--
2024-04-07 10:09
log_20240408.txt
1.31
KB
-rw-r--r--
2024-04-08 15:40
log_20240409.txt
925
B
-rw-r--r--
2024-04-09 15:44
log_20240410.txt
554
B
-rw-r--r--
2024-04-10 13:51
log_20240411.txt
1.25
KB
-rw-r--r--
2024-04-11 16:43
log_20240412.txt
614
B
-rw-r--r--
2024-04-12 13:47
log_20240413.txt
459
B
-rw-r--r--
2024-04-13 14:22
log_20240414.txt
623
B
-rw-r--r--
2024-04-14 19:38
log_20240415.txt
1.11
KB
-rw-r--r--
2024-04-15 15:17
log_20240416.txt
546
B
-rw-r--r--
2024-04-16 15:19
log_20240417.txt
684
B
-rw-r--r--
2024-04-17 15:24
log_20240418.txt
617
B
-rw-r--r--
2024-04-18 13:45
log_20240419.txt
231
B
-rw-r--r--
2024-04-19 06:39
log_20240420.txt
231
B
-rw-r--r--
2024-04-20 06:33
log_20240421.txt
171
B
-rw-r--r--
2024-04-21 16:14
log_20240422.txt
929
B
-rw-r--r--
2024-04-22 17:02
log_20240423.txt
810
B
-rw-r--r--
2024-04-23 15:27
log_20240424.txt
915
B
-rw-r--r--
2024-04-24 11:51
log_20240425.txt
787
B
-rw-r--r--
2024-04-25 14:20
log_20240426.txt
735
B
-rw-r--r--
2024-04-26 13:25
log_20240428.txt
232
B
-rw-r--r--
2024-04-28 14:03
log_20240429.txt
823
B
-rw-r--r--
2024-04-29 15:52
log_20240430.txt
713
B
-rw-r--r--
2024-04-30 11:22
log_20240501.txt
297
B
-rw-r--r--
2024-05-01 15:10
log_20240502.txt
464
B
-rw-r--r--
2024-05-02 10:28
log_20240503.txt
555
B
-rw-r--r--
2024-05-03 13:28
log_20240504.txt
165
B
-rw-r--r--
2024-05-04 08:21
log_20240506.txt
880
B
-rw-r--r--
2024-05-06 19:13
log_20240507.txt
400
B
-rw-r--r--
2024-05-07 13:46
log_20240508.txt
552
B
-rw-r--r--
2024-05-08 12:29
log_20240509.txt
1.16
KB
-rw-r--r--
2024-05-09 14:55
log_20240510.txt
1.06
KB
-rw-r--r--
2024-05-10 14:58
log_20240511.txt
239
B
-rw-r--r--
2024-05-11 06:41
log_20240513.txt
805
B
-rw-r--r--
2024-05-13 14:53
log_20240514.txt
316
B
-rw-r--r--
2024-05-14 13:45
log_20240515.txt
229
B
-rw-r--r--
2024-05-15 13:41
log_20240516.txt
233
B
-rw-r--r--
2024-05-16 07:07
log_20240517.txt
700
B
-rw-r--r--
2024-05-17 13:27
log_20240518.txt
305
B
-rw-r--r--
2024-05-18 15:29
log_20240519.txt
220
B
-rw-r--r--
2024-05-19 18:03
log_20240520.txt
1.02
KB
-rw-r--r--
2024-05-20 15:08
log_20240521.txt
483
B
-rw-r--r--
2024-05-21 12:48
log_20240522.txt
400
B
-rw-r--r--
2024-05-22 15:07
log_20240523.txt
389
B
-rw-r--r--
2024-05-23 09:55
log_20240524.txt
636
B
-rw-r--r--
2024-05-24 14:42
log_20240525.txt
389
B
-rw-r--r--
2024-05-25 14:58
log_20240527.txt
786
B
-rw-r--r--
2024-05-27 15:04
log_20240528.txt
622
B
-rw-r--r--
2024-05-28 14:43
log_20240529.txt
297
B
-rw-r--r--
2024-05-29 16:08
log_20240530.txt
312
B
-rw-r--r--
2024-05-30 10:22
log_20240531.txt
145
B
-rw-r--r--
2024-05-31 16:01
log_20240601.txt
224
B
-rw-r--r--
2024-06-01 05:43
log_20240602.txt
297
B
-rw-r--r--
2024-06-02 08:21
log_20240603.txt
651
B
-rw-r--r--
2024-06-03 15:19
log_20240604.txt
566
B
-rw-r--r--
2024-06-04 15:09
log_20240605.txt
777
B
-rw-r--r--
2024-06-05 12:53
log_20240606.txt
570
B
-rw-r--r--
2024-06-06 12:47
log_20240607.txt
316
B
-rw-r--r--
2024-06-07 11:50
log_20240608.txt
148
B
-rw-r--r--
2024-06-08 04:04
log_20240609.txt
148
B
-rw-r--r--
2024-06-09 04:01
log_20240610.txt
297
B
-rw-r--r--
2024-06-10 13:52
log_20240611.txt
582
B
-rw-r--r--
2024-06-11 14:41
log_20240612.txt
303
B
-rw-r--r--
2024-06-12 13:03
log_20240613.txt
155
B
-rw-r--r--
2024-06-13 14:30
log_20240614.txt
237
B
-rw-r--r--
2024-06-14 10:00
log_20240617.txt
224
B
-rw-r--r--
2024-06-17 05:52
log_20240618.txt
553
B
-rw-r--r--
2024-06-18 12:56
log_20240619.txt
231
B
-rw-r--r--
2024-06-19 07:45
log_20240620.txt
231
B
-rw-r--r--
2024-06-20 06:57
log_20240621.txt
535
B
-rw-r--r--
2024-06-21 14:41
log_20240622.txt
148
B
-rw-r--r--
2024-06-22 05:52
log_20240623.txt
306
B
-rw-r--r--
2024-06-23 13:51
log_20240624.txt
785
B
-rw-r--r--
2024-06-24 15:33
log_20240625.txt
451
B
-rw-r--r--
2024-06-25 13:44
log_20240626.txt
220
B
-rw-r--r--
2024-06-26 14:15
log_20240627.txt
577
B
-rw-r--r--
2024-06-27 10:19
log_20240628.txt
478
B
-rw-r--r--
2024-06-28 08:11
log_20240629.txt
294
B
-rw-r--r--
2024-06-29 13:52
log_20240630.txt
146
B
-rw-r--r--
2024-06-30 13:38
log_20240701.txt
696
B
-rw-r--r--
2024-07-01 15:55
log_20240702.txt
388
B
-rw-r--r--
2024-07-02 09:55
log_20240703.txt
220
B
-rw-r--r--
2024-07-03 10:57
log_20240704.txt
231
B
-rw-r--r--
2024-07-04 10:37
log_20240705.txt
388
B
-rw-r--r--
2024-07-05 13:15
log_20240706.txt
224
B
-rw-r--r--
2024-07-06 09:24
log_20240707.txt
221
B
-rw-r--r--
2024-07-07 14:56
log_20240708.txt
777
B
-rw-r--r--
2024-07-08 15:16
log_20240709.txt
452
B
-rw-r--r--
2024-07-09 14:30
log_20240710.txt
476
B
-rw-r--r--
2024-07-10 10:49
log_20240711.txt
556
B
-rw-r--r--
2024-07-11 15:05
log_20240712.txt
222
B
-rw-r--r--
2024-07-12 15:23
log_20240713.txt
225
B
-rw-r--r--
2024-07-13 05:21
log_20240714.txt
221
B
-rw-r--r--
2024-07-14 13:42
log_20240715.txt
766
B
-rw-r--r--
2024-07-15 15:04
log_20240716.txt
715
B
-rw-r--r--
2024-07-16 14:57
log_20240717.txt
408
B
-rw-r--r--
2024-07-17 12:48
log_20240718.txt
368
B
-rw-r--r--
2024-07-18 16:01
log_20240719.txt
320
B
-rw-r--r--
2024-07-19 13:13
log_20240720.txt
148
B
-rw-r--r--
2024-07-20 06:30
log_20240721.txt
220
B
-rw-r--r--
2024-07-21 14:15
log_20240722.txt
729
B
-rw-r--r--
2024-07-22 15:11
log_20240723.txt
793
B
-rw-r--r--
2024-07-23 12:22
log_20240724.txt
457
B
-rw-r--r--
2024-07-24 15:58
log_20240725.txt
304
B
-rw-r--r--
2024-07-25 12:57
log_20240726.txt
685
B
-rw-r--r--
2024-07-26 13:36
log_20240727.txt
148
B
-rw-r--r--
2024-07-27 08:06
log_20240728.txt
148
B
-rw-r--r--
2024-07-28 05:18
log_20240729.txt
928
B
-rw-r--r--
2024-07-29 15:14
log_20240730.txt
546
B
-rw-r--r--
2024-07-30 15:27
log_20240731.txt
747
B
-rw-r--r--
2024-07-31 15:51
log_20240801.txt
376
B
-rw-r--r--
2024-08-01 15:14
log_20240802.txt
477
B
-rw-r--r--
2024-08-02 08:39
log_20240803.txt
148
B
-rw-r--r--
2024-08-03 06:35
log_20240804.txt
224
B
-rw-r--r--
2024-08-04 05:09
log_20240805.txt
724
B
-rw-r--r--
2024-08-05 15:03
log_20240806.txt
540
B
-rw-r--r--
2024-08-06 14:49
log_20240807.txt
541
B
-rw-r--r--
2024-08-07 14:44
log_20240808.txt
245
B
-rw-r--r--
2024-08-08 15:45
log_20240809.txt
516
B
-rw-r--r--
2024-08-09 14:14
log_20240812.txt
565
B
-rw-r--r--
2024-08-12 15:23
log_20240813.txt
777
B
-rw-r--r--
2024-08-13 13:20
log_20240814.txt
315
B
-rw-r--r--
2024-08-14 09:42
log_20240815.txt
380
B
-rw-r--r--
2024-08-15 11:44
log_20240816.txt
381
B
-rw-r--r--
2024-08-16 12:16
log_20240817.txt
307
B
-rw-r--r--
2024-08-17 08:17
log_20240819.txt
1.29
KB
-rw-r--r--
2024-08-19 15:56
log_20240820.txt
224
B
-rw-r--r--
2024-08-20 06:44
log_20240821.txt
845
B
-rw-r--r--
2024-08-21 15:12
log_20240822.txt
144
B
-rw-r--r--
2024-08-22 08:28
log_20240823.txt
232
B
-rw-r--r--
2024-08-23 14:24
log_20240825.txt
436
B
-rw-r--r--
2024-08-25 08:42
log_20240826.txt
648
B
-rw-r--r--
2024-08-26 16:19
log_20240827.txt
332
B
-rw-r--r--
2024-08-27 09:37
log_20240828.txt
698
B
-rw-r--r--
2024-08-28 20:14
log_20240829.txt
384
B
-rw-r--r--
2024-08-29 09:57
log_20240830.txt
148
B
-rw-r--r--
2024-08-30 07:02
log_20240831.txt
144
B
-rw-r--r--
2024-08-31 18:19
log_20240902.txt
762
B
-rw-r--r--
2024-09-02 15:03
log_20240903.txt
559
B
-rw-r--r--
2024-09-03 11:48
log_20240904.txt
670
B
-rw-r--r--
2024-09-04 13:05
log_20240905.txt
383
B
-rw-r--r--
2024-09-05 09:15
log_20240906.txt
256
B
-rw-r--r--
2024-09-06 13:24
log_20240909.txt
556
B
-rw-r--r--
2024-09-09 15:13
log_20240910.txt
431
B
-rw-r--r--
2024-09-10 13:26
log_20240911.txt
244
B
-rw-r--r--
2024-09-11 06:55
log_20240912.txt
224
B
-rw-r--r--
2024-09-12 09:14
log_20240914.txt
224
B
-rw-r--r--
2024-09-14 10:01
log_20240916.txt
684
B
-rw-r--r--
2024-09-16 15:17
log_20240917.txt
582
B
-rw-r--r--
2024-09-17 15:30
log_20240918.txt
322
B
-rw-r--r--
2024-09-18 14:38
log_20240919.txt
498
B
-rw-r--r--
2024-09-19 11:22
log_20240920.txt
481
B
-rw-r--r--
2024-09-20 12:20
log_20240922.txt
148
B
-rw-r--r--
2024-09-22 15:48
log_20240923.txt
649
B
-rw-r--r--
2024-09-23 14:10
log_20240924.txt
225
B
-rw-r--r--
2024-09-24 08:51
log_20240925.txt
688
B
-rw-r--r--
2024-09-25 14:30
log_20240926.txt
384
B
-rw-r--r--
2024-09-26 11:03
log_20240927.txt
821
B
-rw-r--r--
2024-09-27 14:21
log_20240928.txt
224
B
-rw-r--r--
2024-09-28 13:17
log_20240929.txt
148
B
-rw-r--r--
2024-09-29 09:14
log_20240930.txt
1.03
KB
-rw-r--r--
2024-09-30 15:03
log_20241001.txt
743
B
-rw-r--r--
2024-10-01 14:08
log_20241002.txt
376
B
-rw-r--r--
2024-10-02 14:59
log_20241003.txt
231
B
-rw-r--r--
2024-10-03 12:30
log_20241004.txt
706
B
-rw-r--r--
2024-10-04 12:23
log_20241007.txt
998
B
-rw-r--r--
2024-10-07 15:31
log_20241008.txt
644
B
-rw-r--r--
2024-10-08 12:19
log_20241009.txt
232
B
-rw-r--r--
2024-10-09 11:26
log_20241011.txt
144
B
-rw-r--r--
2024-10-11 07:46
log_20241012.txt
148
B
-rw-r--r--
2024-10-12 08:19
log_20241013.txt
876
B
-rw-r--r--
2024-10-13 14:35
log_20241014.txt
697
B
-rw-r--r--
2024-10-14 13:20
log_20241015.txt
780
B
-rw-r--r--
2024-10-15 12:58
log_20241016.txt
391
B
-rw-r--r--
2024-10-16 10:32
log_20241017.txt
330
B
-rw-r--r--
2024-10-17 13:16
log_20241018.txt
590
B
-rw-r--r--
2024-10-18 13:55
log_20241021.txt
981
B
-rw-r--r--
2024-10-21 15:37
log_20241022.txt
1.45
KB
-rw-r--r--
2024-10-22 15:12
log_20241023.txt
822
B
-rw-r--r--
2024-10-23 14:17
log_20241024.txt
637
B
-rw-r--r--
2024-10-24 15:29
log_20241025.txt
1.21
KB
-rw-r--r--
2024-10-25 16:22
log_20241026.txt
300
B
-rw-r--r--
2024-10-26 12:52
log_20241027.txt
325
B
-rw-r--r--
2024-10-27 16:49
log_20241028.txt
1.2
KB
-rw-r--r--
2024-10-28 16:59
log_20241029.txt
868
B
-rw-r--r--
2024-10-29 18:40
log_20241030.txt
846
B
-rw-r--r--
2024-10-30 14:51
log_20241031.txt
568
B
-rw-r--r--
2024-10-31 14:53
log_20241101.txt
732
B
-rw-r--r--
2024-11-01 15:31
log_20241102.txt
149
B
-rw-r--r--
2024-11-02 05:06
log_20241104.txt
384
B
-rw-r--r--
2024-11-04 15:08
log_20241105.txt
307
B
-rw-r--r--
2024-11-05 11:34
log_20241106.txt
232
B
-rw-r--r--
2024-11-06 07:46
log_20241107.txt
147
B
-rw-r--r--
2024-11-07 08:58
log_20241108.txt
172
B
-rw-r--r--
2024-11-08 07:06
log_20241111.txt
330
B
-rw-r--r--
2024-11-11 15:41
log_20241112.txt
255
B
-rw-r--r--
2024-11-12 10:12
log_20241113.txt
147
B
-rw-r--r--
2024-11-13 15:13
log_20241115.txt
247
B
-rw-r--r--
2024-11-15 07:36
log_20241116.txt
145
B
-rw-r--r--
2024-11-16 15:56
log_20241118.txt
324
B
-rw-r--r--
2024-11-18 14:58
log_20241119.txt
973
B
-rw-r--r--
2024-11-19 17:14
log_20241120.txt
295
B
-rw-r--r--
2024-11-20 14:17
log_20241121.txt
405
B
-rw-r--r--
2024-11-21 14:30
log_20241122.txt
694
B
-rw-r--r--
2024-11-22 15:41
log_20241124.txt
226
B
-rw-r--r--
2024-11-24 11:37
log_20241125.txt
724
B
-rw-r--r--
2024-11-25 15:11
log_20241126.txt
255
B
-rw-r--r--
2024-11-26 11:53
log_20241127.txt
455
B
-rw-r--r--
2024-11-27 10:19
log_20241128.txt
388
B
-rw-r--r--
2024-11-28 15:27
log_20241129.txt
448
B
-rw-r--r--
2024-11-29 06:38
log_20241202.txt
233
B
-rw-r--r--
2024-12-02 14:33
log_20241203.txt
233
B
-rw-r--r--
2024-12-03 12:10
log_20241204.txt
246
B
-rw-r--r--
2024-12-04 07:50
log_20241205.txt
294
B
-rw-r--r--
2024-12-05 08:58
log_20241209.txt
148
B
-rw-r--r--
2024-12-09 09:25
log_20241210.txt
148
B
-rw-r--r--
2024-12-10 11:20
log_20241211.txt
148
B
-rw-r--r--
2024-12-11 13:41
log_20241212.txt
255
B
-rw-r--r--
2024-12-12 12:13
log_20241216.txt
148
B
-rw-r--r--
2024-12-16 05:49
log_20250106.txt
148
B
-rw-r--r--
2025-01-06 04:57
log_20250107.txt
155
B
-rw-r--r--
2025-01-07 07:36
log_20250108.txt
222
B
-rw-r--r--
2025-01-08 13:50
log_20250109.txt
155
B
-rw-r--r--
2025-01-09 10:55
log_20250110.txt
155
B
-rw-r--r--
2025-01-10 08:34
log_20250111.txt
224
B
-rw-r--r--
2025-01-11 05:08
log_20250113.txt
231
B
-rw-r--r--
2025-01-13 12:44
log_20250114.txt
408
B
-rw-r--r--
2025-01-14 13:27
log_20250115.txt
390
B
-rw-r--r--
2025-01-15 12:26
log_20250119.txt
147
B
-rw-r--r--
2025-01-19 04:38
log_20250120.txt
837
B
-rw-r--r--
2025-01-20 15:29
log_20250122.txt
231
B
-rw-r--r--
2025-01-22 14:23
log_20250123.txt
515
B
-rw-r--r--
2025-01-23 12:42
log_20250124.txt
147
B
-rw-r--r--
2025-01-24 10:59
log_20250125.txt
222
B
-rw-r--r--
2025-01-25 09:34
log_20250127.txt
561
B
-rw-r--r--
2025-01-27 15:16
log_20250128.txt
468
B
-rw-r--r--
2025-01-28 13:20
log_20250129.txt
222
B
-rw-r--r--
2025-01-29 05:08
log_20250203.txt
467
B
-rw-r--r--
2025-02-03 15:16
log_20250204.txt
424
B
-rw-r--r--
2025-02-04 13:17
log_20250205.txt
147
B
-rw-r--r--
2025-02-05 12:44
log_20250206.txt
233
B
-rw-r--r--
2025-02-06 08:28
log_20250207.txt
149
B
-rw-r--r--
2025-02-07 14:19
log_20250210.txt
649
B
-rw-r--r--
2025-02-10 15:03
log_20250211.txt
327
B
-rw-r--r--
2025-02-11 14:38
log_20250212.txt
147
B
-rw-r--r--
2025-02-12 08:01
log_20250213.txt
149
B
-rw-r--r--
2025-02-13 14:21
log_20250214.txt
149
B
-rw-r--r--
2025-02-14 12:50
log_20250215.txt
147
B
-rw-r--r--
2025-02-15 14:28
log_20250217.txt
308
B
-rw-r--r--
2025-02-17 15:21
log_20250221.txt
155
B
-rw-r--r--
2025-02-21 10:40
log_20250223.txt
155
B
-rw-r--r--
2025-02-23 07:36
log_20250224.txt
503
B
-rw-r--r--
2025-02-24 15:38
log_20250225.txt
438
B
-rw-r--r--
2025-02-25 13:43
log_20250226.txt
155
B
-rw-r--r--
2025-02-26 13:59
log_20250227.txt
231
B
-rw-r--r--
2025-02-27 14:56
log_20250228.txt
238
B
-rw-r--r--
2025-02-28 07:31
log_20250301.txt
232
B
-rw-r--r--
2025-03-01 06:51
log_20250302.txt
232
B
-rw-r--r--
2025-03-02 10:16
log_20250303.txt
331
B
-rw-r--r--
2025-03-03 14:59
log_20250304.txt
991
B
-rw-r--r--
2025-03-04 14:42
log_20250305.txt
405
B
-rw-r--r--
2025-03-05 14:51
log_20250306.txt
704
B
-rw-r--r--
2025-03-06 15:22
log_20250307.txt
392
B
-rw-r--r--
2025-03-07 12:43
log_20250308.txt
423
B
-rw-r--r--
2025-03-08 08:26
log_20250309.txt
148
B
-rw-r--r--
2025-03-09 05:17
log_20250310.txt
1.41
KB
-rw-r--r--
2025-03-10 15:30
log_20250311.txt
902
B
-rw-r--r--
2025-03-11 15:43
log_20250312.txt
901
B
-rw-r--r--
2025-03-12 14:24
log_20250313.txt
1.04
KB
-rw-r--r--
2025-03-13 12:54
log_20250314.txt
1.33
KB
-rw-r--r--
2025-03-14 14:08
log_20250315.txt
462
B
-rw-r--r--
2025-03-15 15:35
log_20250316.txt
845
B
-rw-r--r--
2025-03-16 14:58
log_20250317.txt
1.25
KB
-rw-r--r--
2025-03-17 15:30
log_20250318.txt
645
B
-rw-r--r--
2025-03-18 15:51
log_20250319.txt
617
B
-rw-r--r--
2025-03-19 15:12
log_20250320.txt
386
B
-rw-r--r--
2025-03-20 11:29
log_20250321.txt
536
B
-rw-r--r--
2025-03-21 12:45
log_20250323.txt
296
B
-rw-r--r--
2025-03-23 16:26
log_20250324.txt
1.69
KB
-rw-r--r--
2025-03-24 15:23
log_20250325.txt
1.65
KB
-rw-r--r--
2025-03-25 15:58
log_20250326.txt
788
B
-rw-r--r--
2025-03-26 15:34
log_20250327.txt
571
B
-rw-r--r--
2025-03-27 14:03
log_20250328.txt
916
B
-rw-r--r--
2025-03-28 13:15
log_20250329.txt
231
B
-rw-r--r--
2025-03-29 12:09
log_20250330.txt
415
B
-rw-r--r--
2025-03-30 12:20
log_20250331.txt
1.16
KB
-rw-r--r--
2025-03-31 15:10
log_20250401.txt
532
B
-rw-r--r--
2025-04-01 15:04
log_20250402.txt
717
B
-rw-r--r--
2025-04-02 16:54
log_20250403.txt
322
B
-rw-r--r--
2025-04-03 10:44
log_20250404.txt
331
B
-rw-r--r--
2025-04-04 10:23
log_20250406.txt
230
B
-rw-r--r--
2025-04-06 13:39
log_20250407.txt
1.33
KB
-rw-r--r--
2025-04-07 16:17
log_20250408.txt
548
B
-rw-r--r--
2025-04-08 15:19
log_20250409.txt
561
B
-rw-r--r--
2025-04-09 15:05
log_20250410.txt
691
B
-rw-r--r--
2025-04-10 13:50
log_20250411.txt
544
B
-rw-r--r--
2025-04-11 15:25
log_20250412.txt
155
B
-rw-r--r--
2025-04-12 04:40
log_20250413.txt
375
B
-rw-r--r--
2025-04-13 14:12
log_20250414.txt
1.58
KB
-rw-r--r--
2025-04-14 15:20
log_20250415.txt
704
B
-rw-r--r--
2025-04-15 14:27
log_20250416.txt
639
B
-rw-r--r--
2025-04-16 13:41
log_20250417.txt
621
B
-rw-r--r--
2025-04-17 10:23
log_20250418.txt
148
B
-rw-r--r--
2025-04-18 04:53
log_20250419.txt
307
B
-rw-r--r--
2025-04-19 13:00
log_20250421.txt
145
B
-rw-r--r--
2025-04-21 14:29
log_20250422.txt
1.28
KB
-rw-r--r--
2025-04-22 13:57
log_20250423.txt
612
B
-rw-r--r--
2025-04-23 14:59
log_20250424.txt
224
B
-rw-r--r--
2025-04-24 09:38
log_20250425.txt
231
B
-rw-r--r--
2025-04-25 05:35
log_20250427.txt
224
B
-rw-r--r--
2025-04-27 15:18
log_20250428.txt
148
B
-rw-r--r--
2025-04-28 09:09
log_20250429.txt
535
B
-rw-r--r--
2025-04-29 14:46
log_20250430.txt
390
B
-rw-r--r--
2025-04-30 15:11
log_20250501.txt
231
B
-rw-r--r--
2025-05-01 07:48
log_20250502.txt
738
B
-rw-r--r--
2025-05-02 12:32
log_20250503.txt
147
B
-rw-r--r--
2025-05-03 15:07
log_20250504.txt
155
B
-rw-r--r--
2025-05-04 04:47
log_20250505.txt
690
B
-rw-r--r--
2025-05-05 15:18
log_20250506.txt
382
B
-rw-r--r--
2025-05-06 14:00
log_20250507.txt
148
B
-rw-r--r--
2025-05-07 05:09
log_20250508.txt
240
B
-rw-r--r--
2025-05-08 14:46
log_20250511.txt
231
B
-rw-r--r--
2025-05-11 10:56
log_20250512.txt
992
B
-rw-r--r--
2025-05-12 15:23
log_20250513.txt
625
B
-rw-r--r--
2025-05-13 15:28
log_20250514.txt
331
B
-rw-r--r--
2025-05-14 11:10
log_20250515.txt
548
B
-rw-r--r--
2025-05-15 17:35
log_20250516.txt
315
B
-rw-r--r--
2025-05-16 07:54
log_20250517.txt
228
B
-rw-r--r--
2025-05-17 10:14
log_20250518.txt
156
B
-rw-r--r--
2025-05-18 13:46
log_20250519.txt
1.1
KB
-rw-r--r--
2025-05-19 16:09
log_20250520.txt
874
B
-rw-r--r--
2025-05-20 14:37
log_20250521.txt
1.15
KB
-rw-r--r--
2025-05-21 14:56
log_20250522.txt
627
B
-rw-r--r--
2025-05-22 14:21
log_20250523.txt
552
B
-rw-r--r--
2025-05-23 13:03
log_20250524.txt
148
B
-rw-r--r--
2025-05-24 16:07
log_20250525.txt
232
B
-rw-r--r--
2025-05-25 14:06
log_20250526.txt
1.11
KB
-rw-r--r--
2025-05-26 15:27
log_20250527.txt
1.25
KB
-rw-r--r--
2025-05-27 15:31
log_20250528.txt
872
B
-rw-r--r--
2025-05-28 18:26
log_20250529.txt
660
B
-rw-r--r--
2025-05-29 12:49
log_20250530.txt
492
B
-rw-r--r--
2025-05-30 12:41
log_20250531.txt
314
B
-rw-r--r--
2025-05-31 13:06
log_20250602.txt
614
B
-rw-r--r--
2025-06-02 14:07
log_20250603.txt
408
B
-rw-r--r--
2025-06-03 13:32
log_20250604.txt
481
B
-rw-r--r--
2025-06-04 19:49
log_20250606.txt
316
B
-rw-r--r--
2025-06-06 06:12
log_20250607.txt
146
B
-rw-r--r--
2025-06-07 16:23
log_20250609.txt
813
B
-rw-r--r--
2025-06-09 15:01
log_20250610.txt
472
B
-rw-r--r--
2025-06-10 15:11
log_20250611.txt
230
B
-rw-r--r--
2025-06-11 09:58
log_20250612.txt
400
B
-rw-r--r--
2025-06-12 10:58
log_20250613.txt
548
B
-rw-r--r--
2025-06-13 13:28
log_20250614.txt
156
B
-rw-r--r--
2025-06-14 06:57
log_20250615.txt
462
B
-rw-r--r--
2025-06-15 15:08
log_20250616.txt
380
B
-rw-r--r--
2025-06-16 14:45
log_20250617.txt
1.42
KB
-rw-r--r--
2025-06-17 16:20
log_20250618.txt
721
B
-rw-r--r--
2025-06-18 13:35
log_20250619.txt
818
B
-rw-r--r--
2025-06-19 16:17
log_20250620.txt
314
B
-rw-r--r--
2025-06-20 15:54
log_20250621.txt
296
B
-rw-r--r--
2025-06-21 16:13
log_20250622.txt
220
B
-rw-r--r--
2025-06-22 15:44
log_20250623.txt
847
B
-rw-r--r--
2025-06-23 16:57
log_20250624.txt
1.65
KB
-rw-r--r--
2025-06-24 16:12
log_20250625.txt
1.24
KB
-rw-r--r--
2025-06-25 15:39
log_20250626.txt
1.06
KB
-rw-r--r--
2025-06-26 16:04
log_20250627.txt
862
B
-rw-r--r--
2025-06-27 16:01
log_20250628.txt
382
B
-rw-r--r--
2025-06-28 16:19
log_20250629.txt
146
B
-rw-r--r--
2025-06-29 15:46
log_20250630.txt
1.42
KB
-rw-r--r--
2025-06-30 15:31
log_20250701.txt
1.64
KB
-rw-r--r--
2025-07-01 12:00
log_20250702.txt
812
B
-rw-r--r--
2025-07-02 13:10
log_20250703.txt
736
B
-rw-r--r--
2025-07-03 15:53
log_20250704.txt
934
B
-rw-r--r--
2025-07-04 14:56
log_20250705.txt
224
B
-rw-r--r--
2025-07-05 14:40
log_20250706.txt
310
B
-rw-r--r--
2025-07-06 13:31
log_20250707.txt
1.44
KB
-rw-r--r--
2025-07-07 15:54
log_20250708.txt
1.44
KB
-rw-r--r--
2025-07-08 15:40
log_20250709.txt
1.18
KB
-rw-r--r--
2025-07-09 14:32
log_20250710.txt
489
B
-rw-r--r--
2025-07-10 14:47
log_20250711.txt
722
B
-rw-r--r--
2025-07-11 13:17
log_20250713.txt
404
B
-rw-r--r--
2025-07-13 16:55
log_20250714.txt
1.39
KB
-rw-r--r--
2025-07-14 15:46
log_20250715.txt
1.02
KB
-rw-r--r--
2025-07-15 15:34
log_20250716.txt
309
B
-rw-r--r--
2025-07-16 14:43
log_20250717.txt
233
B
-rw-r--r--
2025-07-17 05:21
log_20250718.txt
149
B
-rw-r--r--
2025-07-18 04:37
log_20250719.txt
148
B
-rw-r--r--
2025-07-19 14:54
log_20250720.txt
300
B
-rw-r--r--
2025-07-20 16:31
log_20250721.txt
982
B
-rw-r--r--
2025-07-21 15:06
log_20250722.txt
842
B
-rw-r--r--
2025-07-22 15:07
log_20250723.txt
700
B
-rw-r--r--
2025-07-23 15:29
log_20250724.txt
813
B
-rw-r--r--
2025-07-24 15:51
log_20250725.txt
1.11
KB
-rw-r--r--
2025-07-25 14:15
log_20250726.txt
309
B
-rw-r--r--
2025-07-26 14:41
log_20250727.txt
225
B
-rw-r--r--
2025-07-27 15:19
log_20250728.txt
1.28
KB
-rw-r--r--
2025-07-28 15:27
log_20250729.txt
1002
B
-rw-r--r--
2025-07-29 13:36
log_20250730.txt
148
B
-rw-r--r--
2025-07-30 14:08
log_20250731.txt
708
B
-rw-r--r--
2025-07-31 15:41
log_20250801.txt
470
B
-rw-r--r--
2025-08-01 15:14
log_20250802.txt
148
B
-rw-r--r--
2025-08-02 15:45
log_20250803.txt
318
B
-rw-r--r--
2025-08-03 15:53
log_20250804.txt
1.34
KB
-rw-r--r--
2025-08-04 17:04
log_20250805.txt
802
B
-rw-r--r--
2025-08-05 14:26
log_20250806.txt
854
B
-rw-r--r--
2025-08-06 15:15
log_20250807.txt
574
B
-rw-r--r--
2025-08-07 11:03
log_20250808.txt
300
B
-rw-r--r--
2025-08-08 16:01
log_20250809.txt
224
B
-rw-r--r--
2025-08-09 15:47
log_20250810.txt
148
B
-rw-r--r--
2025-08-10 15:34
log_20250811.txt
317
B
-rw-r--r--
2025-08-11 15:32
log_20250812.txt
571
B
-rw-r--r--
2025-08-12 13:42
log_20250813.txt
1.2
KB
-rw-r--r--
2025-08-13 15:46
log_20250814.txt
672
B
-rw-r--r--
2025-08-14 10:54
log_20250815.txt
652
B
-rw-r--r--
2025-08-15 13:20
log_20250816.txt
240
B
-rw-r--r--
2025-08-16 14:49
log_20250817.txt
156
B
-rw-r--r--
2025-08-17 15:16
log_20250818.txt
848
B
-rw-r--r--
2025-08-18 19:32
log_20250819.txt
422
B
-rw-r--r--
2025-08-19 19:14
log_20250820.txt
322
B
-rw-r--r--
2025-08-20 13:10
log_20250821.txt
240
B
-rw-r--r--
2025-08-21 14:55
log_20250822.txt
552
B
-rw-r--r--
2025-08-22 12:48
log_20250823.txt
238
B
-rw-r--r--
2025-08-23 06:27
log_20250824.txt
171
B
-rw-r--r--
2025-08-24 06:17
log_20250825.txt
1.17
KB
-rw-r--r--
2025-08-25 15:51
log_20250826.txt
1.18
KB
-rw-r--r--
2025-08-26 13:28
log_20250827.txt
851
B
-rw-r--r--
2025-08-27 15:16
log_20250828.txt
324
B
-rw-r--r--
2025-08-28 12:01
log_20250829.txt
322
B
-rw-r--r--
2025-08-29 10:47
log_20250830.txt
226
B
-rw-r--r--
2025-08-30 07:54
log_20250831.txt
233
B
-rw-r--r--
2025-08-31 15:31
log_20250901.txt
1.33
KB
-rw-r--r--
2025-09-01 15:41
log_20250902.txt
852
B
-rw-r--r--
2025-09-02 15:43
log_20250903.txt
483
B
-rw-r--r--
2025-09-03 15:44
log_20250904.txt
588
B
-rw-r--r--
2025-09-04 15:17
log_20250905.txt
532
B
-rw-r--r--
2025-09-05 11:38
log_20250906.txt
156
B
-rw-r--r--
2025-09-06 06:32
log_20250907.txt
416
B
-rw-r--r--
2025-09-07 18:49
log_20250908.txt
908
B
-rw-r--r--
2025-09-08 15:25
log_20250909.txt
1.42
KB
-rw-r--r--
2025-09-09 15:23
log_20250910.txt
515
B
-rw-r--r--
2025-09-10 12:39
log_20250911.txt
406
B
-rw-r--r--
2025-09-11 14:02
log_20250912.txt
641
B
-rw-r--r--
2025-09-12 12:01
log_20250914.txt
155
B
-rw-r--r--
2025-09-14 08:51
log_20250915.txt
1.08
KB
-rw-r--r--
2025-09-15 15:45
log_20250916.txt
943
B
-rw-r--r--
2025-09-16 12:47
log_20250917.txt
532
B
-rw-r--r--
2025-09-17 10:47
log_20250918.txt
149
B
-rw-r--r--
2025-09-18 05:32
log_20250919.txt
238
B
-rw-r--r--
2025-09-19 15:20
log_20250920.txt
238
B
-rw-r--r--
2025-09-20 05:48
log_20250921.txt
232
B
-rw-r--r--
2025-09-21 13:58
log_20250922.txt
1.19
KB
-rw-r--r--
2025-09-22 15:10
log_20250923.txt
920
B
-rw-r--r--
2025-09-23 11:24
log_20250924.txt
376
B
-rw-r--r--
2025-09-24 13:13
log_20250925.txt
832
B
-rw-r--r--
2025-09-25 11:39
log_20250926.txt
473
B
-rw-r--r--
2025-09-26 18:33
log_20250928.txt
148
B
-rw-r--r--
2025-09-28 06:30
log_20250929.txt
2.37
KB
-rw-r--r--
2025-09-29 16:03
log_20250930.txt
1.09
KB
-rw-r--r--
2025-09-30 13:13
log_20251001.txt
922
B
-rw-r--r--
2025-10-01 14:05
log_20251002.txt
1.3
KB
-rw-r--r--
2025-10-02 15:02
log_20251003.txt
497
B
-rw-r--r--
2025-10-03 12:49
log_20251004.txt
456
B
-rw-r--r--
2025-10-04 09:16
log_20251005.txt
372
B
-rw-r--r--
2025-10-05 16:00
log_20251006.txt
2.02
KB
-rw-r--r--
2025-10-06 15:22
log_20251007.txt
979
B
-rw-r--r--
2025-10-07 14:18
log_20251008.txt
309
B
-rw-r--r--
2025-10-08 13:28
log_20251009.txt
467
B
-rw-r--r--
2025-10-09 13:35
log_20251010.txt
627
B
-rw-r--r--
2025-10-10 13:10
log_20251011.txt
171
B
-rw-r--r--
2025-10-11 06:50
log_20251012.txt
408
B
-rw-r--r--
2025-10-12 14:24
log_20251013.txt
1.48
KB
-rw-r--r--
2025-10-13 14:52
log_20251014.txt
694
B
-rw-r--r--
2025-10-14 13:15
log_20251015.txt
317
B
-rw-r--r--
2025-10-15 14:47
log_20251016.txt
407
B
-rw-r--r--
2025-10-16 15:11
log_20251017.txt
990
B
-rw-r--r--
2025-10-17 14:21
log_20251018.txt
407
B
-rw-r--r--
2025-10-18 13:57
log_20251019.txt
417
B
-rw-r--r--
2025-10-19 15:49
log_20251020.txt
1.66
KB
-rw-r--r--
2025-10-20 15:48
log_20251021.txt
902
B
-rw-r--r--
2025-10-21 14:36
log_20251022.txt
864
B
-rw-r--r--
2025-10-22 14:28
log_20251023.txt
906
B
-rw-r--r--
2025-10-23 14:12
log_20251024.txt
851
B
-rw-r--r--
2025-10-24 14:33
log_20251026.txt
349
B
-rw-r--r--
2025-10-26 14:16
log_20251027.txt
1.39
KB
-rw-r--r--
2025-10-27 15:56
log_20251028.txt
988
B
-rw-r--r--
2025-10-28 15:19
log_20251029.txt
1.04
KB
-rw-r--r--
2025-10-29 13:06
log_20251030.txt
231
B
-rw-r--r--
2025-10-30 13:30
log_20251031.txt
730
B
-rw-r--r--
2025-10-31 14:30
log_20251102.txt
347
B
-rw-r--r--
2025-11-02 06:38
log_20251103.txt
1.12
KB
-rw-r--r--
2025-11-03 15:10
log_20251104.txt
459
B
-rw-r--r--
2025-11-04 12:45
log_20251105.txt
485
B
-rw-r--r--
2025-11-05 09:53
log_20251106.txt
1.57
KB
-rw-r--r--
2025-11-06 14:24
log_20251107.txt
632
B
-rw-r--r--
2025-11-07 13:01
log_20251108.txt
254
B
-rw-r--r--
2025-11-08 09:27
log_20251109.txt
154
B
-rw-r--r--
2025-11-09 05:24
log_20251110.txt
1.84
KB
-rw-r--r--
2025-11-10 15:45
log_20251111.txt
1020
B
-rw-r--r--
2025-11-11 14:15
log_20251112.txt
420
B
-rw-r--r--
2025-11-12 13:43
log_20251113.txt
954
B
-rw-r--r--
2025-11-13 15:21
log_20251114.txt
423
B
-rw-r--r--
2025-11-14 06:35
log_20251116.txt
149
B
-rw-r--r--
2025-11-16 07:27
log_20251117.txt
521
B
-rw-r--r--
2025-11-17 14:59
log_20251118.txt
582
B
-rw-r--r--
2025-11-18 13:43
log_20251119.txt
241
B
-rw-r--r--
2025-11-19 09:33
log_20251120.txt
253
B
-rw-r--r--
2025-11-20 10:01
log_20251121.txt
240
B
-rw-r--r--
2025-11-21 07:14
log_20251122.txt
157
B
-rw-r--r--
2025-11-22 08:14
log_20251124.txt
315
B
-rw-r--r--
2025-11-24 15:23
log_20251125.txt
1.54
KB
-rw-r--r--
2025-11-25 16:56
log_20251126.txt
1.01
KB
-rw-r--r--
2025-11-26 14:06
log_20251127.txt
704
B
-rw-r--r--
2025-11-27 12:58
log_20251128.txt
652
B
-rw-r--r--
2025-11-28 09:22
log_20251129.txt
316
B
-rw-r--r--
2025-11-29 13:36
log_20251130.txt
157
B
-rw-r--r--
2025-11-30 04:58
log_20251201.txt
1.1
KB
-rw-r--r--
2025-12-01 15:21
log_20251202.txt
678
B
-rw-r--r--
2025-12-02 13:45
log_20251203.txt
257
B
-rw-r--r--
2025-12-03 07:42
log_20251204.txt
225
B
-rw-r--r--
2025-12-04 12:19
log_20251205.txt
272
B
-rw-r--r--
2025-12-05 09:44
log_20251207.txt
157
B
-rw-r--r--
2025-12-07 12:25
log_20251208.txt
149
B
-rw-r--r--
2025-12-08 04:58
log_20251209.txt
171
B
-rw-r--r--
2025-12-09 07:14
log_20251212.txt
157
B
-rw-r--r--
2025-12-12 12:05
log_20251215.txt
149
B
-rw-r--r--
2025-12-15 06:46
log_20251229.txt
149
B
-rw-r--r--
2025-12-29 05:49
log_20260112.txt
310
B
-rw-r--r--
2026-01-12 12:55
log_20260113.txt
234
B
-rw-r--r--
2026-01-13 05:54
log_20260114.txt
240
B
-rw-r--r--
2026-01-14 05:59
log_20260116.txt
332
B
-rw-r--r--
2026-01-16 11:38
log_20260119.txt
753
B
-rw-r--r--
2026-01-19 15:56
log_20260123.txt
308
B
-rw-r--r--
2026-01-23 13:39
log_20260126.txt
591
B
-rw-r--r--
2026-01-26 15:49
log_20260127.txt
583
B
-rw-r--r--
2026-01-27 14:45
log_20260128.txt
316
B
-rw-r--r--
2026-01-28 09:22
log_20260129.txt
332
B
-rw-r--r--
2026-01-29 12:08
log_20260130.txt
321
B
-rw-r--r--
2026-01-30 13:54
log_20260131.txt
300
B
-rw-r--r--
2026-01-31 08:57
log_20260201.txt
148
B
-rw-r--r--
2026-02-01 04:44
log_20260202.txt
405
B
-rw-r--r--
2026-02-02 15:04
log_20260203.txt
224
B
-rw-r--r--
2026-02-03 09:25
log_20260204.txt
147
B
-rw-r--r--
2026-02-04 07:44
log_20260205.txt
146
B
-rw-r--r--
2026-02-05 13:18
log_20260206.txt
232
B
-rw-r--r--
2026-02-06 11:55
log_20260207.txt
148
B
-rw-r--r--
2026-02-07 04:51
log_20260208.txt
148
B
-rw-r--r--
2026-02-08 08:50
log_20260209.txt
505
B
-rw-r--r--
2026-02-09 15:40
log_20260210.txt
300
B
-rw-r--r--
2026-02-10 08:42
log_20260212.txt
572
B
-rw-r--r--
2026-02-12 15:38
log_20260213.txt
330
B
-rw-r--r--
2026-02-13 14:09
log_20260215.txt
158
B
-rw-r--r--
2026-02-15 18:54
log_20260216.txt
513
B
-rw-r--r--
2026-02-16 15:04
log_20260217.txt
395
B
-rw-r--r--
2026-02-17 13:35
log_20260218.txt
244
B
-rw-r--r--
2026-02-18 15:00
log_20260219.txt
149
B
-rw-r--r--
2026-02-19 05:50
log_20260223.txt
330
B
-rw-r--r--
2026-02-23 15:05
log_20260224.txt
247
B
-rw-r--r--
2026-02-24 10:47
log_20260225.txt
379
B
-rw-r--r--
2026-02-25 15:31
log_20260226.txt
469
B
-rw-r--r--
2026-02-26 12:59
log_20260227.txt
384
B
-rw-r--r--
2026-02-27 14:03
log_20260228.txt
224
B
-rw-r--r--
2026-02-28 08:26
log_20260301.txt
307
B
-rw-r--r--
2026-03-01 14:25
log_20260302.txt
693
B
-rw-r--r--
2026-03-02 14:53
log_20260303.txt
538
B
-rw-r--r--
2026-03-03 15:01
log_20260304.txt
607
B
-rw-r--r--
2026-03-04 13:51
log_20260305.txt
372
B
-rw-r--r--
2026-03-05 12:53
log_20260306.txt
540
B
-rw-r--r--
2026-03-06 11:53
log_20260307.txt
308
B
-rw-r--r--
2026-03-07 12:40
log_20260308.txt
226
B
-rw-r--r--
2026-03-08 14:57
log_20260309.txt
783
B
-rw-r--r--
2026-03-09 18:28
log_20260310.txt
1
KB
-rw-r--r--
2026-03-10 18:01
log_20260311.txt
848
B
-rw-r--r--
2026-03-11 16:39
log_20260312.txt
385
B
-rw-r--r--
2026-03-12 14:03
log_20260313.txt
472
B
-rw-r--r--
2026-03-13 16:14
log_20260314.txt
381
B
-rw-r--r--
2026-03-14 14:35
log_20260315.txt
540
B
-rw-r--r--
2026-03-15 12:57
log_20260316.txt
1.07
KB
-rw-r--r--
2026-03-16 14:52
log_20260317.txt
1.06
KB
-rw-r--r--
2026-03-17 14:54
log_20260318.txt
608
B
-rw-r--r--
2026-03-18 16:25
log_20260319.txt
693
B
-rw-r--r--
2026-03-19 16:12
log_20260320.txt
932
B
-rw-r--r--
2026-03-20 14:57
log_20260321.txt
453
B
-rw-r--r--
2026-03-21 12:33
log_20260322.txt
224
B
-rw-r--r--
2026-03-22 11:53
log_20260323.txt
781
B
-rw-r--r--
2026-03-23 14:46
log_20260324.txt
696
B
-rw-r--r--
2026-03-24 14:41
log_20260325.txt
299
B
-rw-r--r--
2026-03-25 11:44
log_20260326.txt
373
B
-rw-r--r--
2026-03-26 16:00
log_20260327.txt
547
B
-rw-r--r--
2026-03-27 14:52
log_20260328.txt
149
B
-rw-r--r--
2026-03-28 06:15
log_20260329.txt
232
B
-rw-r--r--
2026-03-29 08:28
log_20260330.txt
961
B
-rw-r--r--
2026-03-30 15:06
log_20260331.txt
864
B
-rw-r--r--
2026-03-31 10:03
log_20260401.txt
537
B
-rw-r--r--
2026-04-01 14:52
log_20260402.txt
389
B
-rw-r--r--
2026-04-02 13:03
log_20260403.txt
538
B
-rw-r--r--
2026-04-03 15:01
log_20260404.txt
222
B
-rw-r--r--
2026-04-04 07:13
log_20260405.txt
222
B
-rw-r--r--
2026-04-05 14:42
log_20260406.txt
455
B
-rw-r--r--
2026-04-06 12:27
log_20260407.txt
763
B
-rw-r--r--
2026-04-07 15:20
log_20260408.txt
680
B
-rw-r--r--
2026-04-08 13:02
log_20260409.txt
530
B
-rw-r--r--
2026-04-09 13:18
log_20260410.txt
637
B
-rw-r--r--
2026-04-10 12:58
log_20260411.txt
305
B
-rw-r--r--
2026-04-11 14:22
log_20260412.txt
147
B
-rw-r--r--
2026-04-12 09:13
log_20260413.txt
987
B
-rw-r--r--
2026-04-13 15:48
log_20260414.txt
305
B
-rw-r--r--
2026-04-14 15:23
log_20260415.txt
483
B
-rw-r--r--
2026-04-15 13:27
log_20260416.txt
789
B
-rw-r--r--
2026-04-16 14:28
log_20260417.txt
857
B
-rw-r--r--
2026-04-17 15:35
log_20260418.txt
372
B
-rw-r--r--
2026-04-18 08:55
log_20260419.txt
455
B
-rw-r--r--
2026-04-19 15:28
log_20260420.txt
1.07
KB
-rw-r--r--
2026-04-20 15:51
log_20260421.txt
1.22
KB
-rw-r--r--
2026-04-21 15:26
log_20260422.txt
313
B
-rw-r--r--
2026-04-22 11:31
log_20260423.txt
380
B
-rw-r--r--
2026-04-23 11:50
log_20260424.txt
463
B
-rw-r--r--
2026-04-24 12:50
log_20260425.txt
147
B
-rw-r--r--
2026-04-25 04:07
log_20260426.txt
155
B
-rw-r--r--
2026-04-26 07:00
log_20260427.txt
307
B
-rw-r--r--
2026-04-27 15:32
log_20260428.txt
1.44
KB
-rw-r--r--
2026-04-28 18:24
log_20260429.txt
886
B
-rw-r--r--
2026-04-29 12:22
log_20260430.txt
239
B
-rw-r--r--
2026-04-30 10:23
log_20260501.txt
305
B
-rw-r--r--
2026-05-01 08:43
log_20260502.txt
230
B
-rw-r--r--
2026-05-02 12:53
log_20260504.txt
857
B
-rw-r--r--
2026-05-04 15:49
log_20260505.txt
756
B
-rw-r--r--
2026-05-05 13:27
log_20260506.txt
464
B
-rw-r--r--
2026-05-06 14:57
log_20260507.txt
456
B
-rw-r--r--
2026-05-07 15:49
log_20260508.txt
230
B
-rw-r--r--
2026-05-08 13:03
log_20260509.txt
147
B
-rw-r--r--
2026-05-09 07:36
log_20260510.txt
446
B
-rw-r--r--
2026-05-10 13:25
log_20260511.txt
694
B
-rw-r--r--
2026-05-11 18:09
log_20260512.txt
466
B
-rw-r--r--
2026-05-12 09:29
log_20260513.txt
2.28
KB
-rw-r--r--
2026-05-13 15:34
log_20260514.txt
781
B
-rw-r--r--
2026-05-14 15:53
log_20260515.txt
317
B
-rw-r--r--
2026-05-15 10:26
log_20260518.txt
694
B
-rw-r--r--
2026-05-18 15:13
log_20260519.txt
372
B
-rw-r--r--
2026-05-19 12:33
log_20260520.txt
305
B
-rw-r--r--
2026-05-20 10:58
log_20260525.txt
633
B
-rw-r--r--
2026-05-25 17:14
log_20260526.txt
882
B
-rw-r--r--
2026-05-26 13:16
log_20260527.txt
403
B
-rw-r--r--
2026-05-27 14:06
log_20260528.txt
155
B
-rw-r--r--
2026-05-28 06:13
log_20260529.txt
323
B
-rw-r--r--
2026-05-29 14:00
log_20260601.txt
825
B
-rw-r--r--
2026-06-01 15:17
log_20260602.txt
813
B
-rw-r--r--
2026-06-02 13:03
log_20260603.txt
1.07
KB
-rw-r--r--
2026-06-03 13:54
log_20260604.txt
1.32
KB
-rw-r--r--
2026-06-04 11:39
log_20260605.txt
900
B
-rw-r--r--
2026-06-05 10:59
log_20260606.txt
147
B
-rw-r--r--
2026-06-06 06:51
log_20260607.txt
307
B
-rw-r--r--
2026-06-07 15:43
log_20260608.txt
1.94
KB
-rw-r--r--
2026-06-08 15:03
log_20260609.txt
1.11
KB
-rw-r--r--
2026-06-09 13:16
log_20260610.txt
309
B
-rw-r--r--
2026-06-10 16:23
log_20260611.txt
316
B
-rw-r--r--
2026-06-11 12:58
log_20260612.txt
148
B
-rw-r--r--
2026-06-12 16:10
log_20260614.txt
155
B
-rw-r--r--
2026-06-14 06:50
log_20260615.txt
231
B
-rw-r--r--
2026-06-15 14:47
log_20260616.txt
149
B
-rw-r--r--
2026-06-16 10:18
log_20260617.txt
914
B
-rw-r--r--
2026-06-17 13:17
log_20260618.txt
392
B
-rw-r--r--
2026-06-18 15:35
log_20260619.txt
332
B
-rw-r--r--
2026-06-19 12:35
log_20260621.txt
146
B
-rw-r--r--
2026-06-21 14:02
log_20260622.txt
1.15
KB
-rw-r--r--
2026-06-22 15:52
log_20260623.txt
474
B
-rw-r--r--
2026-06-23 10:23
log_20260624.txt
314
B
-rw-r--r--
2026-06-24 12:53
log_20260625.txt
233
B
-rw-r--r--
2026-06-25 12:09
log_20260626.txt
156
B
-rw-r--r--
2026-06-26 10:20
log_20260627.txt
222
B
-rw-r--r--
2026-06-27 15:11
log_20260629.txt
1.03
KB
-rw-r--r--
2026-06-29 15:04
log_20260630.txt
657
B
-rw-r--r--
2026-06-30 11:23
log_20260701.txt
391
B
-rw-r--r--
2026-07-01 14:09
log_20260702.txt
146
B
-rw-r--r--
2026-07-02 15:38
log_20260703.txt
314
B
-rw-r--r--
2026-07-03 14:12
log_20260705.txt
223
B
-rw-r--r--
2026-07-05 15:33
log_20260706.txt
538
B
-rw-r--r--
2026-07-06 15:09
log_20260707.txt
464
B
-rw-r--r--
2026-07-07 11:17
log_20260708.txt
391
B
-rw-r--r--
2026-07-08 13:32
log_20260709.txt
381
B
-rw-r--r--
2026-07-09 15:50
log_20260710.txt
306
B
-rw-r--r--
2026-07-10 15:29
log_20260713.txt
392
B
-rw-r--r--
2026-07-13 15:53
log_20260714.txt
399
B
-rw-r--r--
2026-07-14 13:26
log_20260715.txt
220
B
-rw-r--r--
2026-07-15 13:13
log_20260716.txt
463
B
-rw-r--r--
2026-07-16 14:19
log_20260717.txt
230
B
-rw-r--r--
2026-07-17 14:16
log_20260720.txt
746
B
-rw-r--r--
2026-07-20 15:21
log_20260721.txt
650
B
-rw-r--r--
2026-07-21 15:27
log_20260722.txt
147
B
-rw-r--r--
2026-07-22 07:51
log_20260723.txt
304
B
-rw-r--r--
2026-07-23 09:16
log_20260724.txt
146
B
-rw-r--r--
2026-07-24 15:17
log_20260727.txt
832
B
-rw-r--r--
2026-07-27 15:59
log_20260728.txt
589
B
-rw-r--r--
2026-07-28 14:34
log_20260729.txt
229
B
-rw-r--r--
2026-07-29 10:38
log_20260731.txt
304
B
-rw-r--r--
2026-07-31 15:19
log_20260801.txt
222
B
-rw-r--r--
2026-08-01 15:08
log_20260802.txt
146
B
-rw-r--r--
2026-08-02 16:12
log_20260803.txt
904
B
-rw-r--r--
2026-08-03 15:19
log_20260804.txt
392
B
-rw-r--r--
2026-08-04 12:47
log_20260805.txt
464
B
-rw-r--r--
2026-08-05 15:27
log_20260806.txt
147
B
-rw-r--r--
2026-08-06 14:31
log_20260807.txt
753
B
-rw-r--r--
2026-08-07 14:21
log_20260808.txt
147
B
-rw-r--r--
2026-08-08 05:55
log_20260809.txt
147
B
-rw-r--r--
2026-08-09 14:29
log_20260810.txt
323
B
-rw-r--r--
2026-08-10 15:42
log_20260811.txt
406
B
-rw-r--r--
2026-08-11 13:37
log_20260812.txt
331
B
-rw-r--r--
2026-08-12 12:20
log_20260813.txt
471
B
-rw-r--r--
2026-08-13 13:41
log_20260814.txt
223
B
-rw-r--r--
2026-08-14 13:48
log_20260816.txt
308
B
-rw-r--r--
2026-08-16 14:26
log_20260817.txt
1.17
KB
-rw-r--r--
2026-08-17 15:04
log_20260818.txt
475
B
-rw-r--r--
2026-08-18 10:46
log_20260820.txt
242
B
-rw-r--r--
2026-08-20 17:58
login.php
12.03
KB
-rw-r--r--
2023-02-15 06:27
logout.php
5.95
KB
-rw-r--r--
2023-02-15 06:27
markassignments.php
38.51
KB
-rw-r--r--
2026-08-20 17:51
markexam.php
15.4
KB
-rw-r--r--
2026-06-17 13:48
msgattach-download.php
990
B
-rw-r--r--
2026-06-24 12:03
php_errors.log
938.18
KB
-rw-r--r--
2026-08-21 08:19
phpfn7.php
141.44
KB
-rw-r--r--
2026-08-24 10:32
readmessage.php
2.9
KB
-rw-r--r--
2026-05-19 07:04
reporteval.php
49
B
-rw-r--r--
2022-01-20 09:30
rptAssignmentScoresreport.php
32.74
KB
-rw-r--r--
2022-09-15 21:41
sendmessage.php
13.76
KB
-rw-r--r--
2026-07-30 15:46
studentdb.php
1.27
KB
-rw-r--r--
2024-05-13 10:03
studentprogressrpt.php
4.15
KB
-rw-r--r--
2026-08-04 09:21
thumbnail.inc.php
20.34
KB
-rw-r--r--
2019-11-06 07:51
timetable.php
903
B
-rw-r--r--
2024-03-16 16:03
userfn7.php
1.19
KB
-rw-r--r--
2024-02-25 11:35
viewexam.php
9.45
KB
-rw-r--r--
2025-11-25 14:50
Save
Rename
<?php /** * PHPMaker Common classes and functions * (C) 2002-2010 e.World Technology Limited. All rights reserved. */ /** * Export document class */ class cExportDocument { var $Table; var $Text; var $Line = ""; var $Style = "h"; // "v"(Vertical) or "h"(Horizontal) var $Horizontal = TRUE; // Horizontal // Constructor function __construct(&$tbl, $style) { $this->Table = $tbl; if (strtolower($style) == "v") $this->Style = "v"; $this->Horizontal = ($this->Table->Export <> "xml" && ($this->Style <> "v" || $this->Table->Export == "csv")); } // Header function ExportHeader() { switch ($this->Table->Export) { case "html": case "email": if (EW_EXPORT_CSS_STYLES) $this->Text .= "<style>" . ew_ReadFile(EW_PROJECT_STYLESHEET_FILENAME) . "</style>\r\n"; $this->Text .= "<table class=\"ewExportTable\">"; break; case "word": case "excel": $this->Text .= "<table>"; break; case "csv": $this->Text .= ""; } } // Field Caption function ExportCaption(&$fld) { $this->ExportValueEx($fld, $fld->ExportCaption(), FALSE); } // Field value function ExportValue(&$fld) { $this->ExportValueEx($fld, $fld->ExportValue($this->Table->Export, $this->Table->ExportOriginalValue), TRUE); } // Field aggregate function ExportAggregate(&$fld, $type) { if ($this->Horizontal) { global $Language; $val = ""; if (in_array($type, array("TOTAL", "COUNT", "AVERAGE"))) $val = $Language->Phrase($type) . ": " . $fld->ExportValue($this->Table->Export, $this->Table->ExportOriginalValue); $this->ExportValueEx($fld, $val, FALSE); } } // Export a value (caption, field value, or aggregate) function ExportValueEx(&$fld, $val, $usestyle) { switch ($this->Table->Export) { case "html": case "email": case "word": case "excel": $this->Text .= "<td" . (($usestyle && EW_EXPORT_CSS_STYLES) ? $fld->CellStyles() : "") . ">"; if ($this->Table->Export == "excel" && $fld->FldDataType == EW_DATATYPE_STRING && is_numeric($val)) { $this->Text .= "=\"" . strval($val) . "\""; } else { $this->Text .= strval($val); } $this->Text .= "</td>"; break; case "csv": if ($this->Line <> "") $this->Line .= ","; $this->Line .= "\"" . str_replace("\"", "\"\"", strval($val)) . "\""; } } // Begin a row function BeginExportRow($usestyle = FALSE) { if ($this->Horizontal) { switch ($this->Table->Export) { case "html": case "email": case "word": case "excel": $this->Text .= "<tr" . (($usestyle && EW_EXPORT_CSS_STYLES) ? $this->Table->RowStyles() : "") . ">"; break; case "csv": $this->Line = ""; } } } // End a row function EndExportRow() { if ($this->Horizontal) { switch ($this->Table->Export) { case "html": case "email": case "word": case "excel": $this->Text .= "</tr>"; break; case "csv": $this->Line .= "\r\n"; $this->Text .= $this->Line; } } } // Export a field function ExportField(&$fld) { if ($this->Horizontal) { $this->ExportValue($fld); } else { // Vertical, export as a row $td = "<td" . ((EW_EXPORT_CSS_STYLES) ? $fld->CellStyles() : "") . ">"; $this->Text .= "<tr><td>" . $fld->ExportCaption() . "</td>" . $td . $fld->ExportValue($this->Table->Export, $this->Table->ExportOriginalValue) . "</td></tr>"; } } // Footer function ExportFooter() { switch ($this->Table->Export) { case "html": case "email": case "word": case "excel": $this->Text .= "</table>"; } } } /** * QueryString class */ class cQueryString { var $values = array(); var $Count; function __construct() { $ar = explode("&", ew_ServerVar("QUERY_STRING")); foreach ($ar as $p) { $arp = explode("=", $p); if (count($arp) == 2) $this->values[urldecode($arp[0])] = $arp[1]; } $this->Count = count($this->values); } function getValue($name) { return (array_key_exists($name, $this->values)) ? $this->values[$name] : ""; } function getUrlDecodedValue($name) { return urldecode($this->getValue($name)); } function getRawUrlDecodedValue($name) { return rawurldecode($this->getValue($name)); } function getConvertedValue($name) { return ew_ConvertFromUtf8($this->getRawUrlDecodedValue($name)); } } /** * Email class */ class cEmail { // Class properties var $Sender = ""; // Sender var $Recipient = ""; // Recipient var $Cc = ""; // Cc var $Bcc = ""; // Bcc var $Subject = ""; // Subject var $Format = ""; // Format var $Content = ""; // Content var $Charset = ""; // Charset var $SendErrDescription; // Send error description // Method to load email from template function Load($fn) { $fn = ew_ScriptFolder() . EW_PATH_DELIMITER . $fn; $sWrk = ew_ReadFile($fn); // Load text file content if ($sWrk <> "") { // Locate Header & Mail Content if (EW_IS_WINDOWS) { $i = strpos($sWrk, "\r\n\r\n"); } else { $i = strpos($sWrk, "\n\n"); if ($i === FALSE) $i = strpos($sWrk, "\r\n\r\n"); } if ($i > 0) { $sHeader = substr($sWrk, 0, $i); $this->Content = trim(substr($sWrk, $i, strlen($sWrk))); if (EW_IS_WINDOWS) { $arrHeader = explode("\r\n", $sHeader); } else { $arrHeader = explode("\n", $sHeader); } for ($j = 0; $j < count($arrHeader); $j++) { $i = strpos($arrHeader[$j], ":"); if ($i > 0) { $sName = trim(substr($arrHeader[$j], 0, $i)); $sValue = trim(substr($arrHeader[$j], $i + 1, strlen($arrHeader[$j]))); switch (strtolower($sName)) { case "subject": $this->Subject = $sValue; break; case "from": $this->Sender = $sValue; break; case "to": $this->Recipient = $sValue; break; case "cc": $this->Cc = $sValue; break; case "bcc": $this->Bcc = $sValue; break; case "format": $this->Format = $sValue; break; } } } } } } // Method to replace sender function ReplaceSender($ASender) { $this->Sender = str_replace('<!--$From-->', $ASender, $this->Sender); } // Method to replace recipient function ReplaceRecipient($ARecipient) { $this->Recipient = str_replace('<!--$To-->', $ARecipient, $this->Recipient); } // Method to add Cc email function AddCc($ACc) { if ($ACc <> "") { if ($this->Cc <> "") $this->Cc .= ";"; $this->Cc .= $ACc; } } // Method to add Bcc email function AddBcc($ABcc) { if ($ABcc <> "") { if ($this->Bcc <> "") $this->Bcc .= ";"; $this->Bcc .= $ABcc; } } // Method to replace subject function ReplaceSubject($ASubject) { $this->Subject = str_replace('<!--$Subject-->', $ASubject, $this->Subject); } // Method to replace content function ReplaceContent($Find, $ReplaceWith) { $this->Content = str_replace($Find, $ReplaceWith, $this->Content); } // Method to send email function Send() { global $gsEmailErrDesc; $result = ew_SendEmail($this->Sender, $this->Recipient, $this->Cc, $this->Bcc, $this->Subject, $this->Content, $this->Format, $this->Charset); $this->SendErrDescription = $gsEmailErrDesc; return $result; } } /** * Pager item class */ class cPagerItem { var $Start; var $Text; var $Enabled; } /** * Numeric pager class */ class cNumericPager { var $Items = array(); var $Count, $FromIndex, $ToIndex, $RecordCount, $PageSize, $Range; var $FirstButton, $PrevButton, $NextButton, $LastButton; var $ButtonCount = 0; var $Visible = TRUE; function __construct($StartRec, $DisplayRecs, $TotalRecs, $RecRange) { $this->FirstButton = new cPagerItem; $this->PrevButton = new cPagerItem; $this->NextButton = new cPagerItem; $this->LastButton = new cPagerItem; $this->FromIndex = intval($StartRec); $this->PageSize = intval($DisplayRecs); $this->RecordCount = intval($TotalRecs); $this->Range = intval($RecRange); if ($this->PageSize == 0) return; if ($this->FromIndex > $this->RecordCount) $this->FromIndex = $this->RecordCount; $this->ToIndex = $this->FromIndex + $this->PageSize - 1; if ($this->ToIndex > $this->RecordCount) $this->ToIndex = $this->RecordCount; // setup $this->SetupNumericPager(); // update button count if ($this->FirstButton->Enabled) $this->ButtonCount++; if ($this->PrevButton->Enabled) $this->ButtonCount++; if ($this->NextButton->Enabled) $this->ButtonCount++; if ($this->LastButton->Enabled) $this->ButtonCount++; $this->ButtonCount += count($this->Items); } // Add pager item function AddPagerItem($StartIndex, $Text, $Enabled) { $Item = new cPagerItem; $Item->Start = $StartIndex; $Item->Text = $Text; $Item->Enabled = $Enabled; $this->Items[] = $Item; } // Setup pager items function SetupNumericPager() { if ($this->RecordCount > $this->PageSize) { $Eof = ($this->RecordCount < ($this->FromIndex + $this->PageSize)); $HasPrev = ($this->FromIndex > 1); // First Button $TempIndex = 1; $this->FirstButton->Start = $TempIndex; $this->FirstButton->Enabled = ($this->FromIndex > $TempIndex); // Prev Button $TempIndex = $this->FromIndex - $this->PageSize; if ($TempIndex < 1) $TempIndex = 1; $this->PrevButton->Start = $TempIndex; $this->PrevButton->Enabled = $HasPrev; // Page links if ($HasPrev || !$Eof) { $x = 1; $y = 1; $dx1 = intval(($this->FromIndex - 1) / ($this->PageSize * $this->Range)) * $this->PageSize * $this->Range + 1; $dy1 = intval(($this->FromIndex - 1) / ($this->PageSize * $this->Range)) * $this->Range + 1; if (($dx1 + $this->PageSize * $this->Range - 1) > $this->RecordCount) { $dx2 = intval($this->RecordCount / $this->PageSize) * $this->PageSize + 1; $dy2 = intval($this->RecordCount / $this->PageSize) + 1; } else { $dx2 = $dx1 + $this->PageSize * $this->Range - 1; $dy2 = $dy1 + $this->Range - 1; } while ($x <= $this->RecordCount) { if ($x >= $dx1 && $x <= $dx2) { $this->AddPagerItem($x, $y, $this->FromIndex <> $x); $x += $this->PageSize; $y++; } elseif ($x >= ($dx1 - $this->PageSize * $this->Range) && $x <= ($dx2 + $this->PageSize * $this->Range)) { if ($x + $this->Range * $this->PageSize < $this->RecordCount) { $this->AddPagerItem($x, $y . "-" . ($y + $this->Range - 1), TRUE); } else { $ny = intval(($this->RecordCount - 1) / $this->PageSize) + 1; if ($ny == $y) { $this->AddPagerItem($x, $y, TRUE); } else { $this->AddPagerItem($x, $y . "-" . $ny, TRUE); } } $x += $this->Range * $this->PageSize; $y += $this->Range; } else { $x += $this->Range * $this->PageSize; $y += $this->Range; } } } // Next Button $TempIndex = $this->FromIndex + $this->PageSize; $this->NextButton->Start = $TempIndex; $this->NextButton->Enabled = !$Eof; // Last Button $TempIndex = intval(($this->RecordCount - 1) / $this->PageSize) * $this->PageSize + 1; $this->LastButton->Start = $TempIndex; $this->LastButton->Enabled = ($this->FromIndex < $TempIndex); } } } /** * PrevNext pager class */ class cPrevNextPager { var $FirstButton, $PrevButton, $NextButton, $LastButton; var $CurrentPage, $PageCount, $FromIndex, $ToIndex, $RecordCount; var $Visible = TRUE; function __construct($StartRec, $DisplayRecs, $TotalRecs) { $this->FirstButton = new cPagerItem; $this->PrevButton = new cPagerItem; $this->NextButton = new cPagerItem; $this->LastButton = new cPagerItem; $this->FromIndex = intval($StartRec); $this->PageSize = intval($DisplayRecs); $this->RecordCount = intval($TotalRecs); if ($this->PageSize == 0) return; $this->CurrentPage = intval(($this->FromIndex - 1) / $this->PageSize) + 1; $this->PageCount = intval(($this->RecordCount - 1) / $this->PageSize) + 1; if ($this->FromIndex > $this->RecordCount) $this->FromIndex = $this->RecordCount; $this->ToIndex = $this->FromIndex + $this->PageSize - 1; if ($this->ToIndex > $this->RecordCount) $this->ToIndex = $this->RecordCount; // First Button $TempIndex = 1; $this->FirstButton->Start = $TempIndex; $this->FirstButton->Enabled = ($TempIndex <> $this->FromIndex); // Prev Button $TempIndex = $this->FromIndex - $this->PageSize; if ($TempIndex < 1) $TempIndex = 1; $this->PrevButton->Start = $TempIndex; $this->PrevButton->Enabled = ($TempIndex <> $this->FromIndex); // Next Button $TempIndex = $this->FromIndex + $this->PageSize; if ($TempIndex > $this->RecordCount) $TempIndex = $this->FromIndex; $this->NextButton->Start = $TempIndex; $this->NextButton->Enabled = ($TempIndex <> $this->FromIndex); // Last Button $TempIndex = intval(($this->RecordCount - 1) / $this->PageSize) * $this->PageSize + 1; $this->LastButton->Start = $TempIndex; $this->LastButton->Enabled = ($TempIndex <> $this->FromIndex); } } /** * Field class */ class cField { var $TblName; // Table name var $TblVar; // Table variable name var $FldName; // Field name var $FldVar; // Field variable name var $FldExpression; // Field expression (used in SQL) var $FldIsVirtual; // Virtual field var $FldVirtualExpression; // Virtual field expression (used in ListSQL) var $FldDefaultErrMsg; // Default error message var $VirtualValue; // Virtual field value var $TooltipValue; // Field tooltip value var $TooltipWidth = 0; // Field tooltip width var $FldType; // Field type var $FldDataType; // PHPMaker Field type var $AdvancedSearch; // AdvancedSearch Object var $Upload; // Upload Object var $FldDateTimeFormat; // Date time format var $CssStyle; // CSS style var $CssClass; // CSS class var $ImageAlt; // Image alt var $ImageWidth = 0; // Image width var $ImageHeight = 0; // Image height var $ImageResize = FALSE; // Image resize var $ViewCustomAttributes; // View custom attributes var $EditCustomAttributes; // Edit custom attributes var $Count; // Count var $Total; // Total var $TrueValue = '1'; var $FalseValue = '0'; var $Visible = TRUE; // Visible var $Disabled; // Disabled var $TruncateMemoRemoveHtml; // Remove HTML from memo field var $CustomMsg = ""; // Custom message var $CellCssClass = ""; // Cell CSS class var $CellCssStyle = ""; // Cell CSS style var $CellCustomAttributes = ""; // Cell custom attributes var $MultiUpdate; // Multi update var $OldValue; // Old Value var $ConfirmValue; // Confirm value var $CurrentValue; // Current value var $ViewValue; // View value var $EditValue; // Edit value var $EditValue2; // Edit value 2 (search) var $HrefValue; // Href value var $HrefValue2; // Href value 2 (confirm page upload control) var $FormValue; // Form value var $QueryStringValue; // QueryString value var $DbValue; // Database value var $Sortable = TRUE; // Sortable var $UploadPath = EW_UPLOAD_DEST_PATH; // Upload path var $CellAttrs = array(); // Cell custom attributes var $EditAttrs = array(); // Edit custom attributes var $ViewAttrs = array(); // View custom attributes // Constructor function __construct($tblvar, $tblname, $fldvar, $fldname, $fldexp, $fldtype, $flddtfmt, $upload, $fldvirtualexp, $fldvirtual) { $this->TblVar = $tblvar; $this->TblName = $tblname; $this->FldVar = $fldvar; $this->FldName = $fldname; $this->FldExpression = $fldexp; $this->FldType = $fldtype; $this->FldDataType = ew_FieldDataType($fldtype); $this->FldDateTimeFormat = $flddtfmt; $this->AdvancedSearch = new cAdvancedSearch(); if ($upload) $this->Upload = new cUpload($this->TblVar, $this->FldVar); $this->FldVirtualExpression = $fldvirtualexp; $this->FldIsVirtual = $fldvirtual; } // Field caption function FldCaption() { global $Language; return $Language->FieldPhrase($this->TblVar, substr($this->FldVar, 2), "FldCaption"); } // Field title function FldTitle() { global $Language; return $Language->FieldPhrase($this->TblVar, substr($this->FldVar, 2), "FldTitle"); } // Field image alt function FldAlt() { global $Language; return $Language->FieldPhrase($this->TblVar, substr($this->FldVar, 2), "FldAlt"); } // Field error message function FldErrMsg() { global $Language; $err = $Language->FieldPhrase($this->TblVar, substr($this->FldVar, 2), "FldErrMsg"); if ($err == "") $err = $this->FldDefaultErrMsg . " - " . $this->FldCaption(); return $err; } // View Attributes function ViewAttributes() { $sAtt = ""; $sStyle = trim($this->CssStyle); if (@$this->ViewAttrs["style"] <> "") $sStyle .= " " . $this->ViewAttrs["style"]; $sClass = trim($this->CssClass); if (@$this->ViewAttrs["class"] <> "") $sClass .= " " . $this->ViewAttrs["class"]; if (trim($sStyle) <> "") $sAtt .= " style=\"" . trim($sStyle) . "\""; if (trim($sClass) <> "") $sAtt .= " class=\"" . trim($sClass) . "\""; if (trim($this->ImageAlt) <> "") $this->ViewAttrs["alt"] = trim($this->ImageAlt); if (intval($this->ImageWidth) > 0 && (!$this->ImageResize || ($this->ImageResize && intval($this->ImageHeight) <= 0))) $this->ViewAttrs["width"] = intval($this->ImageWidth); if (intval($this->ImageHeight) > 0 && (!$this->ImageResize || ($this->ImageResize && intval($this->ImageWidth) <= 0))) $this->ViewAttrs["height"] = intval($this->ImageHeight); foreach ($this->ViewAttrs as $k => $v) { if ($k <> "style" && $k <> "class" && trim($v) <> "") $sAtt .= " " . $k . "=\"" . trim($v) . "\""; } if (trim($this->ViewCustomAttributes) <> "") $sAtt .= " " . trim($this->ViewCustomAttributes); return $sAtt; } // Edit attributes function EditAttributes() { $sAtt = ""; $sStyle = trim($this->CssStyle); if (@$this->EditAttrs["style"] <> "") $sStyle .= " " . $this->EditAttrs["style"]; $sClass = trim($this->CssClass); if (@$this->EditAttrs["class"] <> "") $sClass .= " " . $this->EditAttrs["class"]; if (trim($sStyle) <> "") $sAtt .= " style=\"" . trim($sStyle) . "\""; if ($sClass <> "") $sAtt .= " class=\"" . trim($sClass) . "\""; if ($this->Disabled) $this->EditAttrs["disabled"] = "disabled"; foreach ($this->EditAttrs as $k => $v) { if ($k <> "style" && $k <> "class" && trim($v) <> "") $sAtt .= " " . $k . "=\"" . trim($v) . "\""; } if (trim($this->EditCustomAttributes) <> "") $sAtt .= " " . trim($this->EditCustomAttributes); return $sAtt; } // Cell styles function CellStyles() { $sAtt = ""; $sStyle = trim($this->CellCssStyle); if (@$this->CellAttrs["style"] <> "") $sStyle .= " " . $this->CellAttrs["style"]; $sClass = trim($this->CellCssClass); if (@$this->CellAttrs["class"] <> "") $sClass .= " " . $this->CellAttrs["class"]; if (trim($sStyle) <> "") $sAtt .= " style=\"" . trim($sStyle) . "\""; if (trim($sClass) <> "") $sAtt .= " class=\"" . trim($sClass) . "\""; return $sAtt; } // Cell attributes function CellAttributes() { $sAtt = $this->CellStyles(); foreach ($this->CellAttrs as $k => $v) { if ($k <> "style" && $k <> "class" && trim($v) <> "") $sAtt .= " " . $k . "=\"" . trim($v) . "\""; } if (trim($this->CellCustomAttributes) <> "") $sAtt .= " " . trim($this->CellCustomAttributes); return $sAtt; } // Sort function getSort() { return @$_SESSION[EW_PROJECT_NAME . "_" . $this->TblVar . "_" . EW_TABLE_SORT . "_" . $this->FldVar]; } function setSort($v) { if (@$_SESSION[EW_PROJECT_NAME . "_" . $this->TblVar . "_" . EW_TABLE_SORT . "_" . $this->FldVar] <> $v) { $_SESSION[EW_PROJECT_NAME . "_" . $this->TblVar . "_" . EW_TABLE_SORT . "_" . $this->FldVar] = $v; } } function ReverseSort() { return ($this->getSort() == "ASC") ? "DESC" : "ASC"; } // List view value function ListViewValue() { if ($this->FldDataType == EW_DATATYPE_XML) { return $this->ViewValue . " "; } else { $value = trim(strval($this->ViewValue)); if ($value <> "") { $value2 = trim(preg_replace('/<[^img][^>]*>/i', '', strval($value))); return ($value2 <> "") ? $this->ViewValue : " "; } else { return " "; } } } // Export caption function ExportCaption() { return (EW_EXPORT_FIELD_CAPTION) ? $this->FldCaption() : $this->FldName; } // Export value function ExportValue($Export, $Original) { $ExportValue = ($Original) ? $this->CurrentValue : $this->ViewValue; if ($Export == "xml" && is_null($ExportValue)) $ExportValue = "<Null>"; return $ExportValue; } // Form value function setFormValue($v) { $this->FormValue = ew_StripSlashes($v); if (is_array($this->FormValue)) $this->FormValue = implode(",", $this->FormValue); $this->CurrentValue = $this->FormValue; } // Old value (from $_POST) function setOldValue($v) { $this->OldValue = ew_StripSlashes($v); if (is_array($this->OldValue)) { $this->OldValue = implode(",", $this->OldValue); } else { $this->OldValue = $v; } } // QueryString value function setQueryStringValue($v) { $this->QueryStringValue = ew_StripSlashes($v); $this->CurrentValue = $this->QueryStringValue; } // Database value function setDbValue($v) { $this->DbValue = $v; $this->CurrentValue = $this->DbValue; } // Set database value with error default function SetDbValueDef(&$rs, $value, $default, $skip = FALSE) { if (($skip && strval($value) == "") || !$this->Visible || $this->Disabled) return; switch ($this->FldType) { case 2: case 3: case 16: case 17: case 18: // Integer $value = trim($value); $DbValue = (is_numeric($value)) ? intval($value) : $default; break; case 19: case 20: case 21: // Big integer $value = trim($value); $DbValue = (is_numeric($value)) ? $value : $default; break; case 5: case 6: case 14: case 131: // Double case 139: case 4: // Single $value = trim($value); $value = ew_StrToFloat($value); $DbValue = (is_numeric($value)) ? $value : $default; break; case 7: case 133: case 134: case 135: // Date case 141: // XML case 145: // Time case 146: // DateTiemOffset case 201: case 203: case 129: case 130: case 200: case 202: // String $value = trim($value); $DbValue = ($value == "") ? $default : $value; break; case 128: case 204: case 205: // Binary $DbValue = (is_null($value)) ? $default : $value; break; case 72: // GUID $value = trim($value); $DbValue = ($value <> "" && ew_CheckGUID($value)) ? $value : $default; break; case 11: // Boolean $DbValue = (is_bool($value) || is_numeric($value)) ? $value : $default; break; default: $DbValue = $value; } $this->setDbValue($DbValue); $rs[$this->FldName] = $this->DbValue; } // Session value function getSessionValue() { return @$_SESSION[EW_PROJECT_NAME . "_" . $this->TblVar . "_" . $this->FldVar . "_SessionValue"]; } function setSessionValue($v) { $_SESSION[EW_PROJECT_NAME . "_" . $this->TblVar . "_" . $this->FldVar . "_SessionValue"] = $v; } } /** * List option collection class */ class cListOptions { var $Items = array(); var $CustomItem = ""; // Add and return a new option (return-by-reference is for PHP 5 only) function &Add($Name) { $item = new cListOption($Name); $this->Items[$Name] = $item; return $item; } // Load default settings function LoadDefault() { $this->CustomItem = ""; foreach ($this->Items as $key => $item) $this->Items[$key]->Body = ""; } // Hide all options function HideAllOptions() { foreach ($this->Items as $key => $item) $this->Items[$key]->Visible = FALSE; } // Show all options function ShowAllOptions() { foreach ($this->Items as $key => $item) $this->Items[$key]->Visible = TRUE; } // Get item by name (return-by-reference is for PHP 5 only) // predefined names: view/edit/copy/delete/detail_<DetailTable>/userpermission/checkbox function &GetItem($Name) { $item = array_key_exists($Name, $this->Items) ? $this->Items[$Name] : NULL; return $item; } // Move item to position function MoveItem($Name, $Pos) { $cnt = count($this->Items); if ($Pos < 0 || $Pos >= $cnt) return; $item = $this->GetItem($Name); if ($item) { $item = ew_Clone($item); unset($this->Items[$Name]); $this->Items = array_merge(array_slice($this->Items, 0, $Pos), array($Name => $item), array_slice($this->Items, $Pos)); } } // Render list options function Render($Part, $Pos) { $ShowTd = ($Pos <> "bottom"); if ($this->CustomItem <> "") { $cnt = 0; foreach ($this->Items as $key => $item) { $item = $this->Items[$key]; if ($item->Visible && $this->ShowPos($item->OnLeft, $Pos)) $cnt++; if ($item->Name == $this->CustomItem) $opt = $item; } if (is_object($opt) && $cnt > 0) { if ($this->ShowPos($opt->OnLeft, $Pos)) { echo $opt->Render($Part, $ShowTd, $cnt); } else { echo $opt->Render("", $ShowTd, $cnt); } } } else { foreach ($this->Items as $key => $item) { $item = $this->Items[$key]; if ($item->Visible && $this->ShowPos($item->OnLeft, $Pos)) echo $item->Render($Part, $ShowTd); } } } function ShowPos($OnLeft, $Pos) { return ($OnLeft && $Pos == "left") || (!$OnLeft && $Pos == "right") || ($Pos == "bottom"); } } /** * List option class */ class cListOption { var $Name; var $OnLeft; var $CssStyle; var $Visible = TRUE; var $Header; var $Body; var $Footer; function __construct($Name) { $this->Name = $Name; } function Render($Part, $ShowTd, $ColSpan = 1) { if ($Part == "header") { $value = $this->Header; } elseif ($Part == "body") { $value = $this->Body; } elseif ($Part == "footer") { $value = $this->Footer; } else { $value = $Part; } $td = ""; if ($ShowTd) { $td = "<td"; if ($this->CssStyle <> "") $td .= " style=\"" . $this->CssStyle . "\""; if ($ColSpan > 1) $td .= " colspan=\"" . $ColSpan . "\""; $td .= ">"; } if (strval($value) <> "") { $res = "<span class=\"phpmaker\">" . $value . "</span>"; if ($td <> "") { $res = $td . $res . "</td>"; } else { $res .= " "; } } else { if ($td <> "") { $res = $td . "<span class=\"phpmaker\"> </span></td>"; } else { $res = ""; } } return $res; } } ?> <?php /** * Advanced Search class */ class cAdvancedSearch { var $SearchValue; // Search value var $SearchOperator; // Search operator var $SearchCondition; // Search condition var $SearchValue2; // Search value 2 var $SearchOperator2; // Search operator 2 } ?> <?php /** * Upload class */ class cUpload { var $Index = 0; // Index for multiple form elements var $TblVar; // Table variable var $FldVar; // Field variable var $Message; // Error message var $DbValue; // Value from database var $Value = NULL; // Upload value var $Action; // Upload action var $FileName; // Upload file name var $FileSize; // Upload file size var $ContentType; // File content type var $ImageWidth; // Image width var $ImageHeight; // Image height var $Error; // Upload error // Constructor function __construct($TblVar, $FldVar, $Binary = FALSE) { $this->TblVar = $TblVar; $this->FldVar = $FldVar; } function getSessionID() { return EW_PROJECT_NAME . "_" . $this->TblVar . "_" . $this->FldVar . "_" . $this->Index; } // Save value to Session function SaveDbToSession() { $sSessionID = $this->getSessionID(); $_SESSION[$sSessionID . "_DbValue"] = $this->DbValue; } // Restore value from Session function RestoreDbFromSession() { $sSessionID = $this->getSessionID(); $this->DbValue = @$_SESSION[$sSessionID . "_DbValue"]; } // Remove value from Session function RemoveDbFromSession() { $sSessionID = $this->getSessionID(); unset($_SESSION[$sSessionID . "_DbValue"]); } // Save upload values to Session function SaveToSession() { $sSessionID = $this->getSessionID(); $_SESSION[$sSessionID . "_Action"] = $this->Action; $_SESSION[$sSessionID . "_FileSize"] = $this->FileSize; $_SESSION[$sSessionID . "_FileName"] = $this->FileName; $_SESSION[$sSessionID . "_ContentType"] = $this->ContentType; $_SESSION[$sSessionID . "_ImageWidth"] = $this->ImageWidth; $_SESSION[$sSessionID . "_ImageHeight"] = $this->ImageHeight; $_SESSION[$sSessionID . "_Value"] = $this->Value; $_SESSION[$sSessionID . "_Error"] = $this->Error; } // Restore upload values from Session function RestoreFromSession() { $sSessionID = $this->getSessionID(); $this->Action = @$_SESSION[$sSessionID . "_Action"]; $this->FileSize = @$_SESSION[$sSessionID . "_FileSize"]; $this->FileName = @$_SESSION[$sSessionID . "_FileName"]; $this->ContentType = @$_SESSION[$sSessionID . "_ContentType"]; $this->ImageWidth = @$_SESSION[$sSessionID . "_ImageWidth"]; $this->ImageHeight = @$_SESSION[$sSessionID . "_ImageHeight"]; $this->Value = @$_SESSION[$sSessionID . "_Value"]; $this->Error = @$_SESSION[$sSessionID . "_Error"]; } // Remove upload values from Session function RemoveFromSession() { $sSessionID = $this->getSessionID(); unset($_SESSION[$sSessionID . "_Action"]); unset($_SESSION[$sSessionID . "_FileSize"]); unset($_SESSION[$sSessionID . "_FileName"]); unset($_SESSION[$sSessionID . "_ContentType"]); unset($_SESSION[$sSessionID . "_ImageWidth"]); unset($_SESSION[$sSessionID . "_ImageHeight"]); unset($_SESSION[$sSessionID . "_Value"]); unset($_SESSION[$sSessionID . "_Error"]); } // Check file type of the uploaded file function UploadAllowedFileExt($filename) { return ew_CheckFileType($filename); } // Get upload file function UploadFile() { global $objForm; $this->Value = NULL; // Reset first $gsFldVar = $this->FldVar; $gsFldVarAction = "a" . substr($gsFldVar, 1); $gsFldVarWidth = "wd" . substr($gsFldVar, 1); $gsFldVarHeight = "ht" . substr($gsFldVar, 1); // Get action $this->Action = $objForm->GetValue($gsFldVarAction); // Get and check the upload file size $this->FileSize = $objForm->GetUploadFileSize($gsFldVar); // Get and check the upload file type $this->FileName = $objForm->GetUploadFileName($gsFldVar); // Get upload file content type $this->ContentType = $objForm->GetUploadFileContentType($gsFldVar); // Get upload value $this->Value = $objForm->GetUploadFileData($gsFldVar); // Get upload error $this->Error = $objForm->GetUploadFileError($gsFldVar); // Get image width and height $this->ImageWidth = $objForm->GetUploadImageWidth($gsFldVar); $this->ImageHeight = $objForm->GetUploadImageHeight($gsFldVar); if ($this->ImageWidth < 0 || $this->ImageHeight < 0) { $this->ImageWidth = $objForm->GetValue($gsFldVarWidth); $this->ImageHeight = $objForm->GetValue($gsFldVarHeight); } return TRUE; // Normal return } // Resize image function Resize($width, $height, $quality) { if (!ew_Empty($this->Value)) { $wrkwidth = $width; $wrkheight = $height; if (ew_ResizeBinary($this->Value, $wrkwidth, $wrkheight, $quality)) { // P6 $this->ImageWidth = $wrkwidth; $this->ImageHeight = $wrkheight; $this->FileSize = strlen($this->Value); } } } // Save uploaded data to file (Path relative to application root) function SaveToFile($Path, $NewFileName, $OverWrite) { if (!ew_Empty($this->Value)) { $Path = ew_UploadPathEx(TRUE, $Path); if (trim(strval($NewFileName)) == "") $NewFileName = $this->FileName; if ($OverWrite) { return ew_SaveFile($Path, $NewFileName, $this->Value); } else { return ew_SaveFile($Path, ew_UploadFileNameEx($Path, $NewFileName), $this->Value); } } return FALSE; } // Resize and save uploaded data to file (Path relative to application root) function ResizeAndSaveToFile($Width, $Height, $Quality, $Path, $NewFileName, $OverWrite) { $bResult = FALSE; if (!ew_Empty($this->Value)) { $OldValue = $this->Value; $this->Resize($Width, $Height, $Quality); $bResult = $this->SaveToFile($Path, $NewFileName, $OverWrite); $this->Value = $OldValue; } return $bResult; } } ?> <?php /** * Advanced Security class */ class cAdvancedSecurity { var $UserLevel = array(); // All User Levels var $UserLevelPriv = array(); // All User Level permissions var $UserLevelID = array(); // User Level ID array var $UserID = array(); // User ID array var $CurrentUserLevelID; var $CurrentUserLevel; // Permissions var $CurrentUserID; var $CurrentParentUserID; // Constructor function __construct() { // Init User Level $this->CurrentUserLevelID = $this->SessionUserLevelID(); if (is_numeric($this->CurrentUserLevelID) && intval($this->CurrentUserLevelID) >= -1) { $this->UserLevelID[] = $this->CurrentUserLevelID; } // Init User ID $this->CurrentUserID = $this->SessionUserID(); $this->CurrentParentUserID = $this->SessionParentUserID(); // Load user level (for TablePermission_Loading event) $this->LoadUserLevel(); } // Session User ID function SessionUserID() { return strval(@$_SESSION[EW_SESSION_USER_ID]); } function setSessionUserID($v) { $_SESSION[EW_SESSION_USER_ID] = $v; $this->CurrentUserID = $v; } // Session Parent User ID function SessionParentUserID() { return strval(@$_SESSION[EW_SESSION_PARENT_USER_ID]); } function setSessionParentUserID($v) { $_SESSION[EW_SESSION_PARENT_USER_ID] = $v; $this->CurrentParentUserID = $v; } // Session User Level ID function SessionUserLevelID() { return @$_SESSION[EW_SESSION_USER_LEVEL_ID]; } function setSessionUserLevelID($v) { $_SESSION[EW_SESSION_USER_LEVEL_ID] = $v; $this->CurrentUserLevelID = $v; if (is_numeric($v) && $v >= -1) $this->UserLevelID = array($v); } // Session User Level value function SessionUserLevel() { return @$_SESSION[EW_SESSION_USER_LEVEL]; } function setSessionUserLevel($v) { $_SESSION[EW_SESSION_USER_LEVEL] = $v; $this->CurrentUserLevel = $v; } // Current user name function getCurrentUserName() { return strval(@$_SESSION[EW_SESSION_USER_NAME]); } function setCurrentUserName($v) { $_SESSION[EW_SESSION_USER_NAME] = $v; } function CurrentUserName() { return $this->getCurrentUserName(); } // Current User ID function CurrentUserID() { return $this->CurrentUserID; } // Current Parent User ID function CurrentParentUserID() { return $this->CurrentParentUserID; } // Current User Level ID function CurrentUserLevelID() { return $this->CurrentUserLevelID; } // Current User Level value function CurrentUserLevel() { return $this->CurrentUserLevel; } // Can add function CanAdd() { return (($this->CurrentUserLevel & EW_ALLOW_ADD) == EW_ALLOW_ADD); } function setCanAdd($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_ADD); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_ADD)); } } // Can delete function CanDelete() { return (($this->CurrentUserLevel & EW_ALLOW_DELETE) == EW_ALLOW_DELETE); } function setCanDelete($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_DELETE); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_DELETE)); } } // Can edit function CanEdit() { return (($this->CurrentUserLevel & EW_ALLOW_EDIT) == EW_ALLOW_EDIT); } function setCanEdit($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_EDIT); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_EDIT)); } } // Can view function CanView() { return (($this->CurrentUserLevel & EW_ALLOW_VIEW) == EW_ALLOW_VIEW); } function setCanView($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_VIEW); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_VIEW)); } } // Can list function CanList() { return (($this->CurrentUserLevel & EW_ALLOW_LIST) == EW_ALLOW_LIST); } function setCanList($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_LIST); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_LIST)); } } // Can report function CanReport() { return (($this->CurrentUserLevel & EW_ALLOW_REPORT) == EW_ALLOW_REPORT); } function setCanReport($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_REPORT); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_REPORT)); } } // Can search function CanSearch() { return (($this->CurrentUserLevel & EW_ALLOW_SEARCH) == EW_ALLOW_SEARCH); } function setCanSearch($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_SEARCH); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_SEARCH)); } } // Can admin function CanAdmin() { return (($this->CurrentUserLevel & EW_ALLOW_ADMIN) == EW_ALLOW_ADMIN); } function setCanAdmin($b) { if ($b) { $this->CurrentUserLevel = ($this->CurrentUserLevel | EW_ALLOW_ADMIN); } else { $this->CurrentUserLevel = ($this->CurrentUserLevel & (~ EW_ALLOW_ADMIN)); } } // Last URL function LastUrl() { return @$_COOKIE[EW_PROJECT_NAME]['LastUrl']; } // Save last URL function SaveLastUrl() { $s = ew_ServerVar("SCRIPT_NAME"); $q = ew_ServerVar("QUERY_STRING"); if ($q <> "") $s .= "?" . $q; if ($this->LastUrl() == $s) $s = ""; @setcookie(EW_PROJECT_NAME . '[LastUrl]', $s); } // Auto login function AutoLogin() { if (@$_COOKIE[EW_PROJECT_NAME]['AutoLogin'] == "autologin") { $usr = TEAdecrypt(@$_COOKIE[EW_PROJECT_NAME]['Username'], EW_RANDOM_KEY); $pwd = TEAdecrypt(@$_COOKIE[EW_PROJECT_NAME]['Password'], EW_RANDOM_KEY); $AutoLogin = $this->ValidateUser($usr, $pwd, TRUE); if ($AutoLogin) ew_WriteAuditTrailOnLogInOut("autologin", $GLOBALS["Language"]->Phrase("AuditTrailAutoLogin")); } else { $AutoLogin = FALSE; } return $AutoLogin; } // Validate user function ValidateUser($usr, $pwd, $autologin) { global $conn, $Language; global $CCEFacilitatorUsers; $ValidateUser = FALSE; // Check other users if (!$ValidateUser) { $sFilter = str_replace("%u", ew_AdjustSql($usr), EW_USER_NAME_FILTER); // Set up filter (SQL WHERE clause) and get return SQL // SQL constructor in <UseTable> class, <UserTable>info.php $sSql = $CCEFacilitatorUsers->GetSQL($sFilter, ""); if ($rs = $conn->Execute($sSql)) { if (!$rs->EOF) { if (EW_CASE_SENSITIVE_PASSWORD) { if (EW_MD5_PASSWORD) { $ValidateUser = ($rs->fields('Password') == md5($pwd)); } else { $ValidateUser = ($rs->fields('Password') == $pwd); } } else { if (EW_MD5_PASSWORD) { $ValidateUser = ($rs->fields('Password') == md5(strtolower($pwd))); } else { $ValidateUser = (strtolower($rs->fields('Password')) == strtolower($pwd)); } } if ($ValidateUser) { $_SESSION[EW_SESSION_STATUS] = "login"; $_SESSION[EW_SESSION_SYS_ADMIN] = 0; // Non System Administrator $this->setCurrentUserName($rs->fields('Username')); // Load user name // Call User Validated event $this->User_Validated($rs); } } $rs->Close(); } } if (!$ValidateUser) $_SESSION[EW_SESSION_STATUS] = ""; // Clear login status return $ValidateUser; } // No User Level security function SetUpUserLevel() { } // Add user permission function AddUserPermission($UserLevelName, $TableName, $UserPermission) { // Get User Level ID from user name $UserLevelID = ""; if (is_array($this->UserLevel)) { foreach ($this->UserLevel as $row) { list($levelid, $name) = $row; if (strval($UserLevelName) == strval($name)) { $UserLevelID = $levelid; break; } } } if (is_array($this->UserLevelPriv) && $UserLevelID <> "") { $cnt = count($this->UserLevelPriv); for ($i = 0; $i < $cnt; $i++) { list($table, $levelid, $priv) = $this->UserLevelPriv[$i]; if (strtolower($table) == strtolower($TableName) && strval($levelid) == strval($UserLevelID)) { $this->UserLevelPriv[$i][2] = $priv | $UserPermission; // Add permission break; } } } } // Delete user permission function DeleteUserPermission($UserLevelName, $TableName, $UserPermission) { // Get User Level ID from user name $UserLevelID = ""; if (is_array($this->UserLevel)) { foreach ($this->UserLevel as $row) { list($levelid, $name) = $row; if (strval($UserLevelName) == strval($name)) { $UserLevelID = $levelid; break; } } } if (is_array($this->UserLevelPriv) && $UserLevelID <> "") { $cnt = count($this->UserLevelPriv); for ($i = 0; $i < $cnt; $i++) { list($table, $levelid, $priv) = $this->UserLevelPriv[$i]; if (strtolower($table) == strtolower($TableName) && strval($levelid) == strval($UserLevelID)) { $this->UserLevelPriv[$i][2] = $priv & (127 - $UserPermission); // Remove permission break; } } } } // Load current User Level function LoadCurrentUserLevel($Table) { $this->LoadUserLevel(); $this->setSessionUserLevel($this->CurrentUserLevelPriv($Table)); } // Get current user privilege function CurrentUserLevelPriv($TableName) { if ($this->IsLoggedIn()) { $Priv = 0; foreach ($this->UserLevelID as $UserLevelID) $Priv |= $this->GetUserLevelPrivEx($TableName, $UserLevelID); return $Priv; } else { return 0; } } // Get User Level ID by User Level name function GetUserLevelID($UserLevelName) { if (strval($UserLevelName) == "Administrator") { return -1; } elseif ($UserLevelName <> "") { if (is_array($this->UserLevel)) { foreach ($this->UserLevel as $row) { list($levelid, $name) = $row; if (strval($name) == strval($UserLevelName)) return $levelid; } } } return -2; } // Add User Level (for use with UserLevel_Loading event) function AddUserLevel($UserLevelName) { if (strval($UserLevelName) == "") return; $UserLevelID = $this->GetUserLevelID($UserLevelName); if (!is_numeric($UserLevelID)) return; if ($UserLevelID < -1) return; if (!in_array($UserLevelID, $this->UserLevelID)) $this->UserLevelID[] = $UserLevelID; } // Delete User Level (for use with UserLevel_Loading event) function DeleteUserLevel($UserLevelName) { if (strval($UserLevelName) == "") return; $UserLevelID = $this->GetUserLevelID($UserLevelName); if (!is_numeric($UserLevelID)) return; if ($UserLevelID < -1) return; $cnt = count($this->UserLevelID); for ($i = 0; $i < $cnt; $i++) { if ($this->UserLevelID[$i] == $UserLevelID) { unset($this->UserLevelID[$i]); break; } } } // User Level list function UserLevelList() { return implode(", ", $this->UserLevelID); } // User Level name list function UserLevelNameList() { $list = ""; foreach ($this->UserLevelID as $UserLevelID) { if ($list <> "") $lList .= ", "; $list .= ew_QuotedValue($this->GetUserLevelName($UserLevelID), EW_DATATYPE_STRING); } return $list; } // Get user privilege based on table name and User Level function GetUserLevelPrivEx($TableName, $UserLevelID) { if (strval($UserLevelID) == "-1") { // System Administrator if (defined("EW_USER_LEVEL_COMPAT")) { return 31; // Use old User Level values } else { return 127; // Use new User Level values (separate View/Search) } } elseif ($UserLevelID >= 0) { if (is_array($this->UserLevelPriv)) { foreach ($this->UserLevelPriv as $row) { list($table, $levelid, $priv) = $row; if (strtolower($table) == strtolower($TableName) && strval($levelid) == strval($UserLevelID)) { if (is_null($priv) || !is_numeric($priv)) return 0; return intval($priv); } } } } return 0; } // Get current User Level name function CurrentUserLevelName() { return $this->GetUserLevelName($this->CurrentUserLevelID()); } // Get User Level name based on User Level function GetUserLevelName($UserLevelID) { if (strval($UserLevelID) == "-1") { return "Administrator"; } elseif ($UserLevelID >= 0) { if (is_array($this->UserLevel)) { foreach ($this->UserLevel as $row) { list($levelid, $name) = $row; if (strval($levelid) == strval($UserLevelID)) return $name; } } } return ""; } // Display all the User Level settings (for debug only) function ShowUserLevelInfo() { echo "<pre class=\"phpmaker\">"; print_r($this->UserLevel); print_r($this->UserLevelPriv); echo "</pre>"; echo "<p>Current User Level ID = " . $this->CurrentUserLevelID() . "</p>"; echo "<p>Current User Level ID List = " . $this->UserLevelList() . "</p>"; } // Check privilege for List page (for menu items) function AllowList($TableName) { return ($this->CurrentUserLevelPriv($TableName) & EW_ALLOW_LIST); } // Check privilege for Add page (for Allow-Add) function AllowAdd($TableName) { return ($this->CurrentUserLevelPriv($TableName) & EW_ALLOW_ADD); } // Check if user password expired function IsPasswordExpired() { return (@$_SESSION[EW_SESSION_STATUS] == "passwordexpired"); } // Check if user is logging in (after changing password) function IsLoggingIn() { return (@$_SESSION[EW_SESSION_STATUS] == "loggingin"); } // Check if user is logged in function IsLoggedIn() { return (@$_SESSION[EW_SESSION_STATUS] == "login"); } // Check if user is system administrator function IsSysAdmin() { return (@$_SESSION[EW_SESSION_SYS_ADMIN] == 1); } // Check if user is administrator function IsAdmin() { $IsAdmin = $this->IsSysAdmin(); return $IsAdmin; } // Save User Level to Session function SaveUserLevel() { $_SESSION[EW_SESSION_AR_USER_LEVEL] = $this->UserLevel; $_SESSION[EW_SESSION_AR_USER_LEVEL_PRIV] = $this->UserLevelPriv; } // Load User Level from Session function LoadUserLevel() { if (!is_array(@$_SESSION[EW_SESSION_AR_USER_LEVEL]) || !is_array(@$_SESSION[EW_SESSION_AR_USER_LEVEL_PRIV])) { $this->SetupUserLevel(); $this->SaveUserLevel(); } else { $this->UserLevel = $_SESSION[EW_SESSION_AR_USER_LEVEL]; $this->UserLevelPriv = $_SESSION[EW_SESSION_AR_USER_LEVEL_PRIV]; } } // function to get user email function CurrentUserEmail() { return $this->CurrentUserInfo("EmailAddress"); } // Get current user info function CurrentUserInfo($fieldname) { $info = NULL; return $info; } // UserID Loading event function UserID_Loading() { //echo "UserID Loading: " . $this->CurrentUserID() . "<br>"; } // UserID Loaded event function UserID_Loaded() { //echo "UserID Loaded: " . $this->UserIDList() . "<br>"; } // User Level Loaded event function UserLevel_Loaded() { //$this->AddUserPermission(<UserLevelName>, <TableName>, <UserPermission>); //$this->DeleteUserPermission(<UserLevelName>, <TableName>, <UserPermission>); } // Table Permission Loading event function TablePermission_Loading() { //echo "Table Permission Loading: " . $this->CurrentUserLevelID() . "<br>"; } // Table Permission Loaded event function TablePermission_Loaded() { //echo "Table Permission Loaded: " . $this->CurrentUserLevel() . "<br>"; } // User Validated event function User_Validated(&$rs) { // Example: //$_SESSION['UserEmail'] = $rs->fields('Email'); } // User PasswordExpired event function User_PasswordExpired(&$rs) { //echo "User_PasswordExpired"; } } ?> <?php /** * Common functions */ // Connection/Query error handler function ew_ErrorFn($DbType, $ErrorType, $ErrorNo, $ErrorMsg, $Param1, $Param2, $Object) { if ($ErrorType == 'CONNECT') { $msg = "Failed to connect to $Param2 at $Param1. Error: " . $ErrorMsg; } elseif ($ErrorType == 'EXECUTE') { if (EW_DEBUG_ENABLED) { $msg = "Failed to execute SQL: $Param1. Error: " . $ErrorMsg; } else { $msg = "Failed to execute SQL. Error: " . $ErrorMsg; } } $_SESSION[EW_SESSION_MESSAGE] = $msg; } // Connect to database function &ew_Connect() { $GLOBALS["ADODB_FETCH_MODE"] = ADODB_FETCH_BOTH; $conn = new mysqlt_driver_ADOConnection(); $conn->debug = EW_DEBUG_ENABLED; $conn->debug_echo = FALSE; $info = array("host" => EW_CONN_HOST, "port" => EW_CONN_PORT, "user" => EW_CONN_USER, "pass" => EW_CONN_PASS, "db" => EW_CONN_DB); // Database loading event Database_Connecting($info); $conn->port = intval($info["port"]); $conn->raiseErrorFn = 'ew_ErrorFn'; $conn->Connect($info["host"], $info["user"], $info["pass"], $info["db"]); if (EW_MYSQL_CHARSET <> "") $conn->Execute("SET NAMES '" . EW_MYSQL_CHARSET . "'"); $conn->raiseErrorFn = ''; return $conn; } // Database Connecting event function Database_Connecting(&$info) { // Example: //var_dump($info); //if (ew_CurrentUserIP() == "127.0.0.1") { // testing on local PC // $info["host"] = "locahost"; // $info["user"] = "root"; // $info["pass"] = ""; //} } // Check if HTTP POST function ew_IsHttpPost() { $ct = ew_ServerVar("CONTENT_TYPE"); if (empty($ct)) $ct = ew_ServerVar("HTTP_CONTENT_TYPE"); return ($ct == "application/x-www-form-urlencoded"); } // Get script name function ew_ScriptName() { $sn = ew_ServerVar("PHP_SELF"); if (empty($sn)) $sn = ew_ServerVar("SCRIPT_NAME"); if (empty($sn)) $sn = ew_ServerVar("ORIG_PATH_INFO"); if (empty($sn)) $sn = ew_ServerVar("ORIG_SCRIPT_NAME"); if (empty($sn)) $sn = ew_ServerVar("REQUEST_URI"); if (empty($sn)) $sn = ew_ServerVar("URL"); if (empty($sn)) $sn = "UNKNOWN"; return $sn; } // Return multi-value search SQL function ew_GetMultiSearchSql(&$Fld, $FldVal) { $sWrk = ""; $arVal = explode(",", $FldVal); foreach ($arVal as $sVal) { $sVal = trim($sVal); if (EW_IS_MYSQL) { $sSql = "FIND_IN_SET('" . ew_AdjustSql($sVal) . "', " . $Fld->FldExpression . ")"; } else { if (count($arVal) == 1 || EW_SEARCH_MULTI_VALUE_OPTION == 3) { $sSql = $Fld->FldExpression . " = '" . ew_AdjustSql($sVal) . "' OR " . ew_GetMultiSearchSqlPart($Fld, $sVal); } else { $sSql = ew_GetMultiSearchSqlPart($Fld, $sVal); } } if ($sWrk <> "") { if (EW_SEARCH_MULTI_VALUE_OPTION == 2) { $sWrk .= " AND "; } elseif (EW_SEARCH_MULTI_VALUE_OPTION == 3) { $sWrk .= " OR "; } } $sWrk .= "($sSql)"; } return $sWrk; } // Get multi search SQL part function ew_GetMultiSearchSqlPart(&$Fld, $FldVal) { return $Fld->FldExpression . " LIKE '" . ew_AdjustSql($FldVal) . ",%' OR " . $Fld->FldExpression . " LIKE '%," . $FldVal . ",%' OR " . $Fld->FldExpression . " LIKE '%," . $FldVal . "'"; } // Get search SQL function ew_GetSearchSql(&$Fld, $FldVal, $FldOpr, $FldCond, $FldVal2, $FldOpr2) { $sSql = ""; $sFldExpression = ($Fld->FldVirtualExpression <> "") ? $Fld->FldVirtualExpression : $Fld->FldExpression; $FldDataType = $Fld->FldDataType; if ($Fld->FldIsVirtual) $FldDataType = EW_DATATYPE_STRING; if ($FldOpr == "BETWEEN") { $IsValidValue = ($FldDataType <> EW_DATATYPE_NUMBER) || ($FldDataType == EW_DATATYPE_NUMBER && is_numeric($FldVal) && is_numeric($FldVal2)); if ($FldVal <> "" && $FldVal2 <> "" && $IsValidValue) $sSql = $sFldExpression . " BETWEEN " . ew_QuotedValue($FldVal, $FldDataType) . " AND " . ew_QuotedValue($FldVal2, $FldDataType); } elseif ($FldOpr == "IS NULL" || $FldOpr == "IS NOT NULL") { $sSql = $sFldExpression . " " . $FldOpr; } else { $IsValidValue = ($FldDataType <> EW_DATATYPE_NUMBER) || ($FldDataType == EW_DATATYPE_NUMBER && is_numeric($FldVal)); if ($FldVal <> "" && $IsValidValue && ew_IsValidOpr($FldOpr, $FldDataType)) $sSql = $sFldExpression . ew_SearchString($FldOpr, $FldVal, $FldDataType); $IsValidValue = ($FldDataType <> EW_DATATYPE_NUMBER) || ($FldDataType == EW_DATATYPE_NUMBER && is_numeric($FldVal2)); if ($FldVal2 <> "" && $IsValidValue && ew_IsValidOpr($FldOpr2, $FldDataType)) { if ($sSql <> "") $sSql .= " " . (($FldCond == "OR") ? "OR" : "AND") . " "; $sSql = "(" . $sSql . $sFldExpression . ew_SearchString($FldOpr2, $FldVal2, $FldDataType) . ")"; } } return $sSql; } // Return search string function ew_SearchString($FldOpr, $FldVal, $FldType) { if ($FldOpr == "LIKE" || $FldOpr == "NOT LIKE") { return " $FldOpr " . ew_QuotedValue("%$FldVal%", $FldType); } elseif ($FldOpr == "STARTS WITH") { return " LIKE " . ew_QuotedValue("$FldVal%", $FldType); } else { return " $FldOpr " . ew_QuotedValue($FldVal, $FldType); } } // Check if valid operator function ew_IsValidOpr($Opr, $FldType) { $Valid = ($Opr == "=" || $Opr == "<" || $Opr == "<=" || $Opr == ">" || $Opr == ">=" || $Opr == "<>"); if ($FldType == EW_DATATYPE_STRING || $FldType == EW_DATATYPE_MEMO || $FldType == EW_DATATYPE_XML) $Valid = ($Valid || $Opr == "LIKE" || $Opr == "NOT LIKE" || $Opr == "STARTS WITH"); return $Valid; } // Quote table/field name function ew_QuotedName($Name) { $Name = str_replace(EW_DB_QUOTE_END, EW_DB_QUOTE_END . EW_DB_QUOTE_END, $Name); return EW_DB_QUOTE_START . $Name . EW_DB_QUOTE_END; } // Quote field value function ew_QuotedValue($Value, $FldType) { if (is_null($Value)) return "NULL"; switch ($FldType) { case EW_DATATYPE_STRING: case EW_DATATYPE_MEMO: case EW_DATATYPE_TIME: if (EW_REMOVE_XSS) { return "'" . ew_AdjustSql(ew_RemoveXSS($Value)) . "'"; } else { return "'" . ew_AdjustSql($Value) . "'"; } case EW_DATATYPE_XML: return "'" . ew_AdjustSql($Value) . "'"; case EW_DATATYPE_BLOB: return "'" . ew_AdjustSql($Value) . "'"; case EW_DATATYPE_DATE: return "'" . ew_AdjustSql($Value) . "'"; case EW_DATATYPE_GUID: return "'" . $Value . "'"; case EW_DATATYPE_BOOLEAN: return "'" . $Value . "'"; // 'Y'|'N' or 'y'|'n' or '1'|'0' or 't'|'f' default: return $Value; } } // Convert different data type value function ew_Conv($v, $t) { switch ($t) { case 2: case 3: case 16: case 17: case 18: case 19: // adSmallInt/adInteger/adTinyInt/adUnsignedTinyInt/adUnsignedSmallInt return (is_null($v)) ? NULL : intval($v); case 4: Case 5: case 6: case 131: case 139: // adSingle/adDouble/adCurrency/adNumeric/adVarNumeric return (is_null($v)) ? NULL : (float) $v; default: return (is_null($v)) ? NULL : $v; } } // Convert string to float function ew_StrToFloat($v) { $v = str_replace(" ", "", $v); if (!EW_USE_DEFAULT_LOCALE) extract(localeconv()); // PHP 4 >= 4.0.5 if (empty($decimal_point)) $decimal_point = DEFAULT_DECIMAL_POINT; $v = str_replace($decimal_point, ".", $v); return $v; } // Write message to debug file function ew_Trace($msg) { $filename = "debug.txt"; if (!$handle = fopen($filename, 'a')) exit; if (is_writable($filename)) fwrite($handle, $msg . "\n"); fclose($handle); } // Compare values with special handling for null values function ew_CompareValue($v1, $v2) { if (is_null($v1) && is_null($v2)) { return TRUE; } elseif (is_null($v1) || is_null($v2)) { return FALSE; // } elseif (is_float($v1) || is_float($v2)) { // return (float)$v1 == (float)$v2; } else { return ($v1 == $v2); } } // Check if boolean value is TRUE function ew_ConvertToBool($value) { return ($value === TRUE || strval($value) == "1" || strtolower(strval($value)) == "y" || strtolower(strval($value)) == "t"); } // Strip slashes function ew_StripSlashes($value) { if (!get_magic_quotes_gpc()) return $value; if (is_array($value)) { return array_map('ew_StripSlashes', $value); } else { return stripslashes($value); } } // Add slashes for SQL function ew_AdjustSql($val) { $val = addslashes(trim($val)); return $val; } // Build SELECT SQL based on different sql part function ew_BuildSelectSql($sSelect, $sWhere, $sGroupBy, $sHaving, $sOrderBy, $sFilter, $sSort) { $sDbWhere = $sWhere; if ($sDbWhere <> "") { if ($sFilter <> "") $sDbWhere = "(" . $sDbWhere . ") AND (" . $sFilter . ")"; } else { $sDbWhere = $sFilter; } $sDbOrderBy = $sOrderBy; if ($sSort <> "") $sDbOrderBy = $sSort; $sSql = $sSelect; if ($sDbWhere <> "") $sSql .= " WHERE " . $sDbWhere; if ($sGroupBy <> "") $sSql .= " GROUP BY " . $sGroupBy; if ($sHaving <> "") $sSql .= " HAVING " . $sHaving; if ($sDbOrderBy <> "") $sSql .= " ORDER BY " . $sDbOrderBy; return $sSql; } // Load recordset function &ew_LoadRecordset($SQL) { global $conn; $conn->raiseErrorFn = 'ew_ErrorFn'; $rs = $conn->Execute($SQL); $conn->raiseErrorFn = ''; return $rs; } // Executes the query, and returns the first column of the first row function ew_ExecuteScalar($SQL) { $res = FALSE; $rs = ew_LoadRecordset($SQL); if ($rs && !$rs->EOF && $rs->FieldCount() > 0) { $res = $rs->fields[0]; $rs->Close(); } return $res; } // Executes the query, and returns the first row function ew_ExecuteRow($SQL) { $res = FALSE; $rs = ew_LoadRecordset($SQL); if ($rs && !$rs->EOF) { $res = $rs->fields; $rs->Close(); } return $res; } // Write audit trail (login/logout) function ew_WriteAuditTrailOnLogInOut($usr, $logtype) { ew_WriteAuditTrail("log", ew_StdCurrentDateTime(), ew_ScriptName(), $usr, $logtype, ew_CurrentUserIP(), "", "", "", ""); } // Write audit trail function ew_WriteAuditTrail($pfx, $dt, $script, $usr, $action, $table, $field, $keyvalue, $oldvalue, $newvalue) { $usrwrk = $usr; if ($usrwrk == "") $usrwrk = "-1"; // Assume Administrator if no user if (EW_AUDIT_TRAIL_TO_DATABASE) { global $conn; $sAuditSql = "INSERT INTO " . ew_QuotedName(EW_AUDIT_TRAIL_TABLE_NAME) . " (" . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_DATETIME) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_SCRIPT) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_USER) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_ACTION) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_TABLE) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_FIELD) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_KEYVALUE) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_OLDVALUE) . ", " . ew_QuotedName(EW_AUDIT_TRAIL_FIELD_NAME_NEWVALUE) . ") VALUES (" . ew_QuotedValue($dt, EW_DATATYPE_DATE) . ", " . ew_QuotedValue($script, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($usrwrk, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($action, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($table, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($field, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($keyvalue, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($oldvalue, EW_DATATYPE_STRING) . ", " . ew_QuotedValue($newvalue, EW_DATATYPE_STRING) . ")"; $conn->Execute($sAuditSql); } else { $sTab = "\t"; $sHeader = "date/time" . $sTab . "script" . $sTab . "user" . $sTab . "action" . $sTab . "table" . $sTab . "field" . $sTab . "key value" . $sTab . "old value" . $sTab . "new value"; $sMsg = $dt . $sTab . $script . $sTab . $usrwrk . $sTab . $action . $sTab . $table . $sTab . $field . $sTab . $keyvalue . $sTab . $oldvalue . $sTab . $newvalue; $sFolder = EW_AUDIT_TRAIL_PATH; $sFn = $pfx . "_" . date("Ymd") . ".txt"; $sPath = ew_UploadPathEx(TRUE, $sFolder); if ($sFolder !== "" && !is_dir($sPath)) { @mkdir($sPath, 0775, true); } $filename = $sPath . $sFn; $fileHandler = @fopen($filename, "a+b"); if ($fileHandler === false) { return; } if (filesize($filename) === 0) { fwrite($fileHandler, $sHeader . "\r\n"); } fwrite($fileHandler, $sMsg . "\r\n"); fclose($fileHandler); } } // Unformat date time based on format type function ew_UnFormatDateTime($dt, $namedformat) { $dt = trim($dt); while (strpos($dt, " ") !== FALSE) $dt = str_replace(" ", " ", $dt); $arDateTime = explode(" ", $dt); if (count($arDateTime) == 0) return $dt; if ($namedformat == 0 || $namedformat == 1 || $namedformat == 2 || $namedformat == 8) { $arDefFmt = explode(EW_DATE_SEPARATOR, EW_DEFAULT_DATE_FORMAT); if ($arDefFmt[0] == "yyyy") { $namedformat = 9; } elseif ($arDefFmt[0] == "mm") { $namedformat = 10; } elseif ($arDefFmt[0] == "dd") { $namedformat = 11; } } $arDatePt = explode(EW_DATE_SEPARATOR, $arDateTime[0]); if (count($arDatePt) == 3) { switch ($namedformat) { case 5: case 9: //yyyymmdd if (ew_CheckDate($arDateTime[0])) { list($year, $month, $day) = $arDatePt; break; } else { return $dt; } case 6: case 10: //mmddyyyy if (ew_CheckUSDate($arDateTime[0])) { list($month, $day, $year) = $arDatePt; break; } else { return $dt; } case 7: case 11: //ddmmyyyy if (ew_CheckEuroDate($arDateTime[0])) { list($day, $month, $year) = $arDatePt; break; } else { return $dt; } default: return $dt; } return $year . "-" . str_pad($month, 2, "0", STR_PAD_LEFT) . "-" . str_pad($day, 2, "0", STR_PAD_LEFT) . ((count($arDateTime) > 1) ? " " . $arDateTime[1] : ""); } else { return $dt; } } // Format a timestamp, datetime, date or time field from MySQL // $namedformat: // 0 - General Date // 1 - Long Date // 2 - Short Date (Default) // 3 - Long Time // 4 - Short Time (hh:mm:ss) // 5 - Short Date (yyyy/mm/dd) // 6 - Short Date (mm/dd/yyyy) // 7 - Short Date (dd/mm/yyyy) // 8 - Short Date (Default) + Short Time (if not 00:00:00) // 9 - Short Date (yyyy/mm/dd) + Short Time (hh:mm:ss) // 10 - Short Date (mm/dd/yyyy) + Short Time (hh:mm:ss) // 11 - Short Date (dd/mm/yyyy) + Short Time (hh:mm:ss) function ew_FormatDateTime($ts, $namedformat) { $DefDateFormat = str_replace("yyyy", "%Y", EW_DEFAULT_DATE_FORMAT); $DefDateFormat = str_replace("mm", "%m", $DefDateFormat); $DefDateFormat = str_replace("dd", "%d", $DefDateFormat); if (is_numeric($ts)) { // timestamp switch (strlen($ts)) { case 14: $patt = '/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/'; break; case 12: $patt = '/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/'; break; case 10: $patt = '/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/'; break; case 8: $patt = '/(\d{4})(\d{2})(\d{2})/'; break; case 6: $patt = '/(\d{2})(\d{2})(\d{2})/'; break; case 4: $patt = '/(\d{2})(\d{2})/'; break; case 2: $patt = '/(\d{2})/'; break; default: return $ts; } if ((isset($patt)) && (preg_match($patt, $ts, $matches))) { $year = $matches[1]; $month = @$matches[2]; $day = @$matches[3]; $hour = @$matches[4]; $min = @$matches[5]; $sec = @$matches[6]; } if (($namedformat == 0) && (strlen($ts) < 10)) $namedformat = 2; } elseif (is_string($ts)) { if (preg_match('/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/', $ts, $matches)) { // datetime $year = $matches[1]; $month = $matches[2]; $day = $matches[3]; $hour = $matches[4]; $min = $matches[5]; $sec = $matches[6]; } elseif (preg_match('/(\d{4})-(\d{2})-(\d{2})/', $ts, $matches)) { // date $year = $matches[1]; $month = $matches[2]; $day = $matches[3]; if ($namedformat == 0) $namedformat = 2; } elseif (preg_match('/(^|\s)(\d{2}):(\d{2}):(\d{2})/', $ts, $matches)) { // time $hour = $matches[2]; $min = $matches[3]; $sec = $matches[4]; if (($namedformat == 0) || ($namedformat == 1)) $namedformat = 3; if ($namedformat == 2) $namedformat = 4; } else { return $ts; } } else { return $ts; } if (!isset($year)) $year = 0; // dummy value for times if (!isset($month)) $month = 1; if (!isset($day)) $day = 1; if (!isset($hour)) $hour = 0; if (!isset($min)) $min = 0; if (!isset($sec)) $sec = 0; $uts = @mktime($hour, $min, $sec, $month, $day, $year); if ($uts < 0 || $uts == FALSE || // failed to convert (intval($year) == 0 && intval($month) == 0 && intval($day) == 0)) { $year = substr_replace("0000", $year, -1 * strlen($year)); $month = substr_replace("00", $month, -1 * strlen($month)); $day = substr_replace("00", $day, -1 * strlen($day)); $hour = substr_replace("00", $hour, -1 * strlen($hour)); $min = substr_replace("00", $min, -1 * strlen($min)); $sec = substr_replace("00", $sec, -1 * strlen($sec)); $DefDateFormat = str_replace("yyyy", $year, EW_DEFAULT_DATE_FORMAT); $DefDateFormat = str_replace("mm", $month, $DefDateFormat); $DefDateFormat = str_replace("dd", $day, $DefDateFormat); switch ($namedformat) { case 0: return $DefDateFormat . " $hour:$min:$sec"; break; case 1://unsupported, return general date return $DefDateFormat . " $hour:$min:$sec"; break; case 2: return $DefDateFormat; break; case 3: if (intval($hour) == 0) return "12:$min:$sec AM"; elseif (intval($hour) > 0 && intval($hour) < 12) return "$hour:$min:$sec AM"; elseif (intval($hour) == 12) return "$hour:$min:$sec PM"; elseif (intval($hour) > 12 && intval($hour) <= 23) return (intval($hour) - 12) . ":$min:$sec PM"; else return "$hour:$min:$sec"; break; case 4: return "$hour:$min:$sec"; break; case 5: return "$year" . EW_DATE_SEPARATOR . "$month" . EW_DATE_SEPARATOR . "$day"; break; case 6: return "$month" . EW_DATE_SEPARATOR . "$day" . EW_DATE_SEPARATOR . "$year"; break; case 7: return "$day" . EW_DATE_SEPARATOR . "$month" . EW_DATE_SEPARATOR . "$year"; break; case 8: return $DefDateFormat . (($hour == 0 && $min == 0 && $sec == 0) ? "" : " $hour:$min:$sec"); break; case 9: return "$year" . EW_DATE_SEPARATOR . "$month" . EW_DATE_SEPARATOR . "$day $hour:$min:$sec"; break; case 10: return "$month" . EW_DATE_SEPARATOR . "$day" . EW_DATE_SEPARATOR . "$year $hour:$min:$sec"; break; case 11: return "$day" . EW_DATE_SEPARATOR . "$month" . EW_DATE_SEPARATOR . "$year $hour:$min:$sec"; break; } } else { switch ($namedformat) { case 0: return strftime($DefDateFormat . " %H:%M:%S", $uts); break; case 1: return strftime("%A, %B %d, %Y", $uts); break; case 2: return strftime($DefDateFormat, $uts); break; case 3: return strftime("%I:%M:%S %p", $uts); break; case 4: return strftime("%H:%M:%S", $uts); break; case 5: return strftime("%Y" . EW_DATE_SEPARATOR . "%m" . EW_DATE_SEPARATOR . "%d", $uts); break; case 6: return strftime("%m" . EW_DATE_SEPARATOR . "%d" . EW_DATE_SEPARATOR . "%Y", $uts); break; case 7: return strftime("%d" . EW_DATE_SEPARATOR . "%m" . EW_DATE_SEPARATOR . "%Y", $uts); break; case 8: return strftime($DefDateFormat . (($hour == 0 && $min == 0 && $sec == 0) ? "" : " %H:%M:%S"), $uts); break; case 9: return strftime("%Y" . EW_DATE_SEPARATOR . "%m" . EW_DATE_SEPARATOR . "%d %H:%M:%S", $uts); break; case 10: return strftime("%m" . EW_DATE_SEPARATOR . "%d" . EW_DATE_SEPARATOR . "%Y %H:%M:%S", $uts); break; case 11: return strftime("%d" . EW_DATE_SEPARATOR . "%m" . EW_DATE_SEPARATOR . "%Y %H:%M:%S", $uts); break; } } } // Format currency // Arguments: Expression [,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]]) // NumDigitsAfterDecimal is the numeric value indicating how many places to the // right of the decimal are displayed // -1 Use Default // The IncludeLeadingDigit, UseParensForNegativeNumbers, and GroupDigits // arguments have the following settings: // -1 True // 0 False // -2 Use Default function ew_FormatCurrency($amount, $NumDigitsAfterDecimal, $IncludeLeadingDigit = -2, $UseParensForNegativeNumbers = -2, $GroupDigits = -2) { // export the values returned by localeconv into the local scope if (!EW_USE_DEFAULT_LOCALE) extract(localeconv()); // PHP 4 >= 4.0.5 // set defaults if locale is not set if (empty($decimal_point)) $decimal_point = DEFAULT_DECIMAL_POINT; if (empty($thousands_sep)) $thousands_sep = DEFAULT_THOUSANDS_SEP; if (empty($currency_symbol)) $currency_symbol = DEFAULT_CURRENCY_SYMBOL; if (empty($mon_decimal_point)) $mon_decimal_point = DEFAULT_MON_DECIMAL_POINT; if (empty($mon_thousands_sep)) $mon_thousands_sep = DEFAULT_MON_THOUSANDS_SEP; if (empty($positive_sign)) $positive_sign = DEFAULT_POSITIVE_SIGN; if (empty($negative_sign)) $negative_sign = DEFAULT_NEGATIVE_SIGN; if (empty($frac_digits) || $frac_digits == CHAR_MAX) $frac_digits = DEFAULT_FRAC_DIGITS; if (empty($p_cs_precedes) || $p_cs_precedes == CHAR_MAX) $p_cs_precedes = DEFAULT_P_CS_PRECEDES; if (empty($p_sep_by_space) || $p_sep_by_space == CHAR_MAX) $p_sep_by_space = DEFAULT_P_SEP_BY_SPACE; if (empty($n_cs_precedes) || $n_cs_precedes == CHAR_MAX) $n_cs_precedes = DEFAULT_N_CS_PRECEDES; if (empty($n_sep_by_space) || $n_sep_by_space == CHAR_MAX) $n_sep_by_space = DEFAULT_N_SEP_BY_SPACE; if (empty($p_sign_posn) || $p_sign_posn == CHAR_MAX) $p_sign_posn = DEFAULT_P_SIGN_POSN; if (empty($n_sign_posn) || $n_sign_posn == CHAR_MAX) $n_sign_posn = DEFAULT_N_SIGN_POSN; // check $NumDigitsAfterDecimal if ($NumDigitsAfterDecimal > -1) $frac_digits = $NumDigitsAfterDecimal; // check $UseParensForNegativeNumbers if ($UseParensForNegativeNumbers == -1) { $n_sign_posn = 0; if ($p_sign_posn == 0) { if (DEFAULT_P_SIGN_POSN != 0) $p_sign_posn = DEFAULT_P_SIGN_POSN; else $p_sign_posn = 3; } } elseif ($UseParensForNegativeNumbers == 0) { if ($n_sign_posn == 0) if (DEFAULT_P_SIGN_POSN != 0) $n_sign_posn = DEFAULT_P_SIGN_POSN; else $n_sign_posn = 3; } // check $GroupDigits if ($GroupDigits == -1) { $mon_thousands_sep = DEFAULT_MON_THOUSANDS_SEP; } elseif ($GroupDigits == 0) { $mon_thousands_sep = ""; } // start by formatting the unsigned number $number = number_format(abs($amount), $frac_digits, $mon_decimal_point, $mon_thousands_sep); // check $IncludeLeadingDigit if ($IncludeLeadingDigit == 0) { if (substr($number, 0, 2) == "0.") $number = substr($number, 1, strlen($number) - 1); } if ($amount < 0) { $sign = $negative_sign; // "extracts" the boolean value as an integer $n_cs_precedes = intval($n_cs_precedes == true); $n_sep_by_space = intval($n_sep_by_space == true); $key = $n_cs_precedes . $n_sep_by_space . $n_sign_posn; } else { $sign = $positive_sign; $p_cs_precedes = intval($p_cs_precedes == true); $p_sep_by_space = intval($p_sep_by_space == true); $key = $p_cs_precedes . $p_sep_by_space . $p_sign_posn; } $formats = array( // currency symbol is after amount // no space between amount and sign '000' => '(%s' . $currency_symbol . ')', '001' => $sign . '%s ' . $currency_symbol, '002' => '%s' . $currency_symbol . $sign, '003' => '%s' . $sign . $currency_symbol, '004' => '%s' . $sign . $currency_symbol, // one space between amount and sign '010' => '(%s ' . $currency_symbol . ')', '011' => $sign . '%s ' . $currency_symbol, '012' => '%s ' . $currency_symbol . $sign, '013' => '%s ' . $sign . $currency_symbol, '014' => '%s ' . $sign . $currency_symbol, // currency symbol is before amount // no space between amount and sign '100' => '(' . $currency_symbol . '%s)', '101' => $sign . $currency_symbol . '%s', '102' => $currency_symbol . '%s' . $sign, '103' => $sign . $currency_symbol . '%s', '104' => $currency_symbol . $sign . '%s', // one space between amount and sign '110' => '(' . $currency_symbol . ' %s)', '111' => $sign . $currency_symbol . ' %s', '112' => $currency_symbol . ' %s' . $sign, '113' => $sign . $currency_symbol . ' %s', '114' => $currency_symbol . ' ' . $sign . '%s'); // lookup the key in the above array return sprintf($formats[$key], $number); } // Format number // Arguments: Expression [,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]]) // NumDigitsAfterDecimal is the numeric value indicating how many places to the // right of the decimal are displayed // -1 Use Default // The IncludeLeadingDigit, UseParensForNegativeNumbers, and GroupDigits // arguments have the following settings: // -1 True // 0 False // -2 Use Default function ew_FormatNumber($amount, $NumDigitsAfterDecimal, $IncludeLeadingDigit = -2, $UseParensForNegativeNumbers = -2, $GroupDigits = -2) { // export the values returned by localeconv into the local scope if (!EW_USE_DEFAULT_LOCALE) extract(localeconv()); // PHP 4 >= 4.0.5 // set defaults if locale is not set if (empty($decimal_point)) $decimal_point = DEFAULT_DECIMAL_POINT; if (empty($thousands_sep)) $thousands_sep = DEFAULT_THOUSANDS_SEP; if (empty($currency_symbol)) $currency_symbol = DEFAULT_CURRENCY_SYMBOL; if (empty($mon_decimal_point)) $mon_decimal_point = DEFAULT_MON_DECIMAL_POINT; if (empty($mon_thousands_sep)) $mon_thousands_sep = DEFAULT_MON_THOUSANDS_SEP; if (empty($positive_sign)) $positive_sign = DEFAULT_POSITIVE_SIGN; if (empty($negative_sign)) $negative_sign = DEFAULT_NEGATIVE_SIGN; if (empty($frac_digits) || $frac_digits == CHAR_MAX) $frac_digits = DEFAULT_FRAC_DIGITS; if (empty($p_cs_precedes) || $p_cs_precedes == CHAR_MAX) $p_cs_precedes = DEFAULT_P_CS_PRECEDES; if (empty($p_sep_by_space) || $p_sep_by_space == CHAR_MAX) $p_sep_by_space = DEFAULT_P_SEP_BY_SPACE; if (empty($n_cs_precedes) || $n_cs_precedes == CHAR_MAX) $n_cs_precedes = DEFAULT_N_CS_PRECEDES; if (empty($n_sep_by_space) || $n_sep_by_space == CHAR_MAX) $n_sep_by_space = DEFAULT_N_SEP_BY_SPACE; if (empty($p_sign_posn) || $p_sign_posn == CHAR_MAX) $p_sign_posn = DEFAULT_P_SIGN_POSN; if (empty($n_sign_posn) || $n_sign_posn == CHAR_MAX) $n_sign_posn = DEFAULT_N_SIGN_POSN; // check $NumDigitsAfterDecimal if ($NumDigitsAfterDecimal > -1) $frac_digits = $NumDigitsAfterDecimal; // check $UseParensForNegativeNumbers if ($UseParensForNegativeNumbers == -1) { $n_sign_posn = 0; if ($p_sign_posn == 0) { if (DEFAULT_P_SIGN_POSN != 0) $p_sign_posn = DEFAULT_P_SIGN_POSN; else $p_sign_posn = 3; } } elseif ($UseParensForNegativeNumbers == 0) { if ($n_sign_posn == 0) if (DEFAULT_P_SIGN_POSN != 0) $n_sign_posn = DEFAULT_P_SIGN_POSN; else $n_sign_posn = 3; } // check $GroupDigits if ($GroupDigits == -1) { $thousands_sep = DEFAULT_THOUSANDS_SEP; } elseif ($GroupDigits == 0) { $thousands_sep = ""; } // start by formatting the unsigned number $number = number_format(abs($amount), $frac_digits, $decimal_point, $thousands_sep); // check $IncludeLeadingDigit if ($IncludeLeadingDigit == 0) { if (substr($number, 0, 2) == "0.") $number = substr($number, 1, strlen($number) - 1); } if ($amount < 0) { $sign = $negative_sign; $key = $n_sign_posn; } else { $sign = $positive_sign; $key = $p_sign_posn; } $formats = array( '0' => '(%s)', '1' => $sign . '%s', '2' => $sign . '%s', '3' => $sign . '%s', '4' => $sign . '%s'); // lookup the key in the above array return sprintf($formats[$key], $number); } // Format percent // Arguments: Expression [,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]]) // NumDigitsAfterDecimal is the numeric value indicating how many places to the // right of the decimal are displayed // -1 Use Default // The IncludeLeadingDigit, UseParensForNegativeNumbers, and GroupDigits // arguments have the following settings: // -1 True // 0 False // -2 Use Default function ew_FormatPercent($amount, $NumDigitsAfterDecimal, $IncludeLeadingDigit = -2, $UseParensForNegativeNumbers = -2, $GroupDigits = -2) { // export the values returned by localeconv into the local scope if (!EW_USE_DEFAULT_LOCALE) extract(localeconv()); // PHP 4 >= 4.0.5 // set defaults if locale is not set if (empty($decimal_point)) $decimal_point = DEFAULT_DECIMAL_POINT; if (empty($thousands_sep)) $thousands_sep = DEFAULT_THOUSANDS_SEP; if (empty($currency_symbol)) $currency_symbol = DEFAULT_CURRENCY_SYMBOL; if (empty($mon_decimal_point)) $mon_decimal_point = DEFAULT_MON_DECIMAL_POINT; if (empty($mon_thousands_sep)) $mon_thousands_sep = DEFAULT_MON_THOUSANDS_SEP; if (empty($positive_sign)) $positive_sign = DEFAULT_POSITIVE_SIGN; if (empty($negative_sign)) $negative_sign = DEFAULT_NEGATIVE_SIGN; if (empty($frac_digits) || $frac_digits == CHAR_MAX) $frac_digits = DEFAULT_FRAC_DIGITS; if (empty($p_cs_precedes) || $p_cs_precedes == CHAR_MAX) $p_cs_precedes = DEFAULT_P_CS_PRECEDES; if (empty($p_sep_by_space) || $p_sep_by_space == CHAR_MAX) $p_sep_by_space = DEFAULT_P_SEP_BY_SPACE; if (empty($n_cs_precedes) || $n_cs_precedes == CHAR_MAX) $n_cs_precedes = DEFAULT_N_CS_PRECEDES; if (empty($n_sep_by_space) || $n_sep_by_space == CHAR_MAX) $n_sep_by_space = DEFAULT_N_SEP_BY_SPACE; if (empty($p_sign_posn) || $p_sign_posn == CHAR_MAX) $p_sign_posn = DEFAULT_P_SIGN_POSN; if (empty($n_sign_posn) || $n_sign_posn == CHAR_MAX) $n_sign_posn = DEFAULT_N_SIGN_POSN; // check $NumDigitsAfterDecimal if ($NumDigitsAfterDecimal > -1) $frac_digits = $NumDigitsAfterDecimal; // check $UseParensForNegativeNumbers if ($UseParensForNegativeNumbers == -1) { $n_sign_posn = 0; if ($p_sign_posn == 0) { if (DEFAULT_P_SIGN_POSN != 0) $p_sign_posn = DEFAULT_P_SIGN_POSN; else $p_sign_posn = 3; } } elseif ($UseParensForNegativeNumbers == 0) { if ($n_sign_posn == 0) if (DEFAULT_P_SIGN_POSN != 0) $n_sign_posn = DEFAULT_P_SIGN_POSN; else $n_sign_posn = 3; } // check $GroupDigits if ($GroupDigits == -1) { $thousands_sep = DEFAULT_THOUSANDS_SEP; } elseif ($GroupDigits == 0) { $thousands_sep = ""; } // start by formatting the unsigned number $number = number_format(abs($amount) * 100, $frac_digits, $decimal_point, $thousands_sep); // check $IncludeLeadingDigit if ($IncludeLeadingDigit == 0) { if (substr($number, 0, 2) == "0.") $number = substr($number, 1, strlen($number) - 1); } if ($amount < 0) { $sign = $negative_sign; $key = $n_sign_posn; } else { $sign = $positive_sign; $key = $p_sign_posn; } $formats = array( '0' => '(%s%%)', '1' => $sign . '%s%%', '2' => $sign . '%s%%', '3' => $sign . '%s%%', '4' => $sign . '%s%%'); // lookup the key in the above array return sprintf($formats[$key], $number); } // Encode html function ew_HtmlEncode($exp) { return htmlspecialchars(strval($exp)); } // Encode value for single-quoted JavaScript string function ew_JsEncode($val) { $val = str_replace("\\", "\\\\", strval($val)); $val = str_replace("'", "\\'", $val); $val = str_replace("\r\n", "<br>", $val); $val = str_replace("\r", "<br>", $val); $val = str_replace("\n", "<br>", $val); return $val; } // Generate Value Separator based on current row count // rowcnt - zero based row count function ew_ValueSeparator($rowcnt) { return ", "; } // Generate View Option Separator based on current row count (Multi-Select / CheckBox) // rowcnt - zero based row count function ew_ViewOptionSeparator($rowcnt) { $sep = ", "; // Sample code to adjust 2 options per row //if (($rowcnt + 1) % 2 == 0) { // 2 options per row //return $sep += "<br>"; //} return $sep; } // Move uploaded file function ew_MoveUploadFile($srcfile, $destfile) { $res = move_uploaded_file($srcfile, $destfile); if ($res) chmod($destfile, EW_UPLOADED_FILE_MODE); return $res; } // Render repeat column table // $rowcnt - zero based row count function ew_RepeatColumnTable($totcnt, $rowcnt, $repeatcnt, $rendertype) { $sWrk = ""; if ($rendertype == 1) { // Render control start if ($rowcnt == 0) $sWrk .= "<table class=\"" . EW_ITEM_TABLE_CLASSNAME . "\">"; if ($rowcnt % $repeatcnt == 0) $sWrk .= "<tr>"; $sWrk .= "<td>"; } elseif ($rendertype == 2) { // Render control end $sWrk .= "</td>"; if ($rowcnt % $repeatcnt == $repeatcnt - 1) { $sWrk .= "</tr>"; } elseif ($rowcnt == $totcnt - 1) { for ($i = ($rowcnt % $repeatcnt) + 1; $i < $repeatcnt; $i++) { $sWrk .= "<td> </td>"; } $sWrk .= "</tr>"; } if ($rowcnt == $totcnt - 1) $sWrk .= "</table>"; } return $sWrk; } // Truncate Memo Field based on specified length, string truncated to nearest space or CrLf function ew_TruncateMemo($memostr, $ln, $removehtml) { $str = ($removehtml) ? ew_RemoveHtml($memostr) : $memostr; if (strlen($str) > 0 && strlen($str) > $ln) { $k = 0; while ($k >= 0 && $k < strlen($str)) { $i = strpos($str, " ", $k); $j = strpos($str, chr(10), $k); if ($i === FALSE && $j === FALSE) { // Not able to truncate return $str; } else { // Get nearest space or CrLf if ($i > 0 && $j > 0) { if ($i < $j) { $k = $i; } else { $k = $j; } } elseif ($i > 0) { $k = $i; } elseif ($j > 0) { $k = $j; } // Get truncated text if ($k >= $ln) { return substr($str, 0, $k) . "..."; } else { $k++; } } } } else { return $str; } } // Remove HTML tags from text function ew_RemoveHtml($str) { return preg_replace('/<[^>]*>/', '', strval($str)); } // Send notify email function ew_SendNotifyEmail($sFn, $sSubject, $sTable, $sKey, $sAction) { // Send Email if (EW_SENDER_EMAIL <> "" && EW_RECIPIENT_EMAIL <> "") { return ew_SendTemplateEmail($sFn, EW_SENDER_EMAIL, EW_RECIPIENT_EMAIL, "", "", $sSubject, array("<!--table-->" => $sTable, "<!--key-->" => $sKey, "<!--action-->" => $sAction)); } } // Send email by template Function ew_SendTemplateEmail($sTemplate, $sSender, $sRecipient, $sCcEmail, $sBccEmail, $sSubject, $arContent) { if ($sSender <> "" && $sRecipient <> "") { $Email = new cEmail; $Email->Load($sTemplate); $Email->ReplaceSender($sSender); // Replace Sender $Email->ReplaceRecipient($sRecipient); // Replace Recipient if ($sCcEmail <> "") $Email->AddCc($sCcEmail); // Add Cc if ($sBccEmail <> "") $Email->AddBcc($sBccEmail); // Add Bcc if ($sSubject <> "") $Email->ReplaceSubject($sSubject); // Replace subject if (is_array($arContent)) { foreach ($arContent as $key => $value) $Email->ReplaceContent($key, $value); } return $Email->Send(); } return FALSE; } // Include modern PHPMailer via Composer — legacy 1.x cannot AUTH to Office365 reliably if (EW_EMAIL_COMPONENT == "PHPMAILER") { $ew_autoload = $_SERVER['DOCUMENT_ROOT'] . "/vendor/autoload.php"; if (!is_file($ew_autoload)) { throw new Exception("Composer autoload not found at: " . $ew_autoload); } require_once($ew_autoload); if (!class_exists('PHPMailer', false) && class_exists(\PHPMailer\PHPMailer\PHPMailer::class)) { class_alias(\PHPMailer\PHPMailer\PHPMailer::class, 'PHPMailer'); } if (!class_exists('PHPMailer', false)) { throw new Exception("PHPMailer class not available after Composer autoload"); } } // Function to send email function ew_SendEmail($sFrEmail, $sToEmail, $sCcEmail, $sBccEmail, $sSubject, $sMail, $sFormat, $sCharset) { global $Language, $gsEmailErrDesc; $res = FALSE; if (EW_EMAIL_COMPONENT == "PHPMAILER") { $mail = new PHPMailer(true); try { $mail->isSMTP(); $mail->Host = EW_SMTP_SERVER; $mail->Port = EW_SMTP_SERVER_PORT; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = (EW_SMTP_SERVER_USERNAME <> "" && EW_SMTP_SERVER_PASSWORD <> ""); $mail->Username = EW_SMTP_SERVER_USERNAME; $mail->Password = EW_SMTP_SERVER_PASSWORD; $mail->Timeout = 20; $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); // Office365: From address must be the authenticated SMTP username (email). // Caller-supplied address is used as Reply-To. $mail->setFrom(EW_SMTP_SERVER_USERNAME, EW_SMTP_SERVER_USERNAME); $mail->Sender = EW_SMTP_SERVER_USERNAME; if ($sFrEmail <> "") { $mail->addReplyTo($sFrEmail); } $mail->Subject = $sSubject; $mail->Body = $sMail; if ($sCharset <> "" && strtolower($sCharset) <> "iso-8859-1") { $mail->CharSet = $sCharset; } if (strtolower($sFormat) == "html") { $mail->isHTML(true); } else { $mail->isHTML(false); } $sToEmail = str_replace(";", ",", $sToEmail); $arrTo = explode(",", $sToEmail); foreach ($arrTo as $sTo) { $sTo = trim($sTo); if ($sTo <> "") { $mail->addAddress($sTo); } } if ($sCcEmail <> "") { $sCcEmail = str_replace(";", ",", $sCcEmail); $arrCc = explode(",", $sCcEmail); foreach ($arrCc as $sCc) { $sCc = trim($sCc); if ($sCc <> "") { $mail->addCC($sCc); } } } if ($sBccEmail <> "") { $sBccEmail = str_replace(";", ",", $sBccEmail); $arrBcc = explode(",", $sBccEmail); foreach ($arrBcc as $sBcc) { $sBcc = trim($sBcc); if ($sBcc <> "") { $mail->addBCC($sBcc); } } } $res = $mail->send(); $gsEmailErrDesc = ""; } catch (Exception $e) { $res = FALSE; $gsEmailErrDesc = $mail->ErrorInfo; if ($gsEmailErrDesc == "" && method_exists($e, 'getMessage')) { $gsEmailErrDesc = $e->getMessage(); } } // Uncomment to debug // var_dump($mail); exit(); } else { $to = $sToEmail; $subject = $sSubject; $message = $sMail; // header $content_type = (strtolower($sFormat) == "html") ? "text/html" : "text/plain"; if ($sCharset <> "") $content_type .= "; charset=" . $sCharset; $headers = "Content-type: " . $content_type . "\r\n"; $headers .= "From: " . str_replace(";", ",", $sFrEmail) . "\r\n"; if ($sCcEmail <> "") $headers .= "Cc: " . str_replace(";", ",", $sCcEmail) . "\r\n"; if ($sBccEmail <> "") $headers .= "Bcc: " . str_replace(";", ",", $sBccEmail) . "\r\n"; if (EW_IS_WINDOWS) { if (EW_SMTP_SERVER <> "") ini_set("SMTP", EW_SMTP_SERVER); if (is_int(EW_SMTP_SERVER_PORT)) ini_set("smtp_port", EW_SMTP_SERVER_PORT); } ini_set("sendmail_from", $sFrEmail); $res = mail($to, $subject, $message, $headers); $gsEmailErrDesc = ($res) ? $Language->Phrase("FailedToSendMail") : ""; // Uncomment to debug // echo "Header: " . $headers . "<br>" . "Subject: " . $subject . "<br>" . // "To: " . $to . "<br>" . "Body: " . $message . "<br>"; exit(); } return $res; } // Load content at URL // Arguments: // url: URL to send reqeust // method: "GET" or "POST" // postdata: POST data // Note: CURL must be enabled function ew_LoadContentFromUrl($url, $method = "GET", $postdata = "") { $fp = ""; if (function_exists("curl_init")) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if (strtoupper(trim($method)) == "POST") curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $fp = curl_exec($ch); curl_close($ch); } return trim($fp); } // Field data type function ew_FieldDataType($fldtype) { switch ($fldtype) { case 20: case 3: case 2: case 16: case 4: case 5: case 131: case 139: case 6: case 17: case 18: case 19: case 21: // Numeric return EW_DATATYPE_NUMBER; case 7: case 133: case 135: // Date case 146: // DateTiemOffset return EW_DATATYPE_DATE; case 134: // Time case 145: // Time return EW_DATATYPE_TIME; case 201: case 203: // Memo return EW_DATATYPE_MEMO; case 129: case 130: case 200: case 202: // String return EW_DATATYPE_STRING; case 11: // Boolean return EW_DATATYPE_BOOLEAN; case 72: // GUID return EW_DATATYPE_GUID; case 128: case 204: case 205: // Binary return EW_DATATYPE_BLOB; case 141: // XML return EW_DATATYPE_XML; default: return EW_DATATYPE_OTHER; } } // Application root function ew_AppRoot() { // 1. use root relative path if (EW_ROOT_RELATIVE_PATH <> "") { $Path = realpath(EW_ROOT_RELATIVE_PATH); $Path = str_replace("\\\\", EW_PATH_DELIMITER, $Path); } // 2. if empty, use the document root if available if (empty($Path)) $Path = ew_ServerVar("APPL_PHYSICAL_PATH"); // IIS if (empty($Path)) $Path = ew_ServerVar("DOCUMENT_ROOT"); // 3. if empty, use current folder if (empty($Path)) $Path = realpath("."); // 4. use custom path, uncomment the following line and enter your path // e.g. $Path = 'C:\Inetpub\wwwroot\MyWebRoot'; // Windows //$Path = 'enter your path here'; if (empty($Path)) die("Path of website root unknown."); return ew_IncludeTrailingDelimiter($Path, TRUE); } // Get path relative to application root function ew_ServerMapPath($Path) { return ew_PathCombine(ew_AppRoot(), $Path, TRUE); } // Get path relative to a base path function ew_PathCombine($BasePath, $RelPath, $PhyPath) { $BasePath = ew_RemoveTrailingDelimiter($BasePath, $PhyPath); if ($PhyPath) { $Delimiter = EW_PATH_DELIMITER; $RelPath = str_replace('/', EW_PATH_DELIMITER, $RelPath); $RelPath = str_replace('\\', EW_PATH_DELIMITER, $RelPath); } else { $Delimiter = '/'; $RelPath = str_replace('\\', '/', $RelPath); } if ($RelPath == '.' || $RelPath == '..') $RelPath .= $Delimiter; $p1 = strpos($RelPath, $Delimiter); $Path2 = ""; while ($p1 !== FALSE) { $Path = substr($RelPath, 0, $p1 + 1); if ($Path == $Delimiter || $Path == ".$Delimiter") { // Skip } elseif ($Path == "..$Delimiter") { $p2 = strrpos($BasePath, $Delimiter); if ($p2 !== FALSE) $BasePath = substr($BasePath, 0, $p2); } else { $Path2 .= $Path; } $RelPath = substr($RelPath, $p1 + 1); if ($RelPath === FALSE) { $RelPath = ""; } elseif ($RelPath == '.' || $RelPath == '..') { $RelPath .= $Delimiter; } $p1 = strpos($RelPath, $Delimiter); } return ew_IncludeTrailingDelimiter($BasePath, $PhyPath) . $Path2 . $RelPath; } // Remove the last delimiter for a path function ew_RemoveTrailingDelimiter($Path, $PhyPath) { $Delimiter = ($PhyPath) ? EW_PATH_DELIMITER : '/'; while (substr($Path, -1) == $Delimiter) $Path = substr($Path, 0, strlen($Path) - 1); return $Path; } // Include the last delimiter for a path function ew_IncludeTrailingDelimiter($Path, $PhyPath) { $Path = ew_RemoveTrailingDelimiter($Path, $PhyPath); $Delimiter = ($PhyPath) ? EW_PATH_DELIMITER : '/'; return $Path . $Delimiter; } // Write the paths for config/debug only function ew_WritePaths() { echo 'DOCUMENT_ROOT=' . ew_ServerVar("DOCUMENT_ROOT") . "<br>"; echo 'EW_ROOT_RELATIVE_PATH=' . EW_ROOT_RELATIVE_PATH . "<br>"; echo 'ew_AppRoot()=' . ew_AppRoot() . "<br>"; echo 'realpath(".")=' . realpath(".") . "<br>"; echo '__FILE__=' . __FILE__ . "<br>"; } // Upload path // If PhyPath is TRUE(1), return physical path on the server // If PhyPath is FALSE(0), return relative URL function ew_UploadPathEx($PhyPath, $DestPath) { if ($PhyPath) { $Path = ew_PathCombine(ew_AppRoot(), str_replace("/", EW_PATH_DELIMITER, $DestPath), TRUE); } else { $Path = ew_ScriptName(); $Path = substr($Path, 0, strrpos($Path, "/")); $Path = ew_PathCombine($Path, EW_ROOT_RELATIVE_PATH, FALSE); $Path = ew_PathCombine(ew_IncludeTrailingDelimiter($Path, FALSE), $DestPath, FALSE); } return ew_IncludeTrailingDelimiter($Path, $PhyPath); } // Global upload path // If PhyPath is TRUE(1), return physical path on the server // If PhyPath is FALSE(0), return relative URL function ew_UploadPath($PhyPath) { return ew_UploadPathEx($PhyPath, EW_UPLOAD_DEST_PATH); } // Upload file name function ew_UploadFileNameEx($folder, $sFileName) { // By default, ew_UniqueFileName() is used to get an unique file name, // you can change the logic here $sOutFileName = ew_UniqueFilename($folder, $sFileName); // Return computed output file name return $sOutFileName; } // Generate an unique file name (filename(n).ext) function ew_UniqueFilename($folder, $oriFilename) { if ($oriFilename == "") $oriFilename = ew_DefaultFileName(); $oriFilename = str_replace(" ", "_", $oriFilename); $oriFilename = strtolower(basename($oriFilename)); $destFullPath = $folder . $oriFilename; $newFilename = $oriFilename; $i = 1; if (!file_exists($folder)) { if (!ew_CreateFolder($folder)) { die("Folder does not exist: " . $folder); } } while (file_exists($destFullPath)) { $file_extension = strtolower(strrchr($oriFilename, ".")); $file_name = basename($oriFilename, $file_extension); $newFilename = $file_name . "($i)" . $file_extension; $destFullPath = $folder . $newFilename; $i++; } return $newFilename; } // Create a default file name(yyyymmddhhmmss.bin) function ew_DefaultFileName() { return date("YmdHis") . ".bin"; } // Get refer page name function ew_ReferPage() { return ew_GetPageName(ew_ServerVar("HTTP_REFERER")); } // Get script physical folder function ew_ScriptFolder() { $folder = ""; $path = ew_ServerVar("SCRIPT_FILENAME"); $p = strrpos($path, EW_PATH_DELIMITER); if ($p !== FALSE) $folder = substr($path, 0, $p); return ($folder <> "") ? $folder : realpath("."); } // Get a temp folder for temp file function ew_TmpFolder() { $tmpfolder = NULL; $folders = array(); if (EW_IS_WINDOWS) { $folders[] = ew_ServerVar("TEMP"); $folders[] = ew_ServerVar("TMP"); } else { if (EW_UPLOAD_TMP_PATH <> "") $folders[] = ew_AppRoot() . str_replace("/", EW_PATH_DELIMITER, EW_UPLOAD_TMP_PATH); $folders[] = '/tmp'; } if (ini_get('upload_tmp_dir')) { $folders[] = ini_get('upload_tmp_dir'); } foreach ($folders as $folder) { if (!$tmpfolder && is_dir($folder)) { $tmpfolder = $folder; } } //if ($tmpfolder) $tmpfolder = ew_IncludeTrailingDelimiter($tmpfolder, TRUE); return $tmpfolder; } // Create folder function ew_CreateFolder($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE; if (!ew_CreateFolder(dirname($dir), $mode)) return FALSE; return @mkdir($dir, $mode); } // Save file function ew_SaveFile($folder, $fn, $filedata) { $res = FALSE; if (ew_CreateFolder($folder)) { if ($handle = fopen($folder . $fn, 'w')) { // P6 $res = fwrite($handle, $filedata); fclose($handle); } if ($res) chmod($folder . $fn, EW_UPLOADED_FILE_MODE); } return $res; } // function to generate random number function ew_Random() { if (phpversion() < "4.2.0") { list($usec, $sec) = explode(' ', microtime()); $seed = (float) $sec + ((float) $usec * 100000); mt_srand($seed); } return mt_rand(); } // function to remove CR and LF function ew_RemoveCrLf($s) { if (strlen($s) > 0) { $s = str_replace("\n", " ", $s); $s = str_replace("\r", " ", $s); $s = str_replace("\l", " ", $s); } return $s; } // Calculate hash for recordset function ew_GetRsHash(&$rs, $fldname) { return md5(ew_GetFldValueAsString($rs->fields($fldname))); } // Get field value as string function ew_GetFldValueAsString($value) { if (is_null($value)) { return ""; } else { if (strlen($value) > 65535) { // BLOB/TEXT if (EW_BLOB_FIELD_BYTE_COUNT > 0) { return substr($value, 0, EW_BLOB_FIELD_BYTE_COUNT); } else { return $value; } } else { return strval($value); } } } // Convert byte array to binary string function ew_BytesToStr($bytes) { $str = ""; foreach ($bytes as $byte) $str .= chr($byte); return $str; } // Convert binary string to byte array function ew_StrToBytes($str) { $cnt = strlen($str); $bytes = array(); for ($i = 0; $i < $cnt; $i++) $bytes[] = ord($str[$i]); return $bytes; } ?> <?php /** * Form class */ class cFormObj { var $Index; // Constructor function __construct() { $this->Index = 0; } // Get form element name based on index function GetIndexedName($name) { if ($this->Index <= 0) { return $name; } else { return substr($name, 0, 1) . $this->Index . substr($name, 1); } } // Get value for form element function GetValue($name) { $wrkname = $this->GetIndexedName($name); return @$_POST[$wrkname]; } // Get upload file size function GetUploadFileSize($name) { $wrkname = $this->GetIndexedName($name); return @$_FILES[$wrkname]['size']; } // Get upload file name function GetUploadFileName($name) { $wrkname = $this->GetIndexedName($name); return @$_FILES[$wrkname]['name']; } // Get file content type function GetUploadFileContentType($name) { $wrkname = $this->GetIndexedName($name); return @$_FILES[$wrkname]['type']; } // Get file error function GetUploadFileError($name) { $wrkname = $this->GetIndexedName($name); return @$_FILES[$wrkname]['error']; } // Get file temp name function GetUploadFileTmpName($name) { $wrkname = $this->GetIndexedName($name); return @$_FILES[$wrkname]['tmp_name']; } // Check if is upload file function IsUploadedFile($name) { $wrkname = $this->GetIndexedName($name); return is_uploaded_file(@$_FILES[$wrkname]["tmp_name"]); } // Get upload file data function GetUploadFileData($name) { if ($this->IsUploadedFile($name)) { $wrkname = $this->GetIndexedName($name); return ew_ReadFile($_FILES[$wrkname]["tmp_name"]); } else { return NULL; } } // Get image sizes var $size; function GetImageDimension($name) { if (!isset($this->size) && isset($_FILES[$wrkname]) && isset($_FILES[$wrkname]['tmp_name'])) { $wrkname = $this->GetIndexedName($name); $this->size = @getimagesize($_FILES[$wrkname]['tmp_name']); } } // Get file image width function GetUploadImageWidth($name) { $this->GetImageDimension($name); return $this->size[0]; } // Get file image height function GetUploadImageHeight($name) { $this->GetImageDimension($name); return $this->size[1]; } } ?> <?php if (isset($Page) && $Page->PageID == "list") { if ($gdv = gdVersion()) { if ($gdv < 2) { echo "<p class=\"ewmsg\">Warning: Image Resize extension is enabled, the extension requires GD2 but GD version on this server is 1.</p>"; } } else { echo "<p class=\"ewmsg\">Warning: Image Resize extension is enabled but GD2 extension is not loaded on this server.</p>"; } } include "thumbnail.inc.php"; define("EW_REDUCE_IMAGE_ONLY", TRUE); define("EW_KEEP_ASPECT_RATIO", FALSE); // Check GD version function gdVersion($user_ver = 0) { if (!extension_loaded('gd')) { return; } static $gd_ver = 0; // Just accept the specified setting if it's 1. if ($user_ver == 1) { $gd_ver = 1; return 1; } // Use the static variable if function was called previously. if ($user_ver != 2 && $gd_ver > 0) { return $gd_ver; } // Use the gd_info() function if possible. if (function_exists('gd_info')) { $ver_info = gd_info(); preg_match('/\d/', $ver_info['GD Version'], $match); $gd_ver = $match[0]; return $match[0]; } // If phpinfo() is disabled use a specified / fail-safe choice... if (preg_match('/phpinfo/', ini_get('disable_functions'))) { if ($user_ver == 2) { $gd_ver = 2; return 2; } else { $gd_ver = 1; return 1; } } // otherwise use phpinfo() ob_start(); phpinfo(8); $info = ob_get_contents(); ob_end_clean(); $info = stristr($info, 'gd version'); preg_match('/\d/', $info, $match); $gd_ver = $match[0]; return $match[0]; } // Resize binary to thumbnail function ew_ResizeBinary(&$filedata, &$width, &$height, $quality) { if ($width <= 0 && $height <= 0) return; $f = tempnam(ew_TmpFolder(), "tmp"); $handle = fopen($f, 'w+'); fwrite($handle, $filedata); fclose($handle); $info = getimagesize($f); switch ($info[2]) { case 1: rename($f, $f .= '.gif'); break; case 2: rename($f, $f .= '.jpg'); break; case 3: rename($f, $f .= '.png'); break; default: return FALSE; } $filedata = ew_ResizeFileToBinary($f, $width, $height, $quality); @unlink($f); return TRUE; } // Resize file to thumbnail file function ew_ResizeFile($fn, $tn, &$width, &$height, $quality) { $pathinfo = pathinfo($fn); $ext = strtolower($pathinfo['extension']); if (!in_array($ext, array('gif', 'jpg', 'png')) || ($width <= 0 && $height <= 0)) { if ($fn <> $tn) copy($fn, $tn); return; } $thumb = new Thumbnail($fn); if ($width <= 0) { // maintain aspect ratio $h = $height; $w = $thumb->getCurrentWidth() * $height / $thumb->getCurrentHeight(); } elseif ($height <= 0) { // maintain aspect ratio $w = $width; $h = $thumb->getCurrentHeight() * $width / $thumb->getCurrentWidth(); } else { $thumb->keepAspectRatio = EW_KEEP_ASPECT_RATIO; $w = $width; $h = $height; } if (EW_REDUCE_IMAGE_ONLY && $w >= $thumb->getCurrentWidth() && $h >= $thumb->getCurrentHeight()) { if ($fn <> $tn) copy($fn, $tn); } else { $thumb->resize($w, $h); $width = $w; $height = $h; $thumb->save($tn, $quality); $thumb->destruct(); } } // Resize file to binary function ew_ResizeFileToBinary($fn, &$width, &$height, $quality) { $pathinfo = pathinfo($fn); $ext = strtolower($pathinfo['extension']); if (!in_array($ext, array('gif', 'jpg', 'png')) || ($width <= 0 && $height <= 0)) { $fdata = ew_ReadFile($fn); } else { $thumb = new Thumbnail($fn); if ($width <= 0) { // maintain aspect ratio $h = $height; $w = $thumb->getCurrentWidth() * $height / $thumb->getCurrentHeight(); } elseif ($height <= 0) { // maintain aspect ratio $w = $width; $h = $thumb->getCurrentHeight() * $width / $thumb->getCurrentWidth(); } else { $thumb->keepAspectRatio = EW_KEEP_ASPECT_RATIO; $w = $width; $h = $height; } if (EW_REDUCE_IMAGE_ONLY && $w >= $thumb->getCurrentWidth() && $h >= $thumb->getCurrentHeight()) { $fdata = ew_ReadFile($fn); } else { $thumb->resize($w, $h); $width = $w; $height = $h; ob_start(); $thumb->show($quality); $fdata = ob_get_contents(); ob_end_clean(); $thumb->destruct(); } } return $fdata; } ?> <?php /** * Functions for search */ // Highlight value based on basic search / advanced search keywords function ew_Highlight($name, $src, $bkw, $bkwtype, $akw) { $outstr = ""; if (strlen($src) > 0 && (strlen($bkw) > 0 || strlen($akw) > 0)) { $xx = 0; $yy = strpos($src, "<", $xx); if ($yy === FALSE) $yy = strlen($src); while ($yy >= 0) { if ($yy > $xx) { $wrksrc = substr($src, $xx, $yy - $xx); $kwstr = trim($bkw); if (strlen($bkw) > 0 && strlen($bkwtype) == 0) { // check for exact phase $kwlist = array($kwstr); // use single array element } else { $kwlist = explode(" ", $kwstr); } if (strlen($akw) > 0) $kwlist[] = $akw; $x = 0; ew_GetKeyword($wrksrc, $kwlist, $x, $y, $kw); while ($y >= 0) { $outstr .= substr($wrksrc, $x, $y - $x) . "<span name=\"$name\" id=\"$name\" class=\"ewHighlightSearch\">" . substr($wrksrc, $y, strlen($kw)) . "</span>"; $x = $y + strlen($kw); ew_GetKeyword($wrksrc, $kwlist, $x, $y, $kw); } $outstr .= substr($wrksrc, $x); $xx += strlen($wrksrc); } if ($xx < strlen($src)) { $yy = strpos($src, ">", $xx); if ($yy !== FALSE) { $outstr .= substr($src, $xx, $yy - $xx + 1); $xx = $yy + 1; $yy = strpos($src, "<", $xx); if ($yy === FALSE) $yy = strlen($src); } else { $outstr .= substr($src, $xx); $yy = -1; } } else { $yy = -1; } } } else { $outstr = $src; } return $outstr; } // Get keyword function ew_GetKeyword(&$src, &$kwlist, &$x, &$y, &$kw) { $thisy = -1; $thiskw = ""; foreach ($kwlist as $wrkkw) { $wrkkw = trim($wrkkw); if ($wrkkw <> "") { if (EW_HIGHLIGHT_COMPARE) { // Case-insensitive if (function_exists('stripos')) { // PHP 5 $wrky = stripos($src, $wrkkw, $x); } else { $wrky = strpos(strtoupper($src), strtoupper($wrkkw), $x); } } else { $wrky = strpos($src, $wrkkw, $x); } if ($wrky !== FALSE) { if ($thisy == -1) { $thisy = $wrky; $thiskw = $wrkkw; } elseif ($wrky < $thisy) { $thisy = $wrky; $thiskw = $wrkkw; } } } } $y = $thisy; $kw = $thiskw; } ?> <?php /** * Functions for Auto-Update fields */ // Get user IP function ew_CurrentUserIP() { return ew_ServerVar("REMOTE_ADDR"); } // Get current host name, e.g. "www.mycompany.com" function ew_CurrentHost() { return ew_ServerVar("HTTP_HOST"); } // Get current date in default date format // $namedformat = -1|5|6|7 (see comment for ew_FormatDateTime) function ew_CurrentDate($namedformat = -1) { if ($namedformat > -1) { if ($namedformat == 6 || $namedformat == 7) { return ew_FormatDateTime(date('Y-m-d'), $namedformat); } else { return ew_FormatDateTime(date('Y-m-d'), 5); } } else { return date('Y-m-d'); } } // Get current time in hh:mm:ss format function ew_CurrentTime() { return date("H:i:s"); } // Get current date in default date format with time in hh:mm:ss format // $namedformat = -1, 5-7, 9-11 (see comment for ew_FormatDateTime) function ew_CurrentDateTime($namedformat = -1) { if (in_array($namedformat, array(5, 6, 7, 9, 10, 11))) { if ($namedformat == 5 || $namedformat == 9) { return ew_FormatDateTime(date('Y-m-d H:i:s'), 9); } elseif ($namedformat == 6 || $namedformat == 10) { return ew_FormatDateTime(date('Y-m-d H:i:s'), 10); } else { return ew_FormatDateTime(date('Y-m-d H:i:s'), 11); } } else { return date('Y-m-d H:i:s'); } } // Get current date in standard format (yyyy/mm/dd) function ew_StdCurrentDate() { return date('Y/m/d'); } // Get date in standard format (yyyy/mm/dd) function ew_StdDate($ts) { return date('Y/m/d', $ts); } // Get current date and time in standard format (yyyy/mm/dd hh:mm:ss) function ew_StdCurrentDateTime() { return date('Y/m/d H:i:s'); } // Get date/time in standard format (yyyy/mm/dd hh:mm:ss) function ew_StdDateTime($ts) { return date('Y/m/d H:i:s', $ts); } // Clone an object function ew_Clone($obj) { return $obj; } /** * Functions for backward compatibilty */ // Get current user name function CurrentUserName() { global $Security; return (isset($Security)) ? $Security->CurrentUserName() : strval(@$_SESSION[EW_SESSION_USER_NAME]); } // Get current user ID function CurrentUserID() { global $Security; return (isset($Security)) ? $Security->CurrentUserID() : strval(@$_SESSION[EW_SESSION_USER_ID]); } // Get current parent user ID function CurrentParentUserID() { global $Security; return (isset($Security)) ? $Security->CurrentParentUserID() : strval(@$_SESSION[EW_SESSION_PARENT_USER_ID]); } // Get current user level function CurrentUserLevel() { global $Security; return (isset($Security)) ? $Security->CurrentUserLevelID() : @$_SESSION[EW_SESSION_USER_LEVEL_ID]; } // Get current user level list function CurrentUserLevelList() { global $Security; return (isset($Security)) ? $Security->UserLevelList() : strval(@$_SESSION[EW_SESSION_USER_LEVEL_ID]); } // Allow list function AllowList($TableName) { global $Security; return $Security->AllowList($TableName); } // Allow add function AllowAdd($TableName) { global $Security; return $Security->AllowAdd($TableName); } // Is password expired function IsPasswordExpired() { global $Security; return (isset($Security)) ? $Security->IsPasswordExpired() : ($_SESSION[EW_SESSION_STATUS] == "passwordexpired"); } // Is logging in function IsLoggingIn() { global $Security; return (isset($Security)) ? $Security->IsLoggingIn() : ($_SESSION[EW_SESSION_STATUS] == "loggingin"); } // Is logged in function IsLoggedIn() { global $Security; return (isset($Security)) ? $Security->IsLoggedIn() : ($_SESSION[EW_SESSION_STATUS] == "login"); } // Is system admin function IsSysAdmin() { global $Security; return (isset($Security)) ? $Security->IsSysAdmin() : ($_SESSION[EW_SESSION_SYS_ADMIN] == 1); } /** * Functions for TEA encryption/decryption */ function long2str($v, $w) { $len = count($v); $s = array(); for ($i = 0; $i < $len; $i++) { $s[$i] = pack("V", $v[$i]); } if ($w) { return substr(join('', $s), 0, $v[$len - 1]); } else { return join('', $s); } } function str2long($s, $w) { $v = unpack("V*", $s . str_repeat("\0", (4 - strlen($s) % 4) & 3)); $v = array_values($v); if ($w) { $v[count($v)] = strlen($s); } return $v; } // encrypt function TEAencrypt($str, $key) { if ($str == "") { return ""; } $v = str2long($str, true); $k = str2long($key, false); if (count($k) < 4) { for ($i = count($k); $i < 4; $i++) { $k[$i] = 0; } } $n = count($v) - 1; $z = $v[$n]; $y = $v[0]; $delta = 0x9E3779B9; $q = floor(6 + 52 / ($n + 1)); $sum = 0; while (0 < $q--) { $sum = int32($sum + $delta); $e = $sum >> 2 & 3; for ($p = 0; $p < $n; $p++) { $y = $v[$p + 1]; $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $z = $v[$p] = int32($v[$p] + $mx); } $y = $v[0]; $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $z = $v[$n] = int32($v[$n] + $mx); } return ew_UrlEncode(long2str($v, false)); } // decrypt function TEAdecrypt($str, $key) { $str = ew_UrlDecode($str); if ($str == "") { return ""; } $v = str2long($str, false); $k = str2long($key, false); if (count($k) < 4) { for ($i = count($k); $i < 4; $i++) { $k[$i] = 0; } } $n = count($v) - 1; $z = $v[$n]; $y = $v[0]; $delta = 0x9E3779B9; $q = floor(6 + 52 / ($n + 1)); $sum = int32($q * $delta); while ($sum != 0) { $e = $sum >> 2 & 3; for ($p = $n; $p > 0; $p--) { $z = $v[$p - 1]; $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $y = $v[$p] = int32($v[$p] - $mx); } $z = $v[$n]; $mx = int32((($z >> 5 & 0x07ffffff) ^ $y << 2) + (($y >> 3 & 0x1fffffff) ^ $z << 4)) ^ int32(($sum ^ $y) + ($k[$p & 3 ^ $e] ^ $z)); $y = $v[0] = int32($v[0] - $mx); $sum = int32($sum - $delta); } return long2str($v, true); } function int32($n) { while ($n >= 2147483648) $n -= 4294967296; while ($n <= -2147483649) $n += 4294967296; return (int) $n; } function ew_UrlEncode($string) { $data = base64_encode($string); return str_replace(array('+', '/', '='), array('-', '_', '.'), $data); } function ew_UrlDecode($string) { $data = str_replace(array('-', '_', '.'), array('+', '/', '='), $string); return base64_decode($data); } // Remove XSS function ew_RemoveXSS($val) { // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed // this prevents some character re-spacing such as <java\0script> // note that you have to handle splits with \n, \r, and \t later since they *are* allowed in some inputs $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val); // straight replacements, the user should never need these since they're normal characters // this prevents like <IMG SRC=@avascript:alert('XSS')> $search = 'abcdefghijklmnopqrstuvwxyz'; $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $search .= '1234567890!@#$%^&*()'; $search .= '~`";:?+/={}[]-_|\'\\'; for ($i = 0; $i < strlen($search); $i++) { // ;? matches the ;, which is optional // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars // @ @ search for the hex values $val = preg_replace('/(&#[x|X]0{0,8}' . dechex(ord($search[$i])) . ';?)/i', $search[$i], $val); // with a ; // @ @ 0{0,7} matches '0' zero to seven times $val = preg_replace('/(�{0,8}' . ord($search[$i]) . ';?)/', $search[$i], $val); // with a ; } // now the only remaining whitespace attacks are \t, \n, and \r $ra = $GLOBALS["EW_XSS_ARRAY"]; // Note: Customize $EW_XSS_ARRAY in ewcfg*.php $found = true; // keep replacing as long as the previous round replaced something while ($found == true) { $val_before = $val; for ($i = 0; $i < sizeof($ra); $i++) { $pattern = '/'; for ($j = 0; $j < strlen($ra[$i]); $j++) { if ($j > 0) { $pattern .= '('; $pattern .= '(&#[x|X]0{0,8}([9][a][b]);?)?'; $pattern .= '|(�{0,8}([9][10][13]);?)?'; $pattern .= ')?'; } $pattern .= $ra[$i][$j]; } $pattern .= '/i'; $replacement = substr($ra[$i], 0, 2) . '<x>' . substr($ra[$i], 2); // add in <> to nerf the tag $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags if ($val_before == $val) { // no replacements were made, so exit the loop $found = false; } } } return $val; } // Calculate date difference function ew_DateDiff($dateTimeBegin, $dateTimeEnd, $interval = "d") { $dateTimeBegin = strtotime($dateTimeBegin); if ($dateTimeBegin === -1 || $dateTimeBegin === FALSE) return FALSE; $dateTimeEnd = strtotime($dateTimeEnd); if ($dateTimeEnd === -1 || $dateTimeEnd === FALSE) return FALSE; $dif = $dateTimeEnd - $dateTimeBegin; $arBegin = getdate($dateTimeBegin); $dateBegin = mktime(0, 0, 0, $arBegin["mon"], $arBegin["mday"], $arBegin["year"]); $arEnd = getdate($dateTimeEnd); $dateEnd = mktime(0, 0, 0, $arEnd["mon"], $arEnd["mday"], $arEnd["year"]); $difDate = $dateEnd - $dateBegin; switch ($interval) { case "s": // seconds return $dif; case "n": // minutes return ($dif > 0) ? floor($dif / 60) : ceil($dif / 60); case "h": // hours return ($dif > 0) ? floor($dif / 3600) : ceil($dif / 3600); case "d": // days return ($difDate > 0) ? floor($difDate / 86400) : ceil($difDate / 86400); case "w": // weeks return ($difDate > 0) ? floor($difDate / 604800) : ceil($difDate / 604800); case "ww": // calendar weeks $difWeek = (($dateEnd - $arEnd["wday"] * 86400) - ($dateBegin - $arBegin["wday"] * 86400)) / 604800; return ($difWeek > 0) ? floor($difWeek) : ceil($difWeek); case "m": // months return (($arEnd["year"] * 12 + $arEnd["mon"]) - ($arBegin["year"] * 12 + $arBegin["mon"])); case "yyyy": // years return ($arEnd["year"] - $arBegin["year"]); } } // Write global debug message function ew_DebugMsg() { global $gsDebugMsg; $msg = $gsDebugMsg; $gsDebugMsg = ""; return ($msg <> "") ? "<p>" . $msg . "</p>" : ""; } // Write global debug message function ew_SetDebugMsg($v, $newline = TRUE) { global $gsDebugMsg; if ($newline && $gsDebugMsg <> "") $gsDebugMsg .= "<br>"; $gsDebugMsg .= $v; } // Init array function &ew_InitArray($len, $value) { if (function_exists('array_fill') && $len > 0) { // PHP 4 >= 4.2.0 $ar = array_fill(0, $len, $value); } else { $ar = array(); for ($i = 0; $i < $len; $i++) $ar[] = $value; } return $ar; } // Init 2D array function &ew_Init2DArray($len1, $len2, $value) { return ew_InitArray($len1, ew_InitArray($len2, $value)); } /** * User Profile Class */ class cUserProfile { var $dProfile = array(); var $sKeySep = EW_USER_PROFILE_KEY_SEPARATOR; var $sFldSep = EW_USER_PROFILE_FIELD_SEPARATOR; var $lTimeoutTime = EW_USER_PROFILE_SESSION_TIMEOUT; var $lMaxRetryCount = EW_USER_PROFILE_MAX_RETRY; var $lRetryLockoutTime = EW_USER_PROFILE_RETRY_LOCKOUT; var $lPasswordExpiryTime = EW_USER_PROFILE_PASSWORD_EXPIRE; // Constructor function __construct() { } function GetValue($Name) { return @$this->dProfile[$Name]; } function SetValue($Name, $Value) { $res = array_key_exists($Name, $this->dProfile); $this->dProfile[$Name] = $Value; return $res; // return TRUE if existing value } function LoadProfileFromDatabase($usr) { global $conn, $CCEFacilitatorUsers; if ($usr == "" || $usr == EW_ADMIN_USER_NAME) // Ignore hard code admin return FALSE; $sFilter = str_replace("%u", ew_AdjustSql($usr), EW_USER_NAME_FILTER); // Get SQL from GetSQL function in <UserTable> class, <UserTable>info.php $sSql = $CCEFacilitatorUsers->GetSQL($sFilter, ""); $rswrk = $conn->Execute($sSql); if ($rswrk && !$rswrk->EOF) { $this->LoadProfile($rswrk->fields(EW_USER_PROFILE_FIELD_NAME)); $rswrk->Close(); return TRUE; } return FALSE; } function LoadProfile($Profile) { $ar = unserialize(strval($Profile)); $this->dProfile = (is_array($ar)) ? $ar : array(); } function WriteProfile() { var_dump($this->dProfile); } function ClearProfile() { $this->dProfile = array(); } function SaveProfileToDatabase($usr) { global $conn, $CCEFacilitatorUsers; if ($usr == "" || $usr == EW_ADMIN_USER_NAME) // Ignore hard code admin return FALSE; $sFilter = str_replace("%u", ew_AdjustSql($usr), EW_USER_NAME_FILTER); $sSql = "UPDATE " . ew_QuotedName($CCEFacilitatorUsers->TableName) . " SET " . ew_QuotedName(EW_USER_PROFILE_FIELD_NAME) . "='" . ew_AdjustSql($this->ProfileToString()) . "' WHERE " . $sFilter; $conn->Execute($sSql); $_SESSION[EW_SESSION_USER_PROFILE] = $this->ProfileToString(); } function ProfileToString() { return serialize($this->dProfile); } } /** * Validation functions */ // Check date format // format: std/us/euro function ew_CheckDateEx($value, $format, $sep) { if (strval($value) == "") return TRUE; while (strpos($value, " ") !== FALSE) $value = str_replace(" ", " ", $value); $value = trim($value); $arDT = explode(" ", $value); if (count($arDT) > 0) { $sep = "\\$sep"; switch ($format) { case "std": $pattern = '/^([0-9]{4})' . $sep . '([0]?[1-9]|[1][0-2])' . $sep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])$/'; break; case "us": $pattern = '/^([0]?[1-9]|[1][0-2])' . $sep . '([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $sep . '([0-9]{4})$/'; break; case "euro": $pattern = '/^([0]?[1-9]|[1|2][0-9]|[3][0|1])' . $sep . '([0]?[1-9]|[1][0-2])' . $sep . '([0-9]{4})$/'; break; } if (!preg_match($pattern, $arDT[0])) return FALSE; $arD = explode(EW_DATE_SEPARATOR, $arDT[0]); switch ($format) { case "std": $sYear = $arD[0]; $sMonth = $arD[1]; $sDay = $arD[2]; break; case "us": $sYear = $arD[2]; $sMonth = $arD[0]; $sDay = $arD[1]; break; case "euro": $sYear = $arD[2]; $sMonth = $arD[1]; $sDay = $arD[0]; break; } if (!ew_CheckDay($sYear, $sMonth, $sDay)) return FALSE; } if (count($arDT) > 1 && !ew_CheckTime($arDT[1])) return FALSE; return TRUE; } // Check Date format (yyyy/mm/dd) function ew_CheckDate($value) { return ew_CheckDateEx($value, "std", EW_DATE_SEPARATOR); } // Check US Date format (mm/dd/yyyy) function ew_CheckUSDate($value) { return ew_CheckDateEx($value, "us", EW_DATE_SEPARATOR); } // Check Euro Date format (dd/mm/yyyy) function ew_CheckEuroDate($value) { return ew_CheckDateEx($value, "euro", EW_DATE_SEPARATOR); } // Check day function ew_CheckDay($checkYear, $checkMonth, $checkDay) { $maxDay = 31; if ($checkMonth == 4 || $checkMonth == 6 || $checkMonth == 9 || $checkMonth == 11) { $maxDay = 30; } elseif ($checkMonth == 2) { if ($checkYear % 4 > 0) { $maxDay = 28; } elseif ($checkYear % 100 == 0 && $checkYear % 400 > 0) { $maxDay = 28; } else { $maxDay = 29; } } return ew_CheckRange($checkDay, 1, $maxDay); } // Check integer function ew_CheckInteger($value) { if (strval($value) == "") return TRUE; return preg_match('/^\-?\+?[0-9]+$/', $value); } // Check number range function ew_NumberRange($value, $min, $max) { if ((!is_null($min) && $value < $min) || (!is_null($max) && $value > $max)) return FALSE; return TRUE; } // Check number function ew_CheckNumber($value) { if (strval($value) == "") return TRUE; return is_numeric(trim($value)); } // Check range function ew_CheckRange($value, $min, $max) { if (strval($value) == "") return TRUE; if (!ew_CheckNumber($value)) return FALSE; return ew_NumberRange($value, $min, $max); } // Check time function ew_CheckTime($value) { if (strval($value) == "") return TRUE; return preg_match('/^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/', $value); } // Check US phone number function ew_CheckPhone($value) { if (strval($value) == "") return TRUE; return preg_match('/^\(\d{3}\) ?\d{3}( |-)?\d{4}|^\d{3}( |-)?\d{3}( |-)?\d{4}$/', $value); } // Check US zip code function ew_CheckZip($value) { if (strval($value) == "") return TRUE; return preg_match('/^\d{5}$|^\d{5}-\d{4}$/', $value); } // Check credit card function ew_CheckCreditCard($value, $type = "") { if (strval($value) == "") return TRUE; $creditcard = array("visa" => "/^4\d{3}[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}$/", "mastercard" => "/^5[1-5]\d{2}[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}$/", "discover" => "/^6011[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}$/", "amex" => "/^3[4,7]\d{13}$/", "diners" => "/^3[0,6,8]\d{12}$/", "bankcard" => "/^5610[ -]?\d{4}[ -]?\d{4}[ -]?\d{4}$/", "jcb" => "/^[3088|3096|3112|3158|3337|3528]\d{12}$/", "enroute" => "/^[2014|2149]\d{11}$/", "switch" => "/^[4903|4911|4936|5641|6333|6759|6334|6767]\d{12}$/"); if (empty($type)) { $match = FALSE; foreach ($creditcard as $type => $pattern) { if (@preg_match($pattern, $value) == 1) { $match = TRUE; break; } } return ($match) ? ew_CheckSum($value) : FALSE; } else { if (!preg_match($creditcard[strtolower(trim($type))], $value)) return FALSE; return ew_CheckSum($value); } } // Check sum function ew_CheckSum($value) { $value = str_replace(array('-', ' '), array('', ''), $value); $checksum = 0; for ($i = (2 - (strlen($value) % 2)); $i <= strlen($value); $i += 2) $checksum += (int) ($value[$i - 1]); for ($i = (strlen($value) % 2) + 1; $i < strlen($value); $i += 2) { $digit = (int) ($value[$i - 1]) * 2; $checksum += ($digit < 10) ? $digit : ($digit - 9); } return ($checksum % 10 == 0); } // Check US social security number function ew_CheckSSC($value) { if (strval($value) == "") return TRUE; return preg_match('/^(?!000)([0-6]\d{2}|7([0-6]\d|7[012]))([ -]?)(?!00)\d\d\3(?!0000)\d{4}$/', $value); } // Check emails function ew_CheckEmailList($value, $email_cnt) { if (strval($value) == "") return TRUE; $emailList = str_replace(",", ";", $value); $arEmails = explode(";", $emailList); $cnt = count($arEmails); if ($cnt > $email_cnt && $email_cnt > 0) return FALSE; foreach ($arEmails as $email) { if (!ew_CheckEmail($email)) return FALSE; } return TRUE; } // Check email function ew_CheckEmail($value) { if (strval($value) == "") return TRUE; //return preg_match('/^[A-Za-z0-9\._\-+]+@[A-Za-z0-9_\-+]+(\.[A-Za-z0-9_\-+]+)+$/', trim($value)); return preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i', trim($value)); } // Check GUID function ew_CheckGUID($value) { if (strval($value) == "") return TRUE; $p1 = '/^{{1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}}{1}$/'; $p2 = '/^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$/'; return preg_match($p1, $value) || preg_match($p2, $value); } // Check file extension function ew_CheckFileType($value) { if (strval($value) == "") return TRUE; $extension = substr(strtolower(strrchr($value, ".")), 1); $allowExt = explode(",", strtolower(EW_UPLOAD_ALLOWED_FILE_EXT)); return (in_array($extension, $allowExt) || trim(EW_UPLOAD_ALLOWED_FILE_EXT) == ""); } // Check empty string function ew_EmptyStr($value) { $str = strval($value); $str = str_replace(" ", "", $str); return (trim($str) == ""); } // Check empty file function ew_Empty($value) { return is_null($value); } // Check by preg function ew_CheckByRegEx($value, $pattern) { if (strval($value) == "") return TRUE; return preg_match($pattern, $value); } // include shared code include "ewshared7.php"; ?>