diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c2b127f59a..98c8f6ae880 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ Todas las modificaciones importantes del proyecto se documentarán en este archivo. +## [2.0.3] — 2026-01-18 +- 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. +- Se agrega negrilla en el titulo del bloque para mejorar la visibilidad. +- ## [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. 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))); } diff --git a/block_learning_style.php b/block_learning_style.php index 7ffdc47d1b8..f421c5bdd9e 100644 --- a/block_learning_style.php +++ b/block_learning_style.php @@ -130,10 +130,8 @@ 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); + private function can_view_dashboard($context, $userid = null) { + return has_capability('block/learning_style:viewreports', $context, $userid); } /** @@ -282,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(); @@ -295,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; 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; } diff --git a/templates/continue_test.mustache b/templates/continue_test.mustache index b546e003749..5f8129807bd 100644 --- a/templates/continue_test.mustache +++ b/templates/continue_test.mustache @@ -3,7 +3,7 @@
{{{icon}}}
-
{{#str}} pluginname, block_learning_style {{/str}}
+
{{#str}} pluginname, block_learning_style {{/str}}
{{#str}} discover_your_style, block_learning_style {{/str}} diff --git a/templates/results.mustache b/templates/results.mustache index 1ab0c6d9a7d..0145ba85d21 100644 --- a/templates/results.mustache +++ b/templates/results.mustache @@ -4,7 +4,7 @@ {{{icon}}} -
{{#str}} test_completed, block_learning_style {{/str}}
+
{{#str}} test_completed, block_learning_style {{/str}}
{{#str}} your_results_here, block_learning_style {{/str}} @@ -33,7 +33,7 @@
- {{#str}} see_full_results, block_learning_style {{/str}} + {{#str}} see_full_results, block_learning_style {{/str}}
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 @@
{{{icon}}}
-
{{#str}} pluginname, block_learning_style {{/str}}
+
{{#str}} pluginname, block_learning_style {{/str}}
{{#str}} discover_your_style, block_learning_style {{/str}} 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'; 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))); }