range_id); foreach ($exercise->tests as $test) { foreach ($test->assignments as $assignment) { if ($assignment->checkEditPermission($user_id) || $assignment->checkViewPermission($user_id) && ($assignment->checkAccess($user_id) || $assignment->releaseStatus($user_id) >= 3)) { return true; } } } return false; } public function isWritable(string $user_id): bool { $exercise = Exercise::find($this->range_id); foreach ($exercise->tests as $test) { foreach ($test->assignments as $assignment) { if ($assignment->checkEditPermission($user_id)) { return true; } } } return false; } public function isEditable(string $user_id): bool { return false; } public function isSubfolderAllowed(string $user_id): bool { return false; } public function isFileDownloadable(FileRef $file_ref, string $user_id): bool { return $this->isReadable($user_id); } public function isFileEditable(FileRef $file_ref, string $user_id): bool { return $this->isWritable($user_id); } public function isFileWritable(FileRef $file_ref, string $user_id): bool { return $this->isWritable($user_id); } }