public GroupSearch getGroupSearch() throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay) _request.getAttribute(WebKeys.THEME_DISPLAY); Company company = themeDisplay.getCompany(); GroupSearch groupSearch = new GroupSearch(_liferayPortletRequest, getPortletURL()); GroupSearchTerms groupSearchTerms = (GroupSearchTerms) groupSearch.getSearchTerms(); List<Group> results = new ArrayList<>(); int additionalSites = 0; int total = 0; boolean includeCompany = ParamUtil.getBoolean(_request, "includeCompany"); boolean includeUserPersonalSite = ParamUtil.getBoolean(_request, "includeUserPersonalSite"); long[] classNameIds = _CLASS_NAME_IDS; if (includeCompany) { classNameIds = ArrayUtil.append(classNameIds, PortalUtil.getClassNameId(Company.class)); } if (includeUserPersonalSite) { if (groupSearch.getStart() == 0) { Group userPersonalSite = GroupLocalServiceUtil.getGroup( company.getCompanyId(), GroupConstants.USER_PERSONAL_SITE); results.add(userPersonalSite); } additionalSites++; } String type = getType(); if (type.equals("layoutScopes")) { total = GroupLocalServiceUtil.getGroupsCount( themeDisplay.getCompanyId(), Layout.class.getName(), getGroupId()); } else if (type.equals("parent-sites")) { } else { total = GroupLocalServiceUtil.searchCount( themeDisplay.getCompanyId(), classNameIds, groupSearchTerms.getKeywords(), getGroupParams()); } total += additionalSites; groupSearch.setTotal(total); int start = groupSearch.getStart(); if (groupSearch.getStart() > additionalSites) { start = groupSearch.getStart() - additionalSites; } int end = groupSearch.getEnd() - additionalSites; List<Group> groups = null; if (type.equals("layoutScopes")) { groups = GroupLocalServiceUtil.getGroups( company.getCompanyId(), Layout.class.getName(), getGroupId(), start, end); groups = _filterLayoutGroups(groups, isPrivateLayout()); } else if (type.equals("parent-sites")) { Group group = GroupLocalServiceUtil.getGroup(getGroupId()); groups = group.getAncestors(); String filter = getFilter(); if (Validator.isNotNull(filter)) { groups = _filterGroups(groups, filter); } total = groups.size(); total += additionalSites; groupSearch.setTotal(total); } else { groups = GroupLocalServiceUtil.search( company.getCompanyId(), classNameIds, groupSearchTerms.getKeywords(), getGroupParams(), start, end, groupSearch.getOrderByComparator()); } results.addAll(groups); groupSearch.setResults(results); return groupSearch; }
public GroupSearch getGroupSearch(PortletRequest portletRequest, PortletURL portletURL) throws PortalException { ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY); GroupSearch groupSearch = new GroupSearch(portletRequest, portletURL); GroupSearchTerms searchTerms = (GroupSearchTerms) groupSearch.getSearchTerms(); if (!searchTerms.isSearch()) { groupSearch.setEmptyResultsMessageCssClass("taglib-empty-result-message-header-has-plus-btn"); } else { groupSearch.setSearch(true); } long parentGroupId = getParentGroupId(portletRequest); Company company = themeDisplay.getCompany(); List results = null; if (!searchTerms.hasSearchTerms() && isFilterManageableGroups(portletRequest) && (parentGroupId <= 0)) { List<Group> groups = getAllGroups(portletRequest); groupSearch.setTotal(groups.size()); results = ListUtil.subList(groups, groupSearch.getStart(), groupSearch.getEnd()); } else if (searchTerms.hasSearchTerms()) { int total = _groupLocalService.searchCount( company.getCompanyId(), _classNameIds, searchTerms.getKeywords(), getGroupParams(portletRequest, searchTerms, parentGroupId)); groupSearch.setTotal(total); results = _groupLocalService.search( company.getCompanyId(), _classNameIds, searchTerms.getKeywords(), getGroupParams(portletRequest, searchTerms, parentGroupId), groupSearch.getStart(), groupSearch.getEnd(), groupSearch.getOrderByComparator()); } else { long groupId = ParamUtil.getLong(portletRequest, "groupId", GroupConstants.DEFAULT_PARENT_GROUP_ID); int total = _groupLocalService.searchCount( company.getCompanyId(), _classNameIds, groupId, searchTerms.getKeywords(), getGroupParams(portletRequest, searchTerms, parentGroupId)); groupSearch.setTotal(total); results = _groupLocalService.search( company.getCompanyId(), _classNameIds, groupId, searchTerms.getKeywords(), getGroupParams(portletRequest, searchTerms, parentGroupId), groupSearch.getStart(), groupSearch.getEnd(), groupSearch.getOrderByComparator()); } groupSearch.setResults(results); return groupSearch; }