Merge branch 'MDL-31923-MOODLE_21_STABLE-1' of git://git.luns.net.uk/moodle into MOODLE_21_STABLE

This commit is contained in:
Sam Hemelryk
2012-03-12 14:32:45 +13:00
3 changed files with 97 additions and 56 deletions
+50 -27
View File
@@ -757,24 +757,21 @@ class course_enrolment_manager {
* @return array
*/
public function get_other_users_for_display(core_enrol_renderer $renderer, moodle_url $pageurl, $sort, $direction, $page, $perpage) {
global $CFG;
$userroles = $this->get_other_users($sort, $direction, $page, $perpage);
$roles = $this->get_all_roles();
$courseid = $this->get_course()->id;
$context = $this->get_context();
$now = time();
$extrafields = array();
if (!empty($CFG->extrauserselectorfields)) {
$extrafields = explode(',', $CFG->extrauserselectorfields);
}
$users = array();
foreach ($userroles as $userrole) {
if (!array_key_exists($userrole->id, $users)) {
$users[$userrole->id] = array(
'userid' => $userrole->id,
'courseid' => $courseid,
'picture' => new user_picture($userrole),
'firstname' => fullname($userrole, true),
'email' => $userrole->email,
'roles' => array()
);
$users[$userrole->id] = $this->prepare_user_for_display($userrole, $extrafields, $now);
}
$a = new stdClass;
$a->role = $roles[$userrole->roleid]->localname;
@@ -797,6 +794,7 @@ class course_enrolment_manager {
break;
}
}
$users[$userrole->id]['roles'] = array();
$users[$userrole->id]['roles'][$userrole->roleid] = array(
'text' => $roletext,
'unchangeable' => !$changeable
@@ -818,11 +816,11 @@ class course_enrolment_manager {
* @return array
*/
public function get_users_for_display(course_enrolment_manager $manager, $sort, $direction, $page, $perpage) {
global $CFG;
$pageurl = $manager->get_moodlepage()->url;
$users = $this->get_users($sort, $direction, $page, $perpage);
$now = time();
$strnever = get_string('never');
$straddgroup = get_string('addgroup', 'group');
$strunenrol = get_string('unenrol', 'enrol');
$stredit = get_string('edit');
@@ -830,42 +828,34 @@ class course_enrolment_manager {
$allroles = $this->get_all_roles();
$assignable = $this->get_assignable_roles();
$allgroups = $this->get_all_groups();
$courseid = $this->get_course()->id;
$context = $this->get_context();
$canmanagegroups = has_capability('moodle/course:managegroups', $context);
$url = new moodle_url($pageurl, $this->get_url_params());
$extrafields = array();
if (!empty($CFG->extrauserselectorfields)) {
$extrafields = explode(',', $CFG->extrauserselectorfields);
}
$userdetails = array();
foreach ($users as $user) {
$details = array(
'userid' => $user->id,
'courseid' => $courseid,
'picture' => new user_picture($user),
'firstname' => fullname($user, true),
'email' => $user->email,
'lastseen' => $strnever,
'roles' => array(),
'groups' => array(),
'enrolments' => array()
);
if ($user->lastaccess) {
$details['lastseen'] = format_time($now - $user->lastaccess);
}
$details = $this->prepare_user_for_display($user, $extrafields, $now);
// Roles
$details['roles'] = array();
foreach ($this->get_user_roles($user->id) as $rid=>$rassignable) {
$details['roles'][$rid] = array('text'=>$allroles[$rid]->localname, 'unchangeable'=>(!$rassignable || !isset($assignable[$rid])));
}
// Users
$usergroups = $this->get_user_groups($user->id);
$details['groups'] = array();
foreach($usergroups as $gid=>$unused) {
$details['groups'][$gid] = $allgroups[$gid]->name;
}
// Enrolments
$details['enrolments'] = array();
foreach ($this->get_user_enrolments($user->id) as $ue) {
if ($ue->timestart and $ue->timeend) {
$period = get_string('periodstartend', 'enrol', array('start'=>userdate($ue->timestart), 'end'=>userdate($ue->timeend)));
@@ -892,6 +882,39 @@ class course_enrolment_manager {
return $userdetails;
}
/**
* Prepare a user record for display
*
* This function is called by both {@link get_users_for_display} and {@link get_other_users_for_display} to correctly
* prepare user fields for display
*
* Please note that this function does not check capability for moodle/coures:viewhiddenuserfields
*
* @param object $user The user record
* @param array $extrafields The list of fields as returned from get_extra_user_fields used to determine which
* additional fields may be displayed
* @param int $now The time used for lastaccess calculation
* @return array The fields to be displayed including userid, courseid, picture, firstname, lastseen and any
* additional fields from $extrafields
*/
private function prepare_user_for_display($user, $extrafields, $now) {
$details = array(
'userid' => $user->id,
'courseid' => $this->get_course()->id,
'picture' => new user_picture($user),
'firstname' => fullname($user, has_capability('moodle/site:viewfullnames', $this->get_context())),
'lastseen' => get_string('never'),
);
foreach ($extrafields as $field) {
$details[$field] = $user->{$field};
}
if ($user->lastaccess) {
$details['lastseen'] = format_time($now - $user->lastaccess);
}
return $details;
}
public function get_manual_enrol_buttons() {
$plugins = $this->get_enrolment_plugins();
$buttons = array();
+21 -22
View File
@@ -48,33 +48,32 @@ $manager = new course_enrolment_manager($PAGE, $course, $filter);
$table = new course_enrolment_other_users_table($manager, $PAGE);
$PAGE->set_url('/enrol/otherusers.php', $manager->get_url_params()+$table->get_url_params());
/***
* Actions will go here
*/
$userdetails = array (
'picture' => false,
'firstname' => get_string('firstname'),
'lastname' => get_string('lastname'),
);
if (!empty($CFG->extrauserselectorfields)) {
$extrafields = explode(',', $CFG->extrauserselectorfields);
foreach ($extrafields as $field) {
$userdetails[$field] = get_string($field);
}
}
/*$fields = array(
'userdetails' => array (
'picture' => false,
'firstname' => get_string('firstname'),
'lastname' => get_string('lastname'),
'email' => get_string('email')
),
'lastseen' => get_string('lastaccess'),
'role' => array(
'roles' => get_string('roles', 'role'),
'context' => get_string('context')
)
);*/
$fields = array(
'userdetails' => array (
'picture' => false,
'firstname' => get_string('firstname'),
'lastname' => get_string('lastname'),
'email' => get_string('email')
),
'userdetails' => $userdetails,
'lastseen' => get_string('lastaccess'),
'role' => get_string('roles', 'role')
);
// Remove hidden fields if the user has no access
if (!has_capability('moodle/course:viewhiddenuserfields', $context)) {
$hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields));
if (isset($hiddenfields['lastaccess'])) {
unset($fields['lastseen']);
}
}
$table->set_fields($fields, $OUTPUT);
//$users = $manager->get_other_users($table->sort, $table->sortdirection, $table->page, $table->perpage);
+26 -7
View File
@@ -166,18 +166,37 @@ if ($action) {
$renderer = $PAGE->get_renderer('core_enrol');
$userdetails = array (
'picture' => false,
'firstname' => get_string('firstname'),
'lastname' => get_string('lastname'),
);
if (!empty($CFG->extrauserselectorfields)) {
$extrafields = explode(',', $CFG->extrauserselectorfields);
foreach ($extrafields as $field) {
$userdetails[$field] = get_string($field);
}
}
$fields = array(
'userdetails' => array (
'picture' => false,
'firstname' => get_string('firstname'),
'lastname' => get_string('lastname'),
'email' => get_string('email')
),
'userdetails' => $userdetails,
'lastseen' => get_string('lastaccess'),
'role' => get_string('roles', 'role'),
'group' => get_string('groups', 'group'),
'enrol' => get_string('enrolmentinstances', 'enrol')
);
// Remove hidden fields if the user has no access
if (!has_capability('moodle/course:viewhiddenuserfields', $context)) {
$hiddenfields = array_flip(explode(',', $CFG->hiddenuserfields));
if (isset($hiddenfields['lastaccess'])) {
unset($fields['lastseen']);
}
if (isset($hiddenfields['groups'])) {
unset($fields['group']);
}
}
$table->set_fields($fields, $renderer);
$canassign = has_capability('moodle/role:assign', $manager->get_context());
@@ -197,4 +216,4 @@ $PAGE->set_heading($PAGE->title);
echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('enrolledusers', 'enrol'));
echo $renderer->render($table);
echo $OUTPUT->footer();
echo $OUTPUT->footer();