diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java index 8b8ba09d66a40a1531cce927c6496ff871a39ea9..864e94fbba5672d381247ecdcc8dc403011fa461 100644 --- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java +++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java @@ -160,88 +160,6 @@ public class CoursesWebService { } } - - /** - * Get courses informations viewable by the authenticated user - * @response.representation.200.qname {http://www.example.com}courseVO - * @response.representation.200.mediaType application/xml, application/json, application/json;pagingspec=1.0 - * @response.representation.200.doc List of visible courses - * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_COURSEVOes} - * @param start - * @param limit - * @param httpRequest The HTTP request - * @param request The REST request - * @return - */ - @GET - @Path("infos") - @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) - public Response getCourseInfoList(@QueryParam("start") @DefaultValue("0") Integer start, - @QueryParam("limit") @DefaultValue("25") Integer limit, @Context HttpServletRequest httpRequest, - @Context Request request) { - RepositoryManager rm = RepositoryManager.getInstance(); - - //fxdiff VCRP-1,2: access control of resources - Roles roles = getRoles(httpRequest); - Identity identity = getIdentity(httpRequest); - SearchRepositoryEntryParameters params = new SearchRepositoryEntryParameters(identity, roles, CourseModule.getCourseTypeName()); - if(MediaTypeVariants.isPaged(httpRequest, request)) { - int totalCount = rm.countGenericANDQueryWithRolesRestriction(params, true); - List<RepositoryEntry> repoEntries = rm.genericANDQueryWithRolesRestriction(params, start, limit, true); - List<CourseInfoVO> infos = new ArrayList<CourseInfoVO>(); - - for(RepositoryEntry entry:repoEntries) { - CourseInfoVO info = collect(identity, roles, entry); - if(info != null) { - infos.add(info); - } - } - - CourseInfoVO[] vos = infos.toArray(new CourseInfoVO[infos.size()]); - CourseInfoVOes voes = new CourseInfoVOes(); - voes.setInfos(vos); - voes.setTotalCount(totalCount); - return Response.ok(voes).build(); - } else { - return Response.serverError().status(Status.FORBIDDEN).build(); - } - } - - private CourseInfoVO collect(Identity identity, Roles roles, RepositoryEntry entry) { - CourseInfoVO info = new CourseInfoVO(); - info.setRepoEntryKey(entry.getKey()); - info.setSoftKey(entry.getSoftkey()); - info.setDisplayName(entry.getDisplayname()); - - ACFrontendManager acManager = (ACFrontendManager)CoreSpringFactory.getBean("acFrontendManager"); - AccessResult result = acManager.isAccessible(entry, identity, false); - if(result.isAccessible()) { - final ICourse course = CourseFactory.loadCourse(entry.getOlatResource()); - final List<FolderVO> folders = new ArrayList<FolderVO>(); - final List<ForumVO> forums = new ArrayList<ForumVO>(); - final IdentityEnvironment ienv = new IdentityEnvironment(identity, roles); - - new CourseTreeVisitor(course, ienv).visit(new Visitor() { - @Override - public void visit(INode node) { - if(node instanceof BCCourseNode) { - BCCourseNode bcNode = (BCCourseNode)node; - folders.add(BCWebService.createFolderVO(ienv, course, bcNode, false)); - } else if (node instanceof FOCourseNode) { - FOCourseNode forumNode = (FOCourseNode)node; - forums.add(ForumCourseNodeWebService.createForumVO(course, forumNode, null)); - } - } - }); - - info.setKey(course.getResourceableId()); - info.setTitle(course.getCourseTitle()); - info.setFolders(folders.toArray(new FolderVO[folders.size()])); - info.setForums(forums.toArray(new ForumVO[forums.size()])); - } - return info; - } - private CourseVO[] toCourseVo(List<RepositoryEntry> repoEntries) { List<CourseVO> voList = new ArrayList<CourseVO>();