/*
* Copyright (C) 2005-2012 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see
* This service API is designed to support the public facing Site APIs
*
* @author Roy Wetherall
*/
@AlfrescoPublicApi
public interface SiteService
{
static String DOCUMENT_LIBRARY = "documentLibrary";
public enum SortFields { LastName, FirstName, Role, SiteShortName, SiteTitle, Username };
public interface SiteMembersCallback
{
/*
* A site member along with his/her Site permission
*/
public void siteMember(String authority, String permission);
/**
* Return true to break out of the loop early.
* @return
*/
public boolean isDone();
}
/**
* Create a new site.
*
* @param sitePreset site preset name
* @param shortName site short name, must be unique
* @param title site title
* @param description site description
* @param isPublic whether the site is public or not (true = public, false = private)
* @return SiteInfo information about the created site
* @deprecated since version 3.2, replaced by {@link #createSite(String, String, String, String, SiteVisibility)}
*/
@Auditable(parameters = {"sitePreset", "shortName"})
SiteInfo createSite(String sitePreset, String shortName, String title, String description, boolean isPublic);
/**
* Can the current user add the authority "authorityName" to the site "shortName" with role "role"?
*
* @param shortName site short name, must be unique
* @param authorityName authority to add
* @param role site role
*
* @return true if the current user can add the authority to the site, false otherwise
*/
@NotAuditable
boolean canAddMember(String shortName, String authorityName, String role);
/**
* Create a new site.
*
* @param sitePreset site preset name
* @param shortName site short name, must be unique
* @param title site title
* @param description site description
* @param visibility site visibility (public|moderated|private)
* @return SiteInfo information about the created site
*/
@Auditable(parameters = {"sitePreset", "shortName"})
SiteInfo createSite(String sitePreset, String shortName, String title, String description, SiteVisibility visibility);
/**
* Create a new site.
*
* @param sitePreset site preset name
* @param shortName site short name, must be unique
* @param title site title
* @param description site description
* @param visibility site visibility (public|moderated|private)
* @param siteType type of site to create, must be a sub-type of st:site
* @return SiteInfo information about the created site
*/
@Auditable(parameters = {"sitePreset", "shortName"})
SiteInfo createSite(String sitePreset, String shortName, String title, String description, SiteVisibility visibility, QName siteType);
/**
* This method checks if the currently authenticated user has permission to create sites.
*
* @return true
if current user can create sites, else false
.
* @since 3.4
*/
@NotAuditable
boolean hasCreateSitePermissions();
/**
* This method will find all {@link SiteInfo sites} available to the currently authenticated user based on
* the specified site filter, site preset filter and result set size.
* The filter parameter will match any sites whose {@link ContentModel#PROP_NAME cm:name}, {@link ContentModel#PROP_TITLE cm:title}
* or {@link ContentModel#PROP_DESCRIPTION cm:description} contain the specified string (ignoring case).
*
* Returns null if the site can not be found.
*
* @param shortName the site short name
* @return SiteInfo the site information
*/
@NotAuditable
SiteInfo getSite(String shortName);
/**
* This method gets the {@link SiteInfo} for the Share Site which contains the given NodeRef.
* If the given NodeRef is not contained within a Share Site, then null
is returned.
*
* @param nodeRef the node whose containing site's info is to be found.
* @return SiteInfo site information for the containing site or null
if node is not in a site.
*/
@NotAuditable
SiteInfo getSite(NodeRef nodeRef);
/**
* This method gets the shortName for the Share Site which contains the given NodeRef.
* If the given NodeRef is not contained within a Share Site, then null
is returned.
*
* @param nodeRef the node whose containing site's info is to be found.
* @return String site short name for the containing site or null
if node is not in a site.
*/
@NotAuditable
String getSiteShortName(NodeRef nodeRef);
/**
* Returns true if the site exists. This allows create scripts to confirm the existence of private sites - they
* would not normally be returned from getSite() if the user does not have permission on the site noderef.
*
* @param shortName the site short name
* @return true if the site exists, false otherwise
*/
@NotAuditable
boolean hasSite(String shortName);
/**
* Update the site information.
*
* Note that the short name and site preset of a site can not be updated once the site has been created. * * @param siteInfo site information */ @Auditable void updateSite(SiteInfo siteInfo); /** * Delete the site. * * @param shortName site short name */ @Auditable(parameters = {"shortName"}) void deleteSite(String shortName); /** * List the members of the site. This includes both users and groups. *
* Name and role filters are optional and if not specified all the members of the site are returned. * * @param shortName site short name * @param nameFilter name filter * @param roleFilter role filter * @param collapseGroups true if collapse member groups into user list, false otherwise * @param callback callback */ @NotAuditable void listMembers(String shortName, final String nameFilter, final String roleFilter, boolean collapseGroups, SiteMembersCallback callback); /** * List the members of the site. This includes both users and groups. *
* Name and role filters are optional and if not specified all the members of the site are returned.
*
* @param shortName site short name
* @param nameFilter name filter
* @param roleFilter role filter
* @param size max results size crop if >0
* @return Map
* If no container type is specified then a node of type st:siteContainer is created.
*
* The map of container properties are set on the created container node. Null can be provided when no properties
* need to be set.
*
* @param shortName site short name
* @param componentId component id
* @param containerType container type to create (can be null)
* @param containerProperties container property values (can be null)
* @return noderef of container or null if a container can't be created.
*/
@NotAuditable
NodeRef createContainer(String shortName, String componentId, QName containerType, Map
* Note: The super/repo admin is considered to be a site administrator too.
*
* @param userName The user name
* @return true if the specified user is a 'site administrator', false otherwise
*/
@NotAuditable
boolean isSiteAdmin(String userName);
}