Файловый менеджер - Редактировать - /home/harasnat/www/learning/lib/classes/moodlenet/share_progress_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/>. /** * MoodleNet share progress table. * * @package core * @copyright 2023 David Woloszyn <david.woloszyn@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace core\moodlenet; defined('MOODLE_INTERNAL') || die(); require_once($CFG->libdir . '/tablelib.php'); use html_writer; use moodle_url; use stdClass; use table_sql; /** * MoodleNet share progress table. * * @package core * @copyright 2023 David Woloszyn <david.woloszyn@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class share_progress_table extends table_sql { /** @var int The user id records will be displayed for. */ protected $userid; /** * Set up the table. * * @param string $uniqueid Unique id of table. * @param moodle_url $url The base URL. * @param int $userid The user id. */ public function __construct($uniqueid, $url, $userid) { parent::__construct($uniqueid); $this->userid = $userid; $this->define_table_columns(); $this->define_baseurl($url); $this->define_table_configs(); } /** * Define table configs. */ protected function define_table_configs() { $this->collapsible(false); $this->sortable(false); $this->pageable(true); $this->set_default_per_page(25); } /** * Set up the columns and headers. */ protected function define_table_columns() { // Define headers and columns. $cols = [ 'name' => get_string('name'), 'type' => get_string('moodlenet:columntype'), 'timecreated' => get_string('moodlenet:columnsenddate'), 'status' => get_string('moodlenet:columnsendstatus'), ]; $this->define_columns(array_keys($cols)); $this->define_headers(array_values($cols)); $this->column_class('status', 'text-center'); } /** * Name column. * * @param stdClass $row Row data. * @return string */ protected function col_name(stdClass $row): string { global $OUTPUT; $class = ''; // Track deletion of resources on Moodle. $deleted = false; // Courses. if ($row->type == share_recorder::TYPE_COURSE) { if ($row->fullname) { $name = $row->fullname; } else { $name = get_string('moodlenet:deletedcourse'); $deleted = true; } // Activities. } else if ($row->type == share_recorder::TYPE_ACTIVITY) { if ($cm = get_coursemodule_from_id('', $row->cmid)) { $name = $cm->name; } else { $name = get_string('moodlenet:deletedactivity'); $deleted = true; } } if ($deleted) { $class = 'font-italic'; } // Add a link to the resource if it was recorded. if (!empty($row->resourceurl)) { // Apply bold to resource links that aren't deleted. if (!$deleted) { $class = 'font-weight-bold'; } $icon = $OUTPUT->pix_icon('i/externallink', get_string('opensinnewwindow'), 'moodle', ['class' => 'ml-1']); $text = $name . $icon; $attributes = [ 'target' => '_blank', 'rel' => 'noopener noreferrer', ]; $name = html_writer::link($row->resourceurl, $text, $attributes); } return html_writer::span($name, $class); } /** * Type column. * * @param stdClass $row Row data. * @return string */ protected function col_type(stdClass $row): string { // Courses. if ($row->type == share_recorder::TYPE_COURSE) { $type = get_string('course'); // Activities. } else if ($row->type == share_recorder::TYPE_ACTIVITY) { if ($row->modname) { $type = get_string('modulename', $row->modname); } else { // Alternatively, default to 'activity'. $type = get_string('activity'); } } return $type; } /** * Time created column (Send date). * * @param stdClass $row Row data. * @return string */ protected function col_timecreated(stdClass $row): string { $format = get_string('strftimedatefullshort', 'core_langconfig'); return userdate($row->timecreated, $format); } /** * Status column (Send status). * * @param stdClass $row Row data. * @return string */ protected function col_status(stdClass $row): string { // Display a badge indicating the status of the share. if ($row->status == share_recorder::STATUS_IN_PROGRESS) { $status = html_writer::span(get_string('inprogress'), 'badge badge-warning'); } else if ($row->status == share_recorder::STATUS_SENT) { $status = html_writer::span(get_string('sent'), 'badge badge-success'); } else if ($row->status == share_recorder::STATUS_ERROR) { $status = html_writer::span(get_string('error'), 'badge badge-danger'); } return $status; } /** * Builds the SQL query. * * @param bool $count When true, return the count SQL. * @return array containing sql to use and an array of params. */ protected function get_sql_and_params($count = false) { if ($count) { $select = "COUNT(1)"; } else { $select = "msp.id, msp.type, msp.courseid, msp.cmid, msp.timecreated, " . "msp.resourceurl, msp.status, c.fullname, md.name AS modname"; } $sql = "SELECT $select FROM {moodlenet_share_progress} msp LEFT JOIN {course} c ON c.id = msp.courseid LEFT JOIN {course_modules} cm ON cm.course = msp.courseid AND cm.id = msp.cmid LEFT JOIN {modules} md ON md.id = cm.module WHERE msp.userid = :userid"; $params = ['userid' => $this->userid]; if (!$count) { $sql .= " ORDER BY msp.status DESC, msp.timecreated DESC"; } return [$sql, $params]; } /** * Query the DB. * * @param int $pagesize size of page for paginated displayed table. * @param bool $useinitialsbar do you want to use the initials bar. */ public function query_db($pagesize, $useinitialsbar = true) { global $DB; list($countsql, $countparams) = $this->get_sql_and_params(true); list($sql, $params) = $this->get_sql_and_params(); $total = $DB->count_records_sql($countsql, $countparams); $this->pagesize($pagesize, $total); $this->rawdata = $DB->get_records_sql($sql, $params, $this->get_page_start(), $this->get_page_size()); // Set initial bars. if ($useinitialsbar) { $this->initialbars($total > $pagesize); } } /** * Notification to display when there are no results. */ public function print_nothing_to_display() { global $OUTPUT; echo $OUTPUT->notification(get_string('moodlenet:nosharedresources'), 'info'); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка