Merge branch 'wip-mdl-30667-m23' of git://github.com/rajeshtaneja/moodle into MOODLE_...
authorSam Hemelryk <sam@moodle.com>
Wed, 12 Sep 2012 23:18:20 +0000 (11:18 +1200)
committerSam Hemelryk <sam@moodle.com>
Wed, 12 Sep 2012 23:18:20 +0000 (11:18 +1200)
1  2 
lib/moodlelib.php

diff --combined lib/moodlelib.php
@@@ -3289,11 -3289,6 +3289,11 @@@ function get_user_key($script, $userid
  function update_user_login_times() {
      global $USER, $DB;
  
 +    if (isguestuser()) {
 +        // Do not update guest access times/ips for performance.
 +        return true;
 +    }
 +
      $now = time();
  
      $user = new stdClass();
@@@ -3920,45 -3915,15 +3920,45 @@@ function truncate_userinfo($info) 
   * Any plugin that needs to purge user data should register the 'user_deleted' event.
   *
   * @param stdClass $user full user object before delete
 - * @return boolean always true
 + * @return boolean success
 + * @throws coding_exception if invalid $user parameter detected
   */
 -function delete_user($user) {
 +function delete_user(stdClass $user) {
      global $CFG, $DB;
      require_once($CFG->libdir.'/grouplib.php');
      require_once($CFG->libdir.'/gradelib.php');
      require_once($CFG->dirroot.'/message/lib.php');
      require_once($CFG->dirroot.'/tag/lib.php');
  
 +    // Make sure nobody sends bogus record type as parameter.
 +    if (!property_exists($user, 'id') or !property_exists($user, 'username')) {
 +        throw new coding_exception('Invalid $user parameter in delete_user() detected');
 +    }
 +
 +    // Better not trust the parameter and fetch the latest info,
 +    // this will be very expensive anyway.
 +    if (!$user = $DB->get_record('user', array('id'=>$user->id))) {
 +        debugging('Attempt to delete unknown user account.');
 +        return false;
 +    }
 +
 +    // There must be always exactly one guest record,
 +    // originally the guest account was identified by username only,
 +    // now we use $CFG->siteguest for performance reasons.
 +    if ($user->username === 'guest' or isguestuser($user)) {
 +        debugging('Guest user account can not be deleted.');
 +        return false;
 +    }
 +
 +    // Admin can be theoretically from different auth plugin,
 +    // but we want to prevent deletion of internal accoutns only,
 +    // if anything goes wrong ppl may force somebody to be admin via
 +    // config.php setting $CFG->siteadmins.
 +    if ($user->auth === 'manual' and is_siteadmin($user)) {
 +        debugging('Local administrator accounts can not be deleted.');
 +        return false;
 +    }
 +
      // delete all grades - backup is kept in grade_grades_history table
      grade_user_delete($user->id);
  
@@@ -4802,7 -4767,7 +4802,7 @@@ function shift_course_mod_dates($modnam
      foreach ($fields as $field) {
          $updatesql = "UPDATE {".$modname."}
                            SET $field = $field + ?
 -                        WHERE course=? AND $field<>0 AND $field<>0";
 +                        WHERE course=? AND $field<>0";
          $return = $DB->execute($updatesql, array($timeshift, $courseid)) && $return;
      }
  
@@@ -5948,9 -5913,11 +5948,11 @@@ function get_user_max_upload_file_size(
   * @param int $sizebytes Set maximum size
   * @param int $coursebytes Current course $course->maxbytes (in bytes)
   * @param int $modulebytes Current module ->maxbytes (in bytes)
+  * @param int|array $custombytes custom upload size/s which will be added to list,
+  *        Only value/s smaller then maxsize will be added to list.
   * @return array
   */
- function get_max_upload_sizes($sitebytes=0, $coursebytes=0, $modulebytes=0) {
+ function get_max_upload_sizes($sitebytes = 0, $coursebytes = 0, $modulebytes = 0, $custombytes = null) {
      global $CFG;
  
      if (!$maxsize = get_max_upload_file_size($sitebytes, $coursebytes, $modulebytes)) {
      $sizelist = array(10240, 51200, 102400, 512000, 1048576, 2097152,
                        5242880, 10485760, 20971520, 52428800, 104857600);
  
+     // If custombytes is given then add it to the list.
+     if (!is_null($custombytes)) {
+         if (is_number($custombytes)) {
+             $custombytes = array((int)$custombytes);
+         }
+         $sizelist = array_unique(array_merge($sizelist, $custombytes));
+     }
      // Allow maxbytes to be selected if it falls outside the above boundaries
      if (isset($CFG->maxbytes) && !in_array(get_real_size($CFG->maxbytes), $sizelist)) {
          // note: get_real_size() is used in order to prevent problems with invalid values