Search moodle.org's
Developer Documentation

  • Bug fixes for general core bugs in 3.7.x will end 11 May 2020 (12 months).
  • Bug fixes for security issues in 3.7.x will end 9 November 2020 (18 months) - Support has ended.
  • minimum PHP 7.1.0 Note: minimum PHP version has increased since Moodle 3.6. PHP 7.2.x and 7.3.x are supported too. PHP 7.x could have some engine limitations.
  • /calendar/ -> view.php (source)

    Differences Between: [Versions 35 and 37] [Versions 36 and 37] [Versions 37 and 310] [Versions 37 and 311] [Versions 37 and 38] [Versions 37 and 39]

       1  <?php
       2  
       3  /////////////////////////////////////////////////////////////////////////////
       4  //                                                                         //
       5  // NOTICE OF COPYRIGHT                                                     //
       6  //                                                                         //
       7  // Moodle - Calendar extension                                             //
       8  //                                                                         //
       9  // Copyright (C) 2003-2004  Greek School Network            www.sch.gr     //
      10  //                                                                         //
      11  // Designed by:                                                            //
      12  //     Avgoustos Tsinakos (tsinakos@teikav.edu.gr)                         //
      13  //     Jon Papaioannou (pj@moodle.org)                                     //
      14  //                                                                         //
      15  // Programming and development:                                            //
      16  //     Jon Papaioannou (pj@moodle.org)                                     //
      17  //                                                                         //
      18  // For bugs, suggestions, etc contact:                                     //
      19  //     Jon Papaioannou (pj@moodle.org)                                     //
      20  //                                                                         //
      21  // The current module was developed at the University of Macedonia         //
      22  // (www.uom.gr) under the funding of the Greek School Network (www.sch.gr) //
      23  // The aim of this project is to provide additional and improved           //
      24  // functionality to the Asynchronous Distance Education service that the   //
      25  // Greek School Network deploys.                                           //
      26  //                                                                         //
      27  // This program is free software; you can redistribute it and/or modify    //
      28  // it under the terms of the GNU General Public License as published by    //
      29  // the Free Software Foundation; either version 2 of the License, or       //
      30  // (at your option) any later version.                                     //
      31  //                                                                         //
      32  // This program is distributed in the hope that it will be useful,         //
      33  // but WITHOUT ANY WARRANTY; without even the implied warranty of          //
      34  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
      35  // GNU General Public License for more details:                            //
      36  //                                                                         //
      37  //          http://www.gnu.org/copyleft/gpl.html                           //
      38  //                                                                         //
      39  /////////////////////////////////////////////////////////////////////////////
      40  
      41  /**
      42   * Display the calendar page.
      43   * @copyright 2003 Jon Papaioannou
      44   * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
      45   * @package core_calendar
      46   */
      47  
      48  require_once('../config.php');
      49  require_once($CFG->dirroot.'/course/lib.php');
      50  require_once($CFG->dirroot.'/calendar/lib.php');
      51  
      52  $categoryid = optional_param('category', null, PARAM_INT);
      53  $courseid = optional_param('course', SITEID, PARAM_INT);
      54  $view = optional_param('view', 'upcoming', PARAM_ALPHA);
      55  $day = optional_param('cal_d', 0, PARAM_INT);
      56  $mon = optional_param('cal_m', 0, PARAM_INT);
      57  $year = optional_param('cal_y', 0, PARAM_INT);
      58  $time = optional_param('time', 0, PARAM_INT);
      59  $lookahead = optional_param('lookahead', null, PARAM_INT);
      60  
      61  $url = new moodle_url('/calendar/view.php');
      62  
      63  // If a day, month and year were passed then convert it to a timestamp. If these were passed
      64  // then we can assume the day, month and year are passed as Gregorian, as no where in core
      65  // should we be passing these values rather than the time. This is done for BC.
      66  if (!empty($day) && !empty($mon) && !empty($year)) {
      67      if (checkdate($mon, $day, $year)) {
      68          $time = make_timestamp($year, $mon, $day);
      69      }
      70  }
      71  
      72  if (empty($time)) {
      73      $time = time();
      74  }
      75  
      76  if ($courseid != SITEID) {
      77      $url->param('course', $courseid);
      78  }
      79  
      80  if ($categoryid) {
      81      $url->param('categoryid', $categoryid);
      82  }
      83  
      84  if ($view !== 'upcoming') {
      85      $time = usergetmidnight($time);
      86      $url->param('view', $view);
      87  }
      88  
      89  $url->param('time', $time);
      90  
      91  $PAGE->set_url($url);
      92  
      93  $course = get_course($courseid);
      94  
      95  if ($courseid != SITEID && !empty($courseid)) {
      96      navigation_node::override_active_url(new moodle_url('/course/view.php', array('id' => $course->id)));
      97  } else if (!empty($categoryid)) {
      98      core_course_category::get($categoryid); // Check that category exists and can be accessed.
      99      $PAGE->set_category_by_id($categoryid);
     100      navigation_node::override_active_url(new moodle_url('/course/index.php', array('categoryid' => $categoryid)));
     101  } else {
     102      $PAGE->set_context(context_system::instance());
     103  }
     104  
     105  require_login($course, false);
     106  
     107  $calendar = calendar_information::create($time, $courseid, $categoryid);
     108  
     109  $pagetitle = '';
     110  
     111  $strcalendar = get_string('calendar', 'calendar');
     112  
     113  switch($view) {
     114      case 'day':
     115          $PAGE->navbar->add(userdate($time, get_string('strftimedate')));
     116          $pagetitle = get_string('dayviewtitle', 'calendar', userdate($time, get_string('strftimedaydate')));
     117      break;
     118      case 'month':
     119          $PAGE->navbar->add(userdate($time, get_string('strftimemonthyear')));
     120          $pagetitle = get_string('detailedmonthviewtitle', 'calendar', userdate($time, get_string('strftimemonthyear')));
     121      break;
     122      case 'upcoming':
     123          $pagetitle = get_string('upcomingevents', 'calendar');
     124      break;
     125  }
     126  
     127  // Print title and header
     128  $PAGE->set_pagelayout('standard');
     129  $PAGE->set_title("$course->shortname: $strcalendar: $pagetitle");
     130  $PAGE->set_heading($COURSE->fullname);
     131  
     132  $renderer = $PAGE->get_renderer('core_calendar');
     133  $calendar->add_sidecalendar_blocks($renderer, true, $view);
     134  
     135  echo $OUTPUT->header();
     136  echo $renderer->start_layout();
     137  echo html_writer::start_tag('div', array('class'=>'heightcontainer'));
     138  echo $OUTPUT->heading(get_string('calendar', 'calendar'));
     139  
     140  
     141  list($data, $template) = calendar_get_view($calendar, $view, true, false, $lookahead);
     142  echo $renderer->render_from_template($template, $data);
     143  
     144  echo html_writer::end_tag('div');
     145  
     146  list($data, $template) = calendar_get_footer_options($calendar);
     147  echo $renderer->render_from_template($template, $data);
     148  
     149  echo $renderer->complete_layout();
     150  echo $OUTPUT->footer();