diff --git a/classes/local/form/form_backups_filter.php b/classes/local/form/form_backups_filter.php new file mode 100644 index 0000000000000000000000000000000000000000..9abbe6c04f5fbf7b20a6d1614941b62a95ec4aca --- /dev/null +++ b/classes/local/form/form_backups_filter.php @@ -0,0 +1,54 @@ +<?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/>. + +/** + * A moodle form for filtering the course backups table + * + * @package tool_lifecycle + * @copyright 2021 Justus Dieckmann WWU + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +namespace tool_lifecycle\local\form; + +defined('MOODLE_INTERNAL') || die(); + +require_once($CFG->libdir . '/formslib.php'); + +/** + * A moodle form for filtering the course backups table + * + * @package tool_lifecycle + * @copyright 2021 Justus Dieckmann WWU + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class form_backups_filter extends \moodleform { + + /** + * Defines forms elements + */ + public function definition() { + $mform = $this->_form; + + $mform->addElement('text', 'shortname', get_string('shortname')); + $mform->setType('shortname', PARAM_TEXT); + + $mform->addElement('text', 'fullname', get_string('fullname')); + $mform->setType('fullname', PARAM_TEXT); + + $this->add_action_buttons(true, get_string('apply', 'tool_lifecycle')); + } + +} diff --git a/classes/local/table/course_backups_table.php b/classes/local/table/course_backups_table.php index 6220a5f99daa73f4c3ee0b5dbd584315c78a16b4..6b65441bccda2cb84e23c74bbf9b9710b73daaae 100644 --- a/classes/local/table/course_backups_table.php +++ b/classes/local/table/course_backups_table.php @@ -39,14 +39,31 @@ class course_backups_table extends \table_sql { /** * Constructor for course_backups_table. * @param int $uniqueid Unique id of this table. + * @param \stdClass|null $filterdata */ - public function __construct($uniqueid) { + public function __construct($uniqueid, $filterdata) { parent::__construct($uniqueid); - global $PAGE; + global $PAGE, $DB; $this->set_attribute('class', $this->attributes['class'] . ' ' . $uniqueid); + + $where = ['TRUE']; + $params = []; + + if ($filterdata) { + if ($filterdata && $filterdata->shortname) { + $where[] = $DB->sql_like('b.shortname', ':shortname', false, false); + $params['shortname'] = '%' . $DB->sql_like_escape($filterdata->shortname) . '%'; + } + + if ($filterdata && $filterdata->fullname) { + $where[] = $DB->sql_like('b.fullname', ':fullname', false, false); + $params['fullname'] = '%' . $DB->sql_like_escape($filterdata->fullname) . '%'; + } + } + $this->set_sql('b.id, b.courseid, b.shortname as courseshortname, b.fullname as coursefullname, b.backupcreated', '{tool_lifecycle_backups} b', - "TRUE"); + join(" AND ", $where), $params); $this->no_sorting('download'); $this->no_sorting('restore'); $this->define_baseurl($PAGE->url); diff --git a/coursebackups.php b/coursebackups.php index 0b157191b675a041a60c5878df052d2936fe827f..b0a44a1c5fcba01b4931062bb193af9494b0152a 100644 --- a/coursebackups.php +++ b/coursebackups.php @@ -32,7 +32,23 @@ admin_externalpage_setup('tool_lifecycle_coursebackups'); $PAGE->set_url(new \moodle_url('/admin/tool/lifecycle/coursebackups.php')); -$table = new tool_lifecycle\local\table\course_backups_table('tool_lifecycle_course_backups'); +$mform = new \tool_lifecycle\local\form\form_backups_filter(); + +// Cache handling. +$cache = cache::make('tool_lifecycle', 'mformdata'); +if ($mform->is_cancelled()) { + $cache->delete('coursebackups_filter'); + redirect($PAGE->url); +} else if ($data = $mform->get_data()) { + $cache->set('coursebackups_filter', $data); +} else { + $data = $cache->get('coursebackups_filter'); + if ($data) { + $mform->set_data($data); + } +} + +$table = new tool_lifecycle\local\table\course_backups_table('tool_lifecycle_course_backups', $data); $PAGE->set_title(get_string('course_backups_list_header', 'tool_lifecycle')); $PAGE->set_heading(get_string('course_backups_list_header', 'tool_lifecycle')); @@ -40,6 +56,13 @@ $PAGE->set_heading(get_string('course_backups_list_header', 'tool_lifecycle')); $renderer = $PAGE->get_renderer('tool_lifecycle'); echo $renderer->header(); + +echo '<br>'; + +$mform->display(); + +echo '<br>'; + $table->out(50, false); echo $renderer->footer();