La classe NsBackupAssociation permet d'associer une sauvegarde (NsBackup) à un utilisateur (NsUser).
Plusieurs utilisateurs peuvent posséder la même sauvegarde tant qu'un seul utilisateur possède des droits d'écriture. L'attribution d'une sauvegarde à plusieurs utilisateurs possédant des droits d'écriture peut provoquer l'écrasement des données et la perte de fichiers.
L'identificateur unique de l'association sauvegarde/utilisateur. Les constantes suivantes peuvent-être utilisées :
La sauvegarde (NsBackup) concernée par l'association.
L'utilisateur (NsUser) concerné par l'association.
Une variable booléenne indiquant si l'utilisateur peut exécuter la sauvegarde.
Une variable booléenne indiquant si l'utilisateur peut restaurer des données depuis la sauvegarde.
Une variable booléenne indiquant si l'utilisateur peut effacer ou supprimer la sauvegarde.
Charge l'association attribuant la sauvegarde BackupID à l'utilisateur UserID.
Créée ou met à jour l'association décrite par l'objet.
Supprime l'association décrite par l'objet.
Set connection = CreateObject("NsAPI.NsConnection") Set sysutils = CreateObject("NsAPI.NsScriptUtils") ' Renvoit l'ID d'une sauvegarde à partir de son nom Function FindBackupByName(backups, name) FindBackupByName = -1 for each backup in backups if StrComp(backup.Name, name, vbTextCompare) = 0 then FindBackupByName = backup.ID Exit Function end if next End Function ' Renvoit l'ID d'un utilisateur à partir de sa description / nom complet Function FindUserByName(groups, connection, name) FindUserByName = -1 for each group in groups set users = group.Users(connection) for each user in users if StrComp(user.description, name, vbTextCompare) = 0 then FindUserByName = user.ID Exit Function end if next next End Function if connection.ConnectToLocalServer then set server = CreateObject("NsAPI.NsServer") if server.Load(connection) then ' Demander un nom de sauvegarde backupName = InputBox("Saisissez le nom d'une sauvegarde sur le serveur (ex : Ma sauvegarde) : ", "Test de l'API UB", "") if backupName <> "" then ' Demander un nom d'utilisateur userName = InputBox("Saisissez le nom d'un utilisateur sur le serveur (ex : Jacques Labarre) : ", "Test de l'API UB", "") if userName <> "" then ' Transformer le nom de la sauvegarde en son identifiant numérique unique backupID = FindBackupByName(server.AllBackups(connection), backupName) ' Est ce qu'on a bien trouvé une sauvegarde valide ? if sysutils.CompareInt64(backupID, -1) = 0 then MsgBox "Erreur : la sauvegarde """ & backupName & """ n'a pu être trouvée sur le serveur." else ' Transformer le nom de l'utilisateur en son identifiant numérique unique userID = FindUserByName(server.UserGroups(connection), connection, userName) ' Est-ce qu'on a bien trouvé un utilisateur valide ? if sysutils.CompareInt64(userID, -1) = 0 then MsgBox "Erreur : l'utilisateur """ & userName & """ n'a pu être trouvé sur le serveur." else ' Si on est ici, la sauvegarde et l'utilisateur sont tous les deux valides set association = CreateObject("NsAPI.NsBackupAssociation") ' Charger l'association entre utilisateur et sauvegarde. Si la fonction ' échoue, l'association n'existe pas. if association.Load(connection, userID, backupID) then MsgBox "L'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """ existe déjà." else if MsgBox("L'association n'existe pas, souhaitez-vous la créer ?", vbQuestion + vbYesNo + vbApplicationModal, "Test de l'API UB") = vbYes then association.ID = -1 ' Constante nécessaire à la création de l'objet association.UserID = userID association.BackupID = backupID association.CanBackup = false ' Pour la démo, on ne permet que de restaurer des données association.CanRestore = true association.CanClearOrRemove = false ' Créer l'association if association.Update(connection) then MsgBox "L'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """ a été créée." ' Terminé ! else MsgBox "Erreur inconnue lors de l'association entre l'utilisateur """ & userName & """ et la sauvegarde """ & backupName & """." end if end if end if end if end if end if end if else MsgBox "Impossible de charger les informations serveur." end if connection.Disconnect else MsgBox "Connexion au serveur local impossible." end if