MDL-76614 quiz: move class quiz_attempt => mod_quiz\quiz_attempt

I thought about renaming the class to just plain attempt, but I
acutally think quiz_attempt makes it clearer what this is. Also
not changing the name massively reduces the pain for everyone
updating their code (including me right now!)
This commit is contained in:
Tim Hunt 2022-12-19 21:14:51 +00:00
parent 79a29d243c
commit 5682c8c70e
55 changed files with 2279 additions and 2216 deletions

View File

@ -16,6 +16,8 @@
namespace tool_recyclebin;
use mod_quiz\quiz_attempt;
/**
* Recycle bin course tests.
*
@ -237,7 +239,7 @@ class course_bin_test extends \advanced_testcase {
$attempts = quiz_get_user_attempts($cm->instance, $student->id);
$this->assertEquals(1, count($attempts));
$attempt = array_pop($attempts);
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$this->assertEquals($student->id, $attemptobj->get_userid());
$this->assertEquals(true, $attemptobj->is_finished());
}
@ -307,10 +309,10 @@ class course_bin_test extends \advanced_testcase {
$attempt = quiz_create_attempt($quizobj, 1, false, $timenow, false, $student->id);
quiz_start_new_attempt($quizobj, $quba, $attempt, 1, $timenow);
quiz_attempt_save_started($quizobj, $quba, $attempt);
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$tosubmit = array(1 => array('answer' => '0'));
$attemptobj->process_submitted_actions($timenow, false, $tosubmit);
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$attemptobj->process_finish($timenow, false);
}
}

View File

@ -16,6 +16,8 @@
namespace core_backup;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
global $CFG;
@ -393,7 +395,7 @@ class restore_stepslib_date_test extends \restore_date_testcase {
quiz_attempt_save_started($quizobj, $quba, $attempt);
// Process some responses from the student.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$prefix1 = $quba->get_field_prefix(1);
$prefix2 = $quba->get_field_prefix(2);
@ -404,7 +406,7 @@ class restore_stepslib_date_test extends \restore_date_testcase {
$attemptobj->process_submitted_actions($timenow, false, $tosubmit);
// Finish the attempt.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$attemptobj->process_finish($timenow, false);
$questionattemptstepdates = [];

View File

@ -15,6 +15,7 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
use mod_quiz\local\access_rule_base;
use mod_quiz\quiz_attempt;
use quizaccess_seb\access_manager;
use quizaccess_seb\quiz_settings;
use quizaccess_seb\settings_provider;

View File

@ -24,6 +24,7 @@
*/
use mod_quiz\local\access_rule_base;
use mod_quiz\quiz_attempt;
use quizaccess_seb\access_manager;
use quizaccess_seb\settings_provider;
@ -201,7 +202,7 @@ trait quizaccess_seb_test_helper_trait {
quiz_attempt_save_started($quizobj, $quba, $attempt);
// Answer the questions.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$tosubmit = [
1 => ['answer' => 'frog'],
@ -211,7 +212,7 @@ trait quizaccess_seb_test_helper_trait {
$attemptobj->process_submitted_actions($starttime, false, $tosubmit);
// Finish the attempt.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$attemptobj->process_finish($starttime, false);
$this->setUser();

View File

@ -24,6 +24,7 @@
use mod_quiz\output\navigation_panel_attempt;
use mod_quiz\output\renderer;
use mod_quiz\quiz_attempt;
require_once(__DIR__ . '/../../config.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,6 @@ use moodle_page;
use moodle_url;
use MoodleQuickForm;
use quiz;
use quiz_attempt;
use stdClass;
/**

View File

@ -26,6 +26,7 @@
use core_course\external\helper_for_get_mods_by_courses;
use mod_quiz\access_manager;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die;

View File

@ -17,8 +17,8 @@
namespace mod_quiz\local\reports;
use context_module;
use mod_quiz\quiz_attempt;
use moodle_url;
use quiz_attempt;
use stdClass;
/**

View File

@ -23,6 +23,7 @@ require_once($CFG->libdir.'/tablelib.php');
use coding_exception;
use context_module;
use html_writer;
use mod_quiz\quiz_attempt;
use moodle_url;
use popup_action;
use question_state;
@ -30,7 +31,6 @@ use qubaid_condition;
use qubaid_join;
use qubaid_list;
use question_engine_data_mapper;
use quiz_attempt;
use stdClass;
/**

View File

@ -32,7 +32,7 @@ class links_to_other_attempts implements renderable {
* - null if this is the current attempt, and so should not be linked. (Just the number is output.)
* - moodle_url if this is a different attempt. (Output as a link to the URL with the number as link text.)
* - a renderable, in which case the results of rendering the renderable is output.
* (This is used by {@see quiz_attempt::links_to_other_redos()}.)
* (The third option is used by {@see quiz_attempt::links_to_other_redos()}.)
*/
public $links = [];
}

View File

@ -16,12 +16,11 @@
namespace mod_quiz\output;
use moodle_page;
use mod_quiz\quiz_attempt;
use moodle_url;
use question_attempt;
use question_display_options;
use question_state;
use quiz_attempt;
use renderable;
use user_picture;

View File

@ -26,12 +26,12 @@ use html_writer;
use mod_quiz\access_manager;
use mod_quiz\form\preflight_check_form;
use mod_quiz\question\display_options;
use mod_quiz\quiz_attempt;
use moodle_url;
use plugin_renderer_base;
use popup_action;
use question_display_options;
use quiz;
use quiz_attempt;
use renderable;
use single_button;
use stdClass;

View File

@ -18,6 +18,7 @@ namespace mod_quiz\output;
use mod_quiz\access_manager;
use mod_quiz\form\preflight_check_form;
use mod_quiz\quiz_attempt;
use moodle_url;
/**
@ -36,7 +37,7 @@ class view_page {
public $infomessages;
/** @var array $attempts contains all the user's attempts at this quiz. */
public $attempts;
/** @var array $attemptobjs quiz_attempt objects corresponding to $attempts. */
/** @var quiz_attempt[] $attemptobjs objects corresponding to $attempts. */
public $attemptobjs;
/** @var access_manager $accessmanager contains various access rules. */
public $accessmanager;

View File

@ -34,6 +34,7 @@ use core_privacy\local\metadata\collection;
use core_privacy\local\request\userlist;
use core_privacy\local\request\writer;
use core_privacy\manager;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
@ -526,7 +527,7 @@ class provider implements
// Store the quiz attempt data.
$data = (object) [
'state' => \quiz_attempt::state_name($attempt->state),
'state' => quiz_attempt::state_name($attempt->state),
];
if (!empty($attempt->timestart)) {

View File

@ -16,6 +16,8 @@
namespace mod_quiz\question;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/question/engine/datalib.php');
@ -47,7 +49,7 @@ class qubaids_for_quiz extends \qubaid_join {
if ($onlyfinished) {
$where .= ' AND state = :statefinished';
$params['statefinished'] = \quiz_attempt::FINISHED;
$params['statefinished'] = quiz_attempt::FINISHED;
}
parent::__construct('{quiz_attempts} quiza', 'quiza.uniqueid', $where, $params);

View File

@ -16,6 +16,8 @@
namespace mod_quiz\question;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->dirroot . '/question/engine/datalib.php');
@ -54,14 +56,14 @@ class qubaids_for_users_attempts extends \qubaid_join {
case 'finished':
$where .= ' AND state IN (:state1, :state2)';
$params['state1'] = \quiz_attempt::FINISHED;
$params['state2'] = \quiz_attempt::ABANDONED;
$params['state1'] = quiz_attempt::FINISHED;
$params['state2'] = quiz_attempt::ABANDONED;
break;
case 'unfinished':
$where .= ' AND state IN (:state1, :state2)';
$params['state1'] = \quiz_attempt::IN_PROGRESS;
$params['state2'] = \quiz_attempt::OVERDUE;
$params['state1'] = quiz_attempt::IN_PROGRESS;
$params['state2'] = quiz_attempt::OVERDUE;
break;
}

File diff suppressed because it is too large Load Diff

View File

@ -20,10 +20,10 @@ defined('MOODLE_INTERNAL') || die();
use context_course;
use core_user;
use mod_quiz\quiz_attempt;
use moodle_recordset;
use question_display_options;
use mod_quiz\question\display_options;
use quiz_attempt;
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

View File

@ -24,9 +24,9 @@
*/
namespace mod_quiz\task;
use mod_quiz\quiz_attempt;
use moodle_exception;
use moodle_recordset;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -64,4 +64,5 @@ $renamedclasses = [
'quiz_nav_panel_base' => 'mod_quiz\output\navigation_panel_base',
'quiz_attempt_nav_panel' => 'mod_quiz\output\navigation_panel_attempt',
'quiz_review_nav_panel' => 'mod_quiz\output\navigation_panel_review',
'quiz_attempt' => 'mod_quiz\quiz_attempt',
];

View File

@ -24,6 +24,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use mod_quiz\quiz_attempt;
require_once(__DIR__ . '/../../config.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

View File

@ -35,6 +35,7 @@ use mod_quiz\question\display_options;
use mod_quiz\question\qubaids_for_quiz;
use mod_quiz\question\qubaids_for_users_attempts;
use core_question\statistics\questions\all_calculated_for_qubaid_condition;
use mod_quiz\quiz_attempt;
require_once($CFG->dirroot . '/calendar/lib.php');
require_once($CFG->dirroot . '/mod/quiz/attemptlib.php');
@ -583,12 +584,7 @@ function quiz_user_complete($course, $user, $mod, $quiz) {
* array if there are none.
*/
function quiz_get_user_attempts($quizids, $userid, $status = 'finished', $includepreviews = false) {
global $DB, $CFG;
// TODO MDL-33071 it is very annoying to have to included all of locallib.php
// just to get the quiz_attempt::FINISHED constants, but I will try to sort
// that out properly for Moodle 2.4. For now, I will just do a quick fix for
// MDL-33048.
require_once($CFG->dirroot . '/mod/quiz/locallib.php');
global $DB;
$params = array();
switch ($status) {

View File

@ -39,6 +39,7 @@ require_once($CFG->libdir . '/questionlib.php');
use mod_quiz\access_manager;
use mod_quiz\question\bank\qbank_helper;
use mod_quiz\question\display_options;
use mod_quiz\quiz_attempt;
/**
* @var int We show the countdown timer if there is less than this amount of time left before the
@ -80,7 +81,7 @@ define('QUIZ_SHOWIMAGE_LARGE', 2);
*
* @param object $quizobj the quiz object to create an attempt for.
* @param int $attemptnumber the sequence number for the attempt.
* @param stdClass|null $lastattempt the previous attempt by this user, if any. Only needed
* @param stdClass|false $lastattempt the previous attempt by this user, if any. Only needed
* if $attemptnumber > 1 and $quiz->attemptonlast is true.
* @param int $timenow the time the attempt was started at.
* @param bool $ispreview whether this new attempt is a preview.
@ -1353,7 +1354,7 @@ function quiz_questions_per_page_options() {
/**
* Get the human-readable name for a quiz attempt state.
* @param string $state one of the state constants like {@link quiz_attempt::IN_PROGRESS}.
* @param string $state one of the state constants like {@see quiz_attempt::IN_PROGRESS}.
* @return string The lang string to describe that state.
*/
function quiz_attempt_state_name($state) {

View File

@ -28,6 +28,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use mod_quiz\quiz_attempt;
require_once(__DIR__ . '/../../config.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

View File

@ -15,6 +15,7 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
use mod_quiz\local\reports\report_base;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -15,6 +15,7 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
use mod_quiz\local\reports\attempts_report_table;
use mod_quiz\quiz_attempt;
/**
* This is a table subclass for displaying the quiz grades report.

View File

@ -24,6 +24,7 @@
use mod_quiz\local\reports\attempts_report;
use mod_quiz\question\bank\qbank_helper;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -18,9 +18,9 @@ namespace quiz_overview;
use core_question\local\bank\question_version_status;
use mod_quiz\external\submit_question_version;
use mod_quiz\quiz_attempt;
use question_engine;
use quiz;
use quiz_attempt;
use mod_quiz\local\reports\attempts_report;
use quiz_overview_options;
use quiz_overview_report;

View File

@ -23,6 +23,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
/**

View File

@ -15,7 +15,7 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
use mod_quiz\local\reports\attempts_report_table;
use mod_quiz\quiz_attempt;
/**
* This is a table subclass for displaying the quiz responses report.

View File

@ -16,8 +16,8 @@
namespace quiz_responses;
use mod_quiz\quiz_attempt;
use question_bank;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -16,7 +16,7 @@
namespace quiz_statistics\task;
use quiz_attempt;
use mod_quiz\quiz_attempt;
use quiz;
use quiz_statistics_report;

View File

@ -23,6 +23,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die;
/**

View File

@ -27,6 +27,7 @@
use mod_quiz\output\navigation_panel_review;
use mod_quiz\output\renderer;
use mod_quiz\quiz_attempt;
require_once(__DIR__ . '/../../config.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

View File

@ -26,6 +26,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
use mod_quiz\quiz_attempt;
require_once(__DIR__ . '/../../config.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

View File

@ -18,7 +18,6 @@ namespace mod_quiz;
use question_engine;
use quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -18,7 +18,6 @@ namespace mod_quiz;
use question_engine;
use quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -19,7 +19,6 @@ namespace mod_quiz;
use question_bank;
use question_engine;
use quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -31,6 +31,7 @@ require_once(__DIR__ . '/../../../../question/tests/behat/behat_question_base.ph
use Behat\Gherkin\Node\TableNode as TableNode;
use Behat\Mink\Exception\ExpectationException as ExpectationException;
use mod_quiz\quiz_attempt;
/**
* Steps definitions related to mod_quiz.

View File

@ -25,7 +25,6 @@ use grade_item;
use mod_quiz\completion\custom_completion;
use question_engine;
use quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -25,8 +25,8 @@
namespace mod_quiz\event;
use mod_quiz\quiz_attempt;
use quiz;
use quiz_attempt;
use context_module;
defined('MOODLE_INTERNAL') || die();

View File

@ -27,11 +27,11 @@
namespace mod_quiz\external;
use externallib_advanced_testcase;
use mod_quiz\quiz_attempt;
use mod_quiz_external;
use mod_quiz\question\display_options;
use moodle_exception;
use quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -14,6 +14,8 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
/**

View File

@ -24,10 +24,7 @@
*/
namespace mod_quiz;
use mod_quiz\external\submit_question_version;
use mod_quiz\question\bank\qbank_helper;
use quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();

View File

@ -25,7 +25,6 @@
namespace mod_quiz;
use mod_quiz\output\renderer;
use quiz_attempt;
use mod_quiz\question\display_options;
defined('MOODLE_INTERNAL') || die();

View File

@ -28,6 +28,7 @@ use core_privacy\local\request\deletion_criteria;
use core_privacy\local\request\writer;
use mod_quiz\privacy\provider;
use mod_quiz\privacy\helper;
use mod_quiz\quiz_attempt;
defined('MOODLE_INTERNAL') || die();
@ -188,7 +189,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
$attempt = $attemptobj->get_attempt();
$this->assertTrue(isset($attemptdata->state));
$this->assertEquals(\quiz_attempt::state_name($attemptobj->get_state()), $attemptdata->state);
$this->assertEquals(quiz_attempt::state_name($attemptobj->get_state()), $attemptdata->state);
$this->assertTrue(isset($attemptdata->timestart));
$this->assertTrue(isset($attemptdata->timefinish));
$this->assertTrue(isset($attemptdata->timemodified));
@ -212,7 +213,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
$this->setUser();
provider::delete_data_for_user($approvedcontextlist);
$this->expectException(\dml_missing_record_exception::class);
\quiz_attempt::create($attemptobj->get_quizid());
quiz_attempt::create($attemptobj->get_quizid());
}
/**
@ -258,7 +259,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
quiz_attempt_save_started($quizobj, $quba, $attempt);
// Answer the questions.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$tosubmit = [
1 => ['answer' => 'frog'],
@ -268,7 +269,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
$attemptobj->process_submitted_actions($starttime, false, $tosubmit);
// Finish the attempt.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$this->assertTrue($attemptobj->has_response_to_at_least_one_graded_question());
$attemptobj->process_finish($starttime, false);
@ -392,7 +393,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
* Create a test quiz for the specified course.
*
* @param \stdClass $course
* @return array
* @return \stdClass
*/
protected function create_test_quiz($course) {
global $DB;
@ -441,7 +442,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
quiz_attempt_save_started($quizobj, $quba, $attempt);
// Answer the questions.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$tosubmit = [
1 => ['answer' => 'frog'],
@ -451,7 +452,7 @@ class provider_test extends \core_privacy\tests\provider_testcase {
$attemptobj->process_submitted_actions($starttime, false, $tosubmit);
// Finish the attempt.
$attemptobj = \quiz_attempt::create($attempt->id);
$attemptobj = quiz_attempt::create($attempt->id);
$attemptobj->process_finish($starttime, false);
$this->setUser();

View File

@ -30,7 +30,6 @@ use context_module;
use mod_quiz\task\quiz_notify_attempt_manual_grading_completed;
use question_engine;
use quiz;
use quiz_attempt;
use stdClass;
defined('MOODLE_INTERNAL') || die();

View File

@ -13,6 +13,7 @@
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
use mod_quiz\quiz_attempt;
/**
* Helper trait for quiz question unit tests.

View File

@ -16,8 +16,6 @@
namespace mod_quiz;
use quiz_attempt;
defined('MOODLE_INTERNAL') || die();
global $CFG;

View File

@ -48,6 +48,7 @@ This files describes API changes in the quiz code.
- quiz_nav_panel_base => mod_quiz\output\navigation_panel_base
- quiz_attempt_nav_panel => mod_quiz\output\navigation_panel_attempt
- quiz_review_nav_panel => mod_quiz\output\navigation_panel_review
- quiz_attempt => mod_quiz\quiz_attempt
* The following classes have been deprecated:
- mod_quiz_overdue_attempt_updater - merged into mod_quiz\task\update_overdue_attempts

View File

@ -26,6 +26,7 @@
use mod_quiz\access_manager;
use mod_quiz\output\renderer;
use mod_quiz\output\view_page;
use mod_quiz\quiz_attempt;
require_once(__DIR__ . '/../../config.php');
require_once($CFG->libdir.'/gradelib.php');

View File

@ -17,9 +17,9 @@
namespace qbank_statistics;
use core_question\statistics\questions\all_calculated_for_qubaid_condition;
use mod_quiz\quiz_attempt;
use quiz;
use question_engine;
use quiz_attempt;
/**
* Tests for question statistics.

View File

@ -16,6 +16,8 @@
namespace qbank_usage;
use mod_quiz\quiz_attempt;
/**
* Helper test.
*
@ -75,7 +77,7 @@ class helper_test extends \advanced_testcase {
$attempt = quiz_create_attempt($quizobj, 1, false, $timenow, false, $user->id);
quiz_start_new_attempt($quizobj, $quba, $attempt, 1, $timenow);
quiz_attempt_save_started($quizobj, $quba, $attempt);
\quiz_attempt::create($attempt->id);
quiz_attempt::create($attempt->id);
}
/**

View File

@ -16,6 +16,8 @@
namespace qbank_usage;
use mod_quiz\quiz_attempt;
/**
* Tests for the data of question usage from differnet areas like helper or usage table.
*
@ -68,7 +70,7 @@ class question_usage_test extends \advanced_testcase {
$attempt = quiz_create_attempt($quizobj, 1, false, $timenow, false, $user->id);
quiz_start_new_attempt($quizobj, $quba, $attempt, 1, $timenow);
quiz_attempt_save_started($quizobj, $quba, $attempt);
$attemptdata = \quiz_attempt::create($attempt->id);
$attemptdata = quiz_attempt::create($attempt->id);
$this->setAdminUser();
$PAGE->set_url(new \moodle_url('/'));