public LayoutSet updateVirtualHost(long groupId, boolean privateLayout, String virtualHost)
      throws PortalException, SystemException {

    GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.UPDATE);

    return layoutSetLocalService.updateVirtualHost(groupId, privateLayout, virtualHost);
  }
  /**
   * Updates the group's friendly URL.
   *
   * @param groupId the primary key of the group
   * @param friendlyURL the group's new friendlyURL (optionally <code>null</code>)
   * @return the group
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public Group updateFriendlyURL(long groupId, String friendlyURL) throws PortalException {

    GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.UPDATE);

    return groupLocalService.updateFriendlyURL(groupId, friendlyURL);
  }
  /**
   * Updates the group's type settings.
   *
   * @param groupId the primary key of the group
   * @param typeSettings the group's new type settings (optionally <code>null</code>)
   * @return the group
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public Group updateGroup(long groupId, String typeSettings) throws PortalException {

    Group group = groupPersistence.findByPrimaryKey(groupId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.UPDATE);

    if (group.isSite()) {
      Group oldGroup = group;

      UnicodeProperties oldTypeSettingsProperties = oldGroup.getTypeSettingsProperties();

      group = groupLocalService.updateGroup(groupId, typeSettings);

      RatingsDataTransformerUtil.transformGroupRatingsData(
          groupId, oldTypeSettingsProperties, group.getTypeSettingsProperties());

      SiteMembershipPolicyUtil.verifyPolicy(
          group, oldGroup, null, null, null, oldTypeSettingsProperties);

      return group;
    } else {
      return groupLocalService.updateGroup(groupId, typeSettings);
    }
  }
  public void updateLogo(long groupId, boolean privateLayout, boolean logo, InputStream inputStream)
      throws PortalException, SystemException {

    GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.UPDATE);

    layoutSetLocalService.updateLogo(groupId, privateLayout, logo, inputStream);
  }
  /**
   * Returns the group with the primary key.
   *
   * @param groupId the primary key of the group
   * @return the group with the primary key
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public Group getGroup(long groupId) throws PortalException {
    Group group = groupLocalService.getGroup(groupId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.VIEW);

    return group;
  }
  @Override
  public void enableStaging(long groupId) throws PortalException {
    Group group = groupLocalService.getGroup(groupId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.UPDATE);

    groupLocalService.enableStaging(groupId);
  }
  /**
   * Returns the group's display URL.
   *
   * @param groupId the primary key of the group
   * @param privateLayout whether the layout set is private to the group
   * @param secureConnection whether the generated URL uses a secure connection
   * @return the group's display URL
   * @throws PortalException if a group with the primary key could not be found or if a portal
   *     exception occurred
   */
  @Override
  public String getGroupDisplayURL(long groupId, boolean privateLayout, boolean secureConnection)
      throws PortalException {

    Group group = groupLocalService.getGroup(groupId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.VIEW);

    if (!privateLayout && (group.getPublicLayoutsPageCount() > 0)) {
      return PortalUtil.getLayoutSetDisplayURL(group.getPublicLayoutSet(), secureConnection);
    } else if (privateLayout && (group.getPrivateLayoutsPageCount() > 0)) {
      return PortalUtil.getLayoutSetDisplayURL(group.getPrivateLayoutSet(), secureConnection);
    }

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.UPDATE);

    return PortalUtil.getControlPanelFullURL(groupId, PortletKeys.LAYOUTS_ADMIN, null);
  }
  /**
   * Returns the group directly associated with the user.
   *
   * @param companyId the primary key of the company
   * @param userId the primary key of the user
   * @return the group directly associated with the user
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public Group getUserGroup(long companyId, long userId) throws PortalException {

    Group group = groupLocalService.getUserGroup(companyId, userId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.VIEW);

    return group;
  }
  /**
   * Returns <code>true</code> if the user is associated with the group, including the user's
   * inherited organizations and user groups. System and staged groups are not included.
   *
   * @param userId the primary key of the user
   * @param groupId the primary key of the group
   * @return <code>true</code> if the user is associated with the group; <code>false</code>
   *     otherwise
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public boolean hasUserGroup(long userId, long groupId) throws PortalException {

    try {
      UserPermissionUtil.check(getPermissionChecker(), userId, ActionKeys.VIEW);
    } catch (PrincipalException pe) {
      GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.VIEW_MEMBERS);
    }

    return groupLocalService.hasUserGroup(userId, groupId);
  }
  protected List<Group> filterGroups(List<Group> groups) throws PortalException {

    List<Group> filteredGroups = new ArrayList<>();

    for (Group group : groups) {
      if (GroupPermissionUtil.contains(getPermissionChecker(), group, ActionKeys.VIEW)) {

        filteredGroups.add(group);
      }
    }

    return filteredGroups;
  }
  @Override
  public boolean isScopeIdSelectable(
      PermissionChecker permissionChecker, String scopeId, long companyGroupId, Layout layout)
      throws PortalException, SystemException {

    long groupId = getGroupIdFromScopeId(scopeId, layout.getGroupId(), layout.isPrivateLayout());

    if (scopeId.startsWith(SCOPE_ID_CHILD_GROUP_PREFIX)) {
      Group group = GroupLocalServiceUtil.getGroup(groupId);

      if (!group.hasAncestor(layout.getGroupId())) {
        return false;
      }
    } else if (scopeId.startsWith(SCOPE_ID_PARENT_GROUP_PREFIX)) {
      Group siteGroup = layout.getGroup();

      if (!siteGroup.hasAncestor(groupId)) {
        return false;
      }

      if (SitesUtil.isContentSharingWithChildrenEnabled(siteGroup)) {
        return true;
      }

      if (!PrefsPropsUtil.getBoolean(
          layout.getCompanyId(), PropsKeys.SITES_CONTENT_SHARING_THROUGH_ADMINISTRATORS_ENABLED)) {

        return false;
      }

      return GroupPermissionUtil.contains(permissionChecker, groupId, ActionKeys.UPDATE);
    } else if (groupId != companyGroupId) {
      return GroupPermissionUtil.contains(permissionChecker, groupId, ActionKeys.UPDATE);
    }

    return true;
  }
  public LayoutSet updateLookAndFeel(
      long groupId,
      boolean privateLayout,
      String themeId,
      String colorSchemeId,
      String css,
      boolean wapTheme)
      throws PortalException, SystemException {

    GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.UPDATE);

    pluginSettingLocalService.checkPermission(getUserId(), themeId, Plugin.TYPE_THEME);

    return layoutSetLocalService.updateLookAndFeel(
        groupId, privateLayout, themeId, colorSchemeId, css, wapTheme);
  }
  public void deleteArchivedPreferences(long portletItemId)
      throws PortalException, SystemException {

    PortletItem portletItem = portletItemLocalService.getPortletItem(portletItemId);

    GroupPermissionUtil.check(
        getPermissionChecker(), portletItem.getGroupId(), ActionKeys.MANAGE_ARCHIVED_SETUPS);

    long ownerId = portletItemId;
    int ownerType = PortletKeys.PREFS_OWNER_TYPE_ARCHIVED;
    long plid = 0;
    String portletId = portletItem.getPortletId();

    portletPreferencesLocalService.deletePortletPreferences(ownerId, ownerType, plid, portletId);

    portletItemLocalService.deletePortletItem(portletItemId);
  }
  @Override
  public void updateStagedPortlets(long groupId, Map<String, String> stagedPortletIds)
      throws PortalException {

    Group group = groupPersistence.findByPrimaryKey(groupId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.UPDATE);

    UnicodeProperties typeSettingsProperties = group.getTypeSettingsProperties();

    for (String stagedPortletId : stagedPortletIds.keySet()) {
      typeSettingsProperties.setProperty(
          StagingUtil.getStagedPortletId(stagedPortletId), stagedPortletIds.get(stagedPortletId));
    }

    groupLocalService.updateGroup(group);
  }
  @Override
  public Group addGroup(
      long parentGroupId,
      long liveGroupId,
      Map<Locale, String> nameMap,
      Map<Locale, String> descriptionMap,
      int type,
      boolean manualMembership,
      int membershipRestriction,
      String friendlyURL,
      boolean site,
      boolean inheritContent,
      boolean active,
      ServiceContext serviceContext)
      throws PortalException {

    if (parentGroupId == GroupConstants.DEFAULT_PARENT_GROUP_ID) {
      PortalPermissionUtil.check(getPermissionChecker(), ActionKeys.ADD_COMMUNITY);
    } else {
      GroupPermissionUtil.check(getPermissionChecker(), parentGroupId, ActionKeys.ADD_COMMUNITY);
    }

    Group group =
        groupLocalService.addGroup(
            getUserId(),
            parentGroupId,
            null,
            0,
            liveGroupId,
            nameMap,
            descriptionMap,
            type,
            manualMembership,
            membershipRestriction,
            friendlyURL,
            site,
            inheritContent,
            active,
            serviceContext);

    if (site) {
      SiteMembershipPolicyUtil.verifyPolicy(group);
    }

    return group;
  }
  public void restoreArchivedPreferences(
      long groupId, String name, String portletId, javax.portlet.PortletPreferences preferences)
      throws PortalException, SystemException {

    GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.MANAGE_ARCHIVED_SETUPS);

    PortletItem portletItem =
        portletItemLocalService.getPortletItem(
            groupId, name, portletId, PortletPreferences.class.getName());

    long ownerId = portletItem.getPortletItemId();
    int ownerType = PortletKeys.PREFS_OWNER_TYPE_ARCHIVED;
    long plid = 0;

    javax.portlet.PortletPreferences archivedPrefs =
        portletPreferencesLocalService.getPreferences(
            portletItem.getCompanyId(), ownerId, ownerType, plid, portletId);

    copyPreferences(archivedPrefs, preferences);
  }
  protected Organization updateOrganization(ActionRequest actionRequest) throws Exception {

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    long organizationId = ParamUtil.getLong(actionRequest, "organizationId");

    long parentOrganizationId =
        ParamUtil.getLong(
            actionRequest,
            "parentOrganizationSearchContainerPrimaryKeys",
            OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID);
    String name = ParamUtil.getString(actionRequest, "name");
    int statusId = ParamUtil.getInteger(actionRequest, "statusId");
    String type = ParamUtil.getString(actionRequest, "type");
    long regionId = ParamUtil.getLong(actionRequest, "regionId");
    long countryId = ParamUtil.getLong(actionRequest, "countryId");
    String comments = ParamUtil.getString(actionRequest, "comments");
    boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");

    byte[] logoBytes = null;

    long fileEntryId = ParamUtil.getLong(actionRequest, "fileEntryId");

    if (fileEntryId > 0) {
      FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(fileEntryId);

      logoBytes = FileUtil.getBytes(fileEntry.getContentStream());
    }

    boolean site = ParamUtil.getBoolean(actionRequest, "site");
    List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
    List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(actionRequest);
    List<OrgLabor> orgLabors = UsersAdminUtil.getOrgLabors(actionRequest);
    List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
    List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);

    ServiceContext serviceContext =
        ServiceContextFactory.getInstance(Organization.class.getName(), actionRequest);

    Organization organization = null;

    if (organizationId <= 0) {

      // Add organization

      organization =
          OrganizationServiceUtil.addOrganization(
              parentOrganizationId,
              name,
              type,
              regionId,
              countryId,
              statusId,
              comments,
              site,
              addresses,
              emailAddresses,
              orgLabors,
              phones,
              websites,
              serviceContext);
    } else {

      // Update organization

      organization =
          OrganizationServiceUtil.updateOrganization(
              organizationId,
              parentOrganizationId,
              name,
              type,
              regionId,
              countryId,
              statusId,
              comments,
              !deleteLogo,
              logoBytes,
              site,
              addresses,
              emailAddresses,
              orgLabors,
              phones,
              websites,
              serviceContext);
    }

    // Layout set prototypes

    long publicLayoutSetPrototypeId =
        ParamUtil.getLong(actionRequest, "publicLayoutSetPrototypeId");
    long privateLayoutSetPrototypeId =
        ParamUtil.getLong(actionRequest, "privateLayoutSetPrototypeId");
    boolean publicLayoutSetPrototypeLinkEnabled =
        ParamUtil.getBoolean(
            actionRequest, "publicLayoutSetPrototypeLinkEnabled", (publicLayoutSetPrototypeId > 0));
    boolean privateLayoutSetPrototypeLinkEnabled =
        ParamUtil.getBoolean(
            actionRequest,
            "privateLayoutSetPrototypeLinkEnabled",
            (privateLayoutSetPrototypeId > 0));

    Group organizationGroup = organization.getGroup();

    if (GroupPermissionUtil.contains(
        themeDisplay.getPermissionChecker(), organizationGroup, ActionKeys.UPDATE)) {

      SitesUtil.updateLayoutSetPrototypesLinks(
          organizationGroup,
          publicLayoutSetPrototypeId,
          privateLayoutSetPrototypeId,
          publicLayoutSetPrototypeLinkEnabled,
          privateLayoutSetPrototypeLinkEnabled);
    }

    // Reminder queries

    String reminderQueries = actionRequest.getParameter("reminderQueries");

    PortletPreferences portletPreferences = organization.getPreferences();

    LocalizationUtil.setLocalizedPreferencesValues(
        actionRequest, portletPreferences, "reminderQueries");

    portletPreferences.setValue("reminderQueries", reminderQueries);

    portletPreferences.store();

    return organization;
  }
  @Override
  public Group updateGroup(
      long groupId,
      long parentGroupId,
      Map<Locale, String> nameMap,
      Map<Locale, String> descriptionMap,
      int type,
      boolean manualMembership,
      int membershipRestriction,
      String friendlyURL,
      boolean inheritContent,
      boolean active,
      ServiceContext serviceContext)
      throws PortalException {

    Group group = groupPersistence.findByPrimaryKey(groupId);

    GroupPermissionUtil.check(getPermissionChecker(), group, ActionKeys.UPDATE);

    if (group.getParentGroupId() != parentGroupId) {
      if (parentGroupId == GroupConstants.DEFAULT_PARENT_GROUP_ID) {
        PortalPermissionUtil.check(getPermissionChecker(), ActionKeys.ADD_COMMUNITY);
      } else {
        GroupPermissionUtil.check(getPermissionChecker(), parentGroupId, ActionKeys.ADD_COMMUNITY);
      }
    }

    if (group.isSite()) {
      Group oldGroup = group;

      List<AssetCategory> oldAssetCategories =
          assetCategoryLocalService.getCategories(Group.class.getName(), groupId);

      List<AssetTag> oldAssetTags = assetTagLocalService.getTags(Group.class.getName(), groupId);

      ExpandoBridge oldExpandoBridge = oldGroup.getExpandoBridge();

      Map<String, Serializable> oldExpandoAttributes = oldExpandoBridge.getAttributes();

      group =
          groupLocalService.updateGroup(
              groupId,
              parentGroupId,
              nameMap,
              descriptionMap,
              type,
              manualMembership,
              membershipRestriction,
              friendlyURL,
              inheritContent,
              active,
              serviceContext);

      SiteMembershipPolicyUtil.verifyPolicy(
          group, oldGroup, oldAssetCategories, oldAssetTags, oldExpandoAttributes, null);

      return group;
    } else {
      return groupLocalService.updateGroup(
          groupId,
          parentGroupId,
          nameMap,
          descriptionMap,
          type,
          manualMembership,
          membershipRestriction,
          friendlyURL,
          inheritContent,
          active,
          serviceContext);
    }
  }
  /**
   * Deletes the group.
   *
   * <p>The group is unstaged and its assets and resources including layouts, membership requests,
   * subscriptions, teams, blogs, bookmarks, calendar events, image gallery, journals, message
   * boards, polls, shopping related entities, and wikis are also deleted.
   *
   * @param groupId the primary key of the group
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public void deleteGroup(long groupId) throws PortalException {
    GroupPermissionUtil.check(getPermissionChecker(), groupId, ActionKeys.DELETE);

    groupLocalService.deleteGroup(groupId);
  }
Example #20
0
  public static void getRole(HttpServletRequest request) throws Exception {
    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();

    long roleId = ParamUtil.getLong(request, "roleId");

    Role role = null;

    Group group = (Group) request.getAttribute(WebKeys.GROUP);

    if ((group != null) && group.isOrganization()) {
      long organizationId = group.getOrganizationId();

      while (organizationId != OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID) {

        Organization organization = OrganizationLocalServiceUtil.getOrganization(organizationId);

        long organizationGroupId = organization.getGroupId();

        if (GroupPermissionUtil.contains(
                permissionChecker, organizationGroupId, ActionKeys.ASSIGN_USER_ROLES)
            || OrganizationPermissionUtil.contains(
                permissionChecker, organizationId, ActionKeys.ASSIGN_USER_ROLES)
            || UserGroupRoleLocalServiceUtil.hasUserGroupRole(
                themeDisplay.getUserId(),
                organizationGroupId,
                RoleConstants.ORGANIZATION_ADMINISTRATOR,
                true)
            || UserGroupRoleLocalServiceUtil.hasUserGroupRole(
                themeDisplay.getUserId(),
                organizationGroupId,
                RoleConstants.ORGANIZATION_OWNER,
                true)) {

          if (roleId > 0) {
            role = RoleLocalServiceUtil.getRole(roleId);
          }

          break;
        }

        organizationId = organization.getParentOrganizationId();
      }

      if ((roleId > 0) && (role == null)) {
        role = RoleServiceUtil.getRole(roleId);
      }
    } else if ((group != null) && group.isRegularSite()) {
      if (GroupPermissionUtil.contains(permissionChecker, group, ActionKeys.ASSIGN_USER_ROLES)
          || UserGroupRoleLocalServiceUtil.hasUserGroupRole(
              themeDisplay.getUserId(), group.getGroupId(), RoleConstants.SITE_ADMINISTRATOR, true)
          || UserGroupRoleLocalServiceUtil.hasUserGroupRole(
              themeDisplay.getUserId(), group.getGroupId(), RoleConstants.SITE_OWNER, true)) {

        if (roleId > 0) {
          role = RoleLocalServiceUtil.getRole(roleId);
        }
      } else {
        if (roleId > 0) {
          role = RoleServiceUtil.getRole(roleId);
        }
      }
    } else {
      if (roleId > 0) {
        role = RoleServiceUtil.getRole(roleId);
      }
    }

    request.setAttribute(WebKeys.ROLE, role);
  }
  @Override
  protected boolean hasPermissionImplicitlyGranted(
      PermissionChecker permissionChecker, Group group, Portlet portlet) throws Exception {

    return GroupPermissionUtil.contains(permissionChecker, group, ActionKeys.MANAGE_LAYOUTS);
  }
  /**
   * Returns the user's groups &quot;sites&quot; associated with the group entity class names,
   * including the Control Panel group if the user is permitted to view the Control Panel.
   *
   * <ul>
   *   <li>Class name &quot;User&quot; includes the user's layout set group.
   *   <li>Class name &quot;Organization&quot; includes the user's immediate organization groups and
   *       inherited organization groups.
   *   <li>Class name &quot;Group&quot; includes the user's immediate organization groups and site
   *       groups.
   *   <li>A <code>classNames</code> value of <code>null</code> includes the user's layout set
   *       group, organization groups, inherited organization groups, and site groups.
   * </ul>
   *
   * @param userId the primary key of the user
   * @param classNames the group entity class names (optionally <code>null</code>). For more
   *     information see {@link #getUserSitesGroups(long, String[], int)}.
   * @param max the maximum number of groups to return
   * @return the user's groups &quot;sites&quot;
   * @throws PortalException if a portal exception occurred
   */
  @Override
  public List<Group> getUserSitesGroups(long userId, String[] classNames, int max)
      throws PortalException {

    User user = userPersistence.findByPrimaryKey(userId);

    if (user.isDefaultUser()) {
      return Collections.emptyList();
    }

    Set<Group> userSiteGroups = new LinkedHashSet<>();

    if (classNames == null) {
      classNames =
          new String[] {
            Company.class.getName(), Group.class.getName(),
            Organization.class.getName(), User.class.getName()
          };
    }

    if (ArrayUtil.contains(classNames, User.class.getName())) {
      if (PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_ENABLED
          || PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_ENABLED) {

        userSiteGroups.add(user.getGroup());

        if (userSiteGroups.size() == max) {
          return new ArrayList<>(userSiteGroups);
        }
      }
    }

    if (ArrayUtil.contains(classNames, Company.class.getName())) {
      Group companyGroup = groupLocalService.getCompanyGroup(user.getCompanyId());

      if (GroupPermissionUtil.contains(
          getPermissionChecker(), companyGroup, ActionKeys.VIEW_SITE_ADMINISTRATION)) {

        userSiteGroups.add(companyGroup);

        if (userSiteGroups.size() == max) {
          return new ArrayList<>(userSiteGroups);
        }
      }
    }

    if (ArrayUtil.contains(classNames, Group.class.getName())
        || ArrayUtil.contains(classNames, Organization.class.getName())) {

      UserBag userBag = UserBagFactoryUtil.create(userId);

      if (ArrayUtil.contains(classNames, Group.class.getName())) {
        for (Group group : userBag.getUserGroups()) {
          if (group.isActive() && group.isSite()) {
            if (userSiteGroups.add(group) && (userSiteGroups.size() == max)) {

              return new ArrayList<>(userSiteGroups);
            }
          }
        }
      }

      if (ArrayUtil.contains(classNames, Organization.class.getName())) {
        for (Group group : userBag.getUserOrgGroups()) {
          if (group.isActive() && group.isSite()) {
            if (userSiteGroups.add(group) && (userSiteGroups.size() == max)) {

              return new ArrayList<>(userSiteGroups);
            }
          }
        }
      }
    }

    return new ArrayList<>(userSiteGroups);
  }