public bool RegisterListToSync(SPList spList, bool ovverideView, bool forceCreating, bool hidden = false) { this._syncProvider = new SpSyncProvider(SyncType.SpList); bool resultFieldAdding = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(FieldAddingName, SPEventReceiverType.FieldAdding, spList, typeof(ListChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultFieldUpdating = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(FieldUpdatingName, SPEventReceiverType.FieldUpdating, spList, typeof(ListChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultFieldDeleting = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(FieldDeletingName, SPEventReceiverType.FieldDeleting, spList, typeof(ListChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultItemAdded = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(ItemAddedName, SPEventReceiverType.ItemAdded, spList, typeof(ItemChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultItemUpdated = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(ItemUpdatedName, SPEventReceiverType.ItemUpdated, spList, typeof(ItemChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultItemDeleting = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(ItemDeletingName, SPEventReceiverType.ItemDeleting, spList, typeof(ItemChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultCreateCachDb = this._syncProvider.CreateDataBaseTable(spList.ParentWeb.Site, spList.RootFolder.ServerRelativeUrl, spList.Fields); if (resultFieldAdding && resultFieldUpdating && resultFieldDeleting && resultItemAdded && resultItemUpdated && resultItemDeleting && resultCreateCachDb) { if (hidden) { return(true); } SettingsProvider.Instance(spList.ParentWeb).SetIsCacheDb(spList, true); SettingsProvider.Instance(spList.ParentWeb).SetIsOverrideView(spList, ovverideView); SettingsProvider.Instance(spList.ParentWeb).SetForceCreating(spList, forceCreating); SettingsProvider.Instance(spList.ParentWeb).SetCacheTypeDb(spList, SyncType.SpList); SettingsProvider.Instance(spList.ParentWeb).SetTableName(spList, spList.RootFolder.ServerRelativeUrl); return(true); } // что то упало, удаляем то что получилось создать if (resultFieldAdding) { UtilityEventReceiver.DeleteReciever(FieldAddingName, spList); } if (resultFieldUpdating) { UtilityEventReceiver.DeleteReciever(FieldUpdatingName, spList); } if (resultFieldDeleting) { UtilityEventReceiver.DeleteReciever(FieldDeletingName, spList); } if (resultItemAdded) { UtilityEventReceiver.DeleteReciever(ItemAddedName, spList); } if (resultItemUpdated) { UtilityEventReceiver.DeleteReciever(ItemUpdatedName, spList); } if (resultItemDeleting) { UtilityEventReceiver.DeleteReciever(ItemDeletingName, spList); } SettingsProvider.Instance(spList.ParentWeb).SetIsCacheDb(spList, false); return(false); }
public bool RegisterCtToSync(SPContentType contentType, bool overrideView, bool forceCreating, bool tableNameAsParentList = true, bool hidden = false) { this._syncProvider = new SpSyncProvider(SyncType.SpContentType); bool resultFieldAdding = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(FieldAddingName, SPEventReceiverType.FieldAdding, contentType, typeof(ListChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultFieldUpdating = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(FieldUpdatingName, SPEventReceiverType.FieldUpdating, contentType, typeof(ListChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultFieldDeleting = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(FieldDeletingName, SPEventReceiverType.FieldDeleting, contentType, typeof(ListChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultItemAdded = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(ItemAddedName, SPEventReceiverType.ItemAdded, contentType, typeof(ItemChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultItemUpdated = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(ItemUpdatedName, SPEventReceiverType.ItemUpdated, contentType, typeof(ItemChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); bool resultItemDeleting = UtilityEventReceiver.CreateRecieverWithDeletingPrevious(ItemDeletingName, SPEventReceiverType.ItemDeleting, contentType, typeof(ItemChangeReceiver), 10001, SPEventReceiverSynchronization.Synchronous); string tableName = tableNameAsParentList ? contentType.ParentList.RootFolder.ServerRelativeUrl : contentType.Name; bool resultCreateCachDb = this._syncProvider.CreateDataBaseTable(contentType.ParentWeb.Site, tableName, contentType.Fields); if (resultFieldAdding && resultFieldUpdating && resultFieldDeleting && resultItemAdded && resultItemUpdated && resultItemDeleting && resultCreateCachDb) { if (hidden) { return(true); } IList <SPContentTypeUsage> usages = SPContentTypeUsage.GetUsages(contentType); foreach (SPContentTypeUsage usage in usages) { if (!usage.IsUrlToList) { continue; } SPList usageList = contentType.ParentWeb.GetList(usage.Url); SettingsProvider.Instance(contentType.ParentWeb).SetIsCacheDb(usageList, true); SettingsProvider.Instance(contentType.ParentWeb).SetIsOverrideView(usageList, overrideView); SettingsProvider.Instance(contentType.ParentWeb).SetForceCreating(usageList, forceCreating); SettingsProvider.Instance(contentType.ParentWeb).SetCacheTypeDb(usageList, SyncType.SpContentType); SettingsProvider.Instance(contentType.ParentWeb).SetTableName(usageList, tableName); } return(true); } // что то упало, удаляем то что получилось создать if (resultFieldAdding) { UtilityEventReceiver.DeleteReciever(FieldAddingName, contentType); } if (resultFieldUpdating) { UtilityEventReceiver.DeleteReciever(FieldUpdatingName, contentType); } if (resultFieldDeleting) { UtilityEventReceiver.DeleteReciever(FieldDeletingName, contentType); } if (resultItemAdded) { UtilityEventReceiver.DeleteReciever(ItemAddedName, contentType); } if (resultItemUpdated) { UtilityEventReceiver.DeleteReciever(ItemUpdatedName, contentType); } if (resultItemDeleting) { UtilityEventReceiver.DeleteReciever(ItemDeletingName, contentType); } SettingsProvider.Instance(contentType.ParentList.ParentWeb).SetIsCacheDb(contentType.ParentList, false); return(false); }