-
Notifications
You must be signed in to change notification settings - Fork 0
/
cache.php
executable file
·85 lines (78 loc) · 2.81 KB
/
cache.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
/*
* Copyright 2009 Bion Oren
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
error_reporting(E_ALL | E_STRICT);
date_default_timezone_set("America/Chicago");
$path = "./";
require_once($path."functions.php");
require_once($path."Course.php");
require_once("UnitTests.php");
/**
* Writes cash data for all courses in the given semester and year using data from the
* provided root file path.
*
* @param STRING $file Root path to the xml class information.
* @param INTEGER $year The year to cash.
* @param STRING $semester One of ('SP', 'SU', 'FA') for Spring, Summer, and Fall semesters.
* @param STRING $prefix Optional prefix ('non' for non-traditional classes).
*/
function writeClassData($file, $year, $semester, $prefix="") {
//get the current class schedule from LeTourneau
$file .= $year."/".$semester;
$xml = simplexml_load_file($file);
if(count($xml->children()) == 0 || $xml === false) {
//there's no data here, or there was an error
return false;
}
$classes = array();
$campusMask = array();
$i = 1;
foreach($xml as $class) {
$obj = new Course($class, empty($prefix));
foreach($class->{"meeting"} as $meet) {
$campus = (string)$meet->{"meetingcampus"};
if($meet->{"meetingtypecode"} == "IE") {
$campus = "INTL";
} elseif($meet->{"meetingtypecode"} == "OL") {
$campus = "XOL";
}
if(empty($campus)) {
$campus = "N/A";
}
if(!isset($campusMask[$campus])) {
$campusMask[$campus] = $i;
$i <<= 1;
}
$obj->addMeeting($meet, $campus, $campusMask[$campus]);
}
$classes[] = $obj;
}
$classes[] = $campusMask;
$filename = "cache/".$prefix.$year.$semester;
file_put_contents($filename.".tmp", serialize($classes));
//seamlessly transition the new data
rename($filename.".tmp", $filename.".txt");
}
//run unit test on getFileArray
testGetFileArray();
$files = getFileArray(false);
$trad = "http://gimme.letu.edu/courseschedule/trad/full/";
$nontrad = "http://gimme.letu.edu/courseschedule/sgps/full/";
foreach($files as $file) {
$year = substr($file, 0, 4);
$sem = substr($file, -2);
writeClassData($trad, $year, $sem);
writeClassData($nontrad, $year, $sem, "Non");
}
?>