.
/**
* Renderer for block recent_activity
*
* @package block_recent_activity
* @copyright 2012 Marina Glancy
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
defined('MOODLE_INTERNAL') || die;
/**
* recent_activity block rendrer
*
* @package block_recent_activity
* @copyright 2012 Marina Glancy
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class block_recent_activity_renderer extends plugin_renderer_base {
/**
* Renders HTML to display recent_activity block
*
* @param stdClass $course
* @param int $timestart
* @param array $recentenrolments array of changes in enrolments
* @param array $structuralchanges array of changes in course structure
* @param array $modulesrecentactivity array of changes in modules (provided by modules)
* @return string
*/
public function recent_activity($course, $timestart, $recentenrolments, $structuralchanges,
$modulesrecentactivity) {
$output = html_writer::tag('div',
get_string('activitysince', '', userdate($timestart)),
array('class' => 'activityhead'));
$output .= html_writer::tag('div',
html_writer::link(new moodle_url('/course/recent.php', array('id' => $course->id)),
get_string('recentactivityreport')),
array('class' => 'activityhead'));
$content = false;
// Firstly, have there been any new enrolments?
if ($recentenrolments) {
$content = true;
$context = context_course::instance($course->id);
$viewfullnames = has_capability('moodle/site:viewfullnames', $context);
$output .= html_writer::start_tag('div', array('class' => 'newusers'));
$output .= $this->heading(get_string("newusers").':', 3);
//Accessibility: new users now appear in an
list.
$output .= html_writer::start_tag('ol', array('class' => 'list'));
foreach ($recentenrolments as $user) {
$output .= html_writer::tag('li',
html_writer::link(new moodle_url('/user/view.php', array('id' => $user->id, 'course' => $course->id)),
fullname($user, $viewfullnames)),
array('class' => 'name'));
}
$output .= html_writer::end_tag('ol');
$output .= html_writer::end_tag('div');
}
// Next, have there been any modifications to the course structure?
if (!empty($structuralchanges)) {
$content = true;
$output .= $this->heading(get_string("courseupdates").':', 3);
foreach ($structuralchanges as $changeinfo => $change) {
$output .= $this->structural_change($change);
}
}
// Now display new things from each module
foreach ($modulesrecentactivity as $modname => $moduleactivity) {
$content = true;
$output .= $moduleactivity;
}
if (! $content) {
$output .= html_writer::tag('p', get_string('nothingnew'), array('class' => 'message'));
}
return $output;
}
/**
* Renders HTML for one change in course structure
*
* @see block_recent_activity::get_structural_changes()
* @param array $change array containing attributes
* 'action' - one of: 'add mod', 'update mod', 'delete mod'
* 'module' - instance of cm_info (for 'delete mod' it is an object with attributes modname and modfullname)
* @return string
*/
protected function structural_change($change) {
$cm = $change['module'];
switch ($change['action']) {
case 'delete mod':
$text = get_string('deletedactivity', 'moodle', $cm->modfullname);
break;
case 'add mod':
$text = get_string('added', 'moodle', $cm->modfullname). '
'.
html_writer::link($cm->url, format_string($cm->name, true));
break;
case 'update mod':
$text = get_string('updated', 'moodle', $cm->modfullname). '
'.
html_writer::link($cm->url, format_string($cm->name, true));
break;
default:
return '';
}
return html_writer::tag('p', $text, array('class' => 'activity'));
}
}