Skip to content

Commit f34aca8

Browse files
davidszkibamona-shakiba
authored andcommitted
GH-791 Finish removing middleware structure
1 parent d25bd9a commit f34aca8

33 files changed

+215
-458
lines changed

classes/teststrategy/preselect_task.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
use local_catquiz\local\result;
2828
use local_catquiz\local\status;
29-
use local_catquiz\wb_middleware;
3029

3130
/**
3231
* Base class for a pre-select task.
@@ -43,7 +42,7 @@
4342
* @copyright 2024 Wunderbyte GmbH
4443
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4544
*/
46-
abstract class preselect_task implements wb_middleware {
45+
abstract class preselect_task {
4746

4847
/**
4948
*

classes/teststrategy/preselect_task/addscalestandarderror.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use cache;
2827
use local_catquiz\catscale;
2928
use local_catquiz\local\model\model_responses;
3029
use local_catquiz\local\result;
31-
use local_catquiz\local\status;
3230
use local_catquiz\teststrategy\preselect_task;
3331
use local_catquiz\teststrategy\progress;
34-
use local_catquiz\wb_middleware;
3532

3633
/**
3734
* Calculates the standarderror for each available catscale.
@@ -45,7 +42,7 @@
4542
* @copyright 2024 Wunderbyte GmbH
4643
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4744
*/
48-
class addscalestandarderror extends preselect_task implements wb_middleware {
45+
class addscalestandarderror extends preselect_task {
4946

5047
/**
5148
* @var progress $progress

classes/teststrategy/preselect_task/checkpagereload.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
use local_catquiz\local\result;
2828
use local_catquiz\teststrategy\preselect_task;
2929
use local_catquiz\teststrategy\progress;
30-
use local_catquiz\wb_middleware;
3130

3231
/**
3332
* Checks if we have a new response. If not, presents the previous question again.
@@ -36,7 +35,7 @@
3635
* @copyright 2024 Wunderbyte GmbH
3736
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3837
*/
39-
final class checkpagereload extends preselect_task implements wb_middleware {
38+
final class checkpagereload extends preselect_task {
4039

4140
/**
4241
* @var progress $progress

classes/teststrategy/preselect_task/filterbyquestionsperscale.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
use local_catquiz\local\result;
2929
use local_catquiz\teststrategy\preselect_task;
3030
use local_catquiz\teststrategy\progress;
31-
use local_catquiz\wb_middleware;
3231

3332
/**
3433
* Includes or excludes scales based on the number of questions played
@@ -43,7 +42,7 @@
4342
* @copyright 2024 Wunderbyte GmbH
4443
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4544
*/
46-
class filterbyquestionsperscale extends preselect_task implements wb_middleware {
45+
class filterbyquestionsperscale extends preselect_task {
4746

4847
/**
4948
* @var progress

classes/teststrategy/preselect_task/filterbystandarderror.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
use local_catquiz\teststrategy\context\loader\personability_loader;
3333
use local_catquiz\teststrategy\preselect_task;
3434
use local_catquiz\teststrategy\progress;
35-
use local_catquiz\wb_middleware;
3635
use UnexpectedValueException;
3736

3837
/**
@@ -44,7 +43,7 @@
4443
* @copyright 2024 Wunderbyte GmbH
4544
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4645
*/
47-
class filterbystandarderror extends preselect_task implements wb_middleware {
46+
class filterbystandarderror extends preselect_task {
4847

4948
/**
5049
* @var progress
@@ -66,6 +65,7 @@ class filterbystandarderror extends preselect_task implements wb_middleware {
6665
*
6766
*/
6867
public function run(array &$context, callable $next): result {
68+
$this->context = $context;
6969
$this->next = $next;
7070
$this->progress = $context['progress'];
7171

classes/teststrategy/preselect_task/filterbytestinfo.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use local_catquiz\catquiz;
2827
use local_catquiz\catscale;
2928
use local_catquiz\local\model\model_item_param_list;
3029
use local_catquiz\local\result;
31-
use local_catquiz\local\status;
3230
use local_catquiz\teststrategy\preselect_task;
3331
use local_catquiz\teststrategy\progress;
34-
use local_catquiz\wb_middleware;
3532

3633
/**
3734
* Includes or excludes scales based on their information
@@ -42,7 +39,7 @@
4239
* @copyright 2024 Wunderbyte GmbH
4340
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4441
*/
45-
class filterbytestinfo extends preselect_task implements wb_middleware {
42+
class filterbytestinfo extends preselect_task {
4643

4744
/**
4845
* @var progress
@@ -59,6 +56,7 @@ class filterbytestinfo extends preselect_task implements wb_middleware {
5956
*
6057
*/
6158
public function run(array &$context, callable $next): result {
59+
$this->context = $context;
6260
$this->progress = $context['progress'];
6361

6462
if (!in_array($context['teststrategy'], [ // TODO: use something like strategy::supports_dynamic_scales()!

classes/teststrategy/preselect_task/firstquestionselector.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,13 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use local_catquiz\catcontext;
2827
use local_catquiz\catquiz;
2928
use local_catquiz\catscale;
3029
use local_catquiz\local\model\model_item_param_list;
31-
use local_catquiz\local\model\model_person_param_list;
32-
use local_catquiz\local\model\model_responses;
33-
use local_catquiz\local\model\model_strategy;
3430
use local_catquiz\local\result;
3531
use local_catquiz\local\status;
3632
use local_catquiz\teststrategy\preselect_task;
3733
use local_catquiz\teststrategy\progress;
38-
use local_catquiz\wb_middleware;
3934
use moodle_exception;
4035

4136
/**
@@ -45,7 +40,7 @@
4540
* @copyright 2024 Wunderbyte GmbH
4641
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4742
*/
48-
class firstquestionselector extends preselect_task implements wb_middleware {
43+
class firstquestionselector extends preselect_task {
4944

5045
/**
5146
* @var int

classes/teststrategy/preselect_task/fisherinformation.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,8 @@
2626

2727
use local_catquiz\local\model\model_item_param;
2828
use local_catquiz\local\model\model_model;
29-
use local_catquiz\local\model\model_strategy;
3029
use local_catquiz\local\result;
3130
use local_catquiz\teststrategy\preselect_task;
32-
use local_catquiz\wb_middleware;
3331

3432
/**
3533
* Test strategy fisherinformation.
@@ -38,7 +36,7 @@
3836
* @copyright 2024 Wunderbyte GmbH
3937
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4038
*/
41-
final class fisherinformation extends preselect_task implements wb_middleware {
39+
final class fisherinformation extends preselect_task {
4240

4341
/**
4442
* Run preselect task.

classes/teststrategy/preselect_task/lasttimeplayedpenalty.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
use local_catquiz\local\result;
2828
use local_catquiz\teststrategy\preselect_task;
29-
use local_catquiz\wb_middleware;
3029
use stdClass;
3130

3231
/**
@@ -36,7 +35,7 @@
3635
* @copyright 2024 Wunderbyte GmbH
3736
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3837
*/
39-
final class lasttimeplayedpenalty extends preselect_task implements wb_middleware {
38+
final class lasttimeplayedpenalty extends preselect_task {
4039

4140
/**
4241
* This is used as factor in the exp function

classes/teststrategy/preselect_task/maximumquestionscheck.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,10 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use local_catquiz\catcontext;
2827
use local_catquiz\local\result;
2928
use local_catquiz\local\status;
3029
use local_catquiz\teststrategy\preselect_task;
3130
use local_catquiz\teststrategy\progress;
32-
use local_catquiz\wb_middleware;
3331

3432
/**
3533
* Test strategy maximumquestionscheck.
@@ -38,7 +36,7 @@
3836
* @copyright 2024 Wunderbyte GmbH
3937
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4038
*/
41-
final class maximumquestionscheck extends preselect_task implements wb_middleware {
39+
final class maximumquestionscheck extends preselect_task {
4240

4341
/**
4442
* @var progress $progress
@@ -59,10 +57,7 @@ public function run(array &$context, callable $next): result {
5957

6058
$maxquestions = $context['maximumquestions'];
6159
if (($maxquestions != -1) && ($context['questionsattempted'] >= $maxquestions)) {
62-
// Update the person ability and then end the quiz.
63-
$next = fn () => result::err(status::ERROR_REACHED_MAXIMUM_QUESTIONS);
64-
$updatepersonability = new updatepersonability();
65-
return $updatepersonability->process($context, $next);
60+
return result::err(status::ERROR_REACHED_MAXIMUM_QUESTIONS);
6661
}
6762

6863
return $next($context);

classes/teststrategy/preselect_task/maybe_return_pilot.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use cache;
2827
use local_catquiz\local\result;
2928
use local_catquiz\teststrategy\preselect_task;
30-
use local_catquiz\wb_middleware;
3129

3230
/**
3331
* Randomly returns a pilot question according to the `pilot_ratio` parameter
@@ -36,7 +34,7 @@
3634
* @copyright 2024 Wunderbyte GmbH
3735
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3836
*/
39-
class maybe_return_pilot extends preselect_task implements wb_middleware {
37+
class maybe_return_pilot extends preselect_task {
4038

4139
/**
4240
* Run preselect task.
@@ -48,6 +46,7 @@ class maybe_return_pilot extends preselect_task implements wb_middleware {
4846
*
4947
*/
5048
public function run(array &$context, callable $next): result {
49+
$this->context = $context;
5150
if ($context['pilot_ratio'] === 0) {
5251
return $next($context);
5352
}

classes/teststrategy/preselect_task/maybe_return_pilot_testing.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,14 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use local_catquiz\wb_middleware;
28-
2927
/**
3028
* Randomly returns a pilot question according to the `pilot_ratio` parameter
3129
*
3230
* @package local_catquiz
3331
* @copyright 2024 Wunderbyte GmbH
3432
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3533
*/
36-
final class maybe_return_pilot_testing extends maybe_return_pilot implements wb_middleware {
34+
final class maybe_return_pilot_testing extends maybe_return_pilot {
3735

3836
/**
3937
* This value is used to return a pilot question.

classes/teststrategy/preselect_task/mayberemovescale.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,9 @@
2424

2525
namespace local_catquiz\teststrategy\preselect_task;
2626

27-
use cache;
2827
use local_catquiz\local\result;
2928
use local_catquiz\teststrategy\preselect_task;
3029
use local_catquiz\teststrategy\progress;
31-
use local_catquiz\wb_middleware;
3230

3331
/**
3432
* Checks if subscales should be excluded and removes the respective questions
@@ -37,7 +35,7 @@
3735
* @copyright 2024 Wunderbyte GmbH
3836
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3937
*/
40-
final class mayberemovescale extends preselect_task implements wb_middleware {
38+
final class mayberemovescale extends preselect_task {
4139

4240
/**
4341
* @var progress

classes/teststrategy/preselect_task/noremainingquestions.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
use local_catquiz\local\result;
2828
use local_catquiz\local\status;
2929
use local_catquiz\teststrategy\preselect_task;
30-
use local_catquiz\wb_middleware;
3130

3231
/**
3332
* Test strategy noremainingquestions.
@@ -36,7 +35,7 @@
3635
* @copyright 2024 Wunderbyte GmbH
3736
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3837
*/
39-
final class noremainingquestions extends preselect_task implements wb_middleware {
38+
final class noremainingquestions extends preselect_task {
4039

4140
/**
4241
* Run preselect task.

classes/teststrategy/preselect_task/numberofgeneralattempts.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
use local_catquiz\local\result;
2828
use local_catquiz\teststrategy\preselect_task;
29-
use local_catquiz\wb_middleware;
3029

3130
/**
3231
* Adds a `numberofgeneralattempts` property to each question
@@ -38,7 +37,7 @@
3837
* @copyright 2024 Wunderbyte GmbH
3938
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
4039
*/
41-
class numberofgeneralattempts extends preselect_task implements wb_middleware {
40+
class numberofgeneralattempts extends preselect_task {
4241

4342
/**
4443
* Run preselect task.

classes/teststrategy/preselect_task/playedincurrentattempt.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
use local_catquiz\local\result;
2828
use local_catquiz\teststrategy\preselect_task;
2929
use local_catquiz\teststrategy\progress;
30-
use local_catquiz\wb_middleware;
3130

3231
/**
3332
* Class playedincurrentattempt for test strategy.
@@ -36,7 +35,7 @@
3635
* @copyright 2024 Wunderbyte GmbH
3736
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3837
*/
39-
final class playedincurrentattempt extends preselect_task implements wb_middleware {
38+
final class playedincurrentattempt extends preselect_task {
4039

4140
/**
4241
* PENALTY

classes/teststrategy/preselect_task/remove_uncalculated.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
use local_catquiz\local\result;
2828
use local_catquiz\teststrategy\preselect_task;
29-
use local_catquiz\wb_middleware;
3029

3130
/**
3231
* Removes questions for which no item parameters were calculated yet
@@ -35,7 +34,7 @@
3534
* @copyright 2024 Wunderbyte GmbH
3635
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3736
*/
38-
final class remove_uncalculated extends preselect_task implements wb_middleware {
37+
final class remove_uncalculated extends preselect_task {
3938

4039
/**
4140
* Run preselect task.
@@ -51,7 +50,12 @@ public function run(array &$context, callable $next): result {
5150
$context['questions'],
5251
fn($item) => !is_null($item->model)
5352
);
54-
return $next($context);
53+
// After removing questions, check if we still have some.
54+
$noremainingquestions = new noremainingquestions();
55+
return $noremainingquestions->run(
56+
$context,
57+
fn ($context) => result::ok($context)
58+
);
5559
}
5660

5761
/**

classes/teststrategy/preselect_task/removeplayedquestions.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
use local_catquiz\local\result;
2828
use local_catquiz\teststrategy\preselect_task;
2929
use local_catquiz\teststrategy\progress;
30-
use local_catquiz\wb_middleware;
3130

3231
/**
3332
* Class removeplayedquestions removes questions that were already shown to the user in the current quiz attempt.
@@ -36,7 +35,7 @@
3635
* @copyright 2024 Wunderbyte GmbH
3736
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
3837
*/
39-
final class removeplayedquestions extends preselect_task implements wb_middleware {
38+
final class removeplayedquestions extends preselect_task {
4039

4140
/**
4241
* @var progress

0 commit comments

Comments
 (0)