AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
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 <ferran@moodle.com>
* @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,
);
}
}