public function test_relative_time() { $timetag = array('tag' => 'time', 'attributes' => array('is' => 'relative-time')); $actual = local::relative_time(time()); $this->assertTag($timetag + ['content' => 'now'], $actual); $onesecbeforenow = time() - 1; $actual = local::relative_time($onesecbeforenow); $this->assertTag($timetag + ['content' => '1 sec ago'], $actual); $relativeto = date_timestamp_get(date_create("01/01/2001")); $onesecago = $relativeto - 1; $actual = local::relative_time($onesecago, $relativeto); $this->assertTag($timetag + ['content' => '1 sec ago'], $actual); $oneminago = $relativeto - 60; $actual = local::relative_time($oneminago, $relativeto); $this->assertTag($timetag + ['content' => '1 min ago'], $actual); }
/** * Render recent forum activity. * * @param array $activities * @return string */ public function recent_forum_activity(array $activities) { global $OUTPUT; $output = ''; if (empty($activities)) { return ''; } $formatoptions = new stdClass(); $formatoptions->filter = false; foreach ($activities as $activity) { if (!empty($activity->user)) { $userpicture = new user_picture($activity->user); $userpicture->link = false; $userpicture->alttext = false; $userpicture->size = 32; $picture = $OUTPUT->render($userpicture); } else { $picture = ''; } $url = new moodle_url('/mod/' . $activity->type . '/discuss.php', ['d' => $activity->content->discussion], 'p' . $activity->content->id); $fullname = fullname($activity->user); $forumpath = $activity->courseshortname . ' / ' . $activity->forumname; $meta = [local::relative_time($activity->timestamp), format_text($forumpath, FORMAT_HTML, $formatoptions)]; $formattedsubject = '<p>' . format_text($activity->content->subject, FORMAT_HTML, $formatoptions) . '</p>'; $output .= $this->snap_media_object($url, $picture, $fullname, $meta, $formattedsubject); } return $output; }