'posbydayurl',
'idstring' => $sObject,
'weeks' => $this->sWeek)));
if (($this->sContents = file_get_contents($sUrl)) === false) {
throw new Exception('Failed to load page');
}
return $this->sContents;
}
function getData($sRooster = null) {
$sRooster = isset($sRooster) ? $sRooster : $this->sContents;
if (substr_count($sRooster, '
') != 7) {
echo $sRooster;
throw new Exception('Page does not contain valid data');
}
$aDays = explode(' | ', $sRooster);
array_shift($aDays);
array_pop($aDays);
array_pop($aDays);
$aData = array();
foreach ($aDays as $iDay => $sDay) {
if (strpos($sDay, '') !== false) {
$aColumns = null;
$aRows = explode('', $sDay);
array_shift($aRows);
array_pop($aRows);
$sHeader = array_shift($aRows);
if (!isset($aColumns)) {
foreach (explode("\n", strip_tags($sHeader)) as $iColumn => $sColumn) {
switch (trim($sColumn)) {
case 'Start':
$aColumns[$iColumn] = 'start';
break;
case 'Eind':
$aColumns[$iColumn] = 'end';
break;
case 'Vak':
$aColumns[$iColumn] = 'course';
break;
case 'Type':
$aColumns[$iColumn] = 'type';
break;
case 'Locatie':
$aColumns[$iColumn] = 'room';
break;
}
}
}
$aData[$iDay] = array();
foreach ($aRows as $sRow) {
$aInfo = array();
$aRow = explode("\n", strip_tags($sRow));
foreach ($aColumns as $iColumn => $sColumn) {
if (isset($aRow[$iColumn])) {
$aRow[$iColumn] = trim($aRow[$iColumn]);
$aInfo[$sColumn] = $sColumn == 'course'
? preg_replace('~[\s]+\([^\)]+\)$~', null, $aRow[$iColumn])
: $aRow[$iColumn];
}
}
$aData[$iDay][] = $aInfo;
}
}
}
return $aData;
}
} |