Merge branch 'w14_MDL-39004_m25_roledocs' of git://github.com/skodak/moodle
authorDan Poltawski <dan@moodle.com>
Tue, 9 Apr 2013 06:57:08 +0000 (14:57 +0800)
committerDan Poltawski <dan@moodle.com>
Tue, 9 Apr 2013 06:57:08 +0000 (14:57 +0800)
1  2 
lib/accesslib.php

diff --combined lib/accesslib.php
@@@ -2315,14 -2315,12 +2315,14 @@@ function get_enrolled_sql(context $cont
   * @param string $orderby
   * @param int $limitfrom return a subset of records, starting at this point (optional, required if $limitnum is set).
   * @param int $limitnum return a subset comprising this many records (optional, required if $limitfrom is set).
 + * @param bool $onlyactive consider only active enrolments in enabled plugins and time restrictions
   * @return array of user records
   */
 -function get_enrolled_users(context $context, $withcapability = '', $groupid = 0, $userfields = 'u.*', $orderby = null, $limitfrom = 0, $limitnum = 0) {
 +function get_enrolled_users(context $context, $withcapability = '', $groupid = 0, $userfields = 'u.*', $orderby = null,
 +        $limitfrom = 0, $limitnum = 0, $onlyactive = false) {
      global $DB;
  
 -    list($esql, $params) = get_enrolled_sql($context, $withcapability, $groupid);
 +    list($esql, $params) = get_enrolled_sql($context, $withcapability, $groupid, $onlyactive);
      $sql = "SELECT $userfields
                FROM {user} u
                JOIN ($esql) je ON je.id = u.id
   * @param context $context
   * @param string $withcapability
   * @param int $groupid 0 means ignore groups, any other value limits the result by group id
 + * @param bool $onlyactive consider only active enrolments in enabled plugins and time restrictions
   * @return array of user records
   */
 -function count_enrolled_users(context $context, $withcapability = '', $groupid = 0) {
 +function count_enrolled_users(context $context, $withcapability = '', $groupid = 0, $onlyactive = false) {
      global $DB;
  
 -    list($esql, $params) = get_enrolled_sql($context, $withcapability, $groupid);
 +    list($esql, $params) = get_enrolled_sql($context, $withcapability, $groupid, $onlyactive);
      $sql = "SELECT count(u.id)
                FROM {user} u
                JOIN ($esql) je ON je.id = u.id
@@@ -2993,6 -2990,9 +2993,9 @@@ function user_can_assign(context $conte
  /**
   * Returns all site roles in correct sort order.
   *
+  * Note: this method does not localise role names or descriptions,
+  *       use role_get_names() if you need role names.
+  *
   * @param context $context optional context for course role name aliases
   * @return array of role records with optional coursealias property
   */
@@@ -4252,7 -4252,7 +4255,7 @@@ function user_has_role_assignment($user
  }
  
  /**
-  * Get role name or alias if exists and format the text.
+  * Get localised role name or alias if exists and format the text.
   *
   * @param stdClass $role role object
   *      - optional 'coursealias' property should be included for performance reasons if course context used
@@@ -4366,6 -4366,9 +4369,9 @@@ function role_get_description(stdClass 
  /**
   * Get all the localised role names for a context.
   *
+  * In new installs default roles have empty names, this function
+  * add localised role names using current language pack.
+  *
   * @param context $context the context, null means system context
   * @param array of role objects with a ->localname field containing the context-specific role name.
   * @param int $rolenamedisplay
@@@ -4377,7 -4380,7 +4383,7 @@@ function role_get_names(context $contex
  }
  
  /**
-  * Prepare list of roles for display, apply aliases and format text
+  * Prepare list of roles for display, apply aliases and localise default role names.
   *
   * @param array $roleoptions array roleid => roleobject (with optional coursealias), strings are accepted for backwards compatibility only
   * @param context $context the context, null means system context
@@@ -6284,7 -6287,7 +6290,7 @@@ class context_coursecat extends contex
       * @return moodle_url
       */
      public function get_url() {
 -        return new moodle_url('/course/category.php', array('id'=>$this->_instanceid));
 +        return new moodle_url('/course/index.php', array('categoryid' => $this->_instanceid));
      }
  
      /**
@@@ -7639,61 -7642,3 +7645,61 @@@ function get_related_contexts_string(co
          return (' ='.$context->id);
      }
  }
 +
 +/**
 + * Given context and array of users, returns array of users whose enrolment status is suspended,
 + * or enrolment has expired or has not started. Also removes those users from the given array
 + *
 + * @param context $context context in which suspended users should be extracted.
 + * @param array $users list of users.
 + * @param array $ignoreusers array of user ids to ignore, e.g. guest
 + * @return array list of suspended users.
 + */
 +function extract_suspended_users($context, &$users, $ignoreusers=array()) {
 +    global $DB;
 +
 +    // Get active enrolled users.
 +    list($sql, $params) = get_enrolled_sql($context, null, null, true);
 +    $activeusers = $DB->get_records_sql($sql, $params);
 +
 +    // Move suspended users to a separate array & remove from the initial one.
 +    $susers = array();
 +    if (sizeof($activeusers)) {
 +        foreach ($users as $userid => $user) {
 +            if (!array_key_exists($userid, $activeusers) && !in_array($userid, $ignoreusers)) {
 +                $susers[$userid] = $user;
 +                unset($users[$userid]);
 +            }
 +        }
 +    }
 +    return $susers;
 +}
 +
 +/**
 + * Given context and array of users, returns array of user ids whose enrolment status is suspended,
 + * or enrolment has expired or not started.
 + *
 + * @param context $context context in which user enrolment is checked.
 + * @return array list of suspended user id's.
 + */
 +function get_suspended_userids($context){
 +    global $DB;
 +
 +    // Get all enrolled users.
 +    list($sql, $params) = get_enrolled_sql($context);
 +    $users = $DB->get_records_sql($sql, $params);
 +
 +    // Get active enrolled users.
 +    list($sql, $params) = get_enrolled_sql($context, null, null, true);
 +    $activeusers = $DB->get_records_sql($sql, $params);
 +
 +    $susers = array();
 +    if (sizeof($activeusers) != sizeof($users)) {
 +        foreach ($users as $userid => $user) {
 +            if (!array_key_exists($userid, $activeusers)) {
 +                $susers[$userid] = $userid;
 +            }
 +        }
 +    }
 +    return $susers;
 +}