Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        public static GABInfo GetGABContactsFolderInfo(IFolder folder)
        {
            if (folder.DefaultMessageClass != OutlookConstants.MESSAGE_CLASS_CONTACTS)
            {
                return(null);
            }

            return(GABInfo.Get(folder));
        }
Ejemplo n.º 3
0
        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);
            }
        }