MDL-66372 forumreport_summary: Tidy up per page and bulk ops handling
[moodle.git] / mod / forum / report / summary / classes / summary_table.php
index 11b199f..41628dd 100644 (file)
@@ -50,11 +50,14 @@ class summary_table extends table_sql {
     /** Table to store summary data extracted from the log table */
     const LOG_SUMMARY_TEMP_TABLE = 'forum_report_summary_counts';
 
+    /** Default number of rows to display per page */
+    const DEFAULT_PER_PAGE = 50;
+
     /** @var \stdClass The various SQL segments that will be combined to form queries to fetch various information. */
     public $sql;
 
     /** @var int The number of rows to be displayed per page. */
-    protected $perpage = 50;
+    protected $perpage = self::DEFAULT_PER_PAGE;
 
     /** @var array The values available for pagination size per page. */
     protected $perpageoptions = [50, 100, 200];
@@ -79,7 +82,7 @@ class summary_table extends table_sql {
     protected $context = null;
 
     /** @var bool Whether the user has the capability/capabilities to perform bulk operations. */
-    protected $bulkoperations = false;
+    protected $allowbulkoperations = false;
 
     /**
      * @var bool
@@ -96,11 +99,11 @@ class summary_table extends table_sql {
      *
      * @param int $courseid The ID of the course the forum(s) exist within.
      * @param array $filters Report filters in the format 'type' => [values].
-     * @param bool $bulkoperations Is the user allowed to perform bulk operations?
+     * @param bool $allowbulkoperations Is the user allowed to perform bulk operations?
      * @param bool $canseeprivatereplies Whether the user can see all private replies or not.
      * @param int $perpage The number of rows to display per page.
      */
-    public function __construct(int $courseid, array $filters, bool $bulkoperations, bool $canseeprivatereplies, int $perpage) {
+    public function __construct(int $courseid, array $filters, bool $allowbulkoperations, bool $canseeprivatereplies, int $perpage) {
         global $USER, $OUTPUT;
 
         $forumid = $filters['forums'][0];
@@ -109,6 +112,7 @@ class summary_table extends table_sql {
 
         $this->cm = get_coursemodule_from_instance('forum', $forumid, $courseid);
         $this->context = \context_module::instance($this->cm->id);
+        $this->allowbulkoperations = $allowbulkoperations;
         $this->canseeprivatereplies = $canseeprivatereplies;
         $this->perpage = $perpage;
 
@@ -119,7 +123,7 @@ class summary_table extends table_sql {
 
         $columnheaders = [];
 
-        if ($bulkoperations) {
+        if ($allowbulkoperations) {
             $mastercheckbox = new \core\output\checkbox_toggleall('summaryreport-table', true, [
                 'id' => 'select-all-users',
                 'name' => 'select-all-users',
@@ -803,25 +807,6 @@ class summary_table extends table_sql {
         return $this->showwordcharcounts;
     }
 
-    /**
-     * Set whether the user has the capability/capabilities to perform bulk operations.
-     *
-     * @param bool $allowbulkoperations Whether the user has the relevant capability/capabilities.
-     * @return void
-     */
-    public function set_bulkoperations(bool $allowbulkoperations): void {
-        $this->bulkoperations = $allowbulkoperations;
-    }
-
-    /**
-     * Fetch whether the user has the capability/capabilities to perform bulk operations.
-     *
-     * @return bool
-     */
-    public function get_bulkoperations(): bool {
-        return $this->bulkoperations;
-    }
-
     /**
      * Fetch the number of items to be displayed per page.
      *
@@ -840,7 +825,7 @@ class summary_table extends table_sql {
         global $OUTPUT;
 
         $data = new \stdClass();
-        $data->showbulkactions = $this->get_bulkoperations();
+        $data->showbulkactions = $this->allowbulkoperations;
 
         if ($data->showbulkactions) {
             $data->id = 'formactionid';
@@ -875,9 +860,9 @@ class summary_table extends table_sql {
         $selected = in_array($this->perpage, $this->perpageoptions) ? $this->perpage : $this->perpageoptions[0];
         $perpageselect = new \single_select(new \moodle_url(''), 'perpage',
                 $perpageoptions, $selected, null, 'selectperpage');
-        $perpageselect->label = get_string('perpage', 'moodle');
+        $perpageselect->set_label(get_string('perpage', 'moodle'));
 
-        $data->perpage = $OUTPUT->render($perpageselect);
+        $data->perpage = $perpageselect->export_for_template($OUTPUT);
 
         echo $OUTPUT->render_from_template('forumreport_summary/bulk_action_menu', $data);
     }