private IAddressBook FindGABForDomain(IFolder root, string domain) { // Scan all subfolders for the GAB foreach (IAddressBook subfolder in root.GetSubFolders <IAddressBook>()) { try { if (subfolder.DefaultMessageClass == OutlookConstants.MESSAGE_CLASS_CONTACTS) { GABInfo gabInfo = GABInfo.Get(subfolder); if (gabInfo != null && gabInfo.IsForDomain(domain)) { Logger.Instance.Debug(this, "Found existing GAB: {0}", gabInfo); return(subfolder); } } } catch (System.Exception e) { Logger.Instance.Warning(this, "Exception scanning GABs: {0}", e); } Logger.Instance.Debug(this, "Skipping GAB folder: {0}", subfolder.Name); subfolder.Dispose(); } return(null); }
public static GABInfo GetGABContactsFolderInfo(IFolder folder) { if (folder.DefaultMessageClass != OutlookConstants.MESSAGE_CLASS_CONTACTS) { return(null); } return(GABInfo.Get(folder)); }
private IAddressBook CreateGABContacts(string domainName) { if (_store != null) { _store.Dispose(); _store = null; } _store = ZPushLocalStore.GetInstance(ThisAddIn.Instance); if (_store == null) { return(null); } // Try to find the existing GAB using (IFolder root = _store.GetRootFolder()) { IAddressBook gab = FindGABForDomain(root, domainName); if (gab == null) { Logger.Instance.Debug(this, "Creating new GAB folder for {0}", domainName); string name = string.Format(Properties.Resources.GAB_FolderFormat, domainName); gab = root.CreateFolder <IAddressBook>(name); } else { Logger.Instance.Debug(this, "Found existing GAB folder for {0}", domainName); } // The local folders are hidden, unhide tha GAB folder gab.AttrHidden = false; // Update admin _gabFolders.Add(gab.EntryID); GABInfo gabInfo = GABInfo.Get(gab, domainName); gabInfo.Store(gab); if (SuppressModifications) { // Hook BeforeMove event to prevent modifications // TODO: use ZPushWatcher for this? gab.BeforeItemMove += SuppressMoveEventHandler; } return(gab); } }