From a66da9df74c749d213d2303af7e98538287f204f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:17:30 -0500 Subject: [PATCH 01/13] Enforce local context for role detection Previously, the block checked for is_siteadmin() and 'moodle/course:viewhiddensections', forcing the teacher dashboard even for admins/managers acting as students. Now it strictly checks 'block/learning_style:viewreports' in the current context to respect local course roles, matching the behavior of other test blocks. --- block_learning_style.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/block_learning_style.php b/block_learning_style.php index 7ffdc47d1b8..54acf1d3030 100644 --- a/block_learning_style.php +++ b/block_learning_style.php @@ -131,9 +131,7 @@ public function get_content() { * Check if user can view dashboard */ private function can_view_dashboard($context) { - return is_siteadmin() - || has_capability('block/learning_style:viewreports', $context) - || has_capability('moodle/course:viewhiddensections', $context); + return has_capability('block/learning_style:viewreports', $context); } /** From e0012b44856200656794307cb1be406b54f78170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:19:01 -0500 Subject: [PATCH 02/13] Update CHANGELOG for version 2.0.3 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c2b127f59a..cf5c102611b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ Todas las modificaciones importantes del proyecto se documentarán en este archivo. +## [2.0.3] — 2026-01-18 +- El bloque ahora respeta el rol local del curso. Los administradores o gestores inscritos como estudiantes ahora verán la vista de estudiante (invitación al test) en lugar del dashboard de profesor. + ## [2.0.2] — 2026-01-18 - Opción para mostrar/ocultar las descripciones en el bloque principal. - Adición del gráfico radar en resultados detallados y acceso permitido a los estudiantes a esta vista. From bf2bb0e7fb00f01bbb97afa3c8747a53b2d932a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:19:39 -0500 Subject: [PATCH 03/13] Bump version to 2.0.3 in version.php --- version.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/version.php b/version.php index 116c37f0f92..5e4a6d28a1a 100644 --- a/version.php +++ b/version.php @@ -1,7 +1,7 @@ version = 2026011800; // YYYYMMDDXX (year, month, day, 2-digit version number). +$plugin->version = 2026011801; // YYYYMMDDXX (year, month, day, 2-digit version number). $plugin->requires = 2022041900; // Moodle 4.0+ $plugin->component = 'block_learning_style'; $plugin->maturity = MATURITY_STABLE; -$plugin->release = '2.0.2'; +$plugin->release = '2.0.3'; From 98e7ba1b3435f7f89d5b018e9ff87bd0600224ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:33:49 -0500 Subject: [PATCH 04/13] Refactor unauthorized user redirect logic Simplify unauthorized user checks by removing redundant site admin condition. --- admin_view.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/admin_view.php b/admin_view.php index a33e632d51d..2bc9edadb1c 100644 --- a/admin_view.php +++ b/admin_view.php @@ -33,7 +33,7 @@ } // Friendly redirect for unauthorized users -if (!has_capability('block/learning_style:viewreports', $context) && !is_siteadmin()) { +if (!has_capability('block/learning_style:viewreports', $context)) { redirect(new moodle_url('/course/view.php', array('id' => $courseid))); } @@ -53,11 +53,8 @@ if ($confirm) { // Privacy check $targetuser = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST); - if (!is_siteadmin() && ( - !is_enrolled($context, $targetuser, 'block/learning_style:take_test', true) - || has_capability('block/learning_style:viewreports', $context, $userid) - || is_siteadmin($userid) - )) { + if (!is_enrolled($context, $targetuser, 'block/learning_style:take_test', true) + || has_capability('block/learning_style:viewreports', $context, $userid)) { redirect(new moodle_url('/course/view.php', array('id' => $courseid))); } From 1b114d64e8a9fa835f09b1fe41fd481dcdc797a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:35:08 -0500 Subject: [PATCH 05/13] Enhance can_view_dashboard to include user ID parameter Updated the can_view_dashboard method to accept an optional user ID parameter, allowing capability checks for specific users. Adjusted related logic to utilize the updated method for determining teacher access and filtering student IDs. --- block_learning_style.php | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/block_learning_style.php b/block_learning_style.php index 54acf1d3030..f421c5bdd9e 100644 --- a/block_learning_style.php +++ b/block_learning_style.php @@ -130,8 +130,8 @@ public function get_content() { /** * Check if user can view dashboard */ - private function can_view_dashboard($context) { - return has_capability('block/learning_style:viewreports', $context); + private function can_view_dashboard($context, $userid = null) { + return has_capability('block/learning_style:viewreports', $context, $userid); } /** @@ -280,7 +280,7 @@ private function get_teacher_content($context) { ]; // Agregar botones al final (después del dashboard) para profesores/administradores - $is_teacher = has_capability('block/learning_style:viewreports', $context) || is_siteadmin(); + $is_teacher = $this->can_view_dashboard($context); if ($is_teacher) { $template_data['show_buttons'] = true; $template_data['admin_url'] = (new moodle_url('/blocks/learning_style/admin_view.php', array('courseid' => $COURSE->id)))->out(); @@ -293,10 +293,8 @@ private function get_teacher_content($context) { $filtered_student_ids = array(); foreach ($student_ids as $candidateid) { $candidateid = (int)$candidateid; - if (is_siteadmin($candidateid)) { - continue; - } - if (has_capability('block/learning_style:viewreports', $context, $candidateid)) { + + if ($this->can_view_dashboard($context, $candidateid)) { continue; } $filtered_student_ids[] = $candidateid; From 20e033763542ed2ee40dccb753504cca63a46ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:35:56 -0500 Subject: [PATCH 06/13] Remove siteadmin check from student ID filtering --- download_results.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/download_results.php b/download_results.php index 9baf99fa686..83a15482b65 100644 --- a/download_results.php +++ b/download_results.php @@ -44,9 +44,7 @@ function block_learning_style_csv_safe($value): string { $student_ids = array(); foreach ($enrolled_ids as $candidateid) { $candidateid = (int)$candidateid; - if (is_siteadmin($candidateid)) { - continue; - } + if (has_capability('block/learning_style:viewreports', $context, $candidateid)) { continue; } From 620069cc218a423617db42b61915aabe9d276798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:37:05 -0500 Subject: [PATCH 07/13] Simplify access checks for report viewing Refactor access checks to streamline permission validation. --- view_individual.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/view_individual.php b/view_individual.php index e8462f3e31d..86ef8f9011a 100644 --- a/view_individual.php +++ b/view_individual.php @@ -27,15 +27,14 @@ // Security: Check permissions and enrollment $is_own_results = ($USER->id == $userid); $can_view_reports = has_capability('block/learning_style:viewreports', $context); -$is_siteadmin = is_siteadmin(); // Basic access check: If not owner, not teacher, and not admin -> Kick out -if (!$is_own_results && !$can_view_reports && !$is_siteadmin) { +if (!$is_own_results && !$can_view_reports) { redirect(new moodle_url('/course/view.php', array('id' => $course->id))); } // Cross-course privacy check: If teacher (not admin/owner), ensure target user is in this course -if (!$is_own_results && !$is_siteadmin && !is_enrolled($context, $user)) { +if (!$is_own_results && !$can_view_reports && !is_enrolled($context, $user)) { redirect(new moodle_url('/course/view.php', array('id' => $course->id))); } From da7c277ed74c7e95a5394ff9fce77c5d7538e42f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 12:52:37 -0500 Subject: [PATCH 08/13] Update CHANGELOG for version 2.0.3 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf5c102611b..02da6c1b7b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ Todas las modificaciones importantes del proyecto se documentarán en este archivo. ## [2.0.3] — 2026-01-18 -- El bloque ahora respeta el rol local del curso. Los administradores o gestores inscritos como estudiantes ahora verán la vista de estudiante (invitación al test) en lugar del dashboard de profesor. +- Se eliminaron las comprobaciones redundantes de administrador (`is_siteadmin()`) en varias vistas clave, mejorando la detección correcta de roles locales (profesores vs estudiantes) y el sistema de permisos basado en capacidades. ## [2.0.2] — 2026-01-18 - Opción para mostrar/ocultar las descripciones en el bloque principal. From 8b3cfa0b421ec1a21cf95e4a70b71a6d8d608550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20David=20S=C3=A1nchez=20S=C3=A1nchez?= <158796340+IsaacDev2024@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:27:27 -0500 Subject: [PATCH 09/13] Make header text bold in test invitation template --- templates/test_invitation.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/test_invitation.mustache b/templates/test_invitation.mustache index e7431cf4a1a..5230cab7031 100644 --- a/templates/test_invitation.mustache +++ b/templates/test_invitation.mustache @@ -3,7 +3,7 @@