. namespace mod_feedback\courseformat; use core_courseformat\local\overview\overviewitem; use core\output\action_link; use core\output\local\properties\button; use core\output\local\properties\text_align; use core\url; use core\output\pix_icon; /** * Class overview * * @package mod_feedback * @copyright 2025 Ferran Recio * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class overview extends \core_courseformat\activityoverviewbase { #[\Override] public function get_extra_overview_items(): array { return [ 'submitted' => $this->get_extra_submitted_overview(), ]; } #[\Override] public function get_actions_overview(): ?overviewitem { global $CFG, $USER; if (!has_capability('mod/feedback:viewreports', $this->context)) { return null; } require_once($CFG->dirroot . '/mod/feedback/lib.php'); $submissions = feedback_get_completeds_group_count( $this->cm->get_instance_record() ); // Normalize the value. if (!$submissions) { $submissions = 0; } $total = $submissions + feedback_count_incomplete_users($this->cm); $content = new action_link( url: new url('/mod/feedback/show_entries.php', ['id' => $this->cm->id]), text: get_string( 'count_of_total', 'core', ['count' => $submissions, 'total' => $total] ), attributes: ['class' => button::SECONDARY_OUTLINE->classes()], ); return new overviewitem( name: get_string('responses', 'mod_feedback'), value: $submissions, content: $content, textalign: text_align::CENTER, ); } #[\Override] public function get_due_date_overview(): ?overviewitem { $duedate = null; if (isset($this->cm->customdata['timeclose'])) { $duedate = $this->cm->customdata['timeclose']; } if (empty($duedate)) { return new overviewitem( name: get_string('feedbackclose', 'mod_feedback'), value: null, content: '-', ); } return new overviewitem( name: get_string('feedbackclose', 'mod_feedback'), value: $duedate, content: userdate($duedate), ); } /** * Get the submitted status overview item. * * @return overviewitem|null The overview item (or null if the user cannot complete the feedback). */ private function get_extra_submitted_overview(): ?overviewitem { global $USER; if (!has_capability('mod/feedback:complete', $this->context)) { return null; } $structure = new \mod_feedback_structure( feedback: $this->cm->get_instance_record(), cm: $this->cm, courseid: $this->course->id, userid: $USER->id, ); $value = false; $content = '-'; if ($structure->is_already_submitted()) { $value = true; $content = new pix_icon( 'i/checkedcircle', alt: get_string('this_feedback_is_already_submitted', 'mod_feedback'), attributes: ['class' => 'text-success'], ); } return new overviewitem( name: get_string('responded', 'mod_feedback'), value: $value, content: $content, textalign: text_align::CENTER, ); } }