function get_content() { global $USER, $CFG, $SESSION, $COURSE; $cal_m = optional_param('cal_m', 0, PARAM_INT); $cal_y = optional_param('cal_y', 0, PARAM_INT); require_once $CFG->dirroot . '/calendar/lib.php'; if ($this->content !== NULL) { return $this->content; } // Reset the session variables calendar_session_vars($COURSE); $this->content = new stdClass(); $this->content->text = ''; if (empty($this->instance)) { // Overrides: use no course at all $courseshown = false; $filtercourse = array(); $this->content->footer = ''; } else { $courseshown = $COURSE->id; $this->content->footer = '<br /><a href="' . $CFG->wwwroot . '/calendar/view.php?view=upcoming&course=' . $courseshown . '">' . get_string('gotocalendar', 'calendar') . '</a>...'; $context = get_context_instance(CONTEXT_COURSE, $courseshown); if (has_capability('moodle/calendar:manageentries', $context) || has_capability('moodle/calendar:manageownentries', $context)) { $this->content->footer .= '<br /><a href="' . $CFG->wwwroot . '/calendar/event.php?action=new&course=' . $courseshown . '">' . get_string('newevent', 'calendar') . '</a>...'; } if ($courseshown == SITEID) { // Being displayed at site level. This will cause the filter to fall back to auto-detecting // the list of courses it will be grabbing events from. $filtercourse = NULL; $groupeventsfrom = NULL; $SESSION->cal_courses_shown = calendar_get_default_courses(true); calendar_set_referring_course(0); } else { // Forcibly filter events to include only those from the particular course we are in. $filtercourse = array($courseshown => $COURSE); $groupeventsfrom = array($courseshown => 1); } } // We 'll need this later calendar_set_referring_course($courseshown); // Be VERY careful with the format for default courses arguments! // Correct formatting is [courseid] => 1 to be concise with moodlelib.php functions. calendar_set_filters($courses, $group, $user, $filtercourse, $groupeventsfrom, false); $events = calendar_get_upcoming($courses, $group, $user, get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS), get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS)); if (!empty($this->instance)) { $this->content->text = calendar_get_sideblock_upcoming($events, 'view.php?view=day&course=' . $courseshown . '&'); } if (empty($this->content->text)) { $this->content->text = '<div class="post">' . get_string('noupcomingevents', 'calendar') . '</div>'; } return $this->content; }
function get_content() { global $USER, $CFG, $SESSION; $cal_m = optional_param('cal_m', 0, PARAM_INT); $cal_y = optional_param('cal_y', 0, PARAM_INT); require_once $CFG->dirroot . '/calendar/lib.php'; if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass(); $this->content->text = ''; $filtercourse = array(); if (empty($this->instance)) { // Overrides: use no course at all $courseshown = false; $this->content->footer = ''; } else { $courseshown = $this->page->course->id; $this->content->footer = '<div class="gotocal"><a href="' . $CFG->wwwroot . '/calendar/view.php?view=upcoming&course=' . $courseshown . '">' . get_string('gotocalendar', 'calendar') . '</a>...</div>'; $context = context_course::instance($courseshown); if (has_any_capability(array('moodle/calendar:manageentries', 'moodle/calendar:manageownentries'), $context)) { $this->content->footer .= '<div class="newevent"><a href="' . $CFG->wwwroot . '/calendar/event.php?action=new&course=' . $courseshown . '">' . get_string('newevent', 'calendar') . '</a>...</div>'; } if ($courseshown == SITEID) { // Being displayed at site level. This will cause the filter to fall back to auto-detecting // the list of courses it will be grabbing events from. $filtercourse = calendar_get_default_courses(); } else { // Forcibly filter events to include only those from the particular course we are in. $filtercourse = array($courseshown => $this->page->course); } } list($courses, $group, $user) = calendar_set_filters($filtercourse); $defaultlookahead = CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD; if (isset($CFG->calendar_lookahead)) { $defaultlookahead = intval($CFG->calendar_lookahead); } $lookahead = get_user_preferences('calendar_lookahead', $defaultlookahead); $defaultmaxevents = CALENDAR_DEFAULT_UPCOMING_MAXEVENTS; if (isset($CFG->calendar_maxevents)) { $defaultmaxevents = intval($CFG->calendar_maxevents); } $maxevents = get_user_preferences('calendar_maxevents', $defaultmaxevents); $events = calendar_get_upcoming($courses, $group, $user, $lookahead, $maxevents); if (!empty($this->instance)) { $this->content->text = calendar_get_block_upcoming($events, 'view.php?view=day&course=' . $courseshown . '&'); } if (empty($this->content->text)) { $this->content->text = '<div class="post">' . get_string('noupcomingevents', 'calendar') . '</div>'; } return $this->content; }
/** * This functions parses all the events, and creates one iCal * (.ics) file per course, storing them in the folder specified in the * module's configuration. * ToDo: site's events. */ function ical_parse() { global $CFG; // Retrieves all the courses $courses = get_records_sql('SELECT *, 1 FROM ' . $CFG->prefix . 'course'); // First, we must check if the path to store the iCal files exists... if (empty($CFG->ical_path)) { set_config('ical_path', 'webdav'); } $webdav_dir = $CFG->dirroot . '/' . $CFG->ical_path; if (is_dir($webdav_dir)) { // Now, for each course... foreach ($courses as $course) { $count = get_record_sql('SELECT *, 1 FROM ' . $CFG->prefix . 'event WHERE courseid=' . $course->id); if (!empty($count) && $course->id != 0 && ($fp = @fopen($webdav_dir . '/' . $course->shortname . '.ics', "w"))) { // Write the header $write = fwrite($fp, "BEGIN:VCALENDAR\nVERSION\n :2.0\nPRODID\n :-//Moodle.org//NONSGML iCal Module v0.1 beta//EN"); // expect creating/modifying the course file $events = calendar_get_upcoming(array(0 => $course->id), $groups, $users, get_user_preferences('calendar_lookahead', CALENDAR_UPCOMING_DAYS), get_user_preferences('calendar_maxevents', CALENDAR_UPCOMING_MAXEVENTS)); // For all the events in the current course foreach ($events as $event) { // If the event is visible if ($event->visible) { $write = fwrite($fp, "\nBEGIN:VEVENT\nUID\n :" . $event->id . "-" . $event->timestart . "\nSUMMARY\n :" . $event->name . "\nCATEGORIES\n :" . $course->fullname . "\nSTATUS\n :CONFIRMED\nCLASS\n :PUBLIC\nDESCRIPTION:" . $event->description); // We check if it has a stablished duration if ($event->timeduration != 0) { // It does: we print the event time information, with the duration $write = fwrite($fp, "\nDTSTART\n :" . gmdate("Ymd\\THis\\Z", $event->timestart) . "\nDTEND\n :" . gmdate("Ymd\\THis\\Z", $event->timestart + $event->timeduration)); } else { // However, if it doesn't, we assume that the event lasts 24hrs $write = fwrite($fp, "\nDTSTART\n ;VALUE=DATE\n :" . gmdate("Ymd", $event->timestart) . "\nDTEND\n ;VALUE=DATE\n :" . gmdate("Ymd", $event->timestart + 86400)); } // And now for the timestamp and we finish this event $write = fwrite($fp, "\nDTSTAMP\n :" . gmdate("Ymd\\THis\\Z", $event->timemodified) . "\nEND:VEVENT"); } } // This calendar file (course file) has ended :) $write = fwrite($fp, "\nEND:VCALENDAR"); fclose($fp); } } } else { echo 'The directory ' . $webdav_dir . ' is not valid.'; } }
/** * Displays upcoming events * * @param calendar_information $calendar * @param int $futuredays * @param int $maxevents * @return string */ public function show_upcoming_events(calendar_information $calendar, $futuredays, $maxevents, moodle_url $returnurl = null) { if ($returnurl === null) { $returnurl = $this->page->url; } $events = calendar_get_upcoming($calendar->courses, $calendar->groups, $calendar->users, $futuredays, $maxevents); $output = html_writer::start_tag('div', array('class' => 'header')); $output .= $this->course_filter_selector($returnurl, get_string('upcomingeventsfor', 'calendar')); if (calendar_user_can_add_event($calendar->course)) { $output .= $this->add_event_button($calendar->course->id); } $output .= html_writer::end_tag('div'); if ($events) { $output .= html_writer::start_tag('div', array('class' => 'eventlist')); foreach ($events as $event) { // Convert to calendar_event object so that we transform description // accordingly $event = new calendar_event($event); $event->calendarcourseid = $calendar->courseid; $output .= $this->event($event); } $output .= html_writer::end_tag('div'); } else { $output .= $this->output->heading(get_string('noupcomingevents', 'calendar')); } return $output; }
function calendar_show_upcoming_events($courses, $groups, $users, $futuredays, $maxevents, $courseid) { global $USER; $events = calendar_get_upcoming($courses, $groups, $users, $futuredays, $maxevents); $text = ''; if (!isguest() && !empty($USER->id) && calendar_user_can_add_event()) { $text .= '<div class="buttons">'; $text .= '<form action="' . CALENDAR_URL . 'event.php" method="get">'; $text .= '<div>'; $text .= '<input type="hidden" name="action" value="new" />'; $text .= '<input type="hidden" name="course" value="' . $courseid . '" />'; /* $text.= '<input type="hidden" name="cal_m" value="'.$m.'" />'; $text.= '<input type="hidden" name="cal_y" value="'.$y.'" />'; */ $text .= '<input type="submit" value="' . get_string('newevent', 'calendar') . '" />'; $text .= '</div></form></div>'; } $text .= get_string('upcomingevents', 'calendar') . ': ' . calendar_course_filter_selector('from=upcoming'); echo '<div class="header">' . $text . '</div>'; if ($events) { echo '<div class="eventlist">'; foreach ($events as $event) { $event->calendarcourseid = $courseid; calendar_print_event($event); } echo '</div>'; } else { print_heading(get_string('noupcomingevents', 'calendar')); } }
/** * Returns upcoming events for a course * * @param int $id Course identifier */ function get_upcoming_events($id, $username = '') { global $CFG, $DB; $id = addslashes($id); $courseshown = $id; $coursestoload = array($courseshown => $id); $groupeventsfrom = array($courseshown => 1); $filtercourse = $DB->get_records_list('course', 'id', $coursestoload); $true = true; if ($CFG->version >= 2011070100) { list($courses, $group, $user) = calendar_set_filters($filtercourse, $true); $courses = array($id => $id); if ($username != '') { // Show only events for groups where user is a member $groups = groups_get_all_groups($id); $gs = array(); foreach ($groups as $group) { $found = false; // Check is user is a member of the group $members = $this->get_group_members($group->id); foreach ($members as $member) { if ($member['username'] == $username) { $found = true; break; } } if ($found) { $gs[$group->id] = $group->id; } } } $events = calendar_get_upcoming($courses, $gs, false, CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD, CALENDAR_DEFAULT_UPCOMING_MAXEVENTS); } else { calendar_set_filters($courses, $group, $user, $filtercourse, $groupeventsfrom, true); $events = calendar_get_upcoming($courses, $group, $user, CALENDAR_UPCOMING_DAYS, CALENDAR_UPCOMING_MAXEVENTS); } $data = array(); foreach ($events as $r) { $e = array(); $e['name'] = $r->name; $e['timestart'] = $r->timestart; $e['courseid'] = $r->courseid; $data[$i] = $e; $i++; } return $data; }
/** * Displays upcoming events * * @param calendar_information $calendar * @param int $futuredays * @param int $maxevents * @return string */ public function show_upcoming_events(calendar_information $calendar, $futuredays, $maxevents) { $events = calendar_get_upcoming($calendar->courses, $calendar->groups, $calendar->users, $futuredays, $maxevents); $output = html_writer::start_tag('div', array('class' => 'header')); if (!isguestuser() && isloggedin() && calendar_user_can_add_event()) { $output .= $this->add_event_button($calendar->courseid); } $output .= html_writer::tag('label', get_string('upcomingevents', 'calendar'), array('for' => 'cal_course_flt_jump')); $output .= $this->course_filter_selector(array('from' => 'upcoming')); $output .= html_writer::end_tag('div'); if ($events) { $output .= html_writer::start_tag('div', array('class' => 'eventlist')); foreach ($events as $event) { // Convert to calendar_event object so that we transform description // accordingly $event = new calendar_event($event); $event->calendarcourseid = $calendar->courseid; $output .= $this->event($event); } $output .= html_writer::end_tag('div'); } else { $output .= $this->output->heading(get_string('noupcomingevents', 'calendar')); } return $output; }
/** * Returns upcoming events for a course * * @param int $id Course identifier */ function get_upcoming_events($id) { global $CFG; $id = addslashes($id); $courseshown = $id; $filtercourse = array($courseshown => $id); $groupeventsfrom = array($courseshown => 1); $true = true; if ($CFG->version >= 2011070100) { list($courses, $group, $user) = calendar_set_filters($filtercourse, $true); $courses = array($id => $id); $events = calendar_get_upcoming($courses, true, true, CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD, CALENDAR_DEFAULT_UPCOMING_MAXEVENTS); } else { calendar_set_filters($courses, $group, $user, $filtercourse, $groupeventsfrom, true); $events = calendar_get_upcoming($courses, $group, $user, CALENDAR_UPCOMING_DAYS, CALENDAR_UPCOMING_MAXEVENTS); } $data = array(); foreach ($events as $r) { $e['name'] = $r->name; $e['timestart'] = $r->timestart; $e['courseid'] = $r->courseid; $data[] = $e; } return $data; }
global $USER, $CFG, $SESSION; $cal_m = optional_param('cal_m', 0, PARAM_INT); $cal_y = optional_param('cal_y', 0, PARAM_INT); require_once $CFG->dirroot . '/calendar/lib.php'; $filtercourse = array(); if (empty($this->instance)) { // Overrides: use no course at all $courseshown = false; } else { $courseshown = $this->page->course->id; } // Being displayed at site level. This will cause the filter to fall back to auto-detecting // the list of courses it will be grabbing events from. $filtercourse = calendar_get_default_courses(); list($courses, $group, $user) = calendar_set_filters($filtercourse); $defaultlookahead = CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD; if (isset($CFG->calendar_lookahead)) { $defaultlookahead = intval($CFG->calendar_lookahead); } $lookahead = get_user_preferences('calendar_lookahead', $defaultlookahead); $defaultmaxevents = CALENDAR_DEFAULT_UPCOMING_MAXEVENTS; if (isset($CFG->calendar_maxevents)) { $defaultmaxevents = intval($CFG->calendar_maxevents); } $maxevents = 3; $events = calendar_get_upcoming($courses, $group, $user, $lookahead, $maxevents); $upcomingoutput = calendar_get_block_upcoming($events, 'view.php?view=day&course=' . $courseshown . '&'); echo $upcomingoutput; ?>