Merge branch 'MDL-41792_master' of https://github.com/markn86/moodle
authorDamyon Wiese <damyon@moodle.com>
Tue, 8 Oct 2013 08:03:46 +0000 (16:03 +0800)
committerDamyon Wiese <damyon@moodle.com>
Tue, 8 Oct 2013 08:03:46 +0000 (16:03 +0800)
1  2 
lib/moodlelib.php

diff --combined lib/moodlelib.php
@@@ -1595,8 -1595,8 +1595,8 @@@ function purge_all_caches() 
      theme_reset_all_caches();
      get_string_manager()->reset_caches();
      core_text::reset_caches();
 -    if (class_exists('plugin_manager')) {
 -        plugin_manager::reset_caches();
 +    if (class_exists('core_plugin_manager')) {
 +        core_plugin_manager::reset_caches();
      }
  
      // Bump up cacherev field for all courses.
@@@ -2685,8 -2685,10 +2685,10 @@@ function dst_offset_on($time, $strtimez
   * @return int
   */
  function find_day_in_month($startday, $weekday, $month, $year) {
+     $calendartype = \core_calendar\type_factory::get_calendar_instance();
  
      $daysinmonth = days_in_month($month, $year);
+     $daysinweek = count($calendartype->get_weekdays());
  
      if ($weekday == -1) {
          // Don't care about weekday, so return:
      }
  
      // From now on we 're looking for a specific weekday.
      // Give "end of month" its actual value, since we know it.
      if ($startday == -1) {
          $startday = -1 * $daysinmonth;
      }
  
      // Starting from day $startday, the sign is the direction.
      if ($startday < 1) {
          $startday = abs($startday);
-         $lastmonthweekday  = strftime('%w', mktime(12, 0, 0, $month, $daysinmonth, $year));
+         $lastmonthweekday = dayofweek($daysinmonth, $month, $year);
  
          // This is the last such weekday of the month.
          $lastinmonth = $daysinmonth + $weekday - $lastmonthweekday;
          if ($lastinmonth > $daysinmonth) {
-             $lastinmonth -= 7;
+             $lastinmonth -= $daysinweek;
          }
  
          // Find the first such weekday <= $startday.
          while ($lastinmonth > $startday) {
-             $lastinmonth -= 7;
+             $lastinmonth -= $daysinweek;
          }
  
          return $lastinmonth;
      } else {
-         $indexweekday = strftime('%w', mktime(12, 0, 0, $month, $startday, $year));
+         $indexweekday = dayofweek($startday, $month, $year);
  
          $diff = $weekday - $indexweekday;
          if ($diff < 0) {
-             $diff += 7;
+             $diff += $daysinweek;
          }
  
          // This is the first such weekday of the month equal to or after $startday.
          $firstfromindex = $startday + $diff;
  
          return $firstfromindex;
      }
  }
  
   * @return int
   */
  function days_in_month($month, $year) {
-     return intval(date('t', mktime(12, 0, 0, $month, 1, $year)));
+     $calendartype = \core_calendar\type_factory::get_calendar_instance();
+     return $calendartype->get_num_days_in_month($year, $month);
  }
  
  /**
   * @return int
   */
  function dayofweek($day, $month, $year) {
-     // I wonder if this is any different from strftime('%w', mktime(12, 0, 0, $month, $daysinmonth, $year, 0));.
-     return intval(date('w', mktime(12, 0, 0, $month, $day, $year)));
+     $calendartype = \core_calendar\type_factory::get_calendar_instance();
+     return $calendartype->get_weekday($year, $month, $day);
  }
  
  // USER AUTHENTICATION AND LOGIN.
@@@ -5953,27 -5950,23 +5950,27 @@@ function send_confirmation_email($user
   * Sends a password change confirmation email.
   *
   * @param stdClass $user A {@link $USER} object
 + * @param stdClass $resetrecord An object tracking metadata regarding password reset request
   * @return bool Returns true if mail was sent OK and false if there was an error.
   */
 -function send_password_change_confirmation_email($user) {
 +function send_password_change_confirmation_email($user, $resetrecord) {
      global $CFG;
  
      $site = get_site();
      $supportuser = core_user::get_support_user();
 +    $pwresetmins = isset($CFG->pwresettime) ? floor($CFG->pwresettime / MINSECS) : 30;
  
      $data = new stdClass();
      $data->firstname = $user->firstname;
      $data->lastname  = $user->lastname;
 +    $data->username  = $user->username;
      $data->sitename  = format_string($site->fullname);
 -    $data->link      = $CFG->httpswwwroot .'/login/forgot_password.php?p='. $user->secret .'&s='. urlencode($user->username);
 +    $data->link      = $CFG->httpswwwroot .'/login/forgot_password.php?token='. $resetrecord->token;
      $data->admin     = generate_email_signoff();
 +    $data->resetminutes = $pwresetmins;
  
 -    $message = get_string('emailpasswordconfirmation', '', $data);
 -    $subject = get_string('emailpasswordconfirmationsubject', '', format_string($site->fullname));
 +    $message = get_string('emailresetconfirmation', '', $data);
 +    $subject = get_string('emailresetconfirmationsubject', '', format_string($site->fullname));
  
      // Directly email rather than using the messaging system to ensure its not routed to a popup or jabber.
      return email_to_user($user, $supportuser, $subject, $message);
@@@ -8546,6 -8539,58 +8543,6 @@@ function fullclone($thing) 
      return unserialize(serialize($thing));
  }
  
 -
 -/**
 - * This function expects to called during shutdown should be set via register_shutdown_function() in lib/setup.php .
 - *
 - * @return void
 - */
 -function moodle_request_shutdown() {
 -    global $CFG;
 -
 -    // Help apache server if possible.
 -    $apachereleasemem = false;
 -    if (function_exists('apache_child_terminate') && function_exists('memory_get_usage')
 -            && ini_get_bool('child_terminate')) {
 -
 -        $limit = (empty($CFG->apachemaxmem) ? 64*1024*1024 : $CFG->apachemaxmem); // 64MB default.
 -        if (memory_get_usage() > get_real_size($limit)) {
 -            $apachereleasemem = $limit;
 -            @apache_child_terminate();
 -        }
 -    }
 -
 -    // Deal with perf logging.
 -    if (defined('MDL_PERF') || (!empty($CFG->perfdebug) and $CFG->perfdebug > 7)) {
 -        if ($apachereleasemem) {
 -            error_log('Mem usage over '.$apachereleasemem.': marking Apache child for reaping.');
 -        }
 -        if (defined('MDL_PERFTOLOG')) {
 -            $perf = get_performance_info();
 -            error_log("PERF: " . $perf['txt']);
 -        }
 -        if (defined('MDL_PERFINC')) {
 -            $inc = get_included_files();
 -            $ts  = 0;
 -            foreach ($inc as $f) {
 -                if (preg_match(':^/:', $f)) {
 -                    $fs  =  filesize($f);
 -                    $ts  += $fs;
 -                    $hfs =  display_size($fs);
 -                    error_log(substr($f, strlen($CFG->dirroot)) . " size: $fs ($hfs)"
 -                              , null, null, 0);
 -                } else {
 -                    error_log($f , null, null, 0);
 -                }
 -            }
 -            if ($ts > 0 ) {
 -                $hts = display_size($ts);
 -                error_log("Total size of files included: $ts ($hts)");
 -            }
 -        }
 -    }
 -}
 -
   /**
    * If new messages are waiting for the current user, then insert
    * JavaScript to pop up the messaging window into the page