░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/var/www/moodle/public/grade/penalty/duedate/classes/table
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: penalty_rule_table.php
<?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 gradepenalty_duedate\table; use context; use context_system; use core_table\sql_table; /** * Table for penalty rule. * * @package gradepenalty_duedate * @copyright 2024 Catalyst IT Australia Pty Ltd * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class penalty_rule_table extends sql_table { /** @var context context */ protected context $context; /** * Sets up the table_log parameters. * * @param string $uniqueid unique id of form. * @param string $contextid context id. */ public function __construct($uniqueid, $contextid) { parent::__construct($uniqueid); $this->context = context::instance_by_id($contextid); // Add columns. $this->define_columns([ 'overdueby', 'penalty', ]); // Add columns header. $this->define_headers([ get_string('overdueby', 'gradepenalty_duedate'), get_string('penalty', 'gradepenalty_duedate'), ]); // Disable sorting. $this->sortable(false); // Disable hiding columns. $this->collapsible(false); } #[\Override] public function query_db($pagesize, $useinitialsbar = true): void { global $DB; // Contexts to find the penalty rules. $contextlevel = $this->context->contextlevel; $contextids = []; if ($contextlevel == CONTEXT_MODULE) { // Module context. $contextids[] = $this->context->id; // Course context. $contextids[] = $this->context->get_parent_context()->id; // System context. $contextids[] = context_system::instance()->id; } else if ($contextlevel == CONTEXT_COURSE) { // Course context. $contextids[] = $this->context->id; // System context. $contextids[] = context_system::instance()->id; } else if ($contextlevel == CONTEXT_SYSTEM) { // System context. $contextids[] = $this->context->id; } // Find the penalty rules. foreach ($contextids as $contextid) { $params = ['contextid' => $contextid]; $total = $DB->count_records_sql($this->get_sql(true), $params); if ($total > 0) { break; } } $this->pagesize($pagesize, $total); $this->rawdata = $DB->get_records_sql($this->get_sql(), $params, $this->get_page_start(), $this->get_page_size()); } /** * Builds the SQL query. * * @param bool $count When true, return the count SQL. * @return string the SQL query. */ protected function get_sql($count = false): string { if ($count) { $select = "COUNT(1)"; $order = ""; } else { $select = "r.overdueby, r.penalty, r.sortorder"; $order = " order by r.sortorder ASC"; } $sql = "SELECT $select FROM {gradepenalty_duedate_rule} r WHERE r.contextid = :contextid"; return $sql . $order; } /** * Overdue column. * * @param object $row row object. */ public function col_overdueby($row): string { // If this is the last rule, show the last row. if (count($this->rawdata) === ($row->sortorder + 1)) { // Find the previous rule. foreach ($this->rawdata as $rule) { if ($rule->sortorder == $row->sortorder - 1) { return get_string('overdueby_lastrow', 'gradepenalty_duedate', format_time($rule->overdueby)); } } // There is only one row. return get_string('overdueby_onerow', 'gradepenalty_duedate'); } // This is not the last rule. return get_string('overdueby_row', 'gradepenalty_duedate', format_time($row->overdueby)); } /** * Penalty column. * * @param object $row row object. */ public function col_penalty($row): string { return get_string('percents', 'moodle', format_float($row->penalty, -1)); } }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 penalty_rule_table.php
PHP
4.8 KB
2026-02-11 01:44
EDIT