mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
MDL-59369 user: Add status column to the participants table
This commit is contained in:
parent
afa752eb12
commit
fb7929677a
3 changed files with 71 additions and 3 deletions
|
@ -104,6 +104,7 @@ $string['notenrollable'] = 'You can not enrol yourself in this course.';
|
||||||
$string['notenrolledusers'] = 'Other users';
|
$string['notenrolledusers'] = 'Other users';
|
||||||
$string['otheruserdesc'] = 'The following users are not enrolled in this course but do have roles, inherited or assigned within it.';
|
$string['otheruserdesc'] = 'The following users are not enrolled in this course but do have roles, inherited or assigned within it.';
|
||||||
$string['participationactive'] = 'Active';
|
$string['participationactive'] = 'Active';
|
||||||
|
$string['participationnotcurrent'] = 'Not current';
|
||||||
$string['participationstatus'] = 'Status';
|
$string['participationstatus'] = 'Status';
|
||||||
$string['participationsuspended'] = 'Suspended';
|
$string['participationsuspended'] = 'Suspended';
|
||||||
$string['periodend'] = 'until {$a}';
|
$string['periodend'] = 'until {$a}';
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
namespace core_user;
|
namespace core_user;
|
||||||
|
|
||||||
|
use context;
|
||||||
|
use DateTime;
|
||||||
|
use html_writer;
|
||||||
|
|
||||||
defined('MOODLE_INTERNAL') || die;
|
defined('MOODLE_INTERNAL') || die;
|
||||||
|
|
||||||
global $CFG;
|
global $CFG;
|
||||||
|
@ -86,12 +90,12 @@ class participants_table extends \table_sql {
|
||||||
protected $extrafields;
|
protected $extrafields;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \stdClass The course details.
|
* @var \stdClass $course The course details.
|
||||||
*/
|
*/
|
||||||
protected $course;
|
protected $course;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \context The course context.
|
* @var context $context The course context.
|
||||||
*/
|
*/
|
||||||
protected $context;
|
protected $context;
|
||||||
|
|
||||||
|
@ -125,6 +129,7 @@ class participants_table extends \table_sql {
|
||||||
// Get the context.
|
// Get the context.
|
||||||
$this->course = get_course($courseid);
|
$this->course = get_course($courseid);
|
||||||
$context = \context_course::instance($courseid, MUST_EXIST);
|
$context = \context_course::instance($courseid, MUST_EXIST);
|
||||||
|
$this->context = $context;
|
||||||
|
|
||||||
// Define the headers and columns.
|
// Define the headers and columns.
|
||||||
$headers = [];
|
$headers = [];
|
||||||
|
@ -168,6 +173,13 @@ class participants_table extends \table_sql {
|
||||||
$columns[] = 'lastaccess';
|
$columns[] = 'lastaccess';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$canreviewenrol = has_capability('moodle/course:enrolreview', $context);
|
||||||
|
if ($canreviewenrol) {
|
||||||
|
$columns[] = 'status';
|
||||||
|
$headers[] = get_string('participationstatus', 'enrol');
|
||||||
|
$this->no_sorting('status');
|
||||||
|
};
|
||||||
|
|
||||||
$this->define_columns($columns);
|
$this->define_columns($columns);
|
||||||
$this->define_headers($headers);
|
$this->define_headers($headers);
|
||||||
|
|
||||||
|
@ -290,6 +302,59 @@ class participants_table extends \table_sql {
|
||||||
return get_string('never');
|
return get_string('never');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the status column.
|
||||||
|
*
|
||||||
|
* @param stdClass $data The data object.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function col_status($data) {
|
||||||
|
global $CFG, $OUTPUT, $PAGE;
|
||||||
|
|
||||||
|
$enrolstatusoutput = '';
|
||||||
|
$canreviewenrol = has_capability('moodle/course:enrolreview', $this->context);
|
||||||
|
if ($canreviewenrol) {
|
||||||
|
$fullname = fullname($data);
|
||||||
|
require_once($CFG->dirroot . '/enrol/locallib.php');
|
||||||
|
$manager = new \course_enrolment_manager($PAGE, $this->course);
|
||||||
|
$userenrolments = $manager->get_user_enrolments($data->id);
|
||||||
|
foreach ($userenrolments as $ue) {
|
||||||
|
$enrolactions = $ue->enrolmentplugin->get_user_enrolment_actions($manager, $ue);
|
||||||
|
$timestart = $ue->timestart;
|
||||||
|
$timeend = $ue->timeend;
|
||||||
|
$status = '';
|
||||||
|
$dimmed = '';
|
||||||
|
switch ($ue->status) {
|
||||||
|
case ENROL_USER_ACTIVE:
|
||||||
|
$currentdate = new DateTime();
|
||||||
|
$now = $currentdate->getTimestamp();
|
||||||
|
if ($timestart <= $now && ($timeend == 0 || $timeend >= $now)) {
|
||||||
|
$status = get_string('participationactive', 'enrol');
|
||||||
|
} else {
|
||||||
|
$status = get_string('participationnotcurrent', 'enrol');
|
||||||
|
$dimmed = 'dimmed_text';
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ENROL_USER_SUSPENDED:
|
||||||
|
$status = get_string('participationsuspended', 'enrol');
|
||||||
|
$dimmed = 'dimmed_text';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$statusout = html_writer::span($status, $dimmed, ['title' => "{$ue->enrolmentinstancename}: {$status}"]);
|
||||||
|
$enrolactionsout = '';
|
||||||
|
foreach ($enrolactions as $action) {
|
||||||
|
$icon = $OUTPUT->render($action->get_icon());
|
||||||
|
$attributes = $action->get_attributes();
|
||||||
|
$attributes['data-fullname'] = $fullname;
|
||||||
|
$attributes['data-coursename'] = $this->course->fullname;
|
||||||
|
$enrolactionsout .= html_writer::link($action->get_url(), $icon, $attributes);
|
||||||
|
}
|
||||||
|
$enrolstatusoutput .= html_writer::div($statusout . $enrolactionsout);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $enrolstatusoutput;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function is used for the extra user fields.
|
* This function is used for the extra user fields.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1234,7 +1234,9 @@ function user_get_participants_sql($courseid, $groupid = 0, $accesssince = 0, $r
|
||||||
|
|
||||||
$isfrontpage = ($courseid == SITEID);
|
$isfrontpage = ($courseid == SITEID);
|
||||||
|
|
||||||
list($esql, $params) = get_enrolled_sql($context, null, $groupid, true);
|
// Show active users only if the user doesn't have the 'moodle/course:enrolreview' capability.
|
||||||
|
$onlyactive = !has_capability('moodle/course:enrolreview', $context);
|
||||||
|
list($esql, $params) = get_enrolled_sql($context, null, $groupid, $onlyactive);
|
||||||
|
|
||||||
$joins = array('FROM {user} u');
|
$joins = array('FROM {user} u');
|
||||||
$wheres = array();
|
$wheres = array();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue