% ' ' ' '-------------------------------------------------------------------- 'Checks if they can delete or create messages in a folder Public Function CanCreateMessages(objFldr) CanCreateMessages=True bSrcCanMove=0 bSrcCanCopy=0 nAccess=0 nAccess = objFldr.Fields.Item(ActMsgPR_ACCESS) bSrcCanMove = nAccess And MAPI_ACCESS_DELETE bSrcCanCopy = nAccess And MAPI_ACCESS_CREATE_CONTENTS If bSrcCanMove=0 And bSrcCanCopy=0 Then CanCreateMessages=False End If End Function '-------------------------------------------------------------------- Public Function CanCreateFolders(objFldr) CanCreateFolders=False 'check for permissions and set flags nFolderAccess = objFldr.Fields.Item(ActMsgPR_ACCESS) bCanMakeFolders = nFolderAccess And MAPI_ACCESS_CREATE_HIERARCHY If bCanMakeFolders<>0 Then CanCreateFolders=True End Function '------------------------------------------------------------------- Public Function GetStore(id) GetStore=0 Set objFolderTemp = objOMSession.GetFolder(id,bstrPublicStoreID) If Not objFolderTemp Is Nothing Or Not IsEmpty(objFolderTemp.ID) Then GetStore =1 End If End Function '-------------------------------------------------------------------- Public Function isValidFolder(objFldr) isValidFolder=True If objFldr Is Nothing Or IsEmpty(objFldr.ID) Then isValidFolder=False End If End Function '--------------------------------------------------------------------- Public Sub HandleErrors(ErrorNum) hasError = 1 bstrError = L_errUnknown_ErrorMessage L_errMoveItemPermision_ErrorMessage = "You do not have the necessary permissions to move messages from that folder." Select Case ErrorNum Case MAPI_E_COLLISION bstrError = L_errCopyFolderExists_ErrorMessage Case MAPI_E_NOT_FOUND bstrError = L_errCopyFolderPermission_ErrorMessage Case mapiW_PARTIAL_COMPLETION If objSrcFolder.Name = objDestFolder.Name Then bstrError = L_errCopyFolderToSubfolder_ErrorMessage Else bstrError = L_errCopyFolderPermission_ErrorMessage End If Case 424 'trying to move a message you can't delete bstrError = L_errCopyMessagePermission_ErrorMessage Case 0 bstrError = L_errOpenFolder_ErrorMessage Case 1 bstrError = L_errFailOpenMessage_ErrorMessage Case 2 bstrError = L_errCreateItemPermision_ErrorMessage Case 3 bstrError = L_errMoveItemPermision_ErrorMessage End Select err.clear bstrBodyTag = bstrError End Sub '------------------------------------------------------------------------ On Error Resume Next Dim bstrProcess 'Move or Copy Dim bstrItem 'Folder or Message Dim bstrSrcFolderID 'Source folder id Dim bstrDestFolderID 'Destination folder id Dim bstrSrcMsgID 'Source message ID Dim objDestFolder 'Destination folder object Dim objSrcFolder 'Source folder object CheckSession 'getrend.inc bstrProcess=Request.Form("process") bstrItem=Request.Form("item") bstrSrcFolderID = Request.Form("srcfolder") bstrDestFolderID= Request.Form("destfolder") bstrSrcMsgID=Request.Form("srcmsg") Set objDestFolder=OpenFolder(bstrDestFolderID) 'function in store.inc Set objSrcFolder=OpenFolder(bstrSrcFolderID) 'store.inc hasError = 0 If isValidFolder(objDestFolder) And isValidFolder(objSrcFolder) Then iSrcStore=GetStore(bstrSrcFolderID) 'local function iDestStore=GetStore(bstrDestFolderID) 'local function bstrBodyTag="" err.clear If bstrItem="folder" Then If CanCreateFolders(objDestFolder) Then If iDestStore=0 Then 'to private store If bstrProcess="move" Then Set objNewFolder = objSrcFolder.MoveTo(bstrDestFolderID) Else Set objNewFolder = objSrcFolder.CopyTo(bstrDestFolderID) End If Else 'to public store If bstrProcess="move" Then Set objNewFolder = objSrcFolder.MoveTo(destFolderID, PubStoreID) Else Set objNewFolder = objSrcFolder.CopyTo(destFolderID, PubStoreID) End If End If fail=Err.Number If fail<>0 Then HandleErrors fail Else objNewFolder.update If Err.Number<>0 Then HandleErrors 0 End If End If Else HandleErrors 0 End If Else 'message If CanCreateMessages(objDestFolder) Then Set objSrcMessage = OpenMessage(bstrSrcMsgID) If objSrcMessage Is Nothing Or objSrcMessage.ID="" Then HandleErrors 1 End If If bstrProcess="move" and CanCreateMessages(objSrcFolder) Then Set objDestMsg = objSrcMessage.MoveTo(objDestFolder.ID, objDestFolder.storeID) ElseIf bstrProcess="copy" Then Set objDestMsg = objSrcMessage.CopyTo(objDestFolder.ID, objDestFolder.storeID) Else Err.Number = 3 End If If Err.Number<>0 Then HandleErrors Err.Number Else objDestMsg.Update If Err.Number<>0 Then HandleErrors 0 End If End If Else HandleErrors 2 End If End If Else 'isValidFolder HandleErrors 0 End If %> <% If hasError = 1 Then %>
onLoad="RedirectToRoot()"<% End If %>>