diff --git a/.github/workflows/moodle-ci.yml b/.github/workflows/moodle-ci.yml
index 5ae01946..d3e3a4f8 100644
--- a/.github/workflows/moodle-ci.yml
+++ b/.github/workflows/moodle-ci.yml
@@ -115,18 +115,6 @@ jobs:
- php: '8.2'
moodle-branch: 'MOODLE_401_STABLE'
include:
- - php: '7.4'
- moodle-branch: 'MOODLE_39_STABLE'
- database: 'mariadb'
- - php: '7.4'
- moodle-branch: 'MOODLE_39_STABLE'
- database: 'pgsql'
- - php: '8.0'
- moodle-branch: 'MOODLE_311_STABLE'
- database: 'mariadb'
- - php: '8.0'
- moodle-branch: 'MOODLE_311_STABLE'
- database: 'pgsql'
- php: '8.0'
moodle-branch: 'MOODLE_400_STABLE'
database: 'mariadb'
diff --git a/backup/moodle2/backup_ratingallocate_activity_stepslib.php b/backup/moodle2/backup_ratingallocate_activity_stepslib.php
index 3ebd04fd..b682791f 100644
--- a/backup/moodle2/backup_ratingallocate_activity_stepslib.php
+++ b/backup/moodle2/backup_ratingallocate_activity_stepslib.php
@@ -18,7 +18,7 @@
require_once(dirname(__FILE__) . '/backup_restore_helper.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
/**
* Define the complete ratingallocate structure for backup, with [file and] id annotations
@@ -35,38 +35,38 @@ protected function define_structure() {
$userinfo = $this->get_setting_value('userinfo');
// Define each element separated.
- $class = 'ratingallocate\db\ratingallocate';
+ $class = 'mod_ratingallocate\db\ratingallocate';
$ratingallocate = new backup_nested_element(get_tablename_for_tableClass($class), get_id_for_tableClass($class),
get_fields_for_tableClass($class));
- $class = 'ratingallocate\db\ratingallocate_choices';
+ $class = 'mod_ratingallocate\db\ratingallocate_choices';
$ratingallocatechoices = new backup_nested_element(get_tablename_for_tableClass($class) . 's');
$ratingallocatechoice = new backup_nested_element(get_tablename_for_tableClass($class), get_id_for_tableClass($class),
get_fields_for_tableClass($class));
- $class = 'ratingallocate\db\ratingallocate_ratings';
+ $class = 'mod_ratingallocate\db\ratingallocate_ratings';
$ratingallocateratings = new backup_nested_element(get_tablename_for_tableClass($class) . 's');
$ratingallocaterating = new backup_nested_element(get_tablename_for_tableClass($class), get_id_for_tableClass($class),
get_fields_for_tableClass($class));
- $class = 'ratingallocate\db\ratingallocate_allocations';
+ $class = 'mod_ratingallocate\db\ratingallocate_allocations';
$ratingallocateallocations = new backup_nested_element(get_tablename_for_tableClass($class) . 's');
$ratingallocateallocation = new backup_nested_element(get_tablename_for_tableClass($class), get_id_for_tableClass($class),
get_fields_for_tableClass($class));
- $groupchoiceclass = 'ratingallocate\db\ratingallocate_group_choices';
+ $groupchoiceclass = 'mod_ratingallocate\db\ratingallocate_group_choices';
$groupchoices = new backup_nested_element(get_tablename_for_tableClass($groupchoiceclass) . 's');
$groupchoice = new backup_nested_element(get_tablename_for_tableClass($groupchoiceclass),
get_id_for_tableClass($groupchoiceclass),
get_fields_for_tableClass($groupchoiceclass));
- $choicegroupclass = 'ratingallocate\db\ratingallocate_ch_gengroups';
+ $choicegroupclass = 'mod_ratingallocate\db\ratingallocate_ch_gengroups';
$ratingallocatechoicegroups = new backup_nested_element(get_tablename_for_tableClass($choicegroupclass) . 's');
$ratingallocatechoicegroup = new backup_nested_element(get_tablename_for_tableClass($choicegroupclass),
get_id_for_tableClass($choicegroupclass),
get_fields_for_tableClass($choicegroupclass));
- $groupingclass = 'ratingallocate\db\ratingallocate_groupings';
+ $groupingclass = 'mod_ratingallocate\db\ratingallocate_groupings';
$ratingallocategroupings = new backup_nested_element(get_tablename_for_tableClass($groupingclass) . 's');
$ratingallocategrouping = new backup_nested_element(get_tablename_for_tableClass($groupingclass),
get_id_for_tableClass($groupingclass),
@@ -92,9 +92,9 @@ protected function define_structure() {
$ratingallocatechoicegroups->add_child($ratingallocatechoicegroup);
// Define sources.
- $ratingallocate->set_source_table(get_tablename_for_tableClass('ratingallocate\db\ratingallocate'),
+ $ratingallocate->set_source_table(get_tablename_for_tableClass('mod_ratingallocate\db\ratingallocate'),
array(this_db\ratingallocate::ID => backup::VAR_ACTIVITYID), this_db\ratingallocate_choices::ID . ' ASC');
- $ratingallocatechoice->set_source_table(get_tablename_for_tableClass('ratingallocate\db\ratingallocate_choices'),
+ $ratingallocatechoice->set_source_table(get_tablename_for_tableClass('mod_ratingallocate\db\ratingallocate_choices'),
array(this_db\ratingallocate_choices::RATINGALLOCATEID => backup::VAR_PARENTID),
this_db\ratingallocate_choices::ID . ' ASC');
$groupchoice->set_source_table(get_tablename_for_tableClass($groupchoiceclass), ['choiceid' => backup::VAR_PARENTID]);
@@ -105,11 +105,11 @@ protected function define_structure() {
if ($userinfo) {
$ratingallocaterating->set_source_table(get_tablename_for_tableClass(
- 'ratingallocate\db\ratingallocate_ratings'),
+ 'mod_ratingallocate\db\ratingallocate_ratings'),
array(this_db\ratingallocate_ratings::CHOICEID => backup::VAR_PARENTID),
this_db\ratingallocate_ratings::ID . ' ASC');
$ratingallocateallocation->set_source_table(
- get_tablename_for_tableClass('ratingallocate\db\ratingallocate_allocations'),
+ get_tablename_for_tableClass('mod_ratingallocate\db\ratingallocate_allocations'),
array(
this_db\ratingallocate_allocations::RATINGALLOCATEID => backup::VAR_ACTIVITYID,
this_db\ratingallocate_allocations::CHOICEID => backup::VAR_PARENTID),
diff --git a/backup/moodle2/restore_ratingallocate_activity_stepslib.php b/backup/moodle2/restore_ratingallocate_activity_stepslib.php
index d27aa25c..d89b4437 100644
--- a/backup/moodle2/restore_ratingallocate_activity_stepslib.php
+++ b/backup/moodle2/restore_ratingallocate_activity_stepslib.php
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
/**
*
diff --git a/classes/choice_importer.php b/classes/choice_importer.php
index d7a3fb33..cd80e9c2 100644
--- a/classes/choice_importer.php
+++ b/classes/choice_importer.php
@@ -21,7 +21,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace mod_ratingallocate;
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
defined('MOODLE_INTERNAL') || die();
diff --git a/classes/dates.php b/classes/dates.php
new file mode 100644
index 00000000..0e3e8313
--- /dev/null
+++ b/classes/dates.php
@@ -0,0 +1,70 @@
+.
+
+/**
+ * Contains the class for fetching the important dates in mod_ratingallocate for a given module instance and a user.
+ *
+ * @package mod_ratingallocate
+ * @copyright 2022 University of Vienna
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+declare(strict_types=1);
+
+namespace mod_ratingallocate;
+
+use core\activity_dates;
+
+/**
+ * Class for fetching the important dates in mod_ratingallocate for a given module instance and a user.
+ *
+ * @copyright 2022 Jakob Mischke
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class dates extends activity_dates {
+ /**
+ * Returns a list of important dates in mod_ratingallocate
+ *
+ * @return array
+ */
+ protected function get_dates(): array {
+ global $DB;
+
+ $timeopen = $this->cm->customdata['accesstimestart'] ?? null;
+ $timeclose = $this->cm->customdata['accesstimestop'] ?? null;
+
+ $now = time();
+ $dates = [];
+
+ if ($timeopen) {
+ $openlabelid = $timeopen > $now ? 'activitydate:opens' : 'activitydate:opened';
+ $dates[] = [
+ 'label' => get_string($openlabelid, 'core_course'),
+ 'timestamp' => (int) $timeopen,
+ ];
+ }
+
+ if ($timeclose) {
+ $closelabelid = $timeclose > $now ? 'activitydate:closes' : 'activitydate:closed';
+ $dates[] = [
+ 'label' => get_string($closelabelid, 'core_course'),
+ 'timestamp' => (int) $timeclose,
+ ];
+ }
+
+ return $dates;
+ }
+}
diff --git a/classes/task/cron_task.php b/classes/task/cron_task.php
index c91ded43..aca7c3a1 100644
--- a/classes/task/cron_task.php
+++ b/classes/task/cron_task.php
@@ -16,7 +16,7 @@
namespace mod_ratingallocate\task;
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
defined('MOODLE_INTERNAL') || die();
diff --git a/classes/task/distribute_unallocated_task.php b/classes/task/distribute_unallocated_task.php
index 6f131caa..b0737b84 100644
--- a/classes/task/distribute_unallocated_task.php
+++ b/classes/task/distribute_unallocated_task.php
@@ -45,7 +45,10 @@ class distribute_unallocated_task extends adhoc_task {
* @throws moodle_exception
*/
public function execute(): void {
- global $DB;
+ global $CFG, $DB;
+ // Make sure to include the global definitions of constants defined in locallib.
+ require_once($CFG->dirroot . '/mod/ratingallocate/locallib.php');
+
$data = $this->get_custom_data();
if (empty($data->distributionalgorithm) ||
!in_array($data->distributionalgorithm, [ACTION_DISTRIBUTE_UNALLOCATED_EQUALLY, ACTION_DISTRIBUTE_UNALLOCATED_FILL])) {
diff --git a/classes/task/send_distribution_notification.php b/classes/task/send_distribution_notification.php
index 2913ef0c..2a70360b 100644
--- a/classes/task/send_distribution_notification.php
+++ b/classes/task/send_distribution_notification.php
@@ -26,7 +26,7 @@
require_once(dirname(__FILE__) . '/../../db/db_structure.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
class send_distribution_notification extends \core\task\adhoc_task {
// Gets executed by the task runner. Will lookup the ratingallocation object and
diff --git a/db/db_structure.php b/db/db_structure.php
index 1095c0e7..2c3959a7 100644
--- a/db/db_structure.php
+++ b/db/db_structure.php
@@ -23,7 +23,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-namespace ratingallocate\db;
+namespace mod_ratingallocate\db;
defined('MOODLE_INTERNAL') || die();
class ratingallocate {
diff --git a/lang/en/ratingallocate.php b/lang/en/ratingallocate.php
index 98b34f43..4fbcf7ce 100644
--- a/lang/en/ratingallocate.php
+++ b/lang/en/ratingallocate.php
@@ -278,6 +278,7 @@
$string['edit_choice'] = 'Edit choice';
$string['rating_endtime'] = 'Rating ends at';
$string['rating_begintime'] = 'Rating begins at';
+$string['choice_navigation'] = 'Choices';
$string['newchoicetitle'] = 'New choice {$a}';
$string['deletechoice'] = 'Delete choice';
$string['publishdate'] = 'Estimated publication date';
diff --git a/lib.php b/lib.php
index 099c24ba..0d46adb2 100644
--- a/lib.php
+++ b/lib.php
@@ -40,8 +40,9 @@
// define('NEWMODULE_ULTIMATE_ANSWER', 42);
require_once(dirname(__FILE__) . '/db/db_structure.php');
+require_once(dirname(__FILE__) . '/locallib.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
// //////////////////////////////////////////////////////////////////////////////
// Moodle core API //
@@ -383,6 +384,23 @@ function ratingallocate_extend_navigation(navigation_node $navref, stdclass $cou
* {@link navigation_node}
*/
function ratingallocate_extend_settings_navigation(settings_navigation $settingsnav, navigation_node $ratingallocatenode = null) {
+ $hassecondary = $settingsnav->get_page()->has_secondary_navigation();
+ if (!$context = context_module::instance($settingsnav->get_page()->cm->id, IGNORE_MISSING)) {
+ throw new \moodle_exception('badcontext');
+ }
+ if (has_capability('mod/ratingallocate:modify_choices', $context)) {
+ $choicenode = navigation_node::create(get_string('choice_navigation', RATINGALLOCATE_MOD_NAME),
+ new moodle_url('/mod/ratingallocate/view.php', ['id' => $settingsnav->get_page()->cm->id, 'action' => ACTION_SHOW_CHOICES]),
+ navigation_node::TYPE_CUSTOM, null, 'mod_ratingallocate_choices');
+ $ratingallocatenode->add_node($choicenode);
+ }
+
+ if (has_capability('mod/ratingallocate:start_distribution', $context)) {
+ $reportsnode = navigation_node::create(get_string('reports_group', RATINGALLOCATE_MOD_NAME),
+ new moodle_url('/mod/ratingallocate/view.php', ['id' => $settingsnav->get_page()->cm->id, 'action' => ACTION_SHOW_RATINGS_AND_ALLOCATION_TABLE]),
+ navigation_node::TYPE_CUSTOM, null, 'mod_ratingallocate_reports');
+ $ratingallocatenode->add_node($reportsnode);
+ }
}
@@ -737,6 +755,18 @@ function ratingallocate_reset_course_form_defaults($course) {
return ['reset_ratings_and_allocations' => 1];
}
+/**
+ * Add a get_coursemodule_info function in case any ratingallocate type wants to add 'extra' information
+ * for the course (see resource).
+ *
+ * Given a course_module object, this function returns any "extra" information that may be needed
+ * when printing this activity in a course listing. See get_array_of_activities() in course/lib.php.
+ *
+ * @param stdClass $coursemodule The coursemodule object (record).
+ * @return cached_cm_info An object on information that the courses
+ * will know about (most noticeably, an icon).
+ */
+
function ratingallocate_get_coursemodule_info($coursemodule) {
global $DB;
diff --git a/locallib.php b/locallib.php
index 6a719b95..6c06aa73 100644
--- a/locallib.php
+++ b/locallib.php
@@ -29,7 +29,7 @@
use core_availability\info_module;
use mod_ratingallocate\task\distribute_unallocated_task;
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
global $CFG;
@@ -336,7 +336,7 @@ private function process_action_give_rating() {
// Rating is possible...
// Suche das richtige Formular nach Strategie.
- $strategyform = 'ratingallocate\\' . $this->ratingallocate->strategy . '\\mod_ratingallocate_view_form';
+ $strategyform = 'mod_ratingallocate\\' . $this->ratingallocate->strategy . '\\mod_ratingallocate_view_form';
$mform = new $strategyform($PAGE->url->out(), $this);
$mform->add_action_buttons();
@@ -398,15 +398,17 @@ private function process_action_delete_rating() {
private function process_action_show_choices() {
if (has_capability('mod/ratingallocate:modify_choices', $this->context)) {
- global $OUTPUT;
+ global $OUTPUT, $PAGE;
+ $PAGE->set_secondary_active_tab('mod_ratingallocate_choices');
$renderer = $this->get_renderer();
+ $status = $this->get_status();
// Notifications if no choices exist or too few in comparison to strategy settings.
$availablechoices = $this->get_rateable_choices();
$strategysettings = $this->get_strategy_class()->get_static_settingfields();
- if (array_key_exists(ratingallocate\strategy_order\strategy::COUNTOPTIONS, $strategysettings)) {
+ if (array_key_exists(mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS, $strategysettings)) {
$necessarychoices =
- $strategysettings[ratingallocate\strategy_order\strategy::COUNTOPTIONS][2];
+ $strategysettings[mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS][2];
} else {
$necessarychoices = 0;
}
@@ -417,6 +419,11 @@ private function process_action_show_choices() {
echo $renderer->render_header($this->ratingallocate, $this->context, $this->coursemodule->id);
echo $OUTPUT->heading(get_string('show_choices_header', RATINGALLOCATE_MOD_NAME));
+ // Get description dependent on status
+ $descriptionbaseid = 'modify_choices_group_desc_';
+ $description = get_string($descriptionbaseid . $status, RATINGALLOCATE_MOD_NAME);
+ echo $renderer->format_text($description);
+
$renderer->ratingallocate_show_choices_table($this, true);
echo $OUTPUT->single_button(new moodle_url('/mod/ratingallocate/view.php',
array('id' => $this->coursemodule->id)), get_string('back'), 'get');
@@ -430,7 +437,8 @@ private function process_action_edit_choice() {
$output = '';
if (has_capability('mod/ratingallocate:modify_choices', $this->context)) {
- global $OUTPUT;
+ global $OUTPUT, $PAGE;
+ $PAGE->set_secondary_active_tab('mod_ratingallocate_choices');
$choiceid = optional_param('choiceid', 0, PARAM_INT);
if ($choiceid) {
@@ -514,6 +522,7 @@ private function process_action_upload_choices() {
$output = '';
if (has_capability('mod/ratingallocate:modify_choices', $this->context)) {
global $OUTPUT;
+ $PAGE->set_secondary_active_tab('mod_ratingallocate_choices');
$url = new moodle_url('/mod/ratingallocate/view.php',
array('id' => $this->coursemodule->id,
@@ -974,20 +983,21 @@ public function distribute_users_without_choice(string $distributionalgorithm):
private function process_action_show_ratings_and_alloc_table() {
$output = '';
+
// Print ratings table.
if (has_capability('mod/ratingallocate:start_distribution', $this->context)) {
- global $OUTPUT;
+ global $OUTPUT, $PAGE;
+ $PAGE->set_secondary_active_tab('mod_ratingallocate_reports');
$renderer = $this->get_renderer();
+ $status = $this->get_status();
+ $output .= $renderer->reports_group($this->ratingallocateid, $this->coursemodule->id, $status, $this->context, ACTION_SHOW_RATINGS_AND_ALLOCATION_TABLE);
+
$output .= $renderer->ratings_table_for_ratingallocate($this->get_rateable_choices(),
$this->get_ratings_for_rateable_choices(), $this->get_raters_in_course(),
$this->get_allocations(), $this);
$output = html_writer::div($output, 'ratingallocate_ratings_table_container');
- $output .= html_writer::empty_tag('br', array());
- $output .= $OUTPUT->single_button(new moodle_url('/mod/ratingallocate/view.php', array(
- 'id' => $this->coursemodule->id)), get_string('back'), 'get');
-
// Logging.
$event = \mod_ratingallocate\event\ratings_and_allocation_table_viewed::create_simple(
context_module::instance($this->coursemodule->id), $this->ratingallocateid);
@@ -998,16 +1008,17 @@ private function process_action_show_ratings_and_alloc_table() {
private function process_action_show_allocation_table() {
$output = '';
+
// Print ratings table.
if (has_capability('mod/ratingallocate:start_distribution', $this->context)) {
- global $OUTPUT;
+ global $OUTPUT, $PAGE;
+ $PAGE->set_secondary_active_tab('mod_ratingallocate_reports');
$renderer = $this->get_renderer();
+ $status = $this->get_status();
+ $output .= $renderer->reports_group($this->ratingallocateid, $this->coursemodule->id, $status, $this->context, ACTION_SHOW_ALLOCATION_TABLE);
$output .= $renderer->allocation_table_for_ratingallocate($this);
- $output .= html_writer::empty_tag('br', array());
- $output .= $OUTPUT->single_button(new moodle_url('/mod/ratingallocate/view.php',
- array('id' => $this->coursemodule->id)), get_string('back'), 'get');
// Logging.
$event = \mod_ratingallocate\event\allocation_table_viewed::create_simple(
context_module::instance($this->coursemodule->id), $this->ratingallocateid);
@@ -1020,14 +1031,14 @@ private function process_action_show_statistics() {
$output = '';
// Print ratings table.
if (has_capability('mod/ratingallocate:start_distribution', $this->context)) {
- global $OUTPUT;
+ global $OUTPUT, $PAGE;
+ $PAGE->set_secondary_active_tab('mod_ratingallocate_reports');
$renderer = $this->get_renderer();
+ $status = $this->get_status();
+ $output .= $renderer->reports_group($this->ratingallocateid, $this->coursemodule->id, $status, $this->context, ACTION_SHOW_STATISTICS);
$output .= $renderer->statistics_table_for_ratingallocate($this);
- $output .= html_writer::empty_tag('br', array());
- $output .= $OUTPUT->single_button(new moodle_url('/mod/ratingallocate/view.php',
- array('id' => $this->coursemodule->id)), get_string('back'), 'get');
// Logging.
$event = \mod_ratingallocate\event\allocation_statistics_viewed::create_simple(
context_module::instance($this->coursemodule->id), $this->ratingallocateid);
@@ -1085,10 +1096,6 @@ private function process_default() {
}
}
}
- // Print data and controls to edit the choices.
- if (has_capability('mod/ratingallocate:modify_choices', $this->context)) {
- $output .= $renderer->modify_choices_group($this->ratingallocateid, $this->coursemodule->id, $status);
- }
// Print data and controls for teachers.
if (has_capability('mod/ratingallocate:start_distribution', $this->context)) {
@@ -1097,7 +1104,7 @@ private function process_default() {
$undistributeduserscount, (int) $this->ratingallocate->algorithmstatus,
(boolean) $this->ratingallocate->runalgorithmbycron);
$output .= $renderer->publish_allocation_group($this->ratingallocateid, $this->coursemodule->id, $status);
- $output .= $renderer->reports_group($this->ratingallocateid, $this->coursemodule->id, $status, $this->context);
+ // $output .= $renderer->reports_group($this->ratingallocateid, $this->coursemodule->id, $status, $this->context);
}
// Logging.
@@ -1228,9 +1235,9 @@ public function handle_view() {
$choicestatus->availablechoices = $this->filter_choices_by_groups($choicestatus->availablechoices, $USER->id);
$strategysettings = $this->get_strategy_class()->get_static_settingfields();
- if (array_key_exists(ratingallocate\strategy_order\strategy::COUNTOPTIONS, $strategysettings)) {
+ if (array_key_exists(mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS, $strategysettings)) {
$choicestatus->necessarychoices =
- $strategysettings[ratingallocate\strategy_order\strategy::COUNTOPTIONS][2];
+ $strategysettings[mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS][2];
} else {
$choicestatus->necessarychoices = 0;
}
@@ -2105,7 +2112,7 @@ public function get_options_titles(array $ratings) {
* Returns the strategy class for the ratingallocate
*/
private function get_strategy_class() {
- $strategyclassp = 'ratingallocate\\' . $this->ratingallocate->strategy . '\\strategy';
+ $strategyclassp = 'mod_ratingallocate\\' . $this->ratingallocate->strategy . '\\strategy';
$allsettings = json_decode($this->ratingallocate->setting, true);
if (array_key_exists($this->ratingallocate->strategy, $allsettings)) {
return new $strategyclassp($allsettings[$this->ratingallocate->strategy]);
@@ -2255,7 +2262,7 @@ public function is_setup_ok() {
$choicecount = count($this->get_rateable_choices());
$strategyclass = $this->get_strategy_class();
$strategysettings = $strategyclass->get_static_settingfields();
- $necessarychoices = $strategysettings[ratingallocate\strategy_order\strategy::COUNTOPTIONS][2];
+ $necessarychoices = $strategysettings[mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS][2];
if ($choicecount < $necessarychoices) {
return false;
}
diff --git a/mod_form.php b/mod_form.php
index 174ec6ca..f19ec783 100644
--- a/mod_form.php
+++ b/mod_form.php
@@ -126,7 +126,7 @@ public function definition() {
foreach (\strategymanager::get_strategies() as $strategy) {
// Load strategy class.
- $strategyclassp = 'ratingallocate\\' . $strategy . '\\strategy';
+ $strategyclassp = 'mod_ratingallocate\\' . $strategy . '\\strategy';
$strategyclass = new $strategyclassp();
// Add options fields.
@@ -218,7 +218,7 @@ public function definition_after_data() {
// Add dynamic settings fields.
foreach (\strategymanager::get_strategies() as $strategy) {
// Load strategy class.
- $strategyclassp = 'ratingallocate\\' . $strategy . '\\strategy';
+ $strategyclassp = 'mod_ratingallocate\\' . $strategy . '\\strategy';
if (isset($allstrategyoptions) && array_key_exists($strategy, $allstrategyoptions)) {
$strategyclass = new $strategyclassp($allstrategyoptions[$strategy]);
} else {
@@ -276,7 +276,7 @@ public function validation($data, $files) {
// User has to select one strategy.
$errors['strategy'] = get_string('strategy_not_specified', self::MOD_NAME);
} else {
- $strategyclassp = 'ratingallocate\\' . $data['strategy'] . '\\strategy';
+ $strategyclassp = 'mod_ratingallocate\\' . $data['strategy'] . '\\strategy';
if (array_key_exists($data['strategy'], $data['strategyopt'])) {
$strategyclass = new $strategyclassp($data['strategyopt'][$data['strategy']]);
$settingerrors = $strategyclass->validate_settings();
diff --git a/renderer.php b/renderer.php
index a792df32..65a90d0a 100644
--- a/renderer.php
+++ b/renderer.php
@@ -14,7 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
defined('MOODLE_INTERNAL') || die();
@@ -405,25 +405,20 @@ public function publish_allocation_group($ratingallocateid, $coursemoduleid, $st
/**
* Output the ratingallocate modfify allocation
*/
- public function reports_group($ratingallocateid, $coursemoduleid, $status, $context) {
+ public function reports_group($ratingallocateid, $coursemoduleid, $status, $context, $action = '') {
$output = '';
$output .= $this->heading(get_string('reports_group', RATINGALLOCATE_MOD_NAME), 2);
$output .= $this->box_start();
- $tableurl = new moodle_url($this->page->url, array('action' => ACTION_SHOW_RATINGS_AND_ALLOCATION_TABLE));
-
- // Button with link to display information about the allocations and ratings.
- $output .= $this->single_button($tableurl, get_string('show_table', RATINGALLOCATE_MOD_NAME), 'get');
-
- $tableurl = new moodle_url($this->page->url, array('action' => ACTION_SHOW_ALLOCATION_TABLE));
-
- // Button with link to display information about the allocations and ratings.
- $output .= $this->single_button($tableurl, get_string('show_allocation_table', RATINGALLOCATE_MOD_NAME), 'get');
-
- $tableurl = new moodle_url($this->page->url, array('action' => ACTION_SHOW_STATISTICS));
-
- // Buttton with link to display statistical information about the allocations.
- $output .= $this->single_button($tableurl, get_string('show_allocation_statistics', RATINGALLOCATE_MOD_NAME), 'get');
+ $output .= $this->output->single_select(
+ new moodle_url('/mod/ratingallocate/view.php', array('id' => $coursemoduleid)),
+ 'action', array(
+ ACTION_SHOW_RATINGS_AND_ALLOCATION_TABLE => get_string('show_table', RATINGALLOCATE_MOD_NAME),
+ ACTION_SHOW_ALLOCATION_TABLE => get_string('show_allocation_table', RATINGALLOCATE_MOD_NAME),
+ ACTION_SHOW_STATISTICS => get_string('show_allocation_statistics', RATINGALLOCATE_MOD_NAME)
+ ),
+ $action
+ );
/* TODO: File not readable
$output .= html_writer::empty_tag('br', array());
diff --git a/strategy/strategy01_yes_no.php b/strategy/strategy01_yes_no.php
index a05c26e2..e8328f43 100644
--- a/strategy/strategy01_yes_no.php
+++ b/strategy/strategy01_yes_no.php
@@ -26,7 +26,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-namespace ratingallocate\strategy_yesno;
+namespace mod_ratingallocate\strategy_yesno;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
diff --git a/strategy/strategy02_yes_maybe_no.php b/strategy/strategy02_yes_maybe_no.php
index 05a57377..226f0a37 100644
--- a/strategy/strategy02_yes_maybe_no.php
+++ b/strategy/strategy02_yes_maybe_no.php
@@ -27,7 +27,7 @@
*/
// Namespace is mandatory!
-namespace ratingallocate\strategy_yesmaybeno;
+namespace mod_ratingallocate\strategy_yesmaybeno;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
diff --git a/strategy/strategy03_lickert.php b/strategy/strategy03_lickert.php
index 8f750ff0..cff271cc 100644
--- a/strategy/strategy03_lickert.php
+++ b/strategy/strategy03_lickert.php
@@ -26,7 +26,7 @@
*/
// Namespace is mandatory!
-namespace ratingallocate\strategy_lickert;
+namespace mod_ratingallocate\strategy_lickert;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
diff --git a/strategy/strategy04_points.php b/strategy/strategy04_points.php
index 7e93b0d0..33b58249 100644
--- a/strategy/strategy04_points.php
+++ b/strategy/strategy04_points.php
@@ -27,7 +27,7 @@
*/
// Namespace is mandatory!
-namespace ratingallocate\strategy_points;
+namespace mod_ratingallocate\strategy_points;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
diff --git a/strategy/strategy05_order.php b/strategy/strategy05_order.php
index 54f4f26a..6abc6cc4 100644
--- a/strategy/strategy05_order.php
+++ b/strategy/strategy05_order.php
@@ -26,7 +26,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
// Namespace is mandatory!
-namespace ratingallocate\strategy_order;
+namespace mod_ratingallocate\strategy_order;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
diff --git a/strategy/strategy06_tickyes.php b/strategy/strategy06_tickyes.php
index 45fe1f44..23d243fb 100644
--- a/strategy/strategy06_tickyes.php
+++ b/strategy/strategy06_tickyes.php
@@ -27,7 +27,7 @@
*/
// Namespace is mandatory!
-namespace ratingallocate\strategy_tickyes;
+namespace mod_ratingallocate\strategy_tickyes;
defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . '/formslib.php');
diff --git a/tests/backup_restore_test.php b/tests/backup_restore_test.php
index b7ed3def..5e91b123 100644
--- a/tests/backup_restore_test.php
+++ b/tests/backup_restore_test.php
@@ -24,7 +24,7 @@
require_once($CFG->dirroot . '/backup/util/includes/backup_includes.php');
require_once($CFG->dirroot . '/backup/util/includes/restore_includes.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
/**
* mod_ratingallocate backup restore procedure test
diff --git a/tests/behat/allocation_status.feature b/tests/behat/allocation_status.feature
index 7b84c26f..f7cd1fb8 100644
--- a/tests/behat/allocation_status.feature
+++ b/tests/behat/allocation_status.feature
@@ -21,52 +21,51 @@ Feature: Students should get status information according to their rating and th
| activity | course | idnumber | name | accesstimestart |
| ratingallocate | C1 | ra1 | My Fair Allocation | ##yesterday## |
And I log in as "teacher1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
- And I press "Edit Choices"
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Choices" page
And I add a new choice with the values:
| title | My only choice |
| Description (optional) | Test |
| maxsize | 1 |
And I log out
And I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I press "Save changes"
And I log out
And I log in as "student2"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I click on "Deny" "radio"
And I press "Save changes"
And I log out
And I log in as "teacher1"
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I set the following fields to these values:
| Rating begins at | ##2 days ago## |
| Rating ends at | ##yesterday## |
And I press "id_submitbutton"
And I run the scheduled task "mod_ratingallocate\task\cron_task"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Publish Allocation"
And I log out
@javascript
Scenario: As a user, who rated and was allocated, I should see my allocated choice.
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
Then I should see "My only choice" in the "//*[contains(@class, 'allocation')]" "xpath_element"
And I should see "My only choice" in the "//*[contains(@class, 'alert-success')]" "xpath_element"
@javascript
Scenario: As a user, who rated and was not allocated, I should see a warning.
When I log in as "student2"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
Then I should see "You were not allocated to any choice!" in the "//*[contains(@class, 'allocation')]" "xpath_element"
And I should see "You could not be allocated to any choice." in the "//*[contains(@class, 'alert-danger')]" "xpath_element"
@javascript
Scenario: As a user, who did not rate, I should not see my allocated choice
When I log in as "student3"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
Then I should not see "Your Allocation"
And I should see "The rating is over." in the "//*[contains(@class, 'alert-info')]" "xpath_element"
diff --git a/tests/behat/behat_mod_ratingallocate.php b/tests/behat/behat_mod_ratingallocate.php
index 4f657182..b5800c39 100644
--- a/tests/behat/behat_mod_ratingallocate.php
+++ b/tests/behat/behat_mod_ratingallocate.php
@@ -572,4 +572,85 @@ public function i_rate_choices_with_the_following_points(TableNode $ratingdata)
}
}
+ /**
+ * Convert page names to URLs for steps like 'When I am on the "mod_ratingallocate > [page name]" page'.
+ *
+ * Recognised page names are:
+ * | None so far! | |
+ *
+ * @param string $page name of the page, with the component name removed e.g. 'Edit'.
+ * @return moodle_url the corresponding URL.
+ * @throws Exception with a meaningful error message if the specified page cannot be found.
+ */
+ protected function resolve_page_url(string $page): moodle_url {
+ switch (strtolower($page)) {
+ default:
+ throw new Exception('Unrecognised mod_ratingallocate page type "' . $page . '."');
+ }
+ }
+
+ /**
+ * Convert page names to URLs for steps like 'When I am on the "[identifier]" "[page type]" page'.
+ *
+ * Recognised page names are:
+ * | pagetype | name meaning | description |
+ * | View | Ratingallocate name | The ratingallocate info page |
+ * | Edit | Ratingallocate name | The edit ratingallocate page |
+ * | Choices | Ratingallocate name | The page for editing choices |
+ * | Reports | Ratingallocate name | The page for reports and statistics |
+ *
+ * @param string $type identifies which type of page this is, e.g. 'mod_ratingallocate > Choices'.
+ * @param string $identifier identifies the particular page, e.g. 'My Fair Allocation'.
+ * @return moodle_url the corresponding URL.
+ * @throws Exception with a meaningful error message if the specified page cannot be found.
+ */
+ protected function resolve_page_instance_url(string $type, string $identifier): moodle_url {
+
+ switch (strtolower($type)) {
+ case 'view':
+ return new moodle_url('/mod/ratingallocate/view.php',
+ ['id' => $this->get_cm_by_ratingallocate_name($identifier)->id]);
+
+ case 'edit':
+ return new moodle_url('/course/modedit.php', [
+ 'update' => $this->get_cm_by_ratingallocate_name($identifier)->id]);
+
+ case 'choices':
+ return new moodle_url('/mod/ratingallocate/view.php', [
+ 'id' => $this->get_cm_by_ratingallocate_name($identifier)->id, 'action' => ACTION_SHOW_CHOICES
+ ]);
+
+ case 'reports':
+ return new moodle_url('/mod/ratingallocate/view.php', [
+ 'id' => $this->get_cm_by_ratingallocate_name($identifier)->id,
+ 'action' => ACTION_SHOW_RATINGS_AND_ALLOCATION_TABLE
+ ]);
+
+ default:
+ throw new Exception('Unrecognised ratingallocate page type "' . $type . '."');
+ }
+ }
+
+ /**
+ * Get a ratingallocate instance by name.
+ *
+ * @param string $name ratingallocate name.
+ * @return stdClass the corresponding DB row.
+ */
+ protected function get_ratingallocate_by_name(string $name): stdClass {
+ global $DB;
+ return $DB->get_record('ratingallocate', ['name' => $name], '*', MUST_EXIST);
+ }
+
+ /**
+ * Get a ratingallocate cmid from the ratingallocate name.
+ *
+ * @param string $name ratingallocate name.
+ * @return stdClass cm from get_coursemodule_from_instance.
+ */
+ protected function get_cm_by_ratingallocate_name(string $name): stdClass {
+ $ratingallocate = $this->get_ratingallocate_by_name($name);
+ return get_coursemodule_from_instance('ratingallocate', $ratingallocate->id, $ratingallocate->course);
+ }
+
}
diff --git a/tests/behat/defaultratings.feature b/tests/behat/defaultratings.feature
index 2ed5abe2..76bb0b2e 100644
--- a/tests/behat/defaultratings.feature
+++ b/tests/behat/defaultratings.feature
@@ -18,8 +18,7 @@ Feature: When a student starts a rating the default values of all choices
| activity | course | idnumber | name |
| ratingallocate | C1 | ra1 | My Fair Allocation |
And I log in as "teacher1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
- And I press "Edit Choices"
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Choices" page
And I add a new choice with the values:
| title | My first choice |
| Description (optional) | Test 1 |
@@ -31,12 +30,12 @@ Feature: When a student starts a rating the default values of all choices
@javascript
Scenario: The default rating is the max rating
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I select "strategy_lickert" from the "strategy" singleselect
And I press "id_submitbutton"
And I log out
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
Then I should see the following rating form:
| My first choice | 4 |
@@ -44,13 +43,13 @@ Feature: When a student starts a rating the default values of all choices
@javascript
Scenario: The default rating should be changeable to a medium rating
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I select "strategy_lickert" from the "strategy" singleselect
And I select "3" from the "strategyopt[strategy_lickert][default]" singleselect
And I press "id_submitbutton"
And I log out
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
Then I should see the following rating form:
| My first choice | 3 |
@@ -58,13 +57,13 @@ Feature: When a student starts a rating the default values of all choices
@javascript
Scenario: The default rating should be changeable to the lowest rating
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I select "strategy_lickert" from the "strategy" singleselect
And I select "0" from the "strategyopt[strategy_lickert][default]" singleselect
And I press "id_submitbutton"
And I log out
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
Then I should see the following rating form:
| My first choice | 0 |
@@ -72,12 +71,12 @@ Feature: When a student starts a rating the default values of all choices
@javascript
Scenario: The default rating is the max rating
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I select "strategy_lickert" from the "strategy" singleselect
And I press "id_submitbutton"
And I log out
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I set the rating form to the following values:
| My first choice | 2 |
diff --git a/tests/behat/manual_allocation.feature b/tests/behat/manual_allocation.feature
index 734816be..ad1a2963 100644
--- a/tests/behat/manual_allocation.feature
+++ b/tests/behat/manual_allocation.feature
@@ -34,7 +34,7 @@ Feature: Teachers should be able to alter the allocations manually.
Scenario: As a teacher, I want to allocate a so far not allocated user.
And I log in as "teacher1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Manual Allocation Form"
Then I should see "Steve" assigned to "C1"
And I should see "Steve" not assigned to "C2"
diff --git a/tests/behat/mod_form.feature b/tests/behat/mod_form.feature
index 225f0fdd..0b6a6585 100644
--- a/tests/behat/mod_form.feature
+++ b/tests/behat/mod_form.feature
@@ -18,8 +18,7 @@ Feature: Creating a new rating allocation, where new choices need to
And I am on "Course 1" course homepage with editing mode on
And I add a "Fair Allocation" to section "0" and I fill the form with:
| id_name | My Fair Allocation |
- And I am on the "My Fair Allocation" "ratingallocate activity" page
- And I press "Edit Choices"
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Choices" page
And I add a new choice with the values:
| title | My first choice |
| Description (optional) | Test 1 |
@@ -113,19 +112,19 @@ Feature: Creating a new rating allocation, where new choices need to
And the choice with name "My fourth choice" should not be active
Scenario: Create a new rating alloation and check the field runalgorithmbycron. It should be saved as true.
- When I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ When I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I set the field "runalgorithmbycron" to "1"
And I press "id_submitbutton"
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
Then the field "runalgorithmbycron" matches value "1"
Scenario: Create a new rating alloation and uncheck the field runalgorithmbycron. It should be saved as false.
- When I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ When I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
And I set the field "runalgorithmbycron" to ""
And I press "id_submitbutton"
- And I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
Then the field "runalgorithmbycron" matches value ""
Scenario: Create a new rating alloation and assume the default for the field runalgorithmbycron is true.
- When I am on the "My Fair Allocation" "ratingallocate activity editing" page
+ When I am on the "My Fair Allocation" "mod_ratingallocate > Edit" page
Then the field "runalgorithmbycron" matches value "1"
diff --git a/tests/behat/ratings.feature b/tests/behat/ratings.feature
index 844092ef..1bd8a17d 100644
--- a/tests/behat/ratings.feature
+++ b/tests/behat/ratings.feature
@@ -17,8 +17,7 @@ Feature: When a student rates a rating should be saved and it should be possible
| activity | course | idnumber | name |
| ratingallocate | C1 | ra1 | My Fair Allocation |
And I log in as "teacher1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
- And I press "Edit Choices"
+ And I am on the "My Fair Allocation" "mod_ratingallocate > Choices" page
And I add a new choice with the values:
| title | My first choice |
| Description (optional) | Test 1 |
@@ -36,7 +35,7 @@ Feature: When a student rates a rating should be saved and it should be possible
@javascript
Scenario: The user can create a rating
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I press "Save changes"
Then the user "student1" should have ratings
@@ -44,7 +43,7 @@ Feature: When a student rates a rating should be saved and it should be possible
@javascript
Scenario: The user can delete a rating
When I log in as "student1"
- And I am on the "My Fair Allocation" "ratingallocate activity" page
+ And I am on the "My Fair Allocation" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I press "Save changes"
Then the user "student1" should have ratings
diff --git a/tests/behat/validate_rating.feature b/tests/behat/validate_rating.feature
index 5ae606b0..e680a12d 100644
--- a/tests/behat/validate_rating.feature
+++ b/tests/behat/validate_rating.feature
@@ -20,8 +20,7 @@ Feature: When a student attempts to rate choices it should be validated prior to
| strategy | strategy_points |
| Rating begins at | ##2 days ago## |
| strategyopt[strategy_points][maxzero] | 2 |
- And I am on the "Validated Rating" "ratingallocate activity" page
- And I press "Edit Choices"
+ And I am on the "Validated Rating" "mod_ratingallocate > Choices" page
And I add a new choice with the values:
| title | My first choice |
| Description (optional) | Test 1 |
@@ -42,7 +41,7 @@ Feature: When a student attempts to rate choices it should be validated prior to
Scenario: The user cannot enter values less than 0.
When I log in as "student1"
- And I am on the "Validated Rating" "ratingallocate activity" page
+ And I am on the "Validated Rating" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I rate choices with the following points:
| My first choice | -1 |
@@ -54,7 +53,7 @@ Feature: When a student attempts to rate choices it should be validated prior to
Scenario: The values entered by the user must sum up to the (default) maximum.
When I log in as "student1"
- And I am on the "Validated Rating" "ratingallocate activity" page
+ And I am on the "Validated Rating" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I rate choices with the following points:
| My first choice | 1 |
@@ -66,7 +65,7 @@ Feature: When a student attempts to rate choices it should be validated prior to
Scenario: The user may not rate more than a (default) number of choices with 0.
When I log in as "student1"
- And I am on the "Validated Rating" "ratingallocate activity" page
+ And I am on the "Validated Rating" "mod_ratingallocate > View" page
And I press "Edit Rating"
And I rate choices with the following points:
| My first choice | 0 |
diff --git a/tests/cron_test.php b/tests/cron_test.php
index 40a8880c..6be4c450 100644
--- a/tests/cron_test.php
+++ b/tests/cron_test.php
@@ -20,7 +20,7 @@
require_once(__DIR__ . '/generator/lib.php');
require_once(__DIR__ . '/../locallib.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
/**
* mod_ratingallocate cron tests
diff --git a/tests/generator/lib.php b/tests/generator/lib.php
index 76fba82a..b195d634 100644
--- a/tests/generator/lib.php
+++ b/tests/generator/lib.php
@@ -18,7 +18,7 @@
require_once(dirname(__FILE__) . '/../../locallib.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
/**
* mod_ratinallocate generator tests
diff --git a/tests/locallib_test.php b/tests/locallib_test.php
index 789ec24c..a6322f5e 100644
--- a/tests/locallib_test.php
+++ b/tests/locallib_test.php
@@ -20,7 +20,7 @@
require_once(dirname(__FILE__) . '/generator/lib.php');
require_once(dirname(__FILE__) . '/../locallib.php');
-use ratingallocate\db as this_db;
+use mod_ratingallocate\db as this_db;
/**
* mod_ratingallocate generator tests
diff --git a/tests/mod_ratingallocate_allocate_unrated_test.php b/tests/mod_ratingallocate_allocate_unrated_test.php
index b74971bd..a26a1f66 100644
--- a/tests/mod_ratingallocate_allocate_unrated_test.php
+++ b/tests/mod_ratingallocate_allocate_unrated_test.php
@@ -38,6 +38,27 @@
*/
class mod_ratingallocate_allocate_unrated_test extends \advanced_testcase {
+ /** @var stdClass Course object. */
+ private stdClass $course;
+ /** @var stdClass Enrolled teacher. */
+ private stdClass $teacher;
+ /** @var stdClass Green group. */
+ private stdClass $green;
+ /** @var stdClass Blue group. */
+ private stdClass $blue;
+ /** @var stdClass Red group. */
+ private stdClass $red;
+ /** @var array Students in the green group. */
+ private array $studentsgreen = [];
+ /** @var array Students in the blue group. */
+ private array $studentsblue = [];
+ /** @var array Students in the red group. */
+ private array $studentsred = [];
+ /** @var array Students belonging to no group. */
+ private array $studentsnogroup = [];
+ /** @var object Rating allocate object. */
+ private object $ratingallocate;
+
protected function setUp(): void {
parent::setUp();
$this->resetAfterTest(true);
diff --git a/tests/mod_ratingallocate_strategy_test.php b/tests/mod_ratingallocate_strategy_test.php
index 52305f2c..8b950f86 100644
--- a/tests/mod_ratingallocate_strategy_test.php
+++ b/tests/mod_ratingallocate_strategy_test.php
@@ -32,16 +32,16 @@ class mod_ratingallocate_strategy_test extends \advanced_testcase {
*/
public function test_yes_no_validation() {
// Attribute required.
- $settings = array(\ratingallocate\strategy_yesno\strategy::MAXCROSSOUT => null);
- $strategy = new \ratingallocate\strategy_yesno\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_yesno\strategy::MAXCROSSOUT => null);
+ $strategy = new \mod_ratingallocate\strategy_yesno\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_yesno\strategy::MAXCROSSOUT => -1);
- $strategy = new \ratingallocate\strategy_yesno\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_yesno\strategy::MAXCROSSOUT => -1);
+ $strategy = new \mod_ratingallocate\strategy_yesno\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_yesno\strategy::MAXCROSSOUT => 1);
- $strategy = new \ratingallocate\strategy_yesno\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_yesno\strategy::MAXCROSSOUT => 1);
+ $strategy = new \mod_ratingallocate\strategy_yesno\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
}
@@ -50,16 +50,16 @@ public function test_yes_no_validation() {
*/
public function test_yes_maybe_no_validation() {
// Attribute required.
- $settings = array(\ratingallocate\strategy_yesmaybeno\strategy::MAXNO => null);
- $strategy = new \ratingallocate\strategy_yesmaybeno\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_yesmaybeno\strategy::MAXNO => null);
+ $strategy = new \mod_ratingallocate\strategy_yesmaybeno\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_yesmaybeno\strategy::MAXNO => -1);
- $strategy = new \ratingallocate\strategy_yesmaybeno\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_yesmaybeno\strategy::MAXNO => -1);
+ $strategy = new \mod_ratingallocate\strategy_yesmaybeno\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_yesmaybeno\strategy::MAXNO => 1);
- $strategy = new \ratingallocate\strategy_yesmaybeno\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_yesmaybeno\strategy::MAXNO => 1);
+ $strategy = new \mod_ratingallocate\strategy_yesmaybeno\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
}
@@ -68,28 +68,28 @@ public function test_yes_maybe_no_validation() {
*/
public function test_lickert_validation() {
// Attribute required.
- $settings = array(\ratingallocate\strategy_lickert\strategy::COUNTLICKERT => null);
- $strategy = new \ratingallocate\strategy_lickert\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_lickert\strategy::COUNTLICKERT => null);
+ $strategy = new \mod_ratingallocate\strategy_lickert\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute required.
- $settings = array(\ratingallocate\strategy_lickert\strategy::MAXNO => null);
- $strategy = new \ratingallocate\strategy_lickert\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_lickert\strategy::MAXNO => null);
+ $strategy = new \mod_ratingallocate\strategy_lickert\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_lickert\strategy::COUNTLICKERT => 1);
- $strategy = new \ratingallocate\strategy_lickert\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_lickert\strategy::COUNTLICKERT => 1);
+ $strategy = new \mod_ratingallocate\strategy_lickert\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_lickert\strategy::MAXNO => -1);
- $strategy = new \ratingallocate\strategy_lickert\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_lickert\strategy::MAXNO => -1);
+ $strategy = new \mod_ratingallocate\strategy_lickert\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_lickert\strategy::COUNTLICKERT => 3);
- $strategy = new \ratingallocate\strategy_lickert\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_lickert\strategy::COUNTLICKERT => 3);
+ $strategy = new \mod_ratingallocate\strategy_lickert\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_lickert\strategy::MAXNO => 1);
- $strategy = new \ratingallocate\strategy_lickert\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_lickert\strategy::MAXNO => 1);
+ $strategy = new \mod_ratingallocate\strategy_lickert\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
}
@@ -98,40 +98,40 @@ public function test_lickert_validation() {
*/
public function test_points_validation() {
// Attribute required.
- $settings = array(\ratingallocate\strategy_points\strategy::MAXZERO => null);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::MAXZERO => null);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute required.
- $settings = array(\ratingallocate\strategy_points\strategy::TOTALPOINTS => null);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::TOTALPOINTS => null);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute required.
- $settings = array(\ratingallocate\strategy_points\strategy::MAXPERCHOICE => null);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::MAXPERCHOICE => null);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_points\strategy::MAXZERO => -1);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::MAXZERO => -1);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_points\strategy::TOTALPOINTS => 0);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::TOTALPOINTS => 0);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_points\strategy::MAXPERCHOICE => 0);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::MAXPERCHOICE => 0);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_points\strategy::MAXZERO => 0);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::MAXZERO => 0);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_points\strategy::TOTALPOINTS => 1);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::TOTALPOINTS => 1);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_points\strategy::MAXPERCHOICE => 1);
- $strategy = new \ratingallocate\strategy_points\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_points\strategy::MAXPERCHOICE => 1);
+ $strategy = new \mod_ratingallocate\strategy_points\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
}
@@ -140,16 +140,16 @@ public function test_points_validation() {
*/
public function test_order_validation() {
// Attribute required.
- $settings = array(\ratingallocate\strategy_order\strategy::COUNTOPTIONS => null);
- $strategy = new \ratingallocate\strategy_order\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS => null);
+ $strategy = new \mod_ratingallocate\strategy_order\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_order\strategy::COUNTOPTIONS => 0);
- $strategy = new \ratingallocate\strategy_order\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS => 0);
+ $strategy = new \mod_ratingallocate\strategy_order\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_order\strategy::COUNTOPTIONS => 1);
- $strategy = new \ratingallocate\strategy_order\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_order\strategy::COUNTOPTIONS => 1);
+ $strategy = new \mod_ratingallocate\strategy_order\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
}
@@ -158,16 +158,16 @@ public function test_order_validation() {
*/
public function test_tickyes_validation() {
// Attribute required.
- $settings = array(\ratingallocate\strategy_tickyes\strategy::MINTICKYES => null);
- $strategy = new \ratingallocate\strategy_tickyes\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_tickyes\strategy::MINTICKYES => null);
+ $strategy = new \mod_ratingallocate\strategy_tickyes\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// Attribute minimum error.
- $settings = array(\ratingallocate\strategy_tickyes\strategy::MINTICKYES => 0);
- $strategy = new \ratingallocate\strategy_tickyes\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_tickyes\strategy::MINTICKYES => 0);
+ $strategy = new \mod_ratingallocate\strategy_tickyes\strategy($settings);
$this->assertCount(1, $strategy->validate_settings());
// No validation error.
- $settings = array(\ratingallocate\strategy_tickyes\strategy::MINTICKYES => 1);
- $strategy = new \ratingallocate\strategy_tickyes\strategy($settings);
+ $settings = array(\mod_ratingallocate\strategy_tickyes\strategy::MINTICKYES => 1);
+ $strategy = new \mod_ratingallocate\strategy_tickyes\strategy($settings);
$this->assertCount(0, $strategy->validate_settings());
}