MDL-80300 mod_quiz: Integration coding fixups

This commit is contained in:
Andrew Nicols 2024-03-25 14:23:21 +08:00
parent 8bd1242d78
commit 430c63b39e
No known key found for this signature in database
GPG Key ID: 6D1E3157C8CFBF14
7 changed files with 27 additions and 27 deletions

View File

@ -57,7 +57,7 @@ class edit_override_form extends moodleform {
protected $userid;
/** @var int overrideid, if provided. */
protected $overrideid;
protected int $overrideid;
/**
* Constructor.

View File

@ -25,8 +25,7 @@ namespace mod_quiz\local;
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class override_cache {
/** @var string invalidation event used to purge data when reset_userdata is called, {@see \cache_helper::purge_by_event()}**/
/** @var string invalidation event used to purge data when reset_userdata is called, {@see \cache_helper::purge_by_event()} **/
public const INVALIDATION_USERDATARESET = 'userdatareset';
/**
@ -43,7 +42,7 @@ class override_cache {
/**
* Returns the override cache
*
* @return cache
* @return \cache
*/
protected function get_cache(): \cache {
return \cache::make('mod_quiz', 'overrides');

View File

@ -31,7 +31,6 @@ use mod_quiz\event\user_override_updated;
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class override_manager {
/** @var array quiz setting keys that can be overwritten **/
private const OVERRIDEABLE_QUIZ_SETTINGS = ['timeopen', 'timeclose', 'timelimit', 'attempts', 'password'];
@ -87,9 +86,9 @@ class override_manager {
$errors = [];
// Ensure at least one of the overrideable settings is set.
$keysthatareset = array_map(function($key) use ($formdata) {
$keysthatareset = array_map(function ($key) use ($formdata) {
return isset($formdata->$key) && !is_null($formdata->$key);
} , self::OVERRIDEABLE_QUIZ_SETTINGS);
}, self::OVERRIDEABLE_QUIZ_SETTINGS);
if (!in_array(true, $keysthatareset)) {
$errors['general'][] = new \lang_string('nooverridedata', 'quiz');

View File

@ -32,7 +32,7 @@ $definitions = [
'simplekeys' => true,
'datasource' => '\mod_quiz\cache\overrides',
'invalidationevents' => [
\mod_quiz\local\override_cache::INVALIDATION_USERDATARESET,
\mod_quiz\local\override_cache::INVALIDATION_USERDATARESET,
],
],
];

View File

@ -322,13 +322,16 @@ function quiz_calculate_best_attempt($quiz, $attempts) {
* @param bool $log Whether to trigger logs.
* @return bool true on success
*/
#[\core\attribute\deprecated('override_manager::delete_override_by_id', since: '4.4')]
function quiz_delete_override($quiz, $overrideid, $log = true) {
debugging('quiz_delete_override is deprecated. Please use override_manager::delete_override_by_id instead.', DEBUG_DEVELOPER);
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
$quizsettings = quiz_settings::create($quiz->id);
$quizsettings->get_override_manager()->delete_overrides_by_id(
ids: [$overrideid],
shouldlog: $log,
);
return true;
}
/**
@ -339,9 +342,9 @@ function quiz_delete_override($quiz, $overrideid, $log = true) {
* @param stdClass $quiz The quiz object.
* @param bool $log Whether to trigger logs.
*/
#[\core\attribute\deprecated('override_manager::delete_all_overrides', since: '4.4')]
function quiz_delete_all_overrides($quiz, $log = true) {
debugging('quiz_delete_all_overrides is deprecated. Please use override_manager::delete_all_overrides instead.',
DEBUG_DEVELOPER);
\core\deprecation::emit_deprecation_if_present(__FUNCTION__);
$quizsettings = quiz_settings::create($quiz->id);
$quizsettings->get_override_manager()->delete_all_overrides(shouldlog: $log);
}

View File

@ -14,9 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace mod_quiz;
use mod_quiz\local\override_cache;
namespace mod_quiz\local;
/**
* Cache manager tests for quiz overrides
@ -27,7 +25,6 @@ use mod_quiz\local\override_cache;
* @covers \mod_quiz\local\override_cache
*/
final class override_cache_test extends \advanced_testcase {
/**
* Tests CRUD functions of the override_cache
*/
@ -37,14 +34,11 @@ final class override_cache_test extends \advanced_testcase {
$reflection = new \ReflectionClass($overridecache);
$getcache = $reflection->getMethod('get_cache');
$getcache->setAccessible(true);
$cache = $getcache->invoke($overridecache);
$getuserkey = $reflection->getMethod('get_user_cache_key');
$getuserkey->setAccessible(true);
$getgroupkey = $reflection->getMethod('get_group_cache_key');
$getgroupkey->setAccessible(true);
$dummydata = (object)[
'userid' => 1234,
@ -79,7 +73,7 @@ final class override_cache_test extends \advanced_testcase {
$cache->set($getgroupkey->invoke($overridecache, 456), 'testgroup');
// Purge it.
\cache_helper::purge_by_event(\mod_quiz\local\override_cache::INVALIDATION_USERDATARESET);
\cache_helper::purge_by_event(override_cache::INVALIDATION_USERDATARESET);
$this->assertEmpty($overridecache->get_cached_user_override(123));
$this->assertEmpty($overridecache->get_cached_group_override(456));
}

View File

@ -14,15 +14,14 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace mod_quiz;
namespace mod_quiz\local;
use mod_quiz\event\group_override_created;
use mod_quiz\event\group_override_updated;
use mod_quiz\event\user_override_created;
use mod_quiz\event\user_override_updated;
use mod_quiz\local\override_manager;
use mod_quiz\event\user_override_deleted;
use mod_quiz\local\override_cache;
use mod_quiz\quiz_settings;
/**
* Test for override_manager class
@ -33,7 +32,6 @@ use mod_quiz\local\override_cache;
* @covers \mod_quiz\local\override_manager
*/
final class override_manager_test extends \advanced_testcase {
/** @var array Default quiz settings **/
private const TEST_QUIZ_SETTINGS = [
'attempts' => 5,
@ -305,8 +303,12 @@ final class override_manager_test extends \advanced_testcase {
* @param string $expectedeventclass an event class, which is expected to the emitted by upsert
* @dataProvider save_and_get_override_provider
*/
public function test_save_and_get_override(array $existingdata, array $formdata, int $expectedrecordscreated,
string $expectedeventclass): void {
public function test_save_and_get_override(
array $existingdata,
array $formdata,
int $expectedrecordscreated,
string $expectedeventclass
): void {
global $DB;
$this->setAdminUser();
@ -966,8 +968,11 @@ final class override_manager_test extends \advanced_testcase {
* @param \Closure $functionbeingtested is passed the manager and calls the function being tested (usually require_*_capability)
* @dataProvider require_read_capability_provider
*/
public function test_require_read_capability(array $capabilitiestogive, bool $expectedallowed,
\Closure $functionbeingtested): void {
public function test_require_read_capability(
array $capabilitiestogive,
bool $expectedallowed,
\Closure $functionbeingtested
): void {
$this->resetAfterTest();
[$quizobj] = $this->create_quiz_and_course();
$user = $this->getDataGenerator()->create_user();