. namespace core_course\output; use renderable; use renderer_base; use stdClass; use templatable; /** * The activity dates renderable class. * * @package core_course * @copyright 2023 Mikel Martín * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class activity_dates implements renderable, templatable { /** * Constructor. * * @param array $activitydates The activity dates. */ public function __construct( protected array $activitydates ) { } /** * Export this data so it can be used as the context for a mustache template. * * @param renderer_base $output Renderer base. * @return stdClass */ public function export_for_template(renderer_base $output): stdClass { $activitydates = []; foreach ($this->activitydates as $date) { if (empty($date['relativeto'])) { $date['datestring'] = userdate($date['timestamp'], get_string('strftimedaydatetime', 'core_langconfig')); } else { $diffstr = get_time_interval_string($date['timestamp'], $date['relativeto']); if ($date['timestamp'] >= $date['relativeto']) { $date['datestring'] = get_string('relativedatessubmissionduedateafter', 'core_course', ['datediffstr' => $diffstr]); } else { $date['datestring'] = get_string('relativedatessubmissionduedatebefore', 'core_course', ['datediffstr' => $diffstr]); } } $activitydates[] = $date; } return (object) [ 'hasdates' => !empty($this->activitydates), 'activitydates' => $activitydates, ]; } }