mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	28236: ALF-8810: Removed trailing space from discussion.discussion_for Italian translation
   28241: Incremented version revision for 3.4.4
   28284: ALF-835 - WCM/AVM: copy (empty) folder into itself
   28285: ALF-6863: More than one cifs device breaks the web UI (explorer)
   28290: ALF-8840: user-*.atomentry.ftl
   28291: ALF-6863: Continuation of fix by Arseny
   28336: ALF-8768: Fixed typo in comment on wcm-bootstrap-context.xml
   28363: Merged DEV to V3.4-BUG-FIX
      28262: ALF-8847: WCM: OrphanReaper contention throws error after 39 retries.
             Checkin Comment:
                Use JobLockService to make sure that only one OrphanReaper job is working.
                Generate list of nodes that must be processed in OrphanReaper.doBatch() transaction. 
   28386: ALF-9100: Merged PATCHES/V3.4.1 to V3.4-BUG-FIX
      28249: ALF-8946: Avoid one full table scan per batch in full reindex
         - Now each batch scans a single time sample, dynamically adjusted based on the number of transactions
		   in the previous sample, always aiming for 1000 transactions per sample.
   28394: Fixed ALF-9090: NPE during inter-cluster subsystem messaging
    - Bean ID is a List<String> and might not be recognized on receiving machine
    - Log warning when bean ID is not available (unsymmetrical configuration, perhaps?)
   28396: Merged DEV to V3.4-BUG-FIX
      28384: ALF-6150: Initial state lost when non-versionable document is saved for the first time
             Creation of new version of document before writing its content was added to
             - AbstractAlfrescoMethodHandler->putDocument (this method is used by Office 2003, 2007)
             - VtiIfHeaderAction->doPut (this method is used by Office 2007 and 2010 on Windows 7)
               Creation of new version was added twice to AbstractAlfrescoMethodHandler to avoid affecting
               initial version when transaction is committed. 
   28432: Merged DEV to V3.4-BUG-FIX
      28431: ALF-8530: Pressing the info icon creates an unrecorded file in the ContentStore
             Use ContentService.getTempWriter() in BaseContentNode$TemplateContentData.getContentAsText() method. 
   28435: Merged DEV/TEMPORARY to V3.4-BUG-FIX
      28428: ALF-9015: cm:modifier not updated when document is updated via CIFS
         In ContentDiskDriver.closeFile() added ContentModel.PROP_MODIFIER property update.
   28436: ALF-8550: Number of http requests (currentThreadsBusy) increases when session times out during creation of webform
   - Corrected use of read and write locks
   28465: Fix for ALF-8023 Share preview doesn't work if...
     fixed as outlined by Dmitry.
   28478: Merged BRANCHES/DEV/ALAN/AUDIT to BRANCHES/DEV/V3.4-BUG-FIX:
      28062-28477 (28062,28063,28080,28081,28302,28303,28334,28340,28464,28469,28477) ALF-8438 Need higher level audit of user actions
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28481 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
	
		
			
				
	
	
		
			564 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			564 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | ||
|  * Copyright (C) 2005-2011 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 <http://www.gnu.org/licenses/>.
 | ||
|  */
 | ||
| package org.alfresco.wcm.webproject;
 | ||
| 
 | ||
| import java.util.List;
 | ||
| import java.util.Map;
 | ||
| 
 | ||
| import org.alfresco.service.PublicService;
 | ||
| import org.alfresco.service.cmr.repository.NodeRef;
 | ||
| import org.alfresco.service.Auditable;
 | ||
| import org.alfresco.service.NotAuditable;
 | ||
| 
 | ||
| 
 | ||
| /**
 | ||
|  * Web Project Service fundamental API.
 | ||
|  * <p>
 | ||
|  * This service API is designed to support the public facing Web Project APIs. 
 | ||
|  * 
 | ||
|  * @author janv
 | ||
|  */
 | ||
| public interface WebProjectService
 | ||
