From 7b34570bce0cd1820e558755b88288a2f23e17ca Mon Sep 17 00:00:00 2001
From: Justus Dieckmann <justusdieckmann@wwu.de>
Date: Wed, 25 Sep 2019 21:53:48 +0200
Subject: [PATCH] Delays: Move cache logic to delayedcourses.php, add bulk
 delete button

---
 classes/form/form_delays_filter.php     | 42 -------------------------
 classes/table/delayed_courses_table.php |  3 --
 delayedcourses.php                      | 24 +++++++++++++-
 lang/en/tool_lifecycle.php              |  1 +
 4 files changed, 24 insertions(+), 46 deletions(-)

diff --git a/classes/form/form_delays_filter.php b/classes/form/form_delays_filter.php
index 638f501..f262d60 100644
--- a/classes/form/form_delays_filter.php
+++ b/classes/form/form_delays_filter.php
@@ -88,46 +88,4 @@ class form_delays_filter extends \moodleform {
         $this->add_action_buttons(true, get_string('apply', 'tool_lifecycle'));
     }
 
-    /**
-     * This method is called after definition(), data submission and set_data().
-     * All form setup that is dependent on form values should go in here.
-     */
-    public function definition_after_data() {
-        $cache = $this->get_cache();
-        if ($this->is_submitted() && $this->is_validated()) {
-            if ($this->is_cancelled()) {
-                $cache->delete('delays_filter');
-            } else {
-                $cache->set('delays_filter', $this->get_data());
-            }
-        } else {
-            $this->set_data($cache->get('delays_filter'));
-        }
-    }
-
-    /**
-     * Override get data to return cached data when nothing was submitted.
-     * @return object
-     */
-    public function get_data() {
-        $data = parent::get_data();
-        if ($data) {
-            return $data;
-        } else {
-            return $this->get_cache()->get('delays_filter');
-        }
-    }
-
-    /**
-     * Gets the cache.
-     * @return cache the cache to get the cached mform data.
-     */
-    private function get_cache() {
-        if (!$this->cache) {
-            $this->cache = cache::make('tool_lifecycle', 'mformdata');
-        }
-        return $this->cache;
-    }
-
-
 }
diff --git a/classes/table/delayed_courses_table.php b/classes/table/delayed_courses_table.php
index bb99d69..3277028 100644
--- a/classes/table/delayed_courses_table.php
+++ b/classes/table/delayed_courses_table.php
@@ -48,9 +48,6 @@ class delayed_courses_table extends \table_sql {
     public function __construct($filterdata) {
         parent::__construct('tool_lifecycle-delayed-courses');
 
-        global $DB;
-        $DB->set_debug(true);
-
         $fields = 'c.id as courseid, c.fullname as coursefullname, cat.name as category, ';
 
         $selectseperatedelays = true;
diff --git a/delayedcourses.php b/delayedcourses.php
index e78a820..f8f34c8 100644
--- a/delayedcourses.php
+++ b/delayedcourses.php
@@ -62,7 +62,19 @@ $PAGE->set_heading(get_string('delayed_courses_header', 'tool_lifecycle'));
 
 $mform = new form_delays_filter($PAGE->url);
 
-$data = $mform->get_data();
+// Cache handling.
+$cache = cache::make('tool_lifecycle', 'mformdata');
+if ($mform->is_cancelled()) {
+    $cache->delete('delays_filter');
+    redirect($PAGE->url);
+} else if ($data = $mform->get_data()) {
+    $cache->set('delays_filter', $data);
+} else {
+    $data = $cache->get('delays_filter');
+    if ($data) {
+        $mform->set_data($data);
+    }
+}
 
 $table = new delayed_courses_table($data);
 $table->define_baseurl($PAGE->url);
@@ -70,4 +82,14 @@ $table->define_baseurl($PAGE->url);
 echo $OUTPUT->header();
 $mform->display();
 $table->out(100, false);
+
+$params = ['sesskey' => sesskey(), 'action' => 'bulk-delete'];
+if ($data) {
+    $params = array_merge($params, (array) $data);
+}
+
+$button = new single_button(new moodle_url($PAGE->url, $params),
+        get_string('delete_all_delays', 'tool_lifecycle'));
+
+echo $OUTPUT->render($button);
 echo $OUTPUT->footer();
diff --git a/lang/en/tool_lifecycle.php b/lang/en/tool_lifecycle.php
index a92b9c7..a8cc60b 100644
--- a/lang/en/tool_lifecycle.php
+++ b/lang/en/tool_lifecycle.php
@@ -205,3 +205,4 @@ $string['show_delays'] = 'Kind of view';
 $string['all_delays'] = 'All delays';
 $string['globally'] = 'Global delays';
 $string['delays_for_workflow'] = 'Delays for "{$a}"';
+$string['delete_all_delays'] = 'Delete all delays';
-- 
GitLab