/ Published in: PHP
URL: http://skyward.nefec.org/component,eventcalendar/
http://skyward.nefec.org/component,eventcalendar/
Lets say you run the function and store the returned value in a variable called $componentPointer, I then run the second block of template code to "draw" the calendar.
The "makeURL" method simply generates the "a href" URL string. To implement into your own environment, a little tailoring would be needed. A live view is at the URL above.
Expand |
Embed | Plain Text
method to generate hash: /** * This method generates a calendar hash for an entire month and returns array of data * @access private * @author Matt Ford * @param int $month integer representing month * @param int $year 4 digit year * @param boolean $countEventsOnly return number of events for each day instead of a list of events * @return array $return hash array */ private function generateCalendarHash($month, $year, $countEventsOnly = false) { $firstOfMonth = mktime(0, 0, 0, $month, 1, $year); $daysInMonth = date("t", $firstOfMonth); $weekday = date("N", $firstOfMonth); $numWeeks = floor(($daysInMonth - (6 - date("w", $firstOfMonth))) / 7); $day_names = array( "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ); $currentDay = 1; $weeks = array(); if ($weekday > 0 && $weekday != 7) { $week = array_pad(array(), $weekday, array("num" => null)); } else { $week = array(); } while ($currentDay < $daysInMonth) { for ($i = count($week); $i < 7; $i++, $currentDay++) { if ($currentDay <= $daysInMonth) { /* This is where you'd run your queries to determine how many events fall on this day. */ if ($countEventsOnly === true) { $events = array(); $numEvents = 0;//$this->getNumberEvents($month, $currentDay, $year); } else { $events = array();//$this->getEvents($month, $currentDay, $year); $numEvents = 0;//count($events); } $week[] = array("num" => $currentDay, "numEvents" => $numEvents, "events" => $events); } else { $week[] = array("num" => null); } } $weeks[] = $week; $week = array(); } $return = array ( "monthName" => htmlentities(ucfirst(date("F", $firstOfMonth))), "monthInt" => $month, "year" => $year, "today" => array ( "month" => date("n"), "day" => date("j"), "year" => date("Y") ), "dayNames" => $day_names, "numWeeks" => $numWeeks, "weeks" => $weeks ); return $return; } <table> <?php foreach ($componentPointer["hash"]["weeks"] as $weekNum => $week) { echo "<tr>"; foreach ($week as $dayOfWeek => $day) { $cellContents = " "; $class = "day"; //$numLine = '<div class="evtCal_full_dayNumLine">' . $day["num"] . '</div>'; $numLine = '<div class="evtCal_full_dayNumLine"><a href="' . $this->makeURL(array("component" => "eventcalendar", "task" => "viewDay", "month" => $componentPointer["month"], "day" => $day["num"], "year" => $componentPointer["year"])) . '" title="View Calendar Day: ' . $dateLinkTitle . '">' . $day["num"] . '</a></div>'; switch ($day["num"]) { case null: $class .= " evtCal_full_dayNotThisMonth"; break; default: if ($day["numEvents"] > 0) { $class .= " evtCal_full_dayHasEvents"; //$numLine = '<div class="evtCal_full_dayNumLine"><a href="' . $this->makeURL(array("component" => "eventcalendar", "task" => "viewDay", "month" => $componentPointer["month"], "day" => $day["num"], "year" => $componentPointer["year"])) . '">' . $day["num"] . '</a></div>'; $cellContents = '<div class="evtCal_full_dayContents">' . $day["numEvents"] . " event(s)</div>"; } else { $class .= " evtCal_full_dayNoEvents"; } break; } if ($componentPointer["hash"]["monthInt"] == $componentPointer["hash"]["today"]["month"] && $day["num"] == $componentPointer["hash"]["today"]["day"] && $componentPointer["hash"]["year"] == $componentPointer["hash"]["today"]["year"]) { $class .= " evtCal_full_dayToday"; } else {} } echo '<td class="evtCal_full_spacerImageCell"><img src="' . $controller_config->absolute . '/supplementalFiles/img/spacer.gif" width="1" height="80" alt="spacer" /></td>'; echo "</tr>"; } ?> </table>
You need to login to post a comment.
