Skip to content

Commit

Permalink
GH-791 Finish removing middleware structure
Browse files Browse the repository at this point in the history
  • Loading branch information
davidszkiba committed Jan 24, 2025
1 parent 3e4e80f commit de58f1b
Show file tree
Hide file tree
Showing 33 changed files with 215 additions and 458 deletions.
3 changes: 1 addition & 2 deletions classes/teststrategy/preselect_task.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@

use local_catquiz\local\result;
use local_catquiz\local\status;
use local_catquiz\wb_middleware;

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

/**
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,11 @@

namespace local_catquiz\teststrategy\preselect_task;

use cache;
use local_catquiz\catscale;
use local_catquiz\local\model\model_responses;
use local_catquiz\local\result;
use local_catquiz\local\status;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

/**
* @var progress $progress
Expand Down
3 changes: 1 addition & 2 deletions classes/teststrategy/preselect_task/checkpagereload.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

/**
* @var progress $progress
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

/**
* @var progress
Expand Down
4 changes: 2 additions & 2 deletions classes/teststrategy/preselect_task/filterbystandarderror.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
use local_catquiz\teststrategy\context\loader\personability_loader;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;
use UnexpectedValueException;

/**
Expand All @@ -44,7 +43,7 @@
* @copyright 2024 Wunderbyte GmbH
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class filterbystandarderror extends preselect_task implements wb_middleware {
class filterbystandarderror extends preselect_task {

/**
* @var progress
Expand All @@ -66,6 +65,7 @@ class filterbystandarderror extends preselect_task implements wb_middleware {
*
*/
public function run(array &$context, callable $next): result {
$this->context = $context;
$this->next = $next;
$this->progress = $context['progress'];

Expand Down
6 changes: 2 additions & 4 deletions classes/teststrategy/preselect_task/filterbytestinfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,11 @@

namespace local_catquiz\teststrategy\preselect_task;

use local_catquiz\catquiz;
use local_catquiz\catscale;
use local_catquiz\local\model\model_item_param_list;
use local_catquiz\local\result;
use local_catquiz\local\status;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

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

if (!in_array($context['teststrategy'], [ // TODO: use something like strategy::supports_dynamic_scales()!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,13 @@

namespace local_catquiz\teststrategy\preselect_task;

use local_catquiz\catcontext;
use local_catquiz\catquiz;
use local_catquiz\catscale;
use local_catquiz\local\model\model_item_param_list;
use local_catquiz\local\model\model_person_param_list;
use local_catquiz\local\model\model_responses;
use local_catquiz\local\model\model_strategy;
use local_catquiz\local\result;
use local_catquiz\local\status;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;
use moodle_exception;

/**
Expand All @@ -45,7 +40,7 @@
* @copyright 2024 Wunderbyte GmbH
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class firstquestionselector extends preselect_task implements wb_middleware {
class firstquestionselector extends preselect_task {

/**
* @var int
Expand Down
4 changes: 1 addition & 3 deletions classes/teststrategy/preselect_task/fisherinformation.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,8 @@

use local_catquiz\local\model\model_item_param;
use local_catquiz\local\model\model_model;
use local_catquiz\local\model\model_strategy;
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\wb_middleware;

/**
* Test strategy fisherinformation.
Expand All @@ -38,7 +36,7 @@
* @copyright 2024 Wunderbyte GmbH
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
final class fisherinformation extends preselect_task implements wb_middleware {
final class fisherinformation extends preselect_task {

/**
* Run preselect task.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@

use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\wb_middleware;
use stdClass;

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

/**
* This is used as factor in the exp function
Expand Down
9 changes: 2 additions & 7 deletions classes/teststrategy/preselect_task/maximumquestionscheck.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,10 @@

namespace local_catquiz\teststrategy\preselect_task;

use local_catquiz\catcontext;
use local_catquiz\local\result;
use local_catquiz\local\status;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

/**
* Test strategy maximumquestionscheck.
Expand All @@ -38,7 +36,7 @@
* @copyright 2024 Wunderbyte GmbH
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
final class maximumquestionscheck extends preselect_task implements wb_middleware {
final class maximumquestionscheck extends preselect_task {

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

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

return $next($context);
Expand Down
5 changes: 2 additions & 3 deletions classes/teststrategy/preselect_task/maybe_return_pilot.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@

namespace local_catquiz\teststrategy\preselect_task;

use cache;
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\wb_middleware;

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

/**
* Run preselect task.
Expand All @@ -48,6 +46,7 @@ class maybe_return_pilot extends preselect_task implements wb_middleware {
*
*/
public function run(array &$context, callable $next): result {
$this->context = $context;
if ($context['pilot_ratio'] === 0) {
return $next($context);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,14 @@

namespace local_catquiz\teststrategy\preselect_task;

use local_catquiz\wb_middleware;

/**
* Randomly returns a pilot question according to the `pilot_ratio` parameter
*
* @package local_catquiz
* @copyright 2024 Wunderbyte GmbH
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
final class maybe_return_pilot_testing extends maybe_return_pilot implements wb_middleware {
final class maybe_return_pilot_testing extends maybe_return_pilot {

/**
* This value is used to return a pilot question.
Expand Down
4 changes: 1 addition & 3 deletions classes/teststrategy/preselect_task/mayberemovescale.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,9 @@

namespace local_catquiz\teststrategy\preselect_task;

use cache;
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

/**
* @var progress
Expand Down
3 changes: 1 addition & 2 deletions classes/teststrategy/preselect_task/noremainingquestions.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
use local_catquiz\local\result;
use local_catquiz\local\status;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\wb_middleware;

/**
* Test strategy noremainingquestions.
Expand All @@ -36,7 +35,7 @@
* @copyright 2024 Wunderbyte GmbH
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
final class noremainingquestions extends preselect_task implements wb_middleware {
final class noremainingquestions extends preselect_task {

/**
* Run preselect task.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@

use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\wb_middleware;

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

/**
* Run preselect task.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

/**
* PENALTY
Expand Down
10 changes: 7 additions & 3 deletions classes/teststrategy/preselect_task/remove_uncalculated.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@

use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\wb_middleware;

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

/**
* Run preselect task.
Expand All @@ -51,7 +50,12 @@ public function run(array &$context, callable $next): result {
$context['questions'],
fn($item) => !is_null($item->model)
);
return $next($context);
// After removing questions, check if we still have some.
$noremainingquestions = new noremainingquestions();
return $noremainingquestions->run(
$context,
fn ($context) => result::ok($context)
);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
use local_catquiz\local\result;
use local_catquiz\teststrategy\preselect_task;
use local_catquiz\teststrategy\progress;
use local_catquiz\wb_middleware;

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

/**
* @var progress
Expand Down
Loading

0 comments on commit de58f1b

Please sign in to comment.