par oguruma » 21 Jan 2004 à 10:28
Synopsis de base de documents Lotus Notes - créé à 10:03:10 le 21/01/2004Informations de bibliothèque de codesNom : FNRFControlSendToLibDernière modification : 27/02/2003 12:22:49Code LotusScript :Option PublicConst VIMGROUPS ="($VIMGroups)"Const NAB="Names.NSF"Dim Ws As NotesUIWorkSpaceDim Session As NotesSessionDim Db As NotesDatabaseDim Note As NotesDocumentDim UIDoc As NotesUIDocumentDim DbAddressBook As NotesDatabaseDim SendField (1 To 3) As StringDim Zone (1 To 3) As StringDim ItemSendTo As NotesItemDim ViewVIMGroups As NotesViewDim DocVIMGroups As NotesDocumentDim DocAccessGroups As NotesDocumentDim CommonUser As StringDim UserName As StringSub InitializeEnd SubSub ControlSendTo Dim OkSendTo (1 To 3) As Integer Dim FieldOK As Integer Dim I As Integer REM Init de l'environnement Call InitArraySendTo Call GetVIMObject REM pour forcer le optimizedAddress Call uidoc.refresh REM Analyse des champs SendTo, CopyTo, BlindCopyTo For I=1 To 3 Print "Analyse des destinataires du message" If Note.HasItem(SendField(I)) Then Set ItemSendTo=Note.GetFirstItem(SendField(I)) If Trim$(ItemSendTo.Text)<>"" Then REM On Analyse les destinataires du message OkSendTo(I)=ProcessField(I) REM Vrai : les destinataires sont autorisés REM Faux : un des destinataires n'est pas autorisé Else REM dans ce cas la zone est correcte OkSendTo(I)=True End If End If Next I REM Pour envoyer le message les trois zones doivent être correctes FieldOK= OkSendTo(1) And okSendTo(2) And OkSendTo(3) REM On enregistre dans le Notes.INI afin de récupérer la valeur de la variable dans l'agent If FieldOK Then REM On met 1 : on est autorisé à envoyer le message Call Session.SetEnvironmentVar( "FNRFControlSendTo", "OK",False ) Else REM On met 0 : on n'est pas autorisé à envoyer les message Call Session.SetEnvironmentVar( "FNRFControlSendTo", "NOK",False ) End IfEnd SubFunction ProcessField (C As Integer) As Integer Dim Ret As Integer Dim K As Integer Dim Dest As Variant Dim NewDest As String Dest=ItemSendTo.Values Ret=True For K=0 To Ubound(Dest) Print "Vérification en cours pour ";Dest(K) REM Il faut vérifier si c'est un groupe If IsGroup(Dest(K)) Then REM Il faut vérifier si présence d'une liste de personnes autorisées à utiliser ce groupe If HaveControlAccessList() Then REM L'utilisateur est-il dans cette liste If Not Autorized () Then Messagebox Zone(C) & " - Vous n'êtes pas autorisé à écrire au groupe " & Dest(K),48,"Envoyer - " & ItemSendTo.Name Ret=False Dest(K)="" End If End If End If' If Dest(k)<>"" Then ' NewDest=NewDest+Dest(k)+","' End If Next K ' Call UIDoc.FieldSetText( ItemSendTo.Name, NewDest) Fin: ProcessField=RetEnd FunctionFunction Autorized () As Integer Dim Ret As Integer Dim N As NotesName Dim Nc As String Ret=False Forall M In DocVIMGroups.FNRFAccessControl Set N=New NotesName(M) Nc=N.Common If Nc = CommonUser Then Ret=True Exit Forall Else REM C'est sans doute un groupe, on vérifie si l'utilisateur y figure If IsMemberGroup(M) Then Ret=True Exit Forall End If End If End Forall Autorized=RetEnd FunctionFunction IsGroup (Grp As Variant) As Integer Dim N As NotesName Set N=New NotesName(Grp) Set DocVIMGroups=ViewVIMGroups.GetDocumentByKey(N.Common) If DocVIMGroups Is Nothing Then IsGroup=False Else IsGroup=True End IfEnd FunctionSub InitArraySendTo SendField(1)="SendTo" SendField(2)="CopyTo" SendField(3)="BlindCopyTo" Zone(1)="Champ Pour :" Zone(2)="Champ CC :" Zone(3)="Champ CCC :"End SubSub GetVIMObject Set Ws=New NotesUIWorkSpace Set Session=New NotesSession Set Db=Session.CurrentDatabase Set UIDoc=Ws.CurrentDocument Set Note=UIDoc.Document Set DbAddressBook=New NotesDatabase(Db.Server,NAB) Set ViewVIMGroups=DbAddressBook.GetView(VIMGROUPS) CommonUser=Session.CommonUserName UserName=Session.UserNameEnd SubFunction HaveControlAccessList( ) As Integer If DocVIMGroups.HasItem("FNRFAccessControl") Then Set ItemFNRF=DocVIMGroups.GetFirstItem("FNRFAccessControl") If ItemFNRF.Text="" Then HaveControlAccessList=False Else HaveControlAccessList=True End If Else HaveControlAccessList=False End IfEnd FunctionFunction IsMemberGroup(M As String) As Integer Dim Ret As Integer Dim DocGrp As NotesDocument Dim ItemGrp As NotesItem Set DocGrp=ViewVIMGroups.GetDocumentByKey(M) REM ici on verifie si l'utilisateur fait parti des personnes autorisées dans un groupe spécifique If DocGrp Is Nothing Then Ret=False Else Set ItemGrp=DocGrp.GetFirstItem("Members") If ItemGrp Is Nothing Then Ret=False Else If ItemGrp.Contains(UserName) Then Ret=True Else Ret=False End If End If End If IsMemberGroup=RetEnd Function
Bien à vous
http://www.dominoarea.org/oguruma/
Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci
Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)