MDL-73339 blog_tags: Add block only if main feature is enabled

The Blog tags block should be added only if the blogs and the tags
advanced features are enabled.
This commit is contained in:
Sara Arjona 2021-12-14 18:15:56 +01:00
parent 3413df37a5
commit 8d600233d3
2 changed files with 83 additions and 2 deletions

View File

@ -222,6 +222,18 @@ class block_blog_tags extends block_base {
'plugin' => new stdClass(),
];
}
/**
* This block shouldn't be added to a page if the blogs and the tags advanced features are disabled.
*
* @param moodle_page $page
* @return bool
*/
public function can_block_be_added(moodle_page $page): bool {
global $CFG;
return $CFG->enableblogs && $CFG->usetags;
}
}
function block_blog_tags_sort($a, $b) {
@ -241,5 +253,3 @@ function block_blog_tags_sort($a, $b) {
return 0;
}
}

View File

@ -0,0 +1,71 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace block_blog_tags\tests;
use advanced_testcase;
use block_blog_tags;
use context_course;
/**
* PHPUnit block_blog_tags tests
*
* @package block_blog_tags
* @category test
* @copyright 2021 Sara Arjona (sara@moodle.com)
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @coversDefaultClass \block_blog_tags
*/
class blog_tags_test extends advanced_testcase {
public static function setUpBeforeClass(): void {
require_once(__DIR__ . '/../../moodleblock.class.php');
require_once(__DIR__ . '/../block_blog_tags.php');
}
/**
* Test the behaviour of can_block_be_added() method.
*
* @covers ::can_block_be_added
*/
public function test_can_block_be_added(): void {
$this->resetAfterTest();
$this->setAdminUser();
// Create a course and prepare the page where the block will be added.
$course = $this->getDataGenerator()->create_course();
$page = new \moodle_page();
$page->set_context(context_course::instance($course->id));
$page->set_pagelayout('course');
$block = new block_blog_tags();
// If blogs and tags advanced features are enabled, the method should return true.
set_config('enableblogs', true);
set_config('usetags', true);
$this->assertTrue($block->can_block_be_added($page));
// However, if any of these advanced features is disabled, the method should return false.
set_config('enableblogs', false);
$this->assertFalse($block->can_block_be_added($page));
set_config('enableblogs', true);
set_config('usetags', false);
$this->assertFalse($block->can_block_be_added($page));
set_config('enableblogs', false);
$this->assertFalse($block->can_block_be_added($page));
}
}