<html> <head> <title>Rutgers Sports Calendar</title> <style type="text/css"> a:link {color: #000000; text-decoration: underline; } a:active {color: #000000; text-decoration: underline; } a:visited {color: #000000; text-decoration: underline; } a:hover {color: #000000; text-decoration: underline; } table a:link, table a:visited, table a:active, table a:hover { color: #FFFFFF; text-decoration: none; } h2 { font-family: Verdana; font-size: 15px; } h3 { font-family: Verdana; font-size: 12px; font-weight: normal; } body { font-family: Verdana; font-size: 12px; table-layout: fixed; } table { font-family: Verdana; font-size: 10px; } </style> </head> <body onLoad="document.getElementById('loader').style.display='none';"> <div id='loader'> Fetching events from external websites, please wait... </div> <?php ob_flush(); flush(); echo "<center>"; echo "<img src=\"rutgers.jpg\" height=100>"; echo "<p><h3><b>Live Rutgers Sports Calendar</b><br />"; echo "30 days worth of events automatically extracted from www.scarletknights.com.<br />"; echo "Hover mouse over event image for information<p>"; echo "By <a href=\"http://winlab.rutgers.edu/~snelson/\">Sam Nelson</a> | <a href=\"source.html\">View script source code</a></h3><p>"; /******************************************************************* Extact content from HTML Each of these data points is stored in an array that is returned: finalData[0] = a dataPoint; finalData[1] = another dataPoint; etc. *******************************************************************/ function getContents($in_url) { // store all data in the following array $finalData = array(); // get HTML data $sportsData = file_get_contents($in_url); // keep getting data until the end of the page while (true) { // get next <tr> ... </tr> block $start = strpos($sportsData, "<tr>"); if ($start === false) { break; } $end = strpos($sportsData, "</tr>"); $trBlock = substr($sportsData, $start, $end); // extact data from block $dataPoint = getDataPoint($trBlock); // add data to main array if valid if ($dataPoint['valid'] == true) { array_push($finalData, $dataPoint); } // get rid of the block $sportsData = substr($sportsData, $end+4, strlen($sportsData)); } // return the data array return $finalData; } /****************************************** Get data out of a <tr>...</tr> block ******************************************/ function getDataPoint($trBlock) { $dataPoint = array(); $trArray = explode("\n",strip_tags($trBlock)); if (count($trArray) < 8 || trim($trArray[6]) == "DATE") { $dataPoint['valid'] = false; return $dataPoint; } else { $dataPoint['valid'] = true; } $offset = 0; if (preg_match('/divider/',$trBlock)) { $offset = 1; } $dataPoint['date'] = trim($trArray[3+$offset]); $dataPoint['sport'] = trim($trArray[4+$offset]); $dataPoint['opp'] = trim($trArray[5+$offset]); $dataPoint['location'] = trim($trArray[6+$offset]); $dataPoint['time'] = trim($trArray[7+$offset]); return $dataPoint; } /********************************************************** Write all sports on tempDay through the echo command **********************************************************/ function echoSportsToday($sportsData, $tempDay) { for ($i = 0; $i < count($sportsData); $i++) { $dataPoint = $sportsData[$i]; if ($dataPoint['date'] == $tempDay) { $mouseOver = $dataPoint['sport'] . " "; $mouseOver = $mouseOver . "vs. " . $dataPoint['opp'] . " "; $mouseOver = $mouseOver . "at " . $dataPoint['location'] . " "; $mouseOver = $mouseOver . "at " . $dataPoint['time']; $sport = $dataPoint['sport']; $img = "default.jpg"; if ($sport == "Baseball") { $img = "baseball.jpg"; } elseif ($sport == "Men's Basketball") { $img = "mbball.jpg"; } elseif ($sport == "Women's Basketball") { $img = "wbball.jpg"; } elseif ($sport == "Football") { $img = "football.jpg"; } elseif ($sport == "Women's Tennis") { $img = "wtennis.jpg"; } elseif ($sport == "Men's Tennis") { $img = "mtennis.jpg"; } elseif ($sport == "Softball") { $img = "softball.jpg"; } elseif ($sport == "Swimming and Diving") { $img = "swimming.jpg"; } elseif ($sport == "Women's Golf") { $img = "golf.jpg"; } elseif ($sport == "Men's Golf") { $img = "golf.jpg"; } elseif ($sport == "Men's Lacrosse") { $img = "lacrosse.jpg"; } elseif ($sport == "Women's Lacrosse") { $img = "lacrosse.jpg"; } elseif ($sport == "Men's Track") { $img = "track.jpg"; } elseif ($sport == "Women's Track") { $img = "track.jpg"; } elseif ($sport == "Gymnastics") { $img = "gym.jpg"; } elseif ($sport == "Wrestling") { $img = "wrestling.jpg"; } echo "<img src=\"" . $img . "\" title=\"" . $mouseOver . "\" width=20 height=20>"; } } } $sportsData = getContents('http://www.scarletknights.com/schedule/sched-30.asp'); // Days of the week $dayNames = array(0 => "S", 1 => "M", 2 => "T", 3 =>"W", 4 => "T", 5 => "F", 6 => "S"); // Determine the first and last day of the current month if (array_key_exists('month',$_GET) && array_key_exists('year',$_GET)) { $month = $_GET['month']; $year = $_GET['year']; $today = getdate(mktime(0,0,0,$month,1,$year)); $realMonth = false; } else { $today = getdate(); $realMonth = true; } $first_day = getdate(mktime(0,0,0,$today['mon'],1,$today['year'])); if ($today['mon'] != 11) $last_day = getdate(mktime(0,0,0,$today['mon']+1,0,$today['year'])); else $last_day = getdate(mktime(0,0,0,0,0,$today['year']+1)); // Print out the calendar echo "<table border = 1 cellpadding = 5>\n"; echo "<tr>\n"; echo "<td bgcolor=#D21034 colspan=\"7\" align=\"center\"><b><font color=#FFFFFF>" . $today['month'] . " " . $today['year'] . "</font></b></td>\n"; echo "</tr>\n"; echo "<tr height=20>\n"; foreach ($dayNames as $dn) { echo "<td width=80><b>" . $dn . "</b></td>\n"; } echo "</tr>\n"; $dayWereOn = 0; $breakout = false; for ($week = 0; $week < 6; $week++) { echo "<tr height=80>\n"; for ($dayofweek = 0; $dayofweek < 7; $dayofweek++) { if ($dayWereOn == 0 && $dayofweek == $first_day['wday']) $dayWereOn = 1; if ($dayWereOn == $today['mday'] && $realMonth) echo "<td width=80 valign=top bgcolor=#D21034>"; elseif ($dayWereOn <= 0) echo "<td width=80 valign=top bgcolor=#D8D8D8>"; else echo "<td width=80 valign=top>"; if ($dayWereOn > 0) { echo $dayWereOn; echo "<center>"; $tempDay = date("F j",mktime(0,0,0,$today['mon'],$dayWereOn,$today['year'])); echoSportsToday($sportsData, $tempDay); $dayWereOn++; } else { echo " "; } echo "</td>\n"; if ($dayWereOn == $last_day['mday'] + 1) { $dayWereOn = -1; $breakout = true; } } echo "</tr>\n"; if ($breakout == true) break; } // Create bottom of calendar $prevMonth = $today['mon']-1; $prevYear = $today['year']; if ($prevMonth == 0) { $prevMonth = 12; $prevYear--; } $nextMonth = $today['mon']+1; $nextYear = $today['year']; if ($nextMonth == 13) { $nextMonth = 1; $nextYear++; } echo "<tr>\n"; echo "<td colspan=2 bgcolor=#D21034>"; echo "<center><b><a href=\"main.php?month=" . $prevMonth . "&year=" . $prevYear . "\">Go To Previous Month</a></b></center>"; echo "</td>\n<td colspan=3 bgcolor=#D21034>"; echo "<center><b><a href=\"main.php\">Go To Today: " . date("m/d/y") . "</a></b></center>"; echo "</td>\n<td colspan=2 bgcolor=#D21034>"; echo "<center><b><a href=\"main.php?month=" . $nextMonth . "&year=" . $nextYear . "\">Go To Next Month</a></b></center>"; echo "</td>"; echo "</tr>\n"; echo "</table><p>\n"; ?> </center> </body> </html>