@@ -119,9 +119,6 @@ class questionnaire {
119119 /** @var \stdClass $capabilities The capabilities object for the current user. */
120120 public $ capabilities = null ;
121121
122- /** @var array $responses Loaded response data. */
123- public $ responses = [];
124-
125122 /** @var array $questionsbysec Questions grouped by section (page). */
126123 public $ questionsbysec = [];
127124
@@ -135,8 +132,8 @@ class questionnaire {
135132 */
136133 public $ deletequestions = [];
137134
138- /** @var \mod_questionnaire\local\response\manager |null $responsemanager Lazy-initialised response manager . */
139- protected $ responsemanager = null ;
135+ /** @var \mod_questionnaire\local\response\questionnaire_responses |null $responses Lazy-initialised response handler . */
136+ protected $ responses = null ;
140137
141138 /** @var int|null $rid The id of the most recently inserted/committed response. */
142139 public $ rid = null ;
@@ -212,8 +209,6 @@ public function __construct(&$course, &$cm, $id = 0, $questionnaire = null, $add
212209 $ this ->capabilities = $ this ->load_capabilities ();
213210 }
214211
215- // Don't automatically add responses.
216- $ this ->responses = [];
217212 }
218213
219214 /**
@@ -302,7 +297,7 @@ public function add_questions($sid = 0) {
302297 * @param int $userid
303298 */
304299 public function add_user_responses ($ userid = null ) {
305- $ this ->responsemanager ()->add_user_responses ($ userid );
300+ $ this ->responses ()->add_user_responses ($ userid );
306301 }
307302
308303 /**
@@ -311,7 +306,7 @@ public function add_user_responses($userid = null) {
311306 * @param int $responseid
312307 */
313308 public function add_response (int $ responseid ) {
314- $ this ->responsemanager ()->add_response ($ responseid );
309+ $ this ->responses ()->add_response ($ responseid );
315310 }
316311
317312 /**
@@ -320,7 +315,7 @@ public function add_response(int $responseid) {
320315 * @param stdClass $formdata
321316 */
322317 public function add_response_from_formdata (stdClass $ formdata ) {
323- $ this ->responsemanager ()->add_response_from_formdata ($ formdata );
318+ $ this ->responses ()->add_response_from_formdata ($ formdata );
324319 }
325320
326321 /**
@@ -331,7 +326,7 @@ public function add_response_from_formdata(stdClass $formdata) {
331326 * @return bool|\mod_questionnaire\local\responsetype\response\response
332327 */
333328 public function build_response_from_appdata (stdClass $ appdata , $ sec = 0 ) {
334- return $ this ->responsemanager ()->build_response_from_appdata ($ appdata , $ sec );
329+ return $ this ->responses ()->build_response_from_appdata ($ appdata , $ sec );
335330 }
336331
337332 /**
@@ -343,14 +338,16 @@ public function add_renderer(plugin_renderer_base $renderer) {
343338 }
344339
345340 /**
346- * Return the response manager for this questionnaire instance (lazy-initialised).
347- * @return \mod_questionnaire\local\response\manager
341+ * Return the response handler for this questionnaire instance (lazy-initialised).
342+ * @return \mod_questionnaire\local\response\questionnaire_responses
348343 */
349- public function responsemanager (): \mod_questionnaire \local \response \manager {
350- if (!isset ($ this ->responsemanager )) {
351- $ this ->responsemanager = new \mod_questionnaire \local \response \manager ($ this );
344+ public function responses (): \mod_questionnaire \local \response \questionnaire_responses {
345+ if (!isset ($ this ->responses )) {
346+ $ this ->responses = new \mod_questionnaire \local \response \questionnaire_responses (
347+ \mod_questionnaire \questionnaire::from_instanceid ($ this ->id )
348+ );
352349 }
353- return $ this ->responsemanager ;
350+ return $ this ->responses ;
354351 }
355352
356353 /**
@@ -448,7 +445,7 @@ public function view() {
448445 * @return bool|int
449446 */
450447 public function delete_insert_response ($ rid , $ sec , $ quser ) {
451- return $ this ->responsemanager ()->delete_insert_response ($ rid , $ sec , $ quser );
448+ return $ this ->responses ()->delete_insert_response ($ rid , $ sec , $ quser );
452449 }
453450
454451 /**
@@ -457,7 +454,7 @@ public function delete_insert_response($rid, $sec, $quser) {
457454 * @param int $quser
458455 */
459456 public function commit_submission_response ($ rid , $ quser ) {
460- $ this ->responsemanager ()->commit_submission_response ($ rid , $ quser );
457+ $ this ->responses ()->commit_submission_response ($ rid , $ quser );
461458 }
462459
463460 /**
@@ -537,7 +534,7 @@ public function view_response(
537534 if ($ question ->typeid != QUESPAGEBREAK ) {
538535 $ this ->page ->add_to_page (
539536 'responses ' ,
540- $ this ->renderer ->response_output ($ question , $ this ->responses [ $ rid] , $ i , $ pdf , $ this )
537+ $ this ->renderer ->response_output ($ question , $ this ->responses ()-> get_response ( $ rid) , $ i , $ pdf , $ this )
541538 );
542539 }
543540 }
@@ -552,8 +549,9 @@ public function view_all_responses() {
552549 // If a student's responses have been deleted by teacher while student was viewing the report,
553550 // then responses may have become empty, hence this test is necessary.
554551
555- if (!empty ($ this ->responses )) {
556- $ this ->page ->add_to_page ('responses ' , $ this ->renderer ->all_response_output ($ this ->responses , $ this ->questions , $ this ));
552+ $ loadedresponses = $ this ->responses ()->get_loaded_responses ();
553+ if (!empty ($ loadedresponses )) {
554+ $ this ->page ->add_to_page ('responses ' , $ this ->renderer ->all_response_output ($ loadedresponses , $ this ->questions , $ this ));
557555 } else {
558556 $ this ->page ->add_to_page ('responses ' , $ this ->renderer ->all_response_output (get_string ('noresponses ' , 'questionnaire ' )));
559557 }
@@ -700,7 +698,7 @@ public function user_access_messages($userid = 0, $asnotification = false) {
700698 * @return bool
701699 */
702700 public function user_has_saved_response ($ userid ) {
703- return $ this ->responsemanager ()->user_has_saved_response ($ userid );
701+ return $ this ->responses ()->user_has_saved_response ($ userid );
704702 }
705703
706704 /**
@@ -958,7 +956,7 @@ public function count_submissions($userid = false, $groupid = 0) {
958956 * @return array
959957 */
960958 public function get_responses ($ userid = false , $ groupid = 0 ) {
961- return $ this ->responsemanager ()->get_responses ($ userid , $ groupid );
959+ return $ this ->responses ()->get_responses ($ userid , $ groupid );
962960 }
963961
964962 /**
@@ -1438,7 +1436,7 @@ private function survey_render(&$formdata, $section = 1, $message = '') {
14381436 'questions ' ,
14391437 $ this ->renderer ->question_output (
14401438 $ this ->questions [$ questionid ],
1441- (isset ( $ this ->responses [ $ formdata -> rid ]) ? $ this -> responses [ $ formdata ->rid ] : []),
1439+ ($ this ->responses ()-> get_response ( $ formdata ->rid ) ?? []),
14421440 $ i ,
14431441 $ this ->usehtmleditor ,
14441442 [],
@@ -1785,7 +1783,7 @@ public function survey_print_render($courseid, $message = '', $referer = '', $ri
17851783 $ this ->questions [$ questionid ]->set_isprint ($ referer === 'print ' );
17861784 $ output .= $ this ->renderer ->question_output (
17871785 $ this ->questions [$ questionid ],
1788- $ this ->responses [ 0 ] ?? new \mod_questionnaire \local \responsetype \response \response (),
1786+ ( $ this ->responses ()-> get_response ( 0 ) ?? new \mod_questionnaire \local \responsetype \response \response () ),
17891787 $ i ++,
17901788 null ,
17911789 $ dependants ,
@@ -1821,7 +1819,9 @@ public function survey_print_render($courseid, $message = '', $referer = '', $ri
18211819 * @return string
18221820 */
18231821 private function response_check_format ($ section , $ formdata , $ checkmissing = true , $ checkwrongformat = true ) {
1824- return $ this ->responsemanager ()->response_check_format ($ section , $ formdata , $ checkmissing , $ checkwrongformat );
1822+ return $ this ->responses ()->response_check_format (
1823+ $ section , $ formdata , $ checkmissing , $ checkwrongformat , $ this ->questions
1824+ );
18251825 }
18261826
18271827 /**
@@ -1830,7 +1830,7 @@ private function response_check_format($section, $formdata, $checkmissing = true
18301830 * @param null|int $sec
18311831 */
18321832 private function response_delete ($ rid , $ sec = null ) {
1833- $ this ->responsemanager ()->response_delete ($ rid , $ sec );
1833+ $ this ->responses ()->response_delete ($ rid , $ sec );
18341834 }
18351835
18361836 /**
@@ -1839,7 +1839,7 @@ private function response_delete($rid, $sec = null) {
18391839 * @return bool
18401840 */
18411841 private function response_commit ($ rid ) {
1842- return $ this ->responsemanager ()->response_commit ($ rid );
1842+ return $ this ->responses ()->response_commit ($ rid );
18431843 }
18441844
18451845 /**
@@ -2113,7 +2113,7 @@ private function get_full_submission_for_notifications($rid) {
21132113 * @throws coding_exception
21142114 */
21152115 public function get_structured_response ($ rid ) {
2116- return $ this ->responsemanager ()->get_structured_response ($ rid );
2116+ return $ this ->responses ()->get_structured_response ($ rid );
21172117 }
21182118
21192119 /**
@@ -2122,7 +2122,7 @@ public function get_structured_response($rid) {
21222122 * @return array
21232123 */
21242124 private function get_full_submission_for_export ($ rid ) {
2125- return $ this ->responsemanager ()->get_full_submission_for_export ($ rid );
2125+ return $ this ->responses ()->get_full_submission_for_export ($ rid );
21262126 }
21272127
21282128 /**
@@ -2231,7 +2231,7 @@ private function response_send_email($rid, $email) {
22312231 * @return bool|int
22322232 */
22332233 public function response_insert ($ responsedata , $ userid , $ resume = false ) {
2234- return $ this ->responsemanager ()->response_insert ($ responsedata , $ userid , $ resume );
2234+ return $ this ->responses ()->response_insert ($ responsedata , $ userid , $ resume );
22352235 }
22362236
22372237 /**
@@ -2240,7 +2240,7 @@ public function response_insert($responsedata, $userid, $resume = false) {
22402240 * @return array
22412241 */
22422242 private function response_select ($ rid ) {
2243- return $ this ->responsemanager ()->response_select ($ rid );
2243+ return $ this ->responses ()->response_select ($ rid );
22442244 }
22452245
22462246 /**
@@ -2884,7 +2884,7 @@ protected function user_fields() {
28842884 * @return array
28852885 */
28862886 protected function get_survey_all_responses ($ rid = '' , $ userid = '' , $ groupid = false , $ showincompletes = 0 ) {
2887- return $ this ->responsemanager ()->get_survey_all_responses ($ rid , $ userid , $ groupid , $ showincompletes );
2887+ return $ this ->responses ()->get_survey_all_responses ($ rid , $ userid , $ groupid , $ showincompletes );
28882888 }
28892889
28902890 /**
0 commit comments