MDL-26859 automatically enable and disable blog related blocks when bloglevel changed

This commit is contained in:
Petr Skoda 2011-03-20 12:28:34 +01:00
parent 56babbcb76
commit d9e0b80ffb

View file

@ -2971,11 +2971,20 @@ class admin_setting_bloglevel extends admin_setting_configselect {
* @return string empty or error message * @return string empty or error message
*/ */
public function write_setting($data) { public function write_setting($data) {
global $DB; global $DB, $CFG;
if ($data['bloglevel'] == 0) { 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 { } 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); return parent::write_setting($data);
} }