Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 11
Línea 20... Línea 20...
20
use mod_quiz\event\group_override_deleted;
20
use mod_quiz\event\group_override_deleted;
21
use mod_quiz\event\group_override_updated;
21
use mod_quiz\event\group_override_updated;
22
use mod_quiz\event\user_override_created;
22
use mod_quiz\event\user_override_created;
23
use mod_quiz\event\user_override_deleted;
23
use mod_quiz\event\user_override_deleted;
24
use mod_quiz\event\user_override_updated;
24
use mod_quiz\event\user_override_updated;
-
 
25
use mod_quiz\quiz_settings;
Línea 25... Línea 26...
25
 
26
 
26
/**
27
/**
27
 * Manager class for quiz overrides
28
 * Manager class for quiz overrides
28
 *
29
 *
Línea 296... Línea 297...
296
        $this->delete_overrides($overrides, $shouldlog);
297
        $this->delete_overrides($overrides, $shouldlog);
297
    }
298
    }
Línea 298... Línea 299...
298
 
299
 
299
    /**
300
    /**
300
     * Deletes overrides given just their ID.
301
     * Deletes overrides given just their ID.
301
     * Note, the given IDs must exist otherwise an exception will be thrown.
302
     * Note, the given IDs must exist and user must have access to them otherwise an exception will be thrown.
302
     * Also note, capabilities are not checked, {@see require_manage_capability()}
303
     * Also note, capabilities are not checked, {@see require_manage_capability()}
303
     *
304
     *
304
     * @param array $ids IDs of overrides to delete
305
     * @param array $ids IDs of overrides to delete
305
     * @param bool $shouldlog If true, will log a override_deleted event
306
     * @param bool $shouldlog If true, will log a override_deleted event
306
     */
307
     */
307
    public function delete_overrides_by_id(array $ids, bool $shouldlog = true): void {
308
    public function delete_overrides_by_id(array $ids, bool $shouldlog = true): void {
-
 
309
        global $DB;
-
 
310
 
-
 
311
        $quizsettings = quiz_settings::create($this->quiz->id);
-
 
312
 
308
        global $DB;
313
        // Filter for those overrides user can access.
-
 
314
        [$sql, $params] = self::get_override_in_sql($this->quiz->id, $ids);
309
        [$sql, $params] = self::get_override_in_sql($this->quiz->id, $ids);
315
        $records = array_filter(
-
 
316
            $DB->get_records_select('quiz_overrides', $sql, $params, '', 'id,userid,groupid'),
-
 
317
            fn(\stdClass $override) => $this->can_view_override(
-
 
318
                $override,
-
 
319
                $quizsettings->get_course(),
-
 
320
                $quizsettings->get_cm(),
-
 
321
            ),
Línea 310... Línea 322...
310
        $records = $DB->get_records_select('quiz_overrides', $sql, $params, '', 'id,userid,groupid');
322
        );
311
 
323
 
312
        // Ensure all the given ids exist, so the user is aware if they give a dodgy id.
-
 
313
        $missingids = array_diff($ids, array_keys($records));
324
        // Ensure all the given ids exist, so the user is aware if they give a dodgy id.
314
 
325
        $missingids = array_diff($ids, array_keys($records));
315
        if (!empty($missingids)) {
326
        if (!empty($missingids)) {
Línea 316... Línea 327...
316
            throw new \invalid_parameter_exception(get_string('overridemissingdelete', 'quiz', implode(',', $missingids)));
327
            throw new \invalid_parameter_exception(get_string('overridemissingdelete', 'quiz', implode(',', $missingids)));
Línea 446... Línea 457...
446
            throw new \required_capability_exception($this->context, 'mod/quiz:viewoverrides', 'nopermissions', '');
457
            throw new \required_capability_exception($this->context, 'mod/quiz:viewoverrides', 'nopermissions', '');
447
        }
458
        }
448
    }
459
    }
Línea 449... Línea 460...
449
 
460
 
-
 
461
    /**
-
 
462
     * Determine whether user can view a given override record
-
 
463
     *
-
 
464
     * @param \stdClass $override
-
 
465
     * @param \stdClass $course
-
 
466
     * @param \cm_info $cm
-
 
467
     * @return bool
-
 
468
     */
-
 
469
    public function can_view_override(\stdClass $override, \stdClass $course, \cm_info $cm): bool {
-
 
470
        if ($override->groupid) {
-
 
471
            return groups_group_visible($override->groupid, $course, $cm);
-
 
472
        } else {
-
 
473
            return groups_user_groups_visible($course, $override->userid, $cm);
-
 
474
        }
-
 
475
    }
-
 
476
 
450
    /**
477
    /**
451
     * Builds common event data
478
     * Builds common event data
452
     *
479
     *
453
     * @param int $id override id
480
     * @param int $id override id
454
     * @return array of data to add as parameters to an event.
481
     * @return array of data to add as parameters to an event.