MDL-52599 blocks/rss_client: Fix RSS block config page
authorClement Smith <cdsmith@umn.edu>
Thu, 28 Apr 2016 15:08:02 +0000 (10:08 -0500)
committerDan Poltawski <dan@moodle.com>
Mon, 16 May 2016 10:04:36 +0000 (11:04 +0100)
This fixes an error where the RSS block config page would display
'Array' where the multiselect list of feeds should be when
accessed by a user who has not saved any RSS feed urls and yet the
block has been previously configured by another user.

blocks/rss_client/edit_form.php

index f8fcf89..4d123d3 100644 (file)
@@ -47,13 +47,22 @@ class block_rss_client_edit_form extends block_edit_form {
             $mform->setDefault('config_shownumentries', 5);
         }
 
+        $rssconfig = unserialize(base64_decode($this->block->instance->configdata));
+        list($insql, $inparams) = $DB->get_in_or_equal($rssconfig->rssid);
+
+        $queryparams = array('', $USER->id);
+        foreach ($inparams as $paramid) {
+            $queryparams[] = $paramid;
+        }
+        $queryparams[] = '';
+
         $rssfeeds = $DB->get_records_sql_menu('
                 SELECT id,
                        CASE WHEN preferredtitle = ? THEN ' . $DB->sql_compare_text('title', 64) .' ELSE preferredtitle END
                 FROM {block_rss_client}
-                WHERE userid = ? OR shared = 1
+                WHERE userid = ? OR shared = 1 OR id '.$insql.'
                 ORDER BY CASE WHEN preferredtitle = ? THEN ' . $DB->sql_compare_text('title', 64) . ' ELSE preferredtitle END ',
-                array('', $USER->id, ''));
+                $queryparams);
         if ($rssfeeds) {
             $select = $mform->addElement('select', 'config_rssid', get_string('choosefeedlabel', 'block_rss_client'), $rssfeeds);
             $select->setMultiple(true);