diff --git a/classes/local/table/interaction_attention_table.php b/classes/local/table/interaction_attention_table.php index acff10bc67dd00d86592b29189cbfa49411cedcc..7e5b19b32c9b2b74638534313acf807622b81d58 100644 --- a/classes/local/table/interaction_attention_table.php +++ b/classes/local/table/interaction_attention_table.php @@ -45,9 +45,9 @@ class interaction_attention_table extends interaction_table { * @param int $uniqueid Unique id of this table. * @param int[] $courseids List of ids for courses that require attention. */ - public function __construct($uniqueid, $courseids) { + public function __construct($uniqueid, $courseids, $filterdata) { parent::__construct($uniqueid); - global $PAGE; + global $PAGE, $DB; $fields = "p.id as processid, c.id as courseid, c.fullname as coursefullname, c.shortname as courseshortname, " . "c.startdate, cc.name as category , s.id as stepinstanceid, s.instancename as stepinstancename, ". @@ -59,13 +59,27 @@ class interaction_attention_table extends interaction_table { 'left join {course_categories} cc on c.category = cc.id'; $ids = implode(',', $courseids); - $where = 'FALSE'; + $where = ['FALSE']; if ($ids) { - $where = 'p.courseid IN (' . $ids . ')'; + $where = ['p.courseid IN (' . $ids . ')']; + } + + $params = []; + + if ($filterdata) { + if ($filterdata && $filterdata->shortname) { + $where[] = $DB->sql_like('c.shortname', ':shortname', false, false); + $params['shortname'] = '%' . $DB->sql_like_escape($filterdata->shortname) . '%'; + } + + if ($filterdata && $filterdata->fullname) { + $where[] = $DB->sql_like('c.fullname', ':fullname', false, false); + $params['fullname'] = '%' . $DB->sql_like_escape($filterdata->fullname) . '%'; + } } $this->column_nosort = array('status', 'tools'); - $this->set_sql($fields, $from, $where, []); + $this->set_sql($fields, $from, join(" AND ", $where), $params); $this->define_baseurl($PAGE->url); $this->init(); } diff --git a/classes/view_controller.php b/classes/view_controller.php index 32e297d3b4e1c8f8f61495a5760be0dbad6ab684..015830a605445a16ab82fac9e0a0cb81200b836c 100644 --- a/classes/view_controller.php +++ b/classes/view_controller.php @@ -52,7 +52,7 @@ class view_controller { * @throws \dml_exception * @throws \invalid_parameter_exception */ - public function handle_view($renderer) { + public function handle_view($renderer, $filterdata) { global $DB; $courses = get_user_capability_course('tool/lifecycle:managecourses', null, false); @@ -91,7 +91,7 @@ class view_controller { } echo $renderer->heading(get_string('tablecoursesrequiringattention', 'tool_lifecycle'), 3); - $table1 = new interaction_attention_table('tool_lifecycle_interaction', $requiresinteraction); + $table1 = new interaction_attention_table('tool_lifecycle_interaction', $requiresinteraction, $filterdata); echo $renderer->box_start("managing_courses_tables"); $table1->out(50, false); diff --git a/view.php b/view.php index b0970e7deda73cf1bd64fa27fea98e75a8c605ca..8ad1df50a3e7b09d55ff4950cae628ec0a9f2eb1 100644 --- a/view.php +++ b/view.php @@ -63,6 +63,28 @@ $renderer = $PAGE->get_renderer('tool_lifecycle'); echo $renderer->header(); -$controller->handle_view($renderer); +$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); + } +} + +echo '<br>'; + +$mform->display(); + +echo '<br>'; + +$controller->handle_view($renderer, $data); echo $renderer->footer();