From 5dc1d235ca80f5304d52f69fc9db08ab10115d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luca=20B=C3=B6sch?= Date: Wed, 19 Mar 2025 11:21:52 +0100 Subject: [PATCH] MDL-83985 mod_qbank: change name to 1333 chars --- mod/qbank/db/install.xml | 4 +- mod/qbank/db/upgrade.php | 13 ++++ mod/qbank/version.php | 2 +- .../local/bank/question_bank_helper.php | 2 +- .../local/bank/question_bank_helper_test.php | 65 ++++++++++++++++--- 5 files changed, 73 insertions(+), 13 deletions(-) diff --git a/mod/qbank/db/install.xml b/mod/qbank/db/install.xml index fc6c0775863..22121cc8fdb 100644 --- a/mod/qbank/db/install.xml +++ b/mod/qbank/db/install.xml @@ -1,5 +1,5 @@ - @@ -8,7 +8,7 @@ - + diff --git a/mod/qbank/db/upgrade.php b/mod/qbank/db/upgrade.php index b1d86c4fce5..2d7be720e17 100644 --- a/mod/qbank/db/upgrade.php +++ b/mod/qbank/db/upgrade.php @@ -38,5 +38,18 @@ function xmldb_qbank_upgrade($oldversion) { // Automatically generated Moodle v5.0.0 release upgrade line. // Put any upgrade step following this. + if ($oldversion < 2025041401) { + + // Changing precision of field name on table qbank to (1333). + $table = new xmldb_table('qbank'); + $field = new xmldb_field('name', XMLDB_TYPE_CHAR, '1333', null, XMLDB_NOTNULL, null, null, 'course'); + + // Launch change of precision for field name. + $dbman->change_field_precision($table, $field); + + // Qbank savepoint reached. + upgrade_mod_savepoint(true, 2025041401, 'qbank'); + } + return true; } diff --git a/mod/qbank/version.php b/mod/qbank/version.php index 85a19269d11..98b7591a6d1 100644 --- a/mod/qbank/version.php +++ b/mod/qbank/version.php @@ -26,5 +26,5 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'mod_qbank'; -$plugin->version = 2025041400; +$plugin->version = 2025041401; $plugin->requires = 2025040800; diff --git a/question/classes/local/bank/question_bank_helper.php b/question/classes/local/bank/question_bank_helper.php index eb193835c7f..378b84ec0eb 100644 --- a/question/classes/local/bank/question_bank_helper.php +++ b/question/classes/local/bank/question_bank_helper.php @@ -75,7 +75,7 @@ class question_bank_helper { /** * Maximum length for the question bank name database field. */ - public const BANK_NAME_MAX_LENGTH = 255; + public const BANK_NAME_MAX_LENGTH = 1333; /** * Modules that share questions via FEATURE_PUBLISHES_QUESTIONS. diff --git a/question/tests/local/bank/question_bank_helper_test.php b/question/tests/local/bank/question_bank_helper_test.php index 36a4ec9d88c..b58084f610a 100644 --- a/question/tests/local/bank/question_bank_helper_test.php +++ b/question/tests/local/bank/question_bank_helper_test.php @@ -270,7 +270,8 @@ final class question_bank_helper_test extends \advanced_testcase { self::setAdminUser(); $coursename = random_string(question_bank_helper::BANK_NAME_MAX_LENGTH); - $course = self::getDataGenerator()->create_course(['shortname' => $coursename]); + $courseshortname = \core_text::substr($coursename, 0, 255); + $course = self::getDataGenerator()->create_course(['shortname' => $courseshortname]); $this->expectExceptionMessage('The provided bankname is too long for the database field.'); question_bank_helper::create_default_open_instance( @@ -411,7 +412,17 @@ final class question_bank_helper_test extends \advanced_testcase { public static function bank_name_strings(): array { $longname = 'One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen ' . 'eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four twenty-five twenty-six twenty-seven ' . - 'twenty-eight twenty-nine thirty thirty-one'; + 'twenty-eight twenty-nine thirty thirty-one thirty-two thirty-three thirty-four thirty-five thirty-six thirty-seven ' . + 'thirty-eight thirty-nine forty forty-one forty-two forty-three forty-four forty-five forty-six forty-seven ' . + 'forty-eight forty-nine fifty fifty-one fifty-two fifty-three fifty-four fifty-five fifty-six fifty-seven ' . + 'fifty-eight fifty-nine sixty sixty-one sixty-two sixty-three sixty-four sixty-five sixty-six sixty-seven ' . + 'sixty-eight sixty-nine seventy seventy-one seventy-two seventy-three seventy-four seventy-five seventy-six ' . + 'seventy-seven seventy-eight seventy-nine eighty eighty-one eighty-two eighty-three eighty-four eighty-five ' . + 'eighty-six eighty-seven eighty-eight eighty-nine ninety ninety-one ninety-two ninety-three ninety-four ninety-five ' . + 'ninety-six ninety-seven ninety-eight ninety-nine one hundred one hundred one one hundred two one hundred three ' . + 'one hundred four one hundred five one hundred six one hundred seven one hundred eight one hundred nine ' . + 'one hundred ten one hundred eleven one hundred twelve one hundred thirteen one hundred fourteen one hundred fifteen ' . + 'one hundred sixteen one hundred seventeen'; return [ 'String with no parameters' => [ 'systembank', @@ -431,7 +442,17 @@ final class question_bank_helper_test extends \advanced_testcase { $longname, 'Top for One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen ' . 'seventeen eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four twenty-five twenty-six ' . - 'twenty-seven twenty-eight ...', + 'twenty-seven twenty-eight twenty-nine thirty thirty-one thirty-two thirty-three thirty-four thirty-five ' . + 'thirty-six thirty-seven thirty-eight thirty-nine forty forty-one forty-two forty-three forty-four ' . + 'forty-five forty-six forty-seven forty-eight forty-nine fifty fifty-one fifty-two fifty-three fifty-four ' . + 'fifty-five fifty-six fifty-seven fifty-eight fifty-nine sixty sixty-one sixty-two sixty-three sixty-four ' . + 'sixty-five sixty-six sixty-seven sixty-eight sixty-nine seventy seventy-one seventy-two seventy-three ' . + 'seventy-four seventy-five seventy-six seventy-seven seventy-eight seventy-nine eighty eighty-one ' . + 'eighty-two eighty-three eighty-four eighty-five eighty-six eighty-seven eighty-eight eighty-nine ' . + 'ninety ninety-one ninety-two ninety-three ninety-four ninety-five ninety-six ninety-seven ninety-eight ' . + 'ninety-nine one hundred one hundred one one hundred two one hundred three one hundred four ' . + 'one hundred five one hundred six one hundred seven one hundred eight one hundred nine one hundred ten ' . + 'one hundred eleven one hundred twelve one hundred thirteen one hundred fourteen one hundred fifteen one ...', ], 'String with short array parameter' => [ 'defaultbank', @@ -445,23 +466,49 @@ final class question_bank_helper_test extends \advanced_testcase { ['coursename' => $longname], 'One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen ' . 'eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four twenty-five twenty-six ' . - 'twenty-seven twenty-eight ... course question bank', + 'twenty-seven twenty-eight twenty-nine thirty thirty-one thirty-two thirty-three thirty-four thirty-five ' . + 'thirty-six thirty-seven thirty-eight thirty-nine forty forty-one forty-two forty-three forty-four ' . + 'forty-five forty-six forty-seven forty-eight forty-nine fifty fifty-one fifty-two fifty-three fifty-four ' . + 'fifty-five fifty-six fifty-seven fifty-eight fifty-nine sixty sixty-one sixty-two sixty-three sixty-four ' . + 'sixty-five sixty-six sixty-seven sixty-eight sixty-nine seventy seventy-one seventy-two seventy-three ' . + 'seventy-four seventy-five seventy-six seventy-seven seventy-eight seventy-nine eighty eighty-one ' . + 'eighty-two eighty-three eighty-four eighty-five eighty-six eighty-seven eighty-eight eighty-nine ninety ' . + 'ninety-one ninety-two ninety-three ninety-four ninety-five ninety-six ninety-seven ninety-eight ' . + 'ninety-nine one hundred one hundred one one hundred two one hundred three one hundred four ' . + 'one hundred five one hundred six one hundred seven one hundred eight one hundred nine one hundred ten ' . + 'one hundred eleven one hundred twelve one hundred thirteen one hundred fourteen one hundred fifteen ... ' . + 'course question bank', ], 'String with multiple long array parameters' => [ 'markoutofmax', 'question', ['mark' => $longname, 'max' => $longname], 'Mark One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen ' . - 'eighteen ... out of One two three four five six seven eight nine ten eleven twelve thirteen fourteen ' . - 'fifteen sixteen seventeen eighteen ...', + 'eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four twenty-five twenty-six twenty-seven ' . + 'twenty-eight twenty-nine thirty thirty-one thirty-two thirty-three thirty-four thirty-five thirty-six ' . + 'thirty-seven thirty-eight thirty-nine forty forty-one forty-two forty-three forty-four forty-five forty-six ' . + 'forty-seven forty-eight forty-nine fifty fifty-one fifty-two fifty-three fifty-four fifty-five fifty-six ' . + 'fifty-seven fifty-eight fifty-nine sixty sixty-one sixty-two sixty-three sixty-four sixty-five sixty-six ' . + 'sixty-seven ... out of One two three four five six seven eight nine ten eleven twelve thirteen fourteen ' . + 'fifteen sixteen seventeen eighteen nineteen twenty twenty-one twenty-two twenty-three twenty-four ' . + 'twenty-five twenty-six twenty-seven twenty-eight twenty-nine thirty thirty-one thirty-two thirty-three ' . + 'thirty-four thirty-five thirty-six thirty-seven thirty-eight thirty-nine forty forty-one forty-two ' . + 'forty-three forty-four forty-five forty-six forty-seven forty-eight forty-nine fifty fifty-one fifty-two ' . + 'fifty-three fifty-four fifty-five fifty-six fifty-seven fifty-eight fifty-nine sixty sixty-one sixty-two ' . + 'sixty-three sixty-four sixty-five sixty-six sixty-seven ...', ], 'Long lang string' => [ 'howquestionsbehave_help', 'question', null, - 'Students can interact with the questions in the quiz in various different ways. For example, you may wish the ' . - 'students to enter an answer to each question and then submit the entire quiz, before anything is graded or ' . - 'they get any feedback. That would ...', + "Students can interact with the questions in the quiz in various different ways. For example, you may wish the " . + "students to enter an answer to each question and then submit the entire quiz, before anything is graded or " . + "they get any feedback. That would be 'Deferred feedback' mode.\n\n" . + "Alternatively, you may wish for students to submit each question as they go along to get immediate " . + "feedback, and if they do not get it right immediately, have another try for fewer marks. That would be " . + "'Interactive with multiple tries' mode.\n" . + "\n" . + "Those are probably the two most commonly used modes of behaviour. ", ], ]; }