From d9e0b80ffb405f9dbb7b439a0e704ac76fd90b87 Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sun, 20 Mar 2011 12:28:34 +0100 Subject: [PATCH] MDL-26859 automatically enable and disable blog related blocks when bloglevel changed --- lib/adminlib.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/adminlib.php b/lib/adminlib.php index f249aa35ff4..47290df3dd8 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -2971,11 +2971,20 @@ class admin_setting_bloglevel extends admin_setting_configselect { * @return string empty or error message */ public function write_setting($data) { - global $DB; + global $DB, $CFG; if ($data['bloglevel'] == 0) { - $DB->set_field('block', 'visible', 0, array('name' => 'blog_menu')); + $blogblocks = $DB->get_records_select('block', "name LIKE 'blog_%' AND visible = 1"); + foreach ($blogblocks as $block) { + $DB->set_field('block', 'visible', 0, array('id' => $block->id)); + } } else { - $DB->set_field('block', 'visible', 1, array('name' => 'blog_menu')); + // reenable all blocks only when switching from disabled blogs + if (isset($CFG->bloglevel) and $CFG->bloglevel == 0) { + $blogblocks = $DB->get_records_select('block', "name LIKE 'blog_%' AND visible = 0"); + foreach ($blogblocks as $block) { + $DB->set_field('block', 'visible', 1, array('id' => $block->id)); + } + } } return parent::write_setting($data); }