public static JSONObject getJSONRecipients( long userId, String type, String keywords, int start, int end) throws PortalException { JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); User user = UserLocalServiceUtil.getUser(userId); LinkedHashMap<String, Object> params = new LinkedHashMap<String, Object>(); if (type.equals("site")) { params.put("inherit", Boolean.TRUE); LinkedHashMap<String, Object> groupParams = new LinkedHashMap<String, Object>(); groupParams.put("inherit", Boolean.FALSE); groupParams.put("site", Boolean.TRUE); groupParams.put("usersGroups", userId); List<Group> groups = GroupLocalServiceUtil.search( user.getCompanyId(), groupParams, QueryUtil.ALL_POS, QueryUtil.ALL_POS); params.put( "usersGroups", SitesUtil.filterGroups(groups, PortletPropsValues.AUTOCOMPLETE_RECIPIENT_SITE_EXCLUDES)); } else if (!type.equals("all")) { params.put( "socialRelationType", new Long[] {userId, new Long(SocialRelationConstants.TYPE_BI_CONNECTION)}); } try { Role role = RoleLocalServiceUtil.getRole(user.getCompanyId(), RoleConstants.SOCIAL_OFFICE_USER); if (role != null) { params.put("inherit", Boolean.TRUE); params.put("usersRoles", new Long(role.getRoleId())); } } catch (NoSuchRoleException nsre) { } List<User> users = new ArrayList<User>(); if (_USERS_INDEXER_ENABLED && _USERS_SEARCH_WITH_INDEX) { Sort sort = SortFactoryUtil.getSort(User.class, "firstName", "asc"); BaseModelSearchResult<User> baseModelSearchResult = UserLocalServiceUtil.searchUsers( user.getCompanyId(), keywords, keywords, keywords, keywords, keywords, WorkflowConstants.STATUS_APPROVED, params, false, start, end, sort); jsonObject.put("total", baseModelSearchResult.getLength()); users = baseModelSearchResult.getBaseModels(); } else { int total = UserLocalServiceUtil.searchCount( user.getCompanyId(), keywords, WorkflowConstants.STATUS_APPROVED, params); jsonObject.put("total", total); users = UserLocalServiceUtil.search( user.getCompanyId(), keywords, WorkflowConstants.STATUS_APPROVED, params, start, end, new UserFirstNameComparator(true)); } JSONArray jsonArray = JSONFactoryUtil.createJSONArray(); for (User curUser : users) { JSONObject userJSONObject = JSONFactoryUtil.createJSONObject(); StringBundler sb = new StringBundler(5); sb.append(curUser.getFullName()); sb.append(CharPool.SPACE); sb.append(CharPool.LESS_THAN); sb.append(curUser.getScreenName()); sb.append(CharPool.GREATER_THAN); userJSONObject.put("name", sb.toString()); jsonArray.put(userJSONObject); } jsonObject.put("users", jsonArray); return jsonObject; }