Merge branch 'master_MDL-31085' of git://github.com/danmarsden/moodle
authorSam Hemelryk <sam@moodle.com>
Mon, 13 Feb 2012 04:52:48 +0000 (17:52 +1300)
committerSam Hemelryk <sam@moodle.com>
Mon, 13 Feb 2012 04:52:48 +0000 (17:52 +1300)
31 files changed:
blog/index.php
blog/lib.php
calendar/lib.php
course/renderer.php
grade/report/overview/lib.php
index.php
lang/en/currencies.php
lib/db/log.php
lib/formslib.php
lib/moodlelib.php
lib/navigationlib.php
lib/pear/HTML/QuickForm/checkbox.php
lib/plagiarismlib.php
lib/simpletest/testmoodlelib.php
lib/textlib.class.php
mod/assignment/lib.php
mod/data/export.php
mod/data/lib.php
mod/forum/unsubscribeall.php
mod/quiz/attemptlib.php
mod/quiz/editlib.php
mod/quiz/lib.php
mod/quiz/locallib.php
mod/quiz/override_form.php
mod/quiz/view.php
mod/wiki/editors/wiki_editor.php
tag/index.php
tag/user.php
theme/formal_white/layout/report.php
theme/styles.php
version.php

index e1c0c22..8d28dbc 100644 (file)
@@ -197,20 +197,18 @@ if (!empty($userid)) {
 
 $courseid = (empty($courseid)) ? SITEID : $courseid;
 
-if (!empty($courseid)) {
-    $PAGE->set_context(get_context_instance(CONTEXT_COURSE, $courseid));
-}
-
-if (!empty($modid)) {
-    $PAGE->set_context(get_context_instance(CONTEXT_MODULE, $modid));
+if (empty($entryid) && empty($modid) && empty($groupid)) {
+    $PAGE->set_context(context_user::instance($USER->id));
+} else if (!empty($modid)) {
+    $PAGE->set_context(context_module::instance($modid));
+} else if (!empty($courseid)) {
+    $PAGE->set_context(context_course::instance($courseid));
+} else {
+    $PAGE->set_context(context_system::instance());
 }
 
 $blogheaders = blog_get_headers();
 
-if (empty($entryid) && empty($modid) && empty($groupid)) {
-    $PAGE->set_context(get_context_instance(CONTEXT_USER, $USER->id));
-}
-
 if ($CFG->enablerssfeeds) {
     $rsscontext = null;
     $filtertype = null;
index 991069c..5a92fb5 100644 (file)
@@ -314,7 +314,7 @@ function blog_get_context_url($context=null) {
 
     // Change contextlevel to SYSTEM if viewing the site course
     if ($context->contextlevel == CONTEXT_COURSE && $context->instanceid == SITEID) {
-        $context->contextlevel = CONTEXT_SYSTEM;
+        $context = context_system::instance();
     }
 
     $filterparam = '';
index 046c0a9..e4e76cd 100644 (file)
 <?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
-/////////////////////////////////////////////////////////////////////////////
-//                                                                         //
-// NOTICE OF COPYRIGHT                                                     //
-//                                                                         //
-// Moodle - Calendar extension                                             //
-//                                                                         //
-// Copyright (C) 2003-2004  Greek School Network            www.sch.gr     //
-//                                                                         //
-// Designed by:                                                            //
-//     Avgoustos Tsinakos (tsinakos@teikav.edu.gr)                         //
-//     Jon Papaioannou (pj@moodle.org)                                     //
-//                                                                         //
-// Programming and development:                                            //
-//     Jon Papaioannou (pj@moodle.org)                                     //
-//                                                                         //
-// For bugs, suggestions, etc contact:                                     //
-//     Jon Papaioannou (pj@moodle.org)                                     //
-//                                                                         //
-// The current module was developed at the University of Macedonia         //
-// (www.uom.gr) under the funding of the Greek School Network (www.sch.gr) //
-// The aim of this project is to provide additional and improved           //
-// functionality to the Asynchronous Distance Education service that the   //
-// Greek School Network deploys.                                           //
-//                                                                         //
-// This program is free software; you can redistribute it and/or modify    //
-// it under the terms of the GNU General Public License as published by    //
-// the Free Software Foundation; either version 2 of the License, or       //
-// (at your option) any later version.                                     //
-//                                                                         //
-// This program is distributed in the hope that it will be useful,         //
-// but WITHOUT ANY WARRANTY; without even the implied warranty of          //
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           //
-// GNU General Public License for more details:                            //
-//                                                                         //
-//          http://www.gnu.org/copyleft/gpl.html                           //
-//                                                                         //
-/////////////////////////////////////////////////////////////////////////////
-
-// These are read by the administration component to provide default values
+/**
+ * Calendar extension
+ *
+ * @package    core_calendar
+ * @copyright  2004 Greek School Network (http://www.sch.gr), Jon Papaioannou,
+ *             Avgoustos Tsinakos
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+/**
+ *  These are read by the administration component to provide default values
+ */
+
+/**
+ * CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD - default value of upcoming event preference
+ */
 define('CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD', 21);
+
+/**
+ * CALENDAR_DEFAULT_UPCOMING_MAXEVENTS - default value to display the maximum number of upcoming event
+ */
 define('CALENDAR_DEFAULT_UPCOMING_MAXEVENTS', 10);
-define('CALENDAR_DEFAULT_STARTING_WEEKDAY',   1);
+
+/**
+ * CALENDAR_DEFAULT_STARTING_WEEKDAY - default value to display the starting weekday
+ */
+define('CALENDAR_DEFAULT_STARTING_WEEKDAY', 1);
+
 // This is a packed bitfield: day X is "weekend" if $field & (1 << X) is true
 // Default value = 65 = 64 + 1 = 2^6 + 2^0 = Saturday & Sunday
-define('CALENDAR_DEFAULT_WEEKEND',            65);
+
+/**
+ * CALENDAR_DEFAULT_WEEKEND - default value for weekend (Saturday & Sunday)
+ */
+define('CALENDAR_DEFAULT_WEEKEND', 65);
+
+/**
+ * CALENDAR_URL - path to calendar's folder
+ */
 define('CALENDAR_URL', $CFG->wwwroot.'/calendar/');
+
+/**
+ * CALENDAR_TF_24 - Calendar time in 24 hours format
+ */
 define('CALENDAR_TF_24', '%H:%M');
+
+/**
+ * CALENDAR_TF_12 - Calendar time in 12 hours format
+ */
 define('CALENDAR_TF_12', '%I:%M %p');
 
+/**
+ * CALENDAR_EVENT_GLOBAL - Global calendar event types
+ */
 define('CALENDAR_EVENT_GLOBAL', 1);
+
+/**
+ * CALENDAR_EVENT_COURSE - Course calendar event types
+ */
 define('CALENDAR_EVENT_COURSE', 2);
+
+/**
+ * CALENDAR_EVENT_GROUP - group calendar event types
+ */
 define('CALENDAR_EVENT_GROUP', 4);
+
+/**
+ * CALENDAR_EVENT_USER - user calendar event types
+ */
 define('CALENDAR_EVENT_USER', 8);
 
 /**
- * CALENDAR_STARTING_WEEKDAY has since been deprecated please call calendar_get_starting_weekday() instead
- * @deprecated
+ * CALENDAR_STARTING_WEEKDAY - has since been deprecated please call calendar_get_starting_weekday() instead
+ *
+ * @deprecated Moodle 2.0 MDL-24284- please do not use this function any more.
+ * @todo MDL-31132 This will be deleted in Moodle 2.3.
+ * @see calendar_get_starting_weekday()
  */
 define('CALENDAR_STARTING_WEEKDAY', CALENDAR_DEFAULT_STARTING_WEEKDAY);
 
 /**
  * Return the days of the week
  *
- * @return array
+ * @return array array of days
  */
 function calendar_get_days() {
     return array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday');
@@ -95,13 +129,12 @@ function calendar_get_starting_weekday() {
 /**
  * Generates the HTML for a miniature calendar
  *
- * @global core_renderer $OUTPUT
- * @param array $courses
- * @param array $groups
- * @param array $users
- * @param int $cal_month
- * @param int $cal_year
- * @return string
+ * @param array $courses list of course
+ * @param array $groups list of group
+ * @param array $users user's info
+ * @param int $cal_month calendar month in numeric, default is set to false
+ * @param int $cal_year calendar month in numeric, default is set to false
+ * @return string $content return html table for mini calendar
  */
 function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_year = false) {
     global $CFG, $USER, $OUTPUT;
@@ -375,13 +408,15 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y
 }
 
 /**
- * calendar_get_popup, called at multiple points in from calendar_get_mini.
- *        Copied and modified from calendar_get_mini.
- * @global moodle_page $PAGE
- * @param $is_today bool, false except when called on the current day.
- * @param $event_timestart mixed, $events[$eventid]->timestart, OR false if there are no events.
- * @param $popupcontent string.
- * @return $popup string, contains onmousover and onmouseout events.
+ * Gets the calendar popup
+ *
+ * It called at multiple points in from calendar_get_mini.
+ * Copied and modified from calendar_get_mini.
+ *
+ * @param bool $is_today false except when called on the current day.
+ * @param mixed $event_timestart $events[$eventid]->timestart, OR false if there are no events.
+ * @param string $popupcontent content for the popup window/layout
+ * @return string of eventid for the calendar_tooltip popup window/layout
  */
 function calendar_get_popup($is_today, $event_timestart, $popupcontent='') {
     global $PAGE;
@@ -407,6 +442,17 @@ function calendar_get_popup($is_today, $event_timestart, $popupcontent='') {
     return 'id="'.$id.'"';
 }
 
+/**
+ * Gets the calendar upcoming event
+ *
+ * @param array $courses array of courses
+ * @param array|int|bool $groups array of groups, group id or boolean for all/no group events
+ * @param array|int|bool $users array of users, user id or boolean for all/no user events
+ * @param int $daysinfuture number of days in the future we 'll look
+ * @param int $maxevents maximum number of events
+ * @param int $fromtime start time
+ * @return array $output array of upcoming events
+ */
 function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents, $fromtime=0) {
     global $CFG, $COURSE, $DB;
 
@@ -512,6 +558,12 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve
     return $output;
 }
 
+/**
+ * Add calendar event metadata
+ *
+ * @param stdClass $event event info
+ * @return stdClass $event metadata
+ */
 function calendar_add_event_metadata($event) {
     global $CFG, $OUTPUT;
 
@@ -571,7 +623,9 @@ function calendar_add_event_metadata($event) {
 /**
  * Prints a calendar event
  *
- * @deprecated 2.0
+ * @deprecated Moodle 2.0 - MDL-22887 please do not use this function any more.
+ * @todo MDL-31133 - will be removed in Moodle 2.3
+ * @see core_calendar_renderer event function
  */
 function calendar_print_event($event, $showactions=true) {
     global $CFG, $USER, $OUTPUT, $PAGE;
@@ -585,15 +639,16 @@ function calendar_print_event($event, $showactions=true) {
 
 /**
  * Get calendar events
+ *
  * @param int $tstart Start time of time range for events
- * @param int $tend   End time of time range for events
- * @param array/int/boolean $users array of users, user id or boolean for all/no user events
- * @param array/int/boolean $groups array of groups, group id or boolean for all/no group events
- * @param array/int/boolean $courses array of courses, course id or boolean for all/no course events
+ * @param int $tend End time of time range for events
+ * @param array|int|boolean $users array of users, user id or boolean for all/no user events
+ * @param array|int|boolean $groups array of groups, group id or boolean for all/no group events
+ * @param array|int|boolean $courses array of courses, course id or boolean for all/no course events
  * @param boolean $withduration whether only events starting within time range selected
  *                              or events in progress/already started selected as well
  * @param boolean $ignorehidden whether to select only visible events or all events
- * @return array of selected events or an empty array if there aren't any (or there was an error)
+ * @return array $events of selected events or an empty array if there aren't any (or there was an error)
  */
 function calendar_get_events($tstart, $tend, $users, $groups, $courses, $withduration=true, $ignorehidden=true) {
     global $DB;
@@ -684,6 +739,13 @@ function calendar_get_events($tstart, $tend, $users, $groups, $courses, $withdur
     return $events;
 }
 
+/**
+ * Get control options for Calendar
+ *
+ * @param string $type of calendar
+ * @param array $data calendar information
+ * @return string $content return available control for the calender in html
+ */
 function calendar_top_controls($type, $data) {
     global $CFG;
     $content = '';
@@ -835,6 +897,14 @@ function calendar_top_controls($type, $data) {
     return $content;
 }
 
+/**
+ * Get the controls filter for calendar.
+ *
+ * Filter is used to hide calendar info from the display page
+ *
+ * @param moodle_url $returnurl return-url for filter controls
+ * @return string $content return filter controls in html
+ */
 function calendar_filter_controls(moodle_url $returnurl) {
     global $CFG, $USER, $OUTPUT;
 
@@ -897,6 +967,14 @@ function calendar_filter_controls(moodle_url $returnurl) {
     return $content;
 }
 
+/**
+ * Return the representation day
+ *
+ * @param int $tstamp Timestamp in GMT
+ * @param int $now current Unix timestamp
+ * @param bool $usecommonwords
+ * @return string the formatted date/time
+ */
 function calendar_day_representation($tstamp, $now = false, $usecommonwords = true) {
 
     static $shortformat;
@@ -941,6 +1019,12 @@ function calendar_day_representation($tstamp, $now = false, $usecommonwords = tr
     }
 }
 
+/**
+ * return the formatted representation time
+ *
+ * @param int $time the timestamp in UTC, as obtained from the database
+ * @return string the formatted date/time
+ */
 function calendar_time_representation($time) {
     static $langtimeformat = NULL;
     if($langtimeformat === NULL) {
@@ -958,10 +1042,10 @@ function calendar_time_representation($time) {
  * Adds day, month, year arguments to a URL and returns a moodle_url object.
  *
  * @param string|moodle_url $linkbase
- * @param int $d
- * @param int $m
- * @param int $y
- * @return moodle_url
+ * @param int $d The number of the day.
+ * @param int $m The number of the month.
+ * @param int $y The number of the year.
+ * @return moodle_url|null $linkbase
  */
 function calendar_get_link_href($linkbase, $d, $m, $y) {
     if (empty($linkbase)) {
@@ -985,14 +1069,15 @@ function calendar_get_link_href($linkbase, $d, $m, $y) {
 /**
  * This function has been deprecated as of Moodle 2.0... DO NOT USE!!!!!
  *
- * @deprecated
- * @since 2.0
+ * @deprecated Moodle 2.0 - MDL-24284 please do not use this function any more.
+ * @todo MDL-31134 - will be removed in Moodle 2.3
+ * @see calendar_get_link_href()
  *
  * @param string $text
  * @param string|moodle_url $linkbase
- * @param int|null $d
- * @param int|null $m
- * @param int|null $y
+ * @param int|null $d The number of the day.
+ * @param int|null $m The number of the month.
+ * @param int|null $y The number of the year.
  * @return string HTML link
  */
 function calendar_get_link_tag($text, $linkbase, $d, $m, $y) {
@@ -1008,7 +1093,9 @@ function calendar_get_link_tag($text, $linkbase, $d, $m, $y) {
  *
  * @param string $text The text label.
  * @param string|moodle_url $linkbase The URL stub.
- * @param int $d $m $y Day of month, month and year numbers.
+ * @param int $d The number of the date.
+ * @param int $m The number of the month.
+ * @param int $y year The number of the year.
  * @param bool $accesshide Default visible, or hide from all except screenreaders.
  * @return string HTML string.
  */
@@ -1025,7 +1112,9 @@ function calendar_get_link_previous($text, $linkbase, $d, $m, $y, $accesshide=fa
  *
  * @param string $text The text label.
  * @param string|moodle_url $linkbase The URL stub.
- * @param int $d $m $y Day of month, month and year numbers.
+ * @param int $d the number of the Day
+ * @param int $m The number of the month.
+ * @param int $y The number of the year.
  * @param bool $accesshide Default visible, or hide from all except screenreaders.
  * @return string HTML string.
  */
@@ -1037,14 +1126,34 @@ function calendar_get_link_next($text, $linkbase, $d, $m, $y, $accesshide=false)
     return link_arrow_right($text, (string)$href, $accesshide, 'next');
 }
 
+/**
+ * Return the name of the weekday
+ *
+ * @param string $englishname
+ * @return string of the weekeday
+ */
 function calendar_wday_name($englishname) {
     return get_string(strtolower($englishname), 'calendar');
 }
 
+/**
+ * Return the number of days in month
+ *
+ * @param int $month the number of the month.
+ * @param int $year the number of the year
+ * @return int
+ */
 function calendar_days_in_month($month, $year) {
    return intval(date('t', mktime(0, 0, 0, $month, 1, $year)));
 }
 
+/**
+ * Get the upcoming event block
+ *
+ * @param array $events list of events
+ * @param moodle_url|string $linkhref link to event referer
+ * @return string|null $content html block content
+ */
 function calendar_get_block_upcoming($events, $linkhref = NULL) {
     $content = '';
     $lines = count($events);
@@ -1080,6 +1189,16 @@ function calendar_get_block_upcoming($events, $linkhref = NULL) {
     return $content;
 }
 
+/**
+ * Get the next following month
+ *
+ * If the current month is December, it will get the first month of the following year.
+ *
+ *
+ * @param int $month the number of the month.
+ * @param int $year the number of the year.
+ * @return array the following month
+ */
 function calendar_add_month($month, $year) {
     if($month == 12) {
         return array(1, $year + 1);
@@ -1089,6 +1208,15 @@ function calendar_add_month($month, $year) {
     }
 }
 
+/**
+ * Get the previous month
+ *
+ * If the current month is January, it will get the last month of the previous year.
+ *
+ * @param int $month the number of the month.
+ * @param int $year the number of the year.
+ * @return array previous month
+ */
 function calendar_sub_month($month, $year) {
     if($month == 1) {
         return array(12, $year - 1);
@@ -1098,6 +1226,18 @@ function calendar_sub_month($month, $year) {
     }
 }
 
+/**
+ * Get per-day basis events
+ *
+ * @param array $events list of events
+ * @param int $month the number of the month
+ * @param int $year the number of the year
+ * @param array $eventsbyday event on specific day
+ * @param array $durationbyday duration of the event in days
+ * @param array $typesbyday event type (eg: global, course, user, or group)
+ * @param array $courses list of courses
+ * @return void
+ */
 function calendar_events_by_day($events, $month, $year, &$eventsbyday, &$durationbyday, &$typesbyday, &$courses) {
     $eventsbyday = array();
     $typesbyday = array();
@@ -1184,6 +1324,14 @@ function calendar_events_by_day($events, $month, $year, &$eventsbyday, &$duratio
     return;
 }
 
+/**
+ * Get current module cache
+ *
+ * @param array $coursecache list of course cache
+ * @param string $modulename name of the module
+ * @param int $instance module instance number
+ * @return stdClass|bool $module information
+ */
 function calendar_get_module_cached(&$coursecache, $modulename, $instance) {
     $module = get_coursemodule_from_instance($modulename, $instance);
 
@@ -1194,6 +1342,13 @@ function calendar_get_module_cached(&$coursecache, $modulename, $instance) {
     return $module;
 }
 
+/**
+ * Get current course cache
+ *
+ * @param array $coursecache list of course cache
+ * @param int $courseid id of the course
+ * @return stdClass $coursecache[$courseid] return the specific course cache
+ */
 function calendar_get_course_cached(&$coursecache, $courseid) {
     global $COURSE, $DB;
 
@@ -1210,9 +1365,8 @@ function calendar_get_course_cached(&$coursecache, $courseid) {
 /**
  * Returns the courses to load events for, the
  *
- * @global moodle_database $DB
  * @param array $courseeventsfrom An array of courses to load calendar events for
- * @param bool $ignorefilters
+ * @param bool $ignorefilters specify the use of filters, false is set as default
  * @return array An array of courses, groups, and user to load calendar events for based upon filters
  */
 function calendar_set_filters(array $courseeventsfrom, $ignorefilters = false) {
@@ -1292,6 +1446,12 @@ function calendar_set_filters(array $courseeventsfrom, $ignorefilters = false) {
     return array($courses, $group, $user);
 }
 
+/**
+ * Return the capability for editing calendar event
+ *
+ * @param calendar_event $event event object
+ * @return bool capability to edit event
+ */
 function calendar_edit_event_allowed($event) {
     global $USER, $DB;
 
@@ -1338,8 +1498,7 @@ function calendar_edit_event_allowed($event) {
  * Returns the default courses to display on the calendar when there isn't a specific
  * course to display.
  *
- * @global moodle_database $DB
- * @return array Array of courses to display
+ * @return array $courses Array of courses to display
  */
 function calendar_get_default_courses() {
     global $CFG, $DB;
@@ -1367,6 +1526,12 @@ function calendar_get_default_courses() {
     return $courses;
 }
 
+/**
+ * Display calendar preference button
+ *
+ * @param stdClass $course course object
+ * @return string return preference button in html
+ */
 function calendar_preferences_button(stdClass $course) {
     global $OUTPUT;
 
@@ -1378,6 +1543,16 @@ function calendar_preferences_button(stdClass $course) {
     return $OUTPUT->single_button(new moodle_url('/calendar/preferences.php', array('course' => $course->id)), get_string("preferences", "calendar"));
 }
 
+/**
+ * Get event format time
+ *
+ * @param calendar_event $event event object
+ * @param int $now current time in gmt
+ * @param array $linkparams list of params for event link
+ * @param bool $usecommonwords the words as formatted date/time.
+ * @param int $showtime determine the show time GMT timestamp
+ * @return string $eventtime link/string for event time
+ */
 function calendar_format_event_time($event, $now, $linkparams = null, $usecommonwords = true, $showtime=0) {
     $startdate = usergetdate($event->timestart);
     $enddate = usergetdate($event->timestart + $event->timeduration);
@@ -1467,6 +1642,12 @@ function calendar_format_event_time($event, $now, $linkparams = null, $usecommon
     return $eventtime;
 }
 
+/**
+ * Display month selector options
+ *
+ * @param string $name for the select element
+ * @param string|array $selected options for select elements
+ */
 function calendar_print_month_selector($name, $selected) {
     $months = array();
     for ($i=1; $i<=12; $i++) {
@@ -1498,13 +1679,14 @@ function calendar_show_event_type($type, $user = null) {
 
 /**
  * Sets the display of the event type given $display.
+ *
  * If $display = true the event type will be shown.
  * If $display = false the event type will NOT be shown.
  * If $display = null the current value will be toggled and saved.
  *
- * @param CALENDAR_EVENT_GLOBAL|CALENDAR_EVENT_COURSE|CALENDAR_EVENT_GROUP|CALENDAR_EVENT_USER $type
- * @param true|false|null $display
- * @param stdClass|int|null $user
+ * @param CALENDAR_EVENT_GLOBAL|CALENDAR_EVENT_COURSE|CALENDAR_EVENT_GROUP|CALENDAR_EVENT_USER $type object of CALENDAR_EVENT_XXX
+ * @param bool $display option to display event type
+ * @param stdClass|int $user moodle user object or id, null means current user
  */
 function calendar_set_event_type_display($type, $display = null, $user = null) {
     $persist = get_user_preferences('calendar_persistflt', 0, $user);
@@ -1538,6 +1720,12 @@ function calendar_set_event_type_display($type, $display = null, $user = null) {
     }
 }
 
+/**
+ * Get calendar's allowed types
+ *
+ * @param stdClass $allowed list of allowed edit for event  type
+ * @param stdClass|int $course object of a course or course id
+ */
 function calendar_get_allowed_types(&$allowed, $course = null) {
     global $USER, $CFG, $DB;
     $allowed = new stdClass();
@@ -1569,9 +1757,11 @@ function calendar_get_allowed_types(&$allowed, $course = null) {
 }
 
 /**
- * see if user can add calendar entries at all
+ * See if user can add calendar entries at all
  * used to print the "New Event" button
- * @return bool
+ *
+ * @param stdClass $course object of a course or course id
+ * @return bool has the capability to add at least one event type
  */
 function calendar_user_can_add_event($course) {
     if (!isloggedin() || isguestuser()) {
@@ -1584,8 +1774,8 @@ function calendar_user_can_add_event($course) {
 /**
  * Check wether the current user is permitted to add events
  *
- * @param object $event
- * @return bool
+ * @param stdClass $event object of event
+ * @return bool has the capability to add event
  */
 function calendar_add_event_allowed($event) {
     global $USER, $DB;
@@ -1630,13 +1820,18 @@ function calendar_add_event_allowed($event) {
 }
 
 /**
- * A class to manage calendar events
+ * Manage calendar events
  *
  * This class provides the required functionality in order to manage calendar events.
  * It was introduced as part of Moodle 2.0 and was created in order to provide a
  * better framework for dealing with calendar events in particular regard to file
  * handling through the new file API
  *
+ * @package    core_calendar
+ * @category   calendar
+ * @copyright  2009 Sam Hemelryk
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ *
  * @property int $id The id within the event table
  * @property string $name The name of the event
  * @property string $description The description of the event
@@ -1658,32 +1853,22 @@ function calendar_add_event_allowed($event) {
  */
 class calendar_event {
 
-    /**
-     * An object containing the event properties can be accessed via the
-     * magic __get/set methods
-     * @var array
-     */
+    /** @var array An object containing the event properties can be accessed via the magic __get/set methods */
     protected $properties = null;
+
     /**
-     * The converted event discription with file paths resolved
-     * This gets populated when someone requests description for the first time
-     * @var string
-     */
+     * @var string The converted event discription with file paths resolved. This gets populated when someone requests description for the first time */
     protected $_description = null;
-    /**
-     * The options to use with this description editor
-     * @var array
-     */
+
+    /** @var array The options to use with this description editor */
     protected $editoroptions = array(
             'subdirs'=>false,
             'forcehttps'=>false,
             'maxfiles'=>-1,
             'maxbytes'=>null,
             'trusttext'=>false);
-    /**
-     * The context to use with the description editor
-     * @var object
-     */
+
+    /** @var object The context to use with the description editor */
     protected $editorcontext = null;
 
     /**
@@ -1746,8 +1931,8 @@ class calendar_event {
      * Attempts to call a set_$key method if one exists otherwise falls back
      * to simply set the property
      *
-     * @param string $key
-     * @param mixed $value
+     * @param string $key property name
+     * @param mixed $value value of the property
      */
     public function __set($key, $value) {
         if (method_exists($this, 'set_'.$key)) {
@@ -1762,8 +1947,8 @@ class calendar_event {
      * Attempts to call a get_$key method to return the property and ralls over
      * to return the raw property
      *
-     * @param str $key
-     * @return mixed
+     * @param string $key property name
+     * @return mixed property value
      */
     public function __get($key) {
         if (method_exists($this, 'get_'.$key)) {
@@ -1779,8 +1964,8 @@ class calendar_event {
      * Stupid PHP needs an isset magic method if you use the get magic method and
      * still want empty calls to work.... blah ~!
      *
-     * @param string $key
-     * @return bool
+     * @param string $key $key property name
+     * @return bool|mixed property value, false if property is not exist
      */
     public function __isset($key) {
         return !empty($this->properties->{$key});
@@ -1793,7 +1978,8 @@ class calendar_event {
      * the course event.
      * Default value is set to CONTEXT_USER
      *
-     * @return stdClass
+     * @param stdClass $data information about event
+     * @return stdClass The context object.
      */
     protected function calculate_context(stdClass $data) {
         global $USER, $DB;
@@ -1822,7 +2008,8 @@ class calendar_event {
     /**
      * Returns an array of editoroptions for this event: Called by __get
      * Please use $blah = $event->editoroptions;
-     * @return array
+     *
+     * @return array event editor options
      */
     protected function get_editoroptions() {
         return $this->editoroptions;
@@ -1832,7 +2019,7 @@ class calendar_event {
      * Returns an event description: Called by __get
      * Please use $blah = $event->description;
      *
-     * @return string
+     * @return string event description
      */
     protected function get_description() {
         global $CFG;
@@ -1871,7 +2058,7 @@ class calendar_event {
     /**
      * Return the number of repeat events there are in this events series
      *
-     * @return int
+     * @return int number of event repeated
      */
     public function count_repeats() {
         global $DB;
@@ -1892,8 +2079,9 @@ class calendar_event {
      * @see add_event()
      * @see update_event()
      *
-     * @param stdClass $data
-     * @param boolean $checkcapability if moodle should check calendar managing capability or not
+     * @param stdClass $data object of event
+     * @param bool $checkcapability if moodle should check calendar managing capability or not
+     * @return bool event updated
      */
     public function update($data, $checkcapability=true) {
         global $CFG, $DB, $USER;
@@ -2072,8 +2260,8 @@ class calendar_event {
      *
      * @see delete_event()
      *
-     * @param bool $deleterepeated
-     * @return bool
+     * @param bool $deleterepeated  delete event repeatedly
+     * @return bool succession of deleting event
      */
     public function delete($deleterepeated=false) {
         global $DB;
@@ -2212,6 +2400,7 @@ class calendar_event {
      * @param null|bool $force If it is left null the events visibility is flipped,
      *                   If it is false the event is made hidden, if it is true it
      *                   is made visible.
+     * @return bool if event is successfully updated, toggle will be visible
      */
     public function toggle_visibility($force=null) {
         global $CFG, $DB;
@@ -2241,11 +2430,9 @@ class calendar_event {
      * Attempts to call the hook for the specified action should a calendar type
      * by set $CFG->calendar, and the appopriate function defined
      *
-     * @static
-     * @staticvar bool $extcalendarinc Used to track the inclusion of the calendar lib
      * @param string $action One of `update_event`, `add_event`, `delete_event`, `show_event`, `hide_event`
      * @param array $args The args to pass to the hook, usually the event is the first element
-     * @return bool
+     * @return bool attempts to call event hook
      */
     public static function calendar_event_hook($action, array $args) {
         global $CFG;
@@ -2275,8 +2462,8 @@ class calendar_event {
      * This function makes use of MUST_EXIST, if the event id passed in is invalid
      * it will result in an exception being thrown
      *
-     * @param int|object $param
-     * @return calendar_event|false
+     * @param int|object $param event object or event id
+     * @return calendar_event|false status for loading calendar_event
      */
     public static function load($param) {
         global $DB;
@@ -2316,51 +2503,40 @@ class calendar_event {
  *
  * This class is used simply to organise the information pertaining to a calendar
  * and is used primarily to make information easily available.
+ *
+ * @package core_calendar
+ * @category calendar
+ * @copyright 2010 Sam Hemelryk
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class calendar_information {
-    /**
-     * The day
-     * @var int
-     */
+    /** @var int The day */
     public $day;
-    /**
-     * The month
-     * @var int
-     */
+
+    /** @var int The month */
     public $month;
-    /**
-     * The year
-     * @var int
-     */
+
+    /** @var int The year */
     public $year;
 
-    /**
-     * A course id
-     * @var int
-     */
+    /** @var int A course id */
     public $courseid = null;
-    /**
-     * An array of courses
-     * @var array
-     */
+
+    /** @var array An array of courses */
     public $courses = array();
-    /**
-     * An array of groups
-     * @var array
-     */
+
+    /** @var array An array of groups */
     public $groups = array();
-    /**
-     * An array of users
-     * @var array
-     */
+
+    /** @var array An array of users */
     public $users = array();
 
     /**
      * Creates a new instance
      *
-     * @param int $day
-     * @param int $month
-     * @param int $year
+     * @param int $day the number of the day
+     * @param int $month the number of the month
+     * @param int $year the number of the year
      */
     public function __construct($day=0, $month=0, $year=0) {
 
@@ -2384,10 +2560,11 @@ class calendar_information {
     }
 
     /**
+     * Initialize calendar information
      *
-     * @param stdClass $course
+     * @param stdClass $course object
      * @param array $coursestoload An array of courses [$course->id => $course]
-     * @param type $ignorefilters
+     * @param bool $ignorefilters options to use filter
      */
     public function prepare_for_view(stdClass $course, array $coursestoload, $ignorefilters = false) {
         $this->courseid = $course->id;
@@ -2402,8 +2579,9 @@ class calendar_information {
      * Ensures the date for the calendar is correct and either sets it to now
      * or throws a moodle_exception if not
      *
-     * @param bool $defaultonow
-     * @return bool
+     * @param bool $defaultonow use current time
+     * @throws moodle_exception
+     * @return bool validation of checkdate
      */
     public function checkdate($defaultonow = true) {
         if (!checkdate($this->month, $this->day, $this->year)) {
@@ -2421,14 +2599,16 @@ class calendar_information {
     }
     /**
      * Gets todays timestamp for the calendar
-     * @return int
+     *
+     * @return int today timestamp
      */
     public function timestamp_today() {
         return make_timestamp($this->year, $this->month, $this->day);
     }
     /**
      * Gets tomorrows timestamp for the calendar
-     * @return int
+     *
+     * @return int tomorrow timestamp
      */
     public function timestamp_tomorrow() {
         return make_timestamp($this->year, $this->month, $this->day+1);
@@ -2437,8 +2617,8 @@ class calendar_information {
      * Adds the pretend blocks for teh calendar
      *
      * @param core_calendar_renderer $renderer
-     * @param bool $showfilters
-     * @param string|null $view
+     * @param bool $showfilters display filters, false is set as default
+     * @param string|null $view preference view options (eg: day, month, upcoming)
      */
     public function add_sidecalendar_blocks(core_calendar_renderer $renderer, $showfilters=false, $view=null) {
         if ($showfilters) {
index 3e9898c..1e1d7ad 100644 (file)
@@ -92,8 +92,8 @@ class core_course_renderer extends plugin_renderer_base {
      */
     protected function course_category_tree_category(stdClass $category, $depth=1) {
         $content = '';
-        $hassubcategories = (count($category->categories)>0);
-        $hascourses = (count($category->courses)>0);
+        $hassubcategories = (isset($category->categories) && count($category->categories)>0);
+        $hascourses = (isset($category->courses) && count($category->courses)>0);
         $classes = array('category');
         if ($category->parent != 0) {
             $classes[] = 'subcategory';
index cf8b757..b610817 100644 (file)
@@ -119,7 +119,14 @@ class grade_report_overview extends grade_report {
                 if (!$course->showgrades) {
                     continue;
                 }
+
                 $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
+
+                if (!$course->visible && !has_capability('moodle/course:viewhiddencourses', $coursecontext)) {
+                    // The course is hidden and the user isn't allowed to see it
+                    continue;
+                }
+
                 $courseshortname = format_string($course->shortname, true, array('context' => $coursecontext));
                 $courselink = html_writer::link(new moodle_url('/grade/report/user/index.php', array('id' => $course->id, 'userid' => $this->user->id)), $courseshortname);
                 $canviewhidden = has_capability('moodle/grade:viewhidden', $coursecontext);
index 232abdc..99bae5f 100644 (file)
--- a/index.php
+++ b/index.php
 
     $hassiteconfig = has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM));
 
-    $PAGE->set_url('/');
+    $urlparams = array();
+    if ($CFG->defaulthomepage == HOMEPAGE_MY && optional_param('redirect', 1, PARAM_BOOL) === 0) {
+        $urlparams['redirect'] = 0;
+    }
+    $PAGE->set_url('/', $urlparams);
     $PAGE->set_course($SITE);
 
 /// If the site is currently under maintenance, then print a message
index 1e0245c..eb032e8 100644 (file)
  */
 
 $string['AED'] = 'United Arab Emirates Dirham';
-$string['AFA'] = 'Afghanistan Afghani';
+$string['AFN'] = 'Afghanistan Afghani';
 $string['ALL'] = 'Albanian Lek';
-$string['ANG'] = 'Netherlands Antillian Guilder';
-$string['AON'] = 'Angolan New Kwanza';
-$string['ARA'] = 'Argentinian Nuevo Peso';
+$string['AMD'] = 'Armenian Dram';
+$string['ANG'] = 'Netherlands Antillean Guilder';
+$string['AOA'] = 'Angolan Kwanza';
+$string['ARS'] = 'Argentine Peso';
 $string['AUD'] = 'Australian Dollar';
 $string['AWG'] = 'Aruban Florin';
+$string['AZN'] = 'Azerbaijanian Manat';
+$string['BAM'] = 'Bosnia and Herzegovina Convertible Mark';
 $string['BBD'] = 'Barbados Dollar';
 $string['BDT'] = 'Bangladeshi Taka';
-$string['BGL'] = 'Bulgarian Lev';
+$string['BGN'] = 'Bulgarian Lev';
 $string['BHD'] = 'Bahraini Dinar';
 $string['BIF'] = 'Burundi Franc';
 $string['BMD'] = 'Bermudian Dollar';
 $string['BND'] = 'Brunei Dollar';
 $string['BOB'] = 'Bolivian Boliviano';
-$string['BRR'] = 'Brazilian Cruzeiro Real';
+$string['BRL'] = 'Brazilian Real';
 $string['BSD'] = 'Bahamian Dollar';
-$string['BTN'] = 'Bhutan Ngultrum';
-$string['BUK'] = 'Myanmar Kyat';
-$string['BWP'] = 'Botswanian Pula';
+$string['BTN'] = 'Bhutanese Ngultrum';
+$string['BWP'] = 'Botswana Pula';
+$string['BYR'] = 'Belarusian Ruble';
 $string['BZD'] = 'Belize Dollar';
 $string['CAD'] = 'Canadian Dollar';
-$string['CDZ'] = 'Zaire New Zaire';
+$string['CDF'] = 'Congolese Franc';
+$string['CHF'] = 'Swiss Franc';
 $string['CLF'] = 'Chilean Unidades de Fomento';
 $string['CLP'] = 'Chilean Peso';
-$string['CNY'] = 'Yuan (Chinese) Renminbi';
+$string['CNY'] = 'Chinese Yuan (Renminbi)';
 $string['COP'] = 'Colombian Peso';
 $string['CRC'] = 'Costa Rican Colon';
-$string['CSD'] = 'Serbian Dinar';
+$string['CUC'] = 'Cuban Convertible Peso';
 $string['CUP'] = 'Cuban Peso';
-$string['CVE'] = 'Escudo Caboverdiano';
-$string['CYP'] = 'Cyprus Pound';
+$string['CVE'] = 'Cape Verde Escudo';
 $string['CZK'] = 'Czech Koruna';
 $string['DJF'] = 'Djibouti Franc';
 $string['DKK'] = 'Danish Krone';
 $string['DOP'] = 'Dominican Peso';
 $string['DZD'] = 'Algerian Dinar';
 $string['EGP'] = 'Egyptian Pound';
+$string['ERN'] = 'Eritrean Nakfa';
 $string['ETB'] = 'Ethiopian Birr';
 $string['EUR'] = 'Euro';
 $string['FJD'] = 'Fiji Dollar';
 $string['FKP'] = 'Falkland Islands Pound';
-$string['GBP'] = 'British Pound';
-$string['GHC'] = 'Ghanaian Cedi';
+$string['GBP'] = 'British Pound Sterling';
+$string['GEL'] = 'Georgian Lari';
+$string['GHS'] = 'Ghanaian Cedi';
 $string['GIP'] = 'Gibraltar Pound';
 $string['GMD'] = 'Gambian Dalasi';
 $string['GNF'] = 'Guinea Franc';
 $string['GTQ'] = 'Guatemalan Quetzal';
-$string['GWP'] = 'Guinea-Bissau Peso';
-$string['GYD'] = 'Guyanan Dollar';
+$string['GYD'] = 'Guyanese Dollar';
 $string['HKD'] = 'Hong Kong Dollar';
 $string['HNL'] = 'Honduran Lempira';
+$string['HRK'] = 'Croatian Kuna';
 $string['HTG'] = 'Haitian Gourde';
 $string['HUF'] = 'Hungarian Forint';
-$string['CHF'] = 'Swiss Franc';
 $string['IDR'] = 'Indonesian Rupiah';
-$string['ILS'] = 'Israeli Shekel';
+$string['ILS'] = 'Israeli Sheqel';
 $string['INR'] = 'Indian Rupee';
 $string['IQD'] = 'Iraqi Dinar';
 $string['IRR'] = 'Iranian Rial';
@@ -88,79 +92,94 @@ $string['ISK'] = 'Iceland Krona';
 $string['JMD'] = 'Jamaican Dollar';
 $string['JOD'] = 'Jordanian Dinar';
 $string['JPY'] = 'Japanese Yen';
-$string['KES'] = 'Kenyan Schilling';
+$string['KES'] = 'Kenyan Shilling';
+$string['KGS'] = 'Kyrgyzstani Som';
 $string['KHR'] = 'Cambodian Riel';
 $string['KMF'] = 'Comoros Franc';
 $string['KPW'] = 'North Korean Won';
 $string['KRW'] = 'South Korean Won';
 $string['KWD'] = 'Kuwaiti Dinar';
 $string['KYD'] = 'Cayman Islands Dollar';
+$string['KZT'] = 'Kazakhstani Tenge';
 $string['LAK'] = 'Lao Kip';
 $string['LBP'] = 'Lebanese Pound';
 $string['LKR'] = 'Sri Lanka Rupee';
 $string['LRD'] = 'Liberian Dollar';
 $string['LSL'] = 'Lesotho Loti';
+$string['LTL'] = 'Lithuanian Litas';
+$string['LVL'] = 'Latvian Lats';
 $string['LYD'] = 'Libyan Dinar';
 $string['MAD'] = 'Moroccan Dirham';
-$string['MGF'] = 'Malagasy Franc';
+$string['MDL'] = 'Moldovan Leu';
+$string['MGA'] = 'Malagasy Ariary';
+$string['MKD'] = 'Makedonian Denar';
+$string['MMK'] = 'Myanmar (Burmese) Kyat';
 $string['MNT'] = 'Mongolian Tugrik';
 $string['MOP'] = 'Macau Pataca';
 $string['MRO'] = 'Mauritanian Ouguiya';
-$string['MTL'] = 'Maltese Lira';
 $string['MUR'] = 'Mauritius Rupee';
-$string['MVR'] = 'Maldive Rufiyaa';
+$string['MVR'] = 'Maldivian Rufiyaa';
 $string['MWK'] = 'Malawi Kwacha';
 $string['MXN'] = 'Mexican Peso';
 $string['MYR'] = 'Malaysian Ringgit';
-$string['MZM'] = 'Mozambique Metical';
+$string['MZN'] = 'Mozambican Metical';
+$string['NAD'] = 'Namibian Dollar';
 $string['NGN'] = 'Nigerian Naira';
-$string['NIO'] = 'Nicaraguan Cordoba';
-$string['NOK'] = 'Norwegian Kroner';
+$string['NIO'] = 'Nicaraguan Cordoba Oro';
+$string['NOK'] = 'Norwegian Krone';
 $string['NPR'] = 'Nepalese Rupee';
 $string['NZD'] = 'New Zealand Dollar';
 $string['OMR'] = 'Omani Rial';
 $string['PAB'] = 'Panamanian Balboa';
-$string['PEN'] = 'Nuevo Sol';
+$string['PEN'] = 'Peruvian Nuevo Sol';
 $string['PGK'] = 'Papua New Guinea Kina';
 $string['PHP'] = 'Philippine Peso';
 $string['PKR'] = 'Pakistan Rupee';
-$string['PLN'] = 'Polish New Zloty';
-$string['PYG'] = 'Paraguay Guarani';
+$string['PLN'] = 'Polish Zloty';
+$string['PYG'] = 'Paraguayan Guarani';
 $string['QAR'] = 'Qatari Rial';
-$string['ROL'] = 'Romanian Leu';
+$string['RON'] = 'Romanian Leu';
+$string['RSD'] = 'Serbian Dinar';
+$string['RUB'] = 'Russian Ruble';
 $string['RWF'] = 'Rwanda Franc';
 $string['SAR'] = 'Saudi Arabian Riyal';
 $string['SBD'] = 'Solomon Islands Dollar';
 $string['SCR'] = 'Seychelles Rupee';
-$string['SDP'] = 'Sudanese Pound';
+$string['SDG'] = 'Sudanese Pound';
 $string['SEK'] = 'Swedish Krona';
 $string['SGD'] = 'Singapore Dollar';
 $string['SHP'] = 'St. Helena Pound';
-$string['SKK'] = 'Slovak Koruna';
-$string['SLL'] = 'Sierra Leone Leone';
-$string['SOS'] = 'Somali Schilling';
-$string['SRG'] = 'Suriname Guilder';
+$string['SLL'] = 'Sierra Leonean Leone';
+$string['SOS'] = 'Somali Shilling';
+$string['SRD'] = 'Surinamese Dollar';
+$string['SSP'] = 'South Sudanese Pound';
 $string['STD'] = 'Sao Tome and Principe Dobra';
-$string['SUR'] = 'USSR Rouble';
 $string['SVC'] = 'El Salvador Colon';
-$string['SYP'] = 'Syrian Potmd';
-$string['SZL'] = 'Swaziland Lilangeni';
-$string['THB'] = 'Thai Bhat';
+$string['SYP'] = 'Syrian Pound';
+$string['SZL'] = 'Swazi Lilangeni';
+$string['THB'] = 'Thai Baht';
+$string['TJS'] = 'Tajikistani Somoni';
+$string['TMT'] = 'Turkmenistani Manat';
 $string['TND'] = 'Tunisian Dinar';
 $string['TOP'] = 'Tongan Pa\'anga';
-$string['TPE'] = 'East Timor Escudo';
-$string['TRL'] = 'Turkish Lira';
+$string['TRY'] = 'Turkish Lira';
 $string['TTD'] = 'Trinidad and Tobago Dollar';
 $string['TWD'] = 'Taiwan Dollar';
-$string['TZS'] = 'Tanzanian Schilling';
-$string['UGS'] = 'Uganda Shilling';
+$string['TZS'] = 'Tanzanian Shilling';
+$string['UAH'] = 'Ukrainian Hryvnia';
+$string['UGX'] = 'Ugandan Shilling';
 $string['USD'] = 'US Dollar';
-$string['UYU'] = 'Uruguayan New Peso';
-$string['VEB'] = 'Venezualan Bolivar';
+$string['UYU'] = 'Uruguayan Peso';
+$string['UZS'] = 'Uzbekistani Sum';
+$string['VEF'] = 'Venezuelan Bolivar Fuerte';
 $string['VND'] = 'Vietnamese Dong';
 $string['VUV'] = 'Vanuatu Vatu';
 $string['WST'] = 'Samoan Tala';
-$string['YER'] = 'Yemeni Riyal';
+$string['XAF'] = 'CFA Franc BEAC';
+$string['XCD'] = 'East Caribbean Dollar';
+$string['XOF'] = 'CFA Franc BCEAO';
+$string['XPF'] = 'CFP Franc';
+$string['YER'] = 'Yemeni Rial';
 $string['ZAR'] = 'South African Rand';
 $string['ZMK'] = 'Zambian Kwacha';
-$string['ZWD'] = 'Zimbabwe Dollar';
+$string['ZWL'] = 'Zimbabwe Dollar';
index 2bb3222..4814f7d 100644 (file)
@@ -48,4 +48,5 @@ $logs = array(
     array('module'=>'message', 'action'=>'unblock contact', 'mtable'=>'user', 'field'=>$DB->sql_concat('firstname', "' '" , 'lastname')),
     array('module'=>'group', 'action'=>'view', 'mtable'=>'groups', 'field'=>'name'),
     array('module'=>'tag', 'action'=>'update', 'mtable'=>'tag', 'field'=>'name'),
+    array('module'=>'tag', 'action'=>'flag', 'mtable'=>'tag', 'field'=>'name'),
 );
index 0818fbe..0f06fcf 100644 (file)
@@ -2229,9 +2229,9 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
         // switch next two lines for ol li containers for form items.
         //        $this->_elementTemplates=array('default'=>"\n\t\t".'<li class="fitem"><label>{label}{help}<!-- BEGIN required -->{req}<!-- END required --></label><div class="qfelement<!-- BEGIN error --> error<!-- END error --> {type}"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</div></li>');
         $this->_elementTemplates = array(
-        'default'=>"\n\t\t".'<div class="fitem {advanced}<!-- BEGIN required --> required<!-- END required -->"><div class="fitemtitle"><label>{label}<!-- BEGIN required -->{req}<!-- END required -->{advancedimg} {help}</label></div><div class="felement {type}<!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</div></div>',
+        'default'=>"\n\t\t".'<div id="{id}" class="fitem {advanced}<!-- BEGIN required --> required<!-- END required --> fitem_{type}"><div class="fitemtitle"><label>{label}<!-- BEGIN required -->{req}<!-- END required -->{advancedimg} {help}</label></div><div class="felement {type}<!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</div></div>',
 
-        'fieldset'=>"\n\t\t".'<div class="fitem {advanced}<!-- BEGIN required --> required<!-- END required -->"><div class="fitemtitle"><div class="fgrouplabel"><label>{label}<!-- BEGIN required -->{req}<!-- END required -->{advancedimg} {help}</label></div></div><fieldset class="felement {type}<!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</fieldset></div>',
+        'fieldset'=>"\n\t\t".'<div id="{id}" class="fitem {advanced}<!-- BEGIN required --> required<!-- END required --> fitem_{type}"><div class="fitemtitle"><div class="fgrouplabel"><label>{label}<!-- BEGIN required -->{req}<!-- END required -->{advancedimg} {help}</label></div></div><fieldset class="felement {type}<!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</fieldset></div>',
 
         'static'=>"\n\t\t".'<div class="fitem {advanced}"><div class="fitemtitle"><div class="fstaticlabel"><label>{label}<!-- BEGIN required -->{req}<!-- END required -->{advancedimg} {help}</label></div></div><div class="felement fstatic <!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}&nbsp;</div></div>',
 
@@ -2276,6 +2276,9 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
      * @param mixed $error
      */
     function startGroup(&$group, $required, $error){
+        // Make sure the element has an id.
+        $group->_generateId();
+
         if (method_exists($group, 'getElementTemplateType')){
             $html = $this->_elementTemplates[$group->getElementTemplateType()];
         }else{
@@ -2299,6 +2302,7 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
         }else{
             $html =str_replace('{help}', '', $html);
         }
+        $html =str_replace('{id}', 'fgroup_' . $group->getAttribute('id'), $html);
         $html =str_replace('{name}', $group->getName(), $html);
         $html =str_replace('{type}', 'fgroup', $html);
 
@@ -2349,6 +2353,7 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
         } else {
             $html =str_replace('{advancedimg}', '', $html);
         }
+        $html =str_replace('{id}', 'fitem_' . $element->getAttribute('id'), $html);
         $html =str_replace('{type}', 'f'.$element->getType(), $html);
         $html =str_replace('{name}', $element->getName(), $html);
         if (method_exists($element, 'getHelpButton')){
index e4062fe..c85c053 100644 (file)
@@ -3814,6 +3814,12 @@ function delete_user($user) {
     // last course access not necessary either
     $DB->delete_records('user_lastaccess', array('userid'=>$user->id));
 
+    // remove all user tokens
+    $DB->delete_records('external_tokens', array('userid'=>$user->id));
+
+    // unauthorise the user for all services
+    $DB->delete_records('external_services_users', array('userid'=>$user->id));
+
     // force logout - may fail if file based sessions used, sorry
     session_kill_user($user->id);
 
@@ -5895,6 +5901,7 @@ function clean_filename($string) {
 /**
  * Returns the code for the current language
  *
+ * @category string
  * @return string
  */
 function current_language() {
@@ -5924,6 +5931,7 @@ function current_language() {
 /**
  * Returns parent language of current active language if defined
  *
+ * @category string
  * @uses COURSE
  * @uses SESSION
  * @param string $lang null means current language
@@ -5960,6 +5968,7 @@ function get_parent_language($lang=null) {
  * The param $forcereload is needed for CLI installer only where the string_manager instance
  * must be replaced during the install.php script life time.
  *
+ * @category string
  * @param bool $forcereload shall the singleton be released and new instance created instead?
  * @return string_manager
  */
@@ -6005,10 +6014,12 @@ function get_string_manager($forcereload=false) {
 
 
 /**
+ * Interface for string manager
+ *
  * Interface describing class which is responsible for getting
  * of localised strings from language packs.
  *
- * @package    moodlecore
+ * @package    core
  * @copyright  2010 Petr Skoda (http://skodak.org)
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -6058,11 +6069,11 @@ interface string_manager {
     public function get_list_of_languages($lang = NULL, $standard = 'iso6392');
 
     /**
-     * Does the translation exist?
+     * Checks if the translation exists for the language
      *
      * @param string $lang moodle translation language code
-     * @param bool include also disabled translations?
-     * @return boot true if exists
+     * @param bool $includeall include also disabled translations
+     * @return bool true if exists
      */
     public function translation_exists($lang, $includeall = true);
 
@@ -6101,7 +6112,10 @@ interface string_manager {
 /**
  * Standard string_manager implementation
  *
- * @package    moodlecore
+ * Implements string_manager with getting and printing localised strings
+ *
+ * @package    core
+ * @category   string
  * @copyright  2010 Petr Skoda (http://skodak.org)
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -6122,7 +6136,7 @@ class core_string_manager implements string_manager {
     protected $countdiskcache = 0;
     /** @var bool use disk cache */
     protected $usediskcache;
-    /* @var array limit list of translations */
+    /** @var array limit list of translations */
     protected $translist;
     /** @var string location of a file that caches the list of available translations */
     protected $menucache;
@@ -6148,6 +6162,7 @@ class core_string_manager implements string_manager {
 
     /**
      * Returns dependencies of current language, en is not included.
+     *
      * @param string $lang
      * @return array all parents, the lang itself is last
      */
@@ -6172,6 +6187,7 @@ class core_string_manager implements string_manager {
 
     /**
      * Load all strings for one component
+     *
      * @param string $component The module the string is associated with
      * @param string $lang
      * @param bool $disablecache Do not use caches, force fetching the strings from sources
@@ -6294,8 +6310,7 @@ class core_string_manager implements string_manager {
      *
      * get_string() is throwing debug warnings, sometimes we do not want them
      * or we want to display better explanation of the problem.
-     *
-     * Use with care!
+     * Note: Use with care!
      *
      * @param string $identifier The identifier of the string to search for
      * @param string $component The module the string is associated with
@@ -6418,6 +6433,7 @@ class core_string_manager implements string_manager {
 
     /**
      * Returns information about the string_manager performance
+     *
      * @return array
      */
     public function get_performance_summary() {
@@ -6515,11 +6531,11 @@ class core_string_manager implements string_manager {
     }
 
     /**
-     * Does the translation exist?
+     * Checks if the translation exists for the language
      *
      * @param string $lang moodle translation language code
-     * @param bool include also disabled translations?
-     * @return boot true if exists
+     * @param bool $includeall include also disabled translations
+     * @return bool true if exists
      */
     public function translation_exists($lang, $includeall = true) {
 
@@ -6541,6 +6557,7 @@ class core_string_manager implements string_manager {
 
     /**
      * Returns localised list of installed translations
+     *
      * @param bool $returnall return all or just enabled
      * @return array moodle translation code => localised translation name
      */
@@ -6669,11 +6686,13 @@ class core_string_manager implements string_manager {
 
 
 /**
+ * Fetches minimum strings for installation
+ *
  * Minimalistic string fetching implementation
  * that is used in installer before we fetch the wanted
  * language pack from moodle.org lang download site.
  *
- * @package    moodlecore
+ * @package    core
  * @copyright  2010 Petr Skoda (http://skodak.org)
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -6829,11 +6848,11 @@ class install_string_manager implements string_manager {
     }
 
     /**
-     * Does the translation exist?
+     * Checks if the translation exists for the language
      *
      * @param string $lang moodle translation language code
-     * @param bool include also disabled translations?
-     * @return boot true if exists
+     * @param bool $includeall include also disabled translations
+     * @return bool true if exists
      */
     public function translation_exists($lang, $includeall = true) {
         return file_exists($this->installroot.'/'.$lang.'/langconfig.php');
@@ -6941,6 +6960,7 @@ class install_string_manager implements string_manager {
  * But you should never do that anyway!
  * For more information {@see lang_string}
  *
+ * @category string
  * @param string $identifier The key identifier for the localized string
  * @param string $component The module where the key identifier is stored,
  *      usually expressed as the filename in the language pack without the
@@ -7012,8 +7032,8 @@ function get_string($identifier, $component = '', $a = NULL, $lazyload = false)
  * Converts an array of strings to their localized value.
  *
  * @param array $array An array of strings
- * @param string $module The language module that these strings can be found in.
- * @return array and array of translated strings.
+ * @param string $component The language module that these strings can be found in.
+ * @return stdClass translated strings.
  */
 function get_strings($array, $component = '') {
    $string = new stdClass;
@@ -7042,9 +7062,10 @@ function get_strings($array, $component = '') {
  * echo '</h1>';
  * </code>
  *
+ * @category string
  * @param string $identifier The key identifier for the localized string
  * @param string $component The module where the key identifier is stored. If none is specified then moodle.php is used.
- * @param mixed $a An object, string or number that can be used within translation strings
+ * @param string|object|array $a An object, string or number that can be used within translation strings
  */
 function print_string($identifier, $component = '', $a = NULL) {
     echo get_string($identifier, $component, $a);
@@ -7559,7 +7580,6 @@ function get_core_subsystems() {
             'license'     => NULL,
             'mathslib'    => NULL,
             'message'     => 'message',
-            'message'     => 'message',
             'mimetypes'   => NULL,
             'mnet'        => 'mnet',
             'moodle.org'  => NULL, // the dot is nasty, watch out! should be renamed to moodleorg
@@ -8273,7 +8293,8 @@ function get_device_type() {
          return 'tablet';
     }
 
-    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== false) {
+    // Safe way to check for IE6 and not get false positives for some IE 7/8 users
+    if (substr($_SERVER['HTTP_USER_AGENT'], 0, 34) === 'Mozilla/4.0 (compatible; MSIE 6.0;') {
         return 'legacy';
     }
 
@@ -8604,9 +8625,7 @@ function upgrade_set_timeout($max_execution_time=300) {
 /**
  * Sets the system locale
  *
- * @todo Finish documenting this function
- *
- * @global object
+ * @category string
  * @param string $locale Can be used to force a locale
  */
 function moodle_setlocale($locale='') {
@@ -8664,8 +8683,9 @@ function moodle_setlocale($locale='') {
 /**
  * Converts string to lowercase using most compatible function available.
  *
- * @todo Remove this function when no longer in use
- * @deprecated Use textlib->strtolower($text) instead.
+ * @deprecated since Moodle 2.0 use textlib::strtolower()
+ * @todo MDL-31250 Remove this function when no longer in use
+ * @see textlib::strtolower($text)
  *
  * @param string $string The string to convert to all lowercase characters.
  * @param string $encoding The encoding on the string.
@@ -8688,6 +8708,7 @@ function moodle_strtolower ($string, $encoding='') {
  *
  * Words are defined as things between whitespace.
  *
+ * @category string
  * @param string $string The text to be searched for words.
  * @return int The count of words in the specified string
  */
@@ -8700,6 +8721,7 @@ function count_words($string) {
  *
  * Letters are defined as chars not in tags and different from whitespace.
  *
+ * @category string
  * @param string $string The text to be searched for letters.
  * @return int The count of letters in the specified text.
  */
@@ -8760,12 +8782,13 @@ function complex_random_string($length=null) {
  * Given some text (which may contain HTML) and an ideal length,
  * this function truncates the text neatly on a word boundary if possible
  *
- * @global object
- * @param string $text - text to be shortened
- * @param int $ideal - ideal string length
+ * @category string
+ * @global stdClass $CFG
+ * @param string $text text to be shortened
+ * @param int $ideal ideal string length
  * @param boolean $exact if false, $text will not be cut mid-word
  * @param string $ending The string to append if the passed string is truncated
- * @return string $truncate shortened string
+ * @return string $truncate shortened string
  */
 function shorten_text($text, $ideal=30, $exact = false, $ending='...') {
 
@@ -8919,7 +8942,7 @@ function getweek ($startdate, $thedate) {
  * {@link http://www.phpbuilder.com/columns/jesus19990502.php3} and
  * {@link http://es2.php.net/manual/en/function.str-shuffle.php#73254}
  *
- * @global object
+ * @global stdClass $CFG
  * @param int $maxlen  The maximum size of the password being generated.
  * @return string
  */
@@ -8984,7 +9007,7 @@ function generate_password($maxlen=10) {
  * Localized floats must not be used in calculations!
  *
  * @param float $float The float to print
- * @param int $places The number of decimal places to print.
+ * @param int $decimalpoints The number of decimal places to print.
  * @param bool $localized use localized decimal separator
  * @return string locale float
  */
@@ -9003,7 +9026,7 @@ function format_float($float, $decimalpoints=1, $localized=true) {
  * Converts locale specific floating point/comma number back to standard PHP float value
  * Do NOT try to do any math operations before this conversion on any user submitted floats!
  *
- * @param  string $locale_float locale aware float representation
+ * @param string $locale_float locale aware float representation
  * @return float
  */
 function unformat_float($locale_float) {
@@ -10562,8 +10585,8 @@ function get_home_page() {
  * 1. You cannot use a lang_string object as an array offset. Doing so will
  *     result in PHP throwing an error. (You can use it as an object property!)
  *
- * @package    moodlecore
- *
+ * @package    core
+ * @category   string
  * @copyright  2011 Sam Hemelryk
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
index 600298b..e77fcb6 100644 (file)
@@ -1943,7 +1943,8 @@ class global_navigation extends navigation_node {
                 return false;
             }
             // Add a branch for the current user
-            $usernode = $usersnode->add(fullname($user, true), $userviewurl, self::TYPE_USER, null, $user->id);
+            $canseefullname = has_capability('moodle/site:viewfullnames', $coursecontext);
+            $usernode = $usersnode->add(fullname($user, $canseefullname), $userviewurl, self::TYPE_USER, null, $user->id);
 
             if ($this->page->context->contextlevel == CONTEXT_USER && $user->id == $this->page->context->instanceid) {
                 $usernode->make_active();
index 8b79c12..100f8e7 100644 (file)
@@ -113,6 +113,7 @@ class HTML_QuickForm_checkbox extends HTML_QuickForm_input
      */
     function toHtml()
     {
+        $this->_generateId(); // Seems to be necessary when this is used in a group.
         if (0 == strlen($this->_text)) {
             $label = '';
         } elseif ($this->_flagFrozen) {
index 2ff95ab..81ad764 100644 (file)
@@ -121,6 +121,7 @@ function plagiarism_get_form_elements_module($mform, $context) {
  *
  * @param object $course - full Course object
  * @param object $cm - full cm object
+ * @return string
  */
 function plagiarism_update_status($course, $cm) {
     global $CFG;
@@ -128,17 +129,20 @@ function plagiarism_update_status($course, $cm) {
         return '';
     }
     $plagiarismplugins = plagiarism_load_available_plugins();
+    $output = '';
     foreach($plagiarismplugins as $plugin => $dir) {
         require_once($dir.'/lib.php');
         $plagiarismclass = "plagiarism_plugin_$plugin";
         $plagiarismplugin = new $plagiarismclass;
-        $plagiarismplugin->update_status($course, $cm);
+        $output .= $plagiarismplugin->update_status($course, $cm);
     }
+    return $output;
 }
 
 /**
 * Function that prints the student disclosure notifying that the files will be checked for plagiarism
 * @param integer $cmid - the cmid of this module
+* @return string
 */
 function plagiarism_print_disclosure($cmid) {
     global $CFG;
@@ -146,12 +150,14 @@ function plagiarism_print_disclosure($cmid) {
         return '';
     }
     $plagiarismplugins = plagiarism_load_available_plugins();
+    $output = '';
     foreach($plagiarismplugins as $plugin => $dir) {
         require_once($dir.'/lib.php');
         $plagiarismclass = "plagiarism_plugin_$plugin";
         $plagiarismplugin = new $plagiarismclass;
-        $plagiarismplugin->print_disclosure($cmid);
+        $output .= $plagiarismplugin->print_disclosure($cmid);
     }
+    return $output;
 }
 /**
  * used by admin/cron.php to get similarity scores from submitted files.
index f620ec5..74f85cb 100644 (file)
@@ -296,6 +296,15 @@ class moodlelib_test extends UnitTestCase {
         $this->assertEqual(array('gecko', 'gecko19'), get_browser_version_classes());
     }
 
+    function test_get_device_type() {
+        // IE8 (common pattern ~1.5% of IE7/8 users have embedded IE6 agent))
+        $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BT Openworld BB; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Hotbar 10.2.197.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 2.0.50727)';
+        $this->assertEqual('default', get_device_type());
+        // Genuine IE6
+        $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.0.3705; Media Center PC 2.8)';
+        $this->assertEqual('legacy', get_device_type());
+    }
+
     function test_fix_utf8() {
         // make sure valid data including other types is not changed
         $this->assertidentical(null, fix_utf8(null));
index 9702738..6403504 100644 (file)
@@ -15,8 +15,9 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
+ * Defines string apis
+ *
  * @package    core
- * @subpackage lib
  * @copyright  (C) 2001-3001 Eloy Lafuente (stronk7) {@link http://contiento.com}
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -27,7 +28,9 @@ defined('MOODLE_INTERNAL') || die();
  * Original singleton helper function, please use static methods instead,
  * ex: textlib::convert()
  *
- * @deprecated
+ * @deprecated since Moodle 2.1 MDL-29027 textlib contains static functions
+ * @todo MDL-31301 calling of textlib functions should be static.
+ * @see textlib
  * @return textlib instance
  */
 function textlib_get_instance() {
@@ -36,6 +39,8 @@ function textlib_get_instance() {
 
 
 /**
+ * defines string api's for manipulating strings
+ *
  * This class is used to manipulate strings under Moodle 1.6 an later. As
  * utf-8 text become mandatory a pool of safe functions under this encoding
  * become necessary. The name of the methods is exactly the
@@ -50,15 +55,16 @@ function textlib_get_instance() {
  * its capabilities so, don't forget to make the conversion
  * from every wrapper function!
  *
- * @package    core
- * @subpackage lib
+ * @package   core
+ * @category  string
  * @copyright 1999 onwards Martin Dougiamas  {@link http://moodle.com}
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class textlib {
 
     /**
-     * Return t3lib helper class
+     * Return t3lib helper class, which is used for conversion between charsets
+     *
      * @return t3lib_cs
      */
     protected static function typo3() {
@@ -184,11 +190,11 @@ class textlib {
     /**
      * Multibyte safe substr() function, uses mbstring or iconv for UTF-8, falls back to typo3.
      *
-     * @param string $text
+     * @param string $text string to truncate
      * @param int $start negative value means from end
-     * @param int $len
+     * @param int $len maximum length of characters beginning from start
      * @param string $charset encoding of the text
-     * @return string
+     * @return string portion of string specified by the $start and $len
      */
     public static function substr($text, $start, $len=null, $charset='utf-8') {
         $charset = self::parse_charset($charset);
@@ -228,7 +234,7 @@ class textlib {
     /**
      * Multibyte safe strlen() function, uses mbstring or iconv for UTF-8, falls back to typo3.
      *
-     * @param string $text
+     * @param string $text input string
      * @param string $charset encoding of the text
      * @return int number of characters
      */
@@ -253,7 +259,7 @@ class textlib {
     /**
      * Multibyte safe strtolower() function, uses mbstring, falls back to typo3.
      *
-     * @param string $text
+     * @param string $text input string
      * @param string $charset encoding of the text (may not work for all encodings)
      * @return string lower case text
      */
@@ -274,7 +280,7 @@ class textlib {
     /**
      * Multibyte safe strtoupper() function, uses mbstring, falls back to typo3.
      *
-     * @param string $text
+     * @param string $text input string
      * @param string $charset encoding of the text (may not work for all encodings)
      * @return string upper case text
      */
@@ -293,12 +299,13 @@ class textlib {
     }
 
     /**
+     * Find the position of the first occurrence of a substring in a string.
      * UTF-8 ONLY safe strpos(), uses mbstring, falls back to iconv.
      *
-     * @param string $haystack
-     * @param string $needle
-     * @param int $offset
-     * @return string
+     * @param string $haystack the string to search in
+     * @param string $needle one or more charachters to search for
+     * @param int $offset offset from begining of string
+     * @return int the numeric position of the first occurrence of needle in haystack.
      */
     public static function strpos($haystack, $needle, $offset=0) {
         if (function_exists('mb_strpos')) {
@@ -309,11 +316,12 @@ class textlib {
     }
 
     /**
+     * Find the position of the last occurrence of a substring in a string
      * UTF-8 ONLY safe strrpos(), uses mbstring, falls back to iconv.
      *
-     * @param string $haystack
-     * @param string $needle
-     * @return string
+     * @param string $haystack the string to search in
+     * @param string $needle one or more charachters to search for
+     * @return int the numeric position of the last occurrence of needle in haystack
      */
     public static function strrpos($haystack, $needle) {
         if (function_exists('mb_strpos')) {
@@ -327,9 +335,9 @@ class textlib {
      * Try to convert upper unicode characters to plain ascii,
      * the returned string may contain unconverted unicode characters.
      *
-     * @param string $text
+     * @param string $text input string
      * @param string $charset encoding of the text
-     * @return string
+     * @return string converted ascii string
      */
     public static function specialtoascii($text, $charset='utf-8') {
         $charset = self::parse_charset($charset);
@@ -344,9 +352,9 @@ class textlib {
      * This function seems to be 100% compliant with RFC1342. Credits go to:
      * paravoid (http://www.php.net/manual/en/function.mb-encode-mimeheader.php#60283).
      *
-     * @param string $text
+     * @param string $text input string
      * @param string $charset encoding of the text
-     * @return string
+     * @return string base64 encoded header
      */
     public static function encode_mimeheader($text, $charset='utf-8') {
         if (empty($text)) {
@@ -432,9 +440,9 @@ class textlib {
      * http://php.net/manual/en/function.html-entity-decode.php#75153
      * with some custom mods to provide more functionality
      *
-     * @param    string    $str      input string
-     * @param    boolean   $htmlent  convert also html entities (defaults to true)
-     * @return   string
+     * @param string $str input string
+     * @param boolean $htmlent convert also html entities (defaults to true)
+     * @return string encoded UTF-8 string
      *
      * NOTE: we could have used typo3 entities_to_utf8() here
      *       but the direct alternative used runs 400% quicker
@@ -466,10 +474,10 @@ class textlib {
     /**
      * Converts all Unicode chars > 127 to numeric entities &#nnnn; or &#xnnn;.
      *
-     * @param    string   $str      input string
-     * @param    boolean  $dec      output decadic only number entities
-     * @param    boolean  $nonnum   remove all non-numeric entities
-     * @return   string converted string
+     * @param string $str input string
+     * @param boolean $dec output decadic only number entities
+     * @param boolean $nonnum remove all non-numeric entities
+     * @return string converted string
      */
     public static function utf8_to_entities($str, $dec=false, $nonnum=false) {
         // Avoid some notices from Typo3 code
@@ -487,9 +495,9 @@ class textlib {
     }
 
     /**
-     * Removes the BOM from unicode string - see http://unicode.org/faq/utf_bom.html
+     * Removes the BOM from unicode string {@link http://unicode.org/faq/utf_bom.html}
      *
-     * @param string $str
+     * @param string $str input string
      * @return string
      */
     public static function trim_utf8_bom($str) {
@@ -502,6 +510,7 @@ class textlib {
 
     /**
      * Returns encoding options for select boxes, utf-8 and platform encoding first
+     *
      * @return array encodings
      */
     public static function get_encodings() {
@@ -548,7 +557,7 @@ class textlib {
      * Makes first letter of each word capital - words must be separated by spaces.
      * Use with care, this function does not work properly in many locales!!!
      *
-     * @param string $text
+     * @param string $text input string
      * @return string
      */
     public static function strtotitle($text) {
@@ -596,8 +605,7 @@ class textlib {
 /**
  * A collator class with static methods that can be used for sorting.
  *
- * @package    core
- * @subpackage lib
+ * @package   core
  * @copyright 2011 Sam Hemelryk
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -697,6 +705,8 @@ abstract class collatorlib {
      *   0 if str1 is equal to str2
      *  -1 if str1 is less than str2
      *
+     * @param string $str1 first string to compare
+     * @param string $str2 second string to compare
      * @return int
      */
     public static function compare($str1, $str2) {
@@ -732,11 +742,12 @@ abstract class collatorlib {
 }
 
 /**
+ * Object comparison using collator
+ *
  * Abstract class to aid the sorting of objects with respect to proper language
  * comparison using collator
  *
- * @package    core
- * @subpackage lib
+ * @package   core
  * @copyright 2011 Sam Hemelryk
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -758,10 +769,12 @@ abstract class collatorlib_comparison {
 }
 
 /**
+ * Compare properties of two objects
+ *
  * A comparison helper for comparing properties of two objects
  *
- * @package    core
- * @subpackage lib
+ * @package   core
+ * @category  string
  * @copyright 2011 Sam Hemelryk
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -771,6 +784,8 @@ class collatorlib_property_comparison extends collatorlib_comparison {
     protected $property;
 
     /**
+     * Constructor
+     *
      * @param string $property
      */
     public function __construct($property) {
@@ -795,10 +810,11 @@ class collatorlib_property_comparison extends collatorlib_comparison {
 }
 
 /**
+ * Compare method of two objects
+ *
  * A comparison helper for comparing the result of a method on two objects
  *
- * @package    core
- * @subpackage lib
+ * @package   core
  * @copyright 2011 Sam Hemelryk
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
@@ -808,6 +824,8 @@ class collatorlib_method_comparison extends collatorlib_comparison {
     protected $method;
 
     /**
+     * Constructor
+     *
      * @param string $method The method to call against each object
      */
     public function __construct($method) {
index 0da8827..67feffa 100644 (file)
@@ -211,7 +211,7 @@ class assignment_base {
         echo $OUTPUT->box_start('generalbox boxaligncenter', 'intro');
         echo format_module_intro('assignment', $this->assignment, $this->cm->id);
         echo $OUTPUT->box_end();
-        plagiarism_print_disclosure($this->cm->id);
+        echo plagiarism_print_disclosure($this->cm->id);
     }
 
     /**
@@ -1221,7 +1221,7 @@ class assignment_base {
         echo '<div class="usersubmissions">';
 
         //hook to allow plagiarism plugins to update status/print links.
-        plagiarism_update_status($this->course, $this->cm);
+        echo plagiarism_update_status($this->course, $this->cm);
 
         $course_context = get_context_instance(CONTEXT_COURSE, $course->id);
         if (has_capability('gradereport/grader:view', $course_context) && has_capability('moodle/grade:viewall', $course_context)) {
index e108b4d..e865858 100644 (file)
@@ -84,6 +84,8 @@ if($mform->is_cancelled()) {
     $PAGE->set_title($data->name);
     $PAGE->set_heading($course->fullname);
     echo $OUTPUT->header();
+    $url = new moodle_url('/mod/data/export.php', array('d' => $d));
+    groups_print_activity_menu($cm, $url);
     echo $OUTPUT->heading(format_string($data->name));
 
     // these are for the tab display
@@ -104,7 +106,9 @@ foreach ($formdata as $key => $value) {
     }
 }
 
-$exportdata = data_get_exportdata($data->id, $fields, $selectedfields);
+$currentgroup = groups_get_activity_group($cm);
+
+$exportdata = data_get_exportdata($data->id, $fields, $selectedfields, $currentgroup);
 $count = count($exportdata);
 switch ($formdata['exporttype']) {
     case 'csv':
index 2bee85b..364ad4c 100644 (file)
@@ -2804,9 +2804,11 @@ function data_export_ods($export, $dataname, $count) {
  * @param int $dataid
  * @param array $fields
  * @param array $selectedfields
+ * @param int $currentgroup group ID of the current group. This is used for
+ * exporting data while maintaining group divisions.
  * @return array
  */
-function data_get_exportdata($dataid, $fields, $selectedfields) {
+function data_get_exportdata($dataid, $fields, $selectedfields, $currentgroup=0) {
     global $DB;
 
     $exportdata = array();
@@ -2826,7 +2828,15 @@ function data_get_exportdata($dataid, $fields, $selectedfields) {
     $line = 1;
     foreach($datarecords as $record) {
         // get content indexed by fieldid
-        if( $content = $DB->get_records('data_content', array('recordid'=>$record->id), 'fieldid', 'fieldid, content, content1, content2, content3, content4') ) {
+        if ($currentgroup) {
+            $select = 'SELECT c.fieldid, c.content, c.content1, c.content2, c.content3, c.content4 FROM {data_content} c, {data_records} r WHERE c.recordid = ? AND r.id = c.recordid AND r.groupid = ?';
+            $where = array($record->id, $currentgroup);
+        } else {
+            $select = 'SELECT fieldid, content, content1, content2, content3, content4 FROM {data_content} WHERE recordid = ?';
+            $where = array($record->id);
+        }
+
+        if( $content = $DB->get_records_sql($select, $where) ) {
             foreach($fields as $field) {
                 $contents = '';
                 if(isset($content[$field->field->id])) {
@@ -3144,7 +3154,7 @@ function data_presets_export($course, $cm, $data, $tostorage=false) {
     $presetname = clean_filename($data->name) . '-preset-' . gmdate("Ymd_Hi");
     $exportsubdir = "mod_data/presetexport/$presetname";
     make_temp_directory($exportsubdir);
-    $exportdir = "$CFG->dataroot/$exportsubdir";
+    $exportdir = "$CFG->tempdir/$exportsubdir";
 
     // Assemble "preset.xml":
     $presetxmldata = data_presets_generate_xml($course, $cm, $data);
index 4bf4aa2..a425c6b 100644 (file)
@@ -27,8 +27,10 @@ require_once("lib.php");
 $confirm = optional_param('confirm', false, PARAM_BOOL);
 
 $PAGE->set_url('/mod/forum/unsubscribeall.php');
+$PAGE->set_context(get_context_instance(CONTEXT_USER, $USER->id));
 
-require_login();
+// Do not autologin guest. Only proper users can have forum subscriptions.
+require_login(null, false);
 
 $return = $CFG->wwwroot.'/';
 
index 3dbbe75..95ac3b4 100644 (file)
@@ -1165,7 +1165,7 @@ class quiz_attempt {
         $DB->update_record('quiz_attempts', $this->attempt);
 
         if (!$this->is_preview()) {
-            quiz_save_best_grade($this->get_quiz());
+            quiz_save_best_grade($this->get_quiz(), $this->attempt->userid);
 
             // Trigger event
             $eventdata = new stdClass();
index a40e9bb..ac2528c 100644 (file)
@@ -346,7 +346,7 @@ function quiz_move_question_down($layout, $questionid) {
  */
 function quiz_print_question_list($quiz, $pageurl, $allowdelete, $reordertool,
         $quiz_qbanktool, $hasattempts, $defaultcategoryobj) {
-    global $USER, $CFG, $DB, $OUTPUT;
+    global $CFG, $DB, $OUTPUT;
     $strorder = get_string('order');
     $strquestionname = get_string('questionname', 'quiz');
     $strgrade = get_string('grade');
@@ -1212,7 +1212,7 @@ class quiz_question_bank_view extends question_bank_view {
  *      the last value used +1.
  */
 function quiz_print_grading_form($quiz, $pageurl, $tabindex) {
-    global $USER, $OUTPUT;
+    global $OUTPUT;
     $strsave = get_string('save', 'quiz');
     echo '<form method="post" action="edit.php" class="quizsavegradesform"><div>';
     echo '<fieldset class="invisiblefieldset" style="display: block;">';
index 5a0dddc..0d5539f 100644 (file)
@@ -1689,7 +1689,7 @@ function quiz_pluginfile($course, $cm, $context, $filearea, $args, $forcedownloa
  */
 function mod_quiz_question_pluginfile($course, $context, $component,
         $filearea, $qubaid, $slot, $args, $forcedownload) {
-    global $USER, $CFG;
+    global $CFG;
     require_once($CFG->dirroot . '/mod/quiz/locallib.php');
 
     $attemptobj = quiz_attempt::create_from_usage_id($qubaid);
index 63d82b6..f4bba12 100644 (file)
@@ -508,8 +508,7 @@ function quiz_set_grade($newgrade, $quiz) {
  * @return bool Indicates success or failure.
  */
 function quiz_save_best_grade($quiz, $userid = null, $attempts = array()) {
-    global $DB;
-    global $USER, $OUTPUT;
+    global $DB, $OUTPUT, $USER;
 
     if (empty($userid)) {
         $userid = $USER->id;
@@ -1149,8 +1148,6 @@ function quiz_send_confirmation($recipient, $a) {
  */
 function quiz_send_notification($recipient, $submitter, $a) {
 
-    global $USER;
-
     // Recipient info for template
     $a->useridnumber = $recipient->idnumber;
     $a->username     = fullname($recipient);
index c5e12f4..d18348a 100644 (file)
@@ -58,7 +58,7 @@ class quiz_override_form extends moodleform {
     }
 
     protected function definition() {
-        global $CFG, $USER, $DB;
+        global $CFG, $DB;
 
         $cm = $this->cm;
         $mform = $this->_form;
index 8e5d49c..f21f3d9 100644 (file)
@@ -78,11 +78,6 @@ $completion->set_module_viewed($cm);
 // Initialize $PAGE, compute blocks
 $PAGE->set_url('/mod/quiz/view.php', array('id' => $cm->id));
 
-$edit = optional_param('edit', -1, PARAM_BOOL);
-if ($edit != -1 && $PAGE->user_allowed_editing()) {
-    $USER->editing = $edit;
-}
-
 // Get this user's attempts.
 $attempts = quiz_get_user_attempts($quiz->id, $USER->id, 'finished', true);
 $lastfinishedattempt = end($attempts);
@@ -221,13 +216,13 @@ if (!$viewobj->quizhasquestions) {
 
 echo $OUTPUT->header();
 
-// Guests can't do a quiz, so offer them a choice of logging in or going back.
 if (isguestuser()) {
-    echo $output->view_page_guest($course, $quiz, $cm, $context, $infomessages, $viewobj);
+    // Guests can't do a quiz, so offer them a choice of logging in or going back.
+    echo $output->view_page_guest($course, $quiz, $cm, $context, $viewobj->infomessages);
 } else if (!isguestuser() && !($canattempt || $canpreview
           || $viewobj->canreviewmine)) {
     // If they are not enrolled in this course in a good enough role, tell them to enrol.
-    echo $output->view_page_notenrolled($course, $quiz, $cm, $context, $infomessages, $viewobj);
+    echo $output->view_page_notenrolled($course, $quiz, $cm, $context, $viewobj->infomessages);
 } else {
     echo $output->view_page($course, $quiz, $cm, $context, $viewobj);
 }
index d206d14..06a878c 100644 (file)
@@ -74,7 +74,7 @@ function wiki_print_editor_wiki($pageid, $content, $editor, $version = -1, $sect
     echo $OUTPUT->container_end();
 
     echo $OUTPUT->container_start('mdl-align');
-    echo '<form method="post" id="wikiform" action="' . $action . '">';
+    echo '<form method="post" id="mform1" action="' . $action . '">';
     echo $OUTPUT->container(print_textarea(false, 20, 60, 0, 0, "newcontent", $content, 0, true), false, 'wiki_editor');
     echo $OUTPUT->container_start();
     wiki_print_edit_form_default_fields($editor, $pageid, $version, $upload, $deleteuploads);
index 3a993df..5525f04 100644 (file)
@@ -48,7 +48,7 @@ if ($tagname) {
 } else if ($tagid) {
     $tag = tag_get('id', $tagid, '*');
 }
-
+unset($tagid);
 if (empty($tag)) {
     redirect($CFG->wwwroot.'/tag/search.php');
 }
@@ -68,7 +68,7 @@ $title = get_string('tag', 'tag') .' - '. $tagname;
 
 $button = '';
 if ($PAGE->user_allowed_editing() ) {
-    $button = $OUTPUT->edit_button(new moodle_url("$CFG->wwwroot/tag/index.php", array('id' => $tagid)));
+    $button = $OUTPUT->edit_button(new moodle_url("$CFG->wwwroot/tag/index.php", array('id' => $tag->id)));
 }
 
 $PAGE->navbar->add(get_string('tags', 'tag'), new moodle_url('/tag/search.php'));
index 20d21b2..82b456a 100644 (file)
@@ -45,7 +45,11 @@ switch ($action) {
 
     case 'flaginappropriate':
 
-        tag_set_flag(tag_get_id($tag));
+        $tagid = tag_get_id($tag);
+        // Add flaging action to logs
+        add_to_log(SITEID, 'tag', 'flag', 'index.php?id='. $tagid, $tagid, '', $USER->id);
+
+        tag_set_flag($tagid);
 
         redirect($CFG->wwwroot.'/tag/index.php?tag='. rawurlencode($tag), get_string('responsiblewillbenotified', 'tag'));
         break;
index 9baa353..c3040a3 100644 (file)
@@ -1,8 +1,11 @@
 <?php
 
-$hasheading = ($PAGE->heading);
+defined('MOODLE_INTERNAL') || die();
+
+$hasheading = $PAGE->heading;
 $hasnavbar = (empty($PAGE->layout_options['nonavbar']) && $PAGE->has_navbar());
 $hasfooter = (empty($PAGE->layout_options['nofooter']));
+
 $hassidepre = (empty($PAGE->layout_options['noblocks']) && $PAGE->blocks->region_has_content('side-pre', $OUTPUT));
 $haslogininfo = (empty($PAGE->layout_options['nologininfo']));
 
@@ -15,6 +18,7 @@ $bodyclasses = array();
 if (!$showsidepre) {
     $bodyclasses[] = 'content-only';
 }
+
 if ($hascustommenu) {
     $bodyclasses[] = 'has_custom_menu';
 }
@@ -94,11 +98,16 @@ echo $OUTPUT->doctype() ?>
 
 <!-- start of moodle content -->
                             <div id="page-content" class="clearfix">
+
+                                <!-- main mandatory content of the moodle page  -->
                                 <div id="report-main-content">
                                     <div class="region-content">
                                         <?php echo core_renderer::MAIN_CONTENT_TOKEN ?>
                                     </div>
                                 </div>
+                                <!-- end of main mandatory content of the moodle page -->
+
+                                <!-- left column block - diplayed only if... -->
                                 <?php if ($hassidepre) { ?>
                                 <div id="report-region-wrap">
                                     <div id="report-region-pre" class="block-region">
@@ -108,13 +117,15 @@ echo $OUTPUT->doctype() ?>
                                     </div>
                                 </div>
                                 <?php } ?>
+                                <!-- end of left column block - diplayed only if... -->
+
                             </div>
 <!-- end of moodle content -->
 
                             <div class="clearfix"></div>
 
 <?php if ($hasframe) { ?>
-                        </div> <!-- end of wrapper -->
+                        </div> <!-- </wrapper> -->
                     </div> <!-- </frameright> -->
                 </div> <!-- </frameleft> -->
                 <div id="framebottomright">
@@ -171,7 +182,6 @@ if ($hasfooter) {
             //one more div is waiting to be closed
 
     } ?>
-
             <div class="moodledocsleft">
                 <?php
                 //echo $OUTPUT->login_info();
index 23c5660..5f6fd90 100644 (file)
@@ -83,7 +83,7 @@ require("$CFG->dirroot/lib/setup.php");
 $theme = theme_config::load($themename);
 
 if ($type === 'editor') {
-    $files = $theme->editor_css_files();
+    $cssfiles = $theme->editor_css_files();
     css_store_css($theme, $candidatesheet, $cssfiles);
 } else {
     $css = $theme->css_files();
index 70056b8..c0cc535 100644 (file)
 defined('MOODLE_INTERNAL') || die();
 
 
-$version  = 2012020200.07;              // YYYYMMDD      = weekly release date of this DEV branch
+$version  = 2012021300.00;              // YYYYMMDD      = weekly release date of this DEV branch
                                         //         RR    = release increments - 00 in DEV branches
                                         //           .XX = incremental changes
 
-$release  = '2.3dev (Build: 20120202)'; // Human-friendly version name
+$release  = '2.3dev (Build: 20120213)'; // Human-friendly version name
 
 $maturity = MATURITY_ALPHA;             // this version's maturity level