From af8cab9b69f9be044d0365dfe1a02c5ca542ae90 Mon Sep 17 00:00:00 2001 From: Clement Smith Date: Thu, 28 Apr 2016 10:08:02 -0500 Subject: [PATCH 1/2] MDL-52599 blocks/rss_client: Fix RSS block config page 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 | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/blocks/rss_client/edit_form.php b/blocks/rss_client/edit_form.php index f8fcf89195f..4d123d3c191 100644 --- a/blocks/rss_client/edit_form.php +++ b/blocks/rss_client/edit_form.php @@ -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); From 0be8dbd9b26abb0a5cb9d7ba7fac387bb639a0a2 Mon Sep 17 00:00:00 2001 From: Dan Poltawski Date: Mon, 16 May 2016 11:04:32 +0100 Subject: [PATCH 2/2] MDL-52599 rss block: clarifty sql and make style more moodley --- blocks/rss_client/edit_form.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/blocks/rss_client/edit_form.php b/blocks/rss_client/edit_form.php index 4d123d3c191..eb7fe273a81 100644 --- a/blocks/rss_client/edit_form.php +++ b/blocks/rss_client/edit_form.php @@ -47,22 +47,20 @@ class block_rss_client_edit_form extends block_edit_form { $mform->setDefault('config_shownumentries', 5); } + $params = array('userid' => $USER->id); $rssconfig = unserialize(base64_decode($this->block->instance->configdata)); - list($insql, $inparams) = $DB->get_in_or_equal($rssconfig->rssid); + list($insql, $inparams) = $DB->get_in_or_equal($rssconfig->rssid, SQL_PARAMS_NAMED); + $params += $inparams; - $queryparams = array('', $USER->id); - foreach ($inparams as $paramid) { - $queryparams[] = $paramid; - } - $queryparams[] = ''; + $titlesql = "CASE WHEN preferredtitle = '' THEN {$DB->sql_compare_text('title', 64)} ELSE preferredtitle END"; + + $rssfeeds = $DB->get_records_sql_menu(" + SELECT id, $titlesql + FROM {block_rss_client} + WHERE userid = :userid OR shared = 1 OR id $insql + ORDER BY $titlesql", + $params); - $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 OR id '.$insql.' - ORDER BY CASE WHEN preferredtitle = ? THEN ' . $DB->sql_compare_text('title', 64) . ' ELSE preferredtitle END ', - $queryparams); if ($rssfeeds) { $select = $mform->addElement('select', 'config_rssid', get_string('choosefeedlabel', 'block_rss_client'), $rssfeeds); $select->setMultiple(true);