| {
 | ||
|     //
 | ||
|     // Web project operations
 | ||
|     //
 | ||
| 	
 | ||
|     /**
 | ||
|      * Create a new web project (with a default ROOT webapp)
 | ||
|      * <p>
 | ||
|      * Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId()
 | ||
|      * 
 | ||
|      * @param dnsName          DNS name (required, must be unique)
 | ||
|      * @param name             name (required, must be unique)
 | ||
|      * @param title            title
 | ||
|      * @param description      description
 | ||
|      * @return WebProjectInfo  the created web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public WebProjectInfo createWebProject(String dnsName, String name, String title, String description);
 | ||
|     
 | ||
|     /**
 | ||
|      * Create a new web project (with a default ROOT webapp)
 | ||
|      * <p>
 | ||
|      * Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId()
 | ||
|      * 
 | ||
|      * @param dnsName          DNS name (required, must be unique)
 | ||
|      * @param name             name (required, must be unique)
 | ||
|      * @param title            title
 | ||
|      * @param description      description
 | ||
|      * @param sourceNodeRef    web project node ref to branch from (can be null)
 | ||
|      * @return WebProjectInfo  the created web project info
 | ||
|      * 
 | ||
|      * @deprecated see createWebProject(String dnsName, WebProjectInfo wpInfo)
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public WebProjectInfo createWebProject(String dnsName, String name, String title, String description, NodeRef sourceNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Create a new web project (with given default web app)
 | ||
|      * <p>
 | ||
|      * Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId()
 | ||
|      * 
 | ||
|      * @param dnsName          DNS name (required, must be unique)
 | ||
|      * @param name             name (required, must be unique)
 | ||
|      * @param title            title
 | ||
|      * @param description      description
 | ||
|      * @param defaultWebApp    default webapp (if null, will default to ROOT webapp)
 | ||
|      * @param useAsTemplate    <tt>true</tt> if this web project can be used as a template to branch from
 | ||
|      * @param sourceNodeRef    web project node ref to branch from (can be null)
 | ||
|      * @return WebProjectInfo  the created web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public WebProjectInfo createWebProject(String dnsName, String name, String title, String description, String defaultWebApp, boolean useAsTemplate, NodeRef sourceNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Create a new web project (with given web project info)
 | ||
|      * <p>
 | ||
|      * Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId()
 | ||
|      * 
 | ||
|      * @param wpInfo  web project info
 | ||
|      * 
 | ||
|      * Note:
 | ||
|      * 
 | ||
|      * @param dnsName          DNS name (required, must be unique)
 | ||
|      * @param name             name (required, must be unique)
 | ||
|      * @param title            title
 | ||
|      * @param description      description
 | ||
|      * @param defaultWebApp    default webapp (if null, will default to ROOT webapp)
 | ||
|      * @param useAsTemplate    <tt>true</tt> if this web project can be used as a template to branch from
 | ||
|      * @param sourceNodeRef    web project node ref to branch from (can be null)
 | ||
|      * @param previewProvider  preview URI service provider name (must correspond to registered name, if null will be set to default provider)
 | ||
|      * 
 | ||
|      * @return WebProjectInfo  the created web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public WebProjectInfo createWebProject(WebProjectInfo wpInfo);
 | ||
|     
 | ||
|     /**
 | ||
|      * Determines whether the "Web Projects" container node is present.
 | ||
|      * 
 | ||
|      * @return true if the "Web Projects" container node is present
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean hasWebProjectsRoot();
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns the Web Projects container
 | ||
|      * 
 | ||
|      * @return NodeRef        the node ref of the "Web Projects" container node
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public NodeRef getWebProjectsRoot();
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns the Web Project for the given AVM path
 | ||
|      * 
 | ||
|      * @param absoluteAVMPath the AVM path from which to determine the Web Project
 | ||
|      * @return NodeRef        the web project node ref for the path or null if it could not be determined
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public NodeRef getWebProjectNodeFromPath(String absoluteAVMPath);
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns the Web Project for the given AVM store name (sandbox store id)
 | ||
|      * 
 | ||
|      * @param storeName       the AVM store name (sandbox store id) from which to determine the Web Project
 | ||
|      * @return NodeRef        the web project node ref for the path or null if it could not be determined
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public NodeRef getWebProjectNodeFromStore(String storeName);
 | ||
|     
 | ||
|     /**
 | ||
|      * List the available web projects for the current user
 | ||
|      * 
 | ||
|      * @return List<WebProjectInfo>  list of web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public List<WebProjectInfo> listWebProjects();
 | ||
|     
 | ||
|     /**
 | ||
|      * List the web projects for the given user (based on the available web projects for the current user)
 | ||
|      * 
 | ||
|      * @param userName               user name
 | ||
|      * @return List<WebProjectInfo>  list of web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public List<WebProjectInfo> listWebProjects(String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * Return true if web project node ref is a web project
 | ||
|      * 
 | ||
|      * @param wpNodeRef  web project store id
 | ||
|      * @return boolean   true, if web project
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isWebProject(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * Return true if web project node ref is a web project
 | ||
|      * 
 | ||
|      * @param wpNodeRef  web project node ref
 | ||
|      * @return boolean   true, if web project
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isWebProject(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Gets web project info based on the store id of a web project
 | ||
|      * <p>
 | ||
|      * Returns null if the web project can not be found
 | ||
|      * 
 | ||
|      * @param wpStoreId        web project store id
 | ||
|      * @return WebProjectInfo  web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public WebProjectInfo getWebProject(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * Gets web project info based on the DM nodeRef of a web project
 | ||
|      * <p>
 | ||
|      * Returns null if the web project can not be found
 | ||
|      * 
 | ||
|      * @param wpNodeRef        web project node ref
 | ||
|      * @return WebProjectInfo  web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public WebProjectInfo getWebProject(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Get preview provider name configured for given web project (if not configured then return default preview provider)
 | ||
|      * @param wpStoreId             web project store id
 | ||
|      * @return previewProviderName  preview URI service provide name
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public String getPreviewProvider(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * Update the web project info
 | ||
|      * <p>
 | ||
|      * Note: the nodeRef and storeId (dnsName) of a web project cannot be updated once the web project has been created
 | ||
|      * 
 | ||
|      * @param wpInfo  web project info
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void updateWebProject(WebProjectInfo wpInfo);
 | ||
|     
 | ||
|     /**
 | ||
|      * Delete the web project
 | ||
|      * <p>
 | ||
|      * If the web project does not exist, will log a warning and succeed
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      * 
 | ||
|      * @param name  web project store id
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void deleteWebProject(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * Delete the web project
 | ||
|      * <p>
 | ||
|      * If the web project does not exist, will log a warning and succeed
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      * <p>
 | ||
|      * Note: this will cascade delete all sandboxes associated with a web project
 | ||
|      * 
 | ||
|      * @param name  web project node ref
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void deleteWebProject(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     //
 | ||
|     // Web app operations
 | ||
|     //
 | ||
|     
 | ||
|     /**
 | ||
|      * Create webapp for the given web project. 
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      * 
 | ||
|      * @param wpStoreId    web project store id
 | ||
|      * @param name         webapp name (must be unique within a web project)
 | ||
|      * @param description  webapp description
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void createWebApp(String wpStoreId, String name, String description);
 | ||
|     
 | ||
|     /**
 | ||
|      * Create webapp for the given web project. 
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      * 
 | ||
|      * @param wpNodeRef   web project node ref
 | ||
|      * @param name        webapp name (must be unique within a web project)
 | ||
|      * @param description webapp description
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void createWebApp(NodeRef wpNodeRef, String name, String description);
 | ||
|     
 | ||
|     /**
 | ||
|      * List webapps for the web project
 | ||
|      * 
 | ||
|      * @param wpStoreId      web project store id
 | ||
|      * @return List<String>  list of webapp names
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public List<String> listWebApps(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * List webapps for the web project
 | ||
|      * 
 | ||
|      * @param wpNodeRef      web project node ref
 | ||
|      * @return List<String>  list of webapp names
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public List<String> listWebApps(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Delete webapp from the given web project
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      * <p>
 | ||
|      * Note: this will cascade delete all assets within a webapp
 | ||
|      * 
 | ||
|      * @param wpStoreId   web project store id
 | ||
|      * @param name        webapp name
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void deleteWebApp(String wpStoreId, String name);
 | ||
|     
 | ||
|     /**
 | ||
|      * Delete webapp from the given web project
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      * <p>
 | ||
|      * Note: this will cascade delete all assets within a webapp
 | ||
|      * 
 | ||
|      * @param wpNodeRef   web project node ref
 | ||
|      * @param name        webapp name
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void deleteWebApp(NodeRef wpNodeRef, String name);
 | ||
|     
 | ||
|     //
 | ||
|     // Web user operations
 | ||
|     //
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns <tt>true</tt> if the current user is a manager of this web project
 | ||
|      * <p>
 | ||
|      * Note: This includes admin users but does not include the System user
 | ||
|      * 
 | ||
|      * @param wpStoreId   web project store id
 | ||
|      * @return boolean    <tt>true</tt> if the user is a manager (role = WCMUtil.ROLE_CONTENT_MANAGER), <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isContentManager(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns <tt>true</tt> if the current user is a manager of this web project
 | ||
|      *
 | ||
|      * @param  wpNodeRef   web project node ref
 | ||
|      * @return boolean     <tt>true</tt> if the user is a manager (role = WCMUtil.ROLE_CONTENT_MANAGER), <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isContentManager(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns <tt>true</tt> if the user is a manager of this web project
 | ||
|      * <p>
 | ||
|      * Note: This includes admin users but does not include the System user
 | ||
|      * 
 | ||
|      * @param storeName   web project store id
 | ||
|      * @param username    user name
 | ||
|      * @return boolean    <tt>true</tt> if the user is a manager, <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isContentManager(String wpStoreId, String username);
 | ||
|     
 | ||
|     /**
 | ||
|      * Returns <tt>true</tt> if the user is a manager of this web project
 | ||
|      * <p>
 | ||
|      * Note: This includes admin users but does not include the System user
 | ||
|      * 
 | ||
|      * @param wpNodeRef    web project node ref
 | ||
|      * @param userName     user name
 | ||
|      * @return boolean     <tt>true</tt> if the user is a manager (role = WCMUtil.ROLE_CONTENT_MANAGER), <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isContentManager(NodeRef wpNodeRef, String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * List the web users of the web project
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      *      
 | ||
|      * @param wpStoreId    web project store id
 | ||
|      * @return Map<String, String> map of <authority name, role name> pairs
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public Map<String, String> listWebUsers(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * List the web users of the web project
 | ||
|      * <p>
 | ||
|      * Current user must be a content manager for the web project
 | ||
|      *      
 | ||
|      * @param wpNodeRef    web project node ref
 | ||
|      * @return Map<String, String> map of <authority name, role name> pairs
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public Map<String, String> listWebUsers(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Get the number of web users invited to this web project
 | ||
|      *      
 | ||
|      * @param wpNodeRef    web project node ref
 | ||
|      * @return int         number of invited web users
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public int getWebUserCount(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Gets the role of the specified user
 | ||
|      * 
 | ||
|      * @param wpStoreId     web project store id
 | ||
|      * @param userName      user name
 | ||
|      * @return String       web project role for this user, null if no assigned role
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public String getWebUserRole(String wpStoreId, String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * Gets the role of the specified user
 | ||
|      * 
 | ||
|      * @param wpNodeRef     web project node ref
 | ||
|      * @param userName      user name
 | ||
|      * @return String       web project role for this user, null if no assigned role
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public String getWebUserRole(NodeRef wpNodeRef, String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * Indicates whether current user is a web user of the web project or not
 | ||
|      * 
 | ||
|      * @param store id      web project store id
 | ||
|      * @return boolean      <tt>true</tt> if the current user is a web user of the web project, <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isWebUser(String wpStoreId);
 | ||
|     
 | ||
|     /**
 | ||
|      * Indicates whether current user is a web user of the web project or not
 | ||
|      * 
 | ||
|      * @param wpNodeRef     web project node ref
 | ||
|      * @return boolean      <tt>true</tt> if the current user is a web user of the web project, <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isWebUser(NodeRef wpNodeRef);
 | ||
|     
 | ||
|     /**
 | ||
|      * Indicates whether given user is a web user of the web project or not
 | ||
|      * 
 | ||
|      * @param store id      web project store id
 | ||
|      * @param userName      user name
 | ||
|      * @return boolean      <tt>true</tt> if the user is a web user of the web project, <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isWebUser(String wpStoreId, String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * Indicates whether given user is a web user of the web project or not
 | ||
|      * 
 | ||
|      * @param wpNodeRef     web project node ref
 | ||
|      * @param userName      user name
 | ||
|      * @return boolean      <tt>true</tt> if the user is a web user of the web project, <tt>false</tt> otherwise
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public boolean isWebUser(NodeRef wpNodeRef, String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * Invite users/groups to web project
 | ||
|      * <p>
 | ||
|      * Note: authority name can be user or group, although a group is flattened into a set of users
 | ||
|      * <p>
 | ||
|      * Note: author sandbox will NOT be auto created for each invited user
 | ||
|      * 
 | ||
|      * @param wpStoreId                web project store id
 | ||
|      * @param userGroupRoles           map of <authority name, role name> pairs
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void inviteWebUsersGroups(String wpStoreId, Map<String, String> userGroupRoles);
 | ||
|     
 | ||
|     /**
 | ||
|      * Invite users/groups to web project
 | ||
|      * <p>
 | ||
|      * Note: authority name can be user or group, although a group is flattened into a set of users
 | ||
|      * 
 | ||
|      * @param wpStoreId                web project store id
 | ||
|      * @param userGroupRoles           map of <authority name, role name> pairs
 | ||
|      * @param autoCreateAuthorSandbox  if <tt>true</tt> then auto create an author sandbox for each invited user
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void inviteWebUsersGroups(String wpStoreId, Map<String, String> userGroupRoles, boolean autoCreateAuthorSandbox);
 | ||
|     
 | ||
|     /**
 | ||
|      * Invite users/groups to web project
 | ||
|      * <p>
 | ||
|      * Note: authority name can be user or group, although a group is flattened into a set of users
 | ||
|      * 
 | ||
|      * @param wpNodeRef                web project node ref
 | ||
|      * @param userGroupRoles           map of <authority name, role name> pairs
 | ||
|      * @param autoCreateAuthorSandbox  if <tt>true</tt> then auto create the author sandbox for each invited user
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void inviteWebUsersGroups(NodeRef wpNodeRef, Map<String, String> userGroupRoles, boolean autoCreateAuthorSandbox);
 | ||
|   
 | ||
|     /**
 | ||
|      * Invite user to web project
 | ||
|      * <p>
 | ||
|      * Note: author sandbox will NOT be auto created for each invited user
 | ||
|      * 
 | ||
|      * @param wpStoreId                web project store id
 | ||
|      * @param userName                 user name (not a group)
 | ||
|      * @param userRole                 web project role
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void inviteWebUser(String wpStoreId, String userName, String userRole);
 | ||
|     
 | ||
|     /**
 | ||
|      * Invite user to web project
 | ||
|      * 
 | ||
|      * @param wpStoreId                web project store id
 | ||
|      * @param userName                 user name (not a group)
 | ||
|      * @param userRole                 web project role
 | ||
|      * @param autoCreateAuthorSandbox  if <tt>true</tt> then auto create the author sandbox for each invited user
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void inviteWebUser(String wpStoreId, String userName, String userRole, boolean autoCreateAuthorSandbox);
 | ||
|     
 | ||
|     /**
 | ||
|      * Invite user to web project
 | ||
|      * 
 | ||
|      * @param wpNodeRef                web project node ref
 | ||
|      * @param userName                 user name (not a group)
 | ||
|      * @param userRole                 web project role
 | ||
|      * @param autoCreateAuthorSandbox  if <tt>true</tt> then auto create the author sandbox for each invited user
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void inviteWebUser(NodeRef wpNodeRef, String userName, String userRole, boolean autoCreateAuthorSandbox);
 | ||
|     
 | ||
|     /**
 | ||
|      * Uninvite user from a web project
 | ||
|      * <p>
 | ||
|      * Note: author sandbox will NOT be auto deleted
 | ||
|      * 
 | ||
|      * @param wpStoreId                web project store id
 | ||
|      * @param userName                 user name
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void uninviteWebUser(String wpStoreId, String userName);
 | ||
|     
 | ||
|     /**
 | ||
|      * Uninvite user from a web project
 | ||
|      * <p>
 | ||
|      * Note: if author sandbox is auto deleted then this will cascade delete without warning (even if there are changed items)
 | ||
|      * 
 | ||
|      * @param wpStoreId                web project store id
 | ||
|      * @param userName                 user name
 | ||
|      * @param autoDeleteAuthorSandbox  if <tt>true</tt> then auto delete the author sandbox
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void uninviteWebUser(String wpStoreId, String userName, boolean autoDeleteAuthorSandbox);
 | ||
|     
 | ||
|     /**
 | ||
|      * Uninvite user from a web project
 | ||
|      * <p>
 | ||
|      * Note: if author sandbox is auto deleted then this will cascade delete without warning (even if there are changed items)
 | ||
|      * 
 | ||
|      * @param wpNodeRef                web project node ref
 | ||
|      * @param userName                 user name
 | ||
|      * @param autoDeleteAuthorSandbox  if <tt>true</tt> then auto delete the author sandbox
 | ||
|      */
 | ||
|     @NotAuditable
 | ||
|     public void uninviteWebUser(NodeRef wpNodeRef, String userName, boolean autoDeleteAuthorSandbox);
 | ||
| }
 |