예제 #1
0
        private void AddEventReceivers(SPList calendar)
        {
            string assemblyName = "WorkBoxFramework, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=4554acfc19d83350";
            string className    = "WorkBoxFramework.WBTeamSiteCalendarChangeEventReceiver";

            SPEventReceiverDefinition itemAddedEventReceiver = calendar.EventReceivers.Add();

            itemAddedEventReceiver.Name           = TEAM_SITE_CALENDAR__ADDITIONS;
            itemAddedEventReceiver.Type           = SPEventReceiverType.ItemAdded;
            itemAddedEventReceiver.SequenceNumber = 1000;
            itemAddedEventReceiver.Assembly       = assemblyName;
            itemAddedEventReceiver.Class          = className;
            itemAddedEventReceiver.Update();

            SPEventReceiverDefinition itemUpdatedEventReceiver = calendar.EventReceivers.Add();

            itemUpdatedEventReceiver.Name           = TEAM_SITE_CALENDAR__UPDATES;
            itemUpdatedEventReceiver.Type           = SPEventReceiverType.ItemUpdated;
            itemUpdatedEventReceiver.SequenceNumber = 1000;
            itemUpdatedEventReceiver.Assembly       = assemblyName;
            itemUpdatedEventReceiver.Class          = className;
            itemUpdatedEventReceiver.Update();

            SPEventReceiverDefinition itemDeletedEventReceiver = calendar.EventReceivers.Add();

            itemDeletedEventReceiver.Name           = TEAM_SITE_CALENDAR__DELETIONS;
            itemDeletedEventReceiver.Type           = SPEventReceiverType.ItemDeleting;
            itemDeletedEventReceiver.SequenceNumber = 1000;
            itemDeletedEventReceiver.Assembly       = assemblyName;
            itemDeletedEventReceiver.Class          = className;
            itemDeletedEventReceiver.Update();
        }
        private void AddEventReceivers(SPList calendar)
        {
            string assemblyName = "WorkBoxFramework, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=4554acfc19d83350";
            string className    = "WorkBoxFramework.WBLinkedCalendarUpdatesEventReceiver";

            SPEventReceiverDefinition itemAddedEventReceiver = calendar.EventReceivers.Add();

            itemAddedEventReceiver.Name           = WorkBox.LINKED_CALENDAR_EVENT_RECEIVER__ITEM_ADDED;
            itemAddedEventReceiver.Type           = SPEventReceiverType.ItemAdded;
            itemAddedEventReceiver.SequenceNumber = 1000;
            itemAddedEventReceiver.Assembly       = assemblyName;
            itemAddedEventReceiver.Class          = className;
            itemAddedEventReceiver.Update();

            SPEventReceiverDefinition itemUpdatedEventReceiver = calendar.EventReceivers.Add();

            itemUpdatedEventReceiver.Name           = WorkBox.LINKED_CALENDAR_EVENT_RECEIVER__ITEM_UPDATED;
            itemUpdatedEventReceiver.Type           = SPEventReceiverType.ItemUpdated;
            itemUpdatedEventReceiver.SequenceNumber = 1000;
            itemUpdatedEventReceiver.Assembly       = assemblyName;
            itemUpdatedEventReceiver.Class          = className;
            itemUpdatedEventReceiver.Update();

            SPEventReceiverDefinition itemDeletedEventReceiver = calendar.EventReceivers.Add();

            itemDeletedEventReceiver.Name           = WorkBox.LINKED_CALENDAR_EVENT_RECEIVER__ITEM_DELETING;
            itemDeletedEventReceiver.Type           = SPEventReceiverType.ItemDeleting;
            itemDeletedEventReceiver.SequenceNumber = 1000;
            itemDeletedEventReceiver.Assembly       = assemblyName;
            itemDeletedEventReceiver.Class          = className;
            itemDeletedEventReceiver.Update();
        }
예제 #3
0
        // 取消对以下方法的注释,以便处理激活某个功能后引发的事件。

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPSite site = (SPSite)properties.Feature.Parent;

            using (SPWeb web = site.OpenWeb(webName))
            {
                SPList typeList   = web.GetList(usertypeListName);
                string className1 = "CMICT.CSP.Web.CategoryEvents.LookupTypesEvent";

                SPEventReceiverDefinition eventReceiverDefinition = typeList.EventReceivers.Add();
                eventReceiverDefinition.Class    = className1;                       // String
                eventReceiverDefinition.Assembly = assemblyName1;                    // String
                eventReceiverDefinition.Type     = SPEventReceiverType.ItemDeleting; // SPEventReceiverType
                eventReceiverDefinition.Update();
                typeList.Update(true);



                SPList valueList = web.GetList(uservalueListName);

                string className2 = "CMICT.CSP.Web.CategoryEvents.LookupValuesEvent";

                SPEventReceiverDefinition eventReceiverDefinition2 = valueList.EventReceivers.Add();
                eventReceiverDefinition2.Class    = className2;                       // String
                eventReceiverDefinition2.Assembly = assemblyName1;                    // String
                eventReceiverDefinition2.Type     = SPEventReceiverType.ItemDeleting; // SPEventReceiverType
                eventReceiverDefinition2.Update();
                valueList.Update(true);
            }
        }
예제 #4
0
    /// <summary> 
    /// Adds the event handler to the content type. 
    /// </summary> 
    /// <param name="contentType">The content type.</param> 
    /// <param name="name">The name of the event.</param> 
    /// <param name="assembly">The assembly containin the event receiver.</param> 
    /// <param name="className">Name of the event receiver class.</param> 
    /// <param name="type">The event receiver type.</param> 
    /// <param name="sequence">The sequence.</param> 
    /// <param name="sync">The synchronization type.</param> 
    public void AddEventHandler(
        SPContentType contentType,
        string name,
        string assembly,
        string className,
        SPEventReceiverType type,
        int sequence,
        SPEventReceiverSynchronization sync)
    {
      // Guard 
      if (contentType == null)
      {
        throw new ArgumentNullException("contentType");
      }

      SPEventReceiverDefinition definition = GetEventHandler(contentType.EventReceivers, name, type);
      if (definition == null)
      {
        contentType.EventReceivers.Add(type, assembly, className);
        definition = GetEventHandler(contentType.EventReceivers, className, type);
      }

      definition.Name = name;
      definition.SequenceNumber = sequence;
      definition.Synchronization = sync;
      definition.Update();
    }
예제 #5
0
        private SPEventReceiverDefinition AddEventReceiverDefinition(SPList list, SPEventReceiverType type, string assemblyName, string className, SPEventReceiverSynchronization syncType, int sequenceNumber)
        {
            SPEventReceiverDefinition eventReceiverDefinition = null;

            // Try Parse the Assembly Name
            var classType = Type.GetType(string.Format(CultureInfo.InvariantCulture, "{0}, {1}", className, assemblyName));

            if (classType != null)
            {
                var assembly         = Assembly.GetAssembly(classType);
                var isAlreadyDefined = list.EventReceivers.Cast <SPEventReceiverDefinition>().Any(x => (x.Class == className) && (x.Type == type));

                // If definition isn't already defined, add it to the list
                if (!isAlreadyDefined)
                {
                    eventReceiverDefinition                 = list.EventReceivers.Add();
                    eventReceiverDefinition.Type            = type;
                    eventReceiverDefinition.Assembly        = assembly.FullName;
                    eventReceiverDefinition.Synchronization = syncType;
                    eventReceiverDefinition.Class           = className;
                    eventReceiverDefinition.SequenceNumber  = sequenceNumber;
                    eventReceiverDefinition.Update();
                    list.Update();
                }
            }

            return(eventReceiverDefinition);
        }
        /// <summary>
        /// Adds an event receiver to the specified target
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="contentTypeName">Name of the content type.</param>
        /// <param name="target">The target.</param>
        /// <param name="assembly">The assembly.</param>
        /// <param name="className">Name of the class.</param>
        /// <param name="type">The type.</param>
        /// <param name="sequence">The sequence.</param>
        /// <param name="name">The name.</param>
        public static void Add(string url, string contentTypeName, TargetEnum target, string assembly, string className, SPEventReceiverType type, int sequence, string name)
        {
            using (SPSite site = new SPSite(url))
                using (SPWeb web = site.OpenWeb())
                {
                    SPContentType contentType = null;
                    SPEventReceiverDefinitionCollection eventReceivers;
                    if (target == TargetEnum.List)
                    {
                        SPList list = Utilities.GetListFromViewUrl(web, url);

                        if (list == null)
                        {
                            throw new Exception("List not found.");
                        }
                        eventReceivers = list.EventReceivers;
                    }
                    else if (target == TargetEnum.Site)
                    {
                        eventReceivers = web.EventReceivers;
                    }
                    else
                    {
                        try
                        {
                            contentType = web.AvailableContentTypes[contentTypeName];
                        }
                        catch (ArgumentException)
                        {
                        }
                        if (contentType == null)
                        {
                            throw new SPSyntaxException("The specified content type could not be found.");
                        }

                        eventReceivers = contentType.EventReceivers;
                    }
                    SPEventReceiverDefinition def = Add(eventReceivers, type, assembly, className, name);
                    if (sequence >= 0)
                    {
                        def.SequenceNumber = sequence;
                        def.Update();
                    }
                    if (contentType != null)
                    {
                        try
                        {
                            contentType.Update((contentType.ParentList == null));
                        }
                        catch (Exception ex)
                        {
                            Exception ex1 = new Exception("An error occured updating the content type.  Most likely the content type was updated but changes may not have been pushed down to any children.", ex);
                            Logger.WriteException(new ErrorRecord(ex1, null, ErrorCategory.NotSpecified, contentType));
                        }
                    }
                }
        }
예제 #7
0
        /// <summary>
        /// Добавить списку <paramref name="list"/> EventReceiver с именем <paramref name="name"/>.
        /// </summary>
        /// <param name="name">User friendly name for EventReceiver</param>
        /// <param name="list">SPList, к которому добавляется EventReceiver </param>
        /// <param name="typeClassReceiver">Тип (класс), в котором реализован метод-обработчик соответствующего EventReceiver'а</param>
        /// <param name="typeReceiver">Тип EventReceiver'а. Используйте только типы EventReceiver'ов, которые используются для СПИСКОВ (SPList)</param>
        /// <param name="synchronizationValue" >Синхронное или Асинхронное</param>
        /// <param name="sequenceNumber">Число, представляющее место данного события в последовательности событий</param>
        /// <exception cref="ArgumentNullException">Возникает если следующие параметры равны null: <paramref name="name"/>, <paramref name="list"/>, <paramref name="typeClassReceiver"/>.
        /// </exception>
        /// <exception cref="ArgumentException">Возникает если у списка уже есть Event ресивер типа <paramref name="typeReceiver"/> реализованный с помощью класса <paramref name="typeClassReceiver"/>
        /// </exception>
        public static void AddListEventReceiver(string name, SPList list, Type typeClassReceiver, SPEventReceiverType typeReceiver, SPEventReceiverSynchronization synchronizationValue, int sequenceNumber)
        {
            #region Проверка входящих параметров на null

            if (String.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }

            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            if (typeClassReceiver == null)
            {
                throw new ArgumentNullException("typeClassReceiver");
            }

            #endregion

            var eventReceiverAssembly = typeClassReceiver.Assembly.FullName;
            var eventReceiverClass    = typeClassReceiver.FullName;

            #region Проверяем есть ли уже в списке такой Event Reciever.

            for (var i = 0; i < list.EventReceivers.Count; i++)
            {
                var eventReceiverDefinition = list.EventReceivers[i];
                if (String.Equals(eventReceiverDefinition.Name, name))
                {
                    throw new ArgumentException("Event Receiver с таким именем уже существует.", "name");
                }

                if (eventReceiverDefinition.Assembly == eventReceiverAssembly && eventReceiverDefinition.Class == eventReceiverClass && eventReceiverDefinition.Type == typeReceiver)
                {
                    throw new ArgumentException(
                              String.Format("Такой Event Receiver уже существует. eventReceiverClass = {0} eventReceiverAssembly = {1}, typeReceiver = {2}", eventReceiverClass, eventReceiverAssembly, typeReceiver));
                }
            }

            #endregion

            // Создаём новый EventReceiver
            SPEventReceiverDefinition newEventReceiverDefinition = list.EventReceivers.Add();
            newEventReceiverDefinition.Type     = typeReceiver;
            newEventReceiverDefinition.Assembly = typeClassReceiver.Assembly.FullName;
            newEventReceiverDefinition.Class    = typeClassReceiver.FullName;
            // Задаём правильное имя EventReceiver'у
            newEventReceiverDefinition.Name = name;
            // Задаём тип синхронизации
            newEventReceiverDefinition.Synchronization = synchronizationValue;

            newEventReceiverDefinition.SequenceNumber = sequenceNumber;

            newEventReceiverDefinition.Update();
        }
예제 #8
0
        public static void Delete(this SPEventReceiverDefinitionCollection collection, string name)
        {
            SPEventReceiverDefinition receiverDefinition = collection.Cast <SPEventReceiverDefinition>()
                                                           .SingleOrDefault(receiver => string.Equals(receiver.Name, name));

            if (receiverDefinition != null)
            {
                receiverDefinition.Delete();
                receiverDefinition.Update();
            }
        }
예제 #9
0
        private void BindEventReceiver(SPContentType contentType, string eventClassName, SPEventReceiverType eventType)
        {
            SPEventReceiverDefinition eventReceiver = contentType.EventReceivers.Add();

            eventReceiver.Class    = eventClassName;
            eventReceiver.Assembly = _assemblyName;
            eventReceiver.Type     = eventType;
            eventReceiver.Data     = string.Empty;
            eventReceiver.Update();
            contentType.Update(true);
        }
예제 #10
0
        //public static List<SPFile> GetRelateddocuments(this SPListItem item)
        //{
        //    List<SPFile> listFile = new List<SPFile>();

        //    string contractNumberFieldName = item.Web.Site.GetFeaturePropertyValue(Constants.Workflow.INTEL_WF_FEATURE_ID, Constants.Workflow.CONTRACT_NUMBER_FIELD_NAME);
        //    if (string.IsNullOrEmpty(contractNumberFieldName) || !item.Fields.ContainsField(contractNumberFieldName))
        //        return null;

        //    if (item[contractNumberFieldName] == null) return null;

        //    string contentTypeFieldName = item.Web.Site.GetFeaturePropertyValue(Constants.Workflow.INTEL_WF_FEATURE_ID, Constants.Workflow.CONTENT_TYPE_FIELD_NAME);
        //    if (string.IsNullOrEmpty(contentTypeFieldName) || !item.Web.Site.RootWeb.AvailableFields.ContainsField(contentTypeFieldName))
        //        return null;

        //    string includeWithDeliveryFieldName = item.Web.Site.GetFeaturePropertyValue(Constants.Workflow.INTEL_WF_FEATURE_ID, Constants.Workflow.INCLUDE_WITH_DELIVERY_FIELD_NAME);
        //    if (string.IsNullOrEmpty(includeWithDeliveryFieldName) || !item.Web.Site.RootWeb.AvailableFields.ContainsField(includeWithDeliveryFieldName))
        //        return null;

        //    string relatedContractNumberFieldName = item.Web.Site.GetFeaturePropertyValue(Constants.Workflow.INTEL_WF_FEATURE_ID, Constants.Workflow.RELATED_CONTRACT_NUMBER_FIELD_NAME);
        //    if (string.IsNullOrEmpty(relatedContractNumberFieldName) || !item.Web.Site.RootWeb.AvailableFields.ContainsField(relatedContractNumberFieldName))
        //        return null;

        //    SPField contractNumberField = item.Fields[contractNumberFieldName];
        //    SPField contentTypeField = item.Web.Site.RootWeb.AvailableFields[contentTypeFieldName];
        //    SPField includeWithDeliveryField = item.Web.Site.RootWeb.AvailableFields[includeWithDeliveryFieldName];
        //    SPField relatedContractNumberField = item.Web.Site.RootWeb.AvailableFields[relatedContractNumberFieldName];

        //    SearchCriteria criteriaContentType = new SearchCriteria();
        //    criteriaContentType.FieldId = contentTypeField.Id.ToString();
        //    criteriaContentType.FieldType = contentTypeField.Type;
        //    criteriaContentType.Operator = Operators.Equal;
        //    criteriaContentType.Value = "Attachment";

        //    SearchCriteria criteriaIncludeWithDelivery = new SearchCriteria();
        //    criteriaIncludeWithDelivery.FieldId = includeWithDeliveryField.Id.ToString();
        //    criteriaIncludeWithDelivery.FieldType = includeWithDeliveryField.Type;
        //    criteriaIncludeWithDelivery.Operator = Operators.Equal;
        //    criteriaIncludeWithDelivery.Value = "1";

        //    SearchCriteria criteriaRelatedContractNumber = new SearchCriteria();
        //    criteriaRelatedContractNumber.FieldId = relatedContractNumberField.Id.ToString();
        //    criteriaRelatedContractNumber.FieldType = relatedContractNumberField.Type;
        //    criteriaRelatedContractNumber.Operator = Operators.Equal;
        //    criteriaRelatedContractNumber.Value = item[contractNumberFieldName].ToString();

        //    List<SearchCriteria> searchCriteriaList = new List<SearchCriteria>();
        //    searchCriteriaList.Add(criteriaContentType);
        //    searchCriteriaList.Add(criteriaIncludeWithDelivery);
        //    searchCriteriaList.Add(criteriaRelatedContractNumber);

        //    SearchDefinition searchDefinition = new SearchDefinition();
        //    searchDefinition.UseGlobalOperatorOR = false;
        //    searchDefinition.SearchCriteriaList = searchCriteriaList;

        //    FieldSetting contractNumberFieldResult = new FieldSetting();
        //    contractNumberFieldResult.FieldId = contractNumberField.Id.ToString();
        //    List<FieldSetting> resultFields = new List<FieldSetting>();
        //    resultFields.Add(contractNumberFieldResult);

        //    string strCAML = CAMLHelper.GetCAMLQueryFromSearchDefinition(searchDefinition);

        //    SPSiteDataQuery dataQuery = new SPSiteDataQuery();
        //    dataQuery.Query = strCAML;
        //    dataQuery.Lists = CAMLHelper.GetCAMLListBaseTypeSearch(SearchListBaseType.DocumentLibrary);
        //    dataQuery.ViewFields = CAMLHelper.GetCAMLFieldsResult(item.Web, null, resultFields);
        //    dataQuery.Webs = CAMLHelper.GetCAMLScopeSearch(0);

        //    try
        //    {
        //        DataTable searchResultsData = null;
        //        searchResultsData = item.Web.GetSiteData(dataQuery);
        //        foreach (DataRow row in searchResultsData.Rows)
        //        {
        //            SPList list = item.Web.Lists.GetList(new Guid(row["ListId"].ToString()), false);
        //            SPListItem itemGet = list.GetItemById(Convert.ToInt32(row["ID"].ToString()));
        //            if (itemGet.File != null)
        //                listFile.Add(itemGet.File);
        //        }
        //    }
        //    catch { }
        //    return listFile;
        //}

        public static void AddEventReceiver(this SPList list, string eventName, SPEventReceiverType type, string assemblyName, string className)
        {
            SPEventReceiverDefinition eventDefinition = list.EventReceivers.Add();

            eventDefinition.Name            = eventName;
            eventDefinition.Type            = type;
            eventDefinition.Synchronization = SPEventReceiverSynchronization.Synchronous;
            eventDefinition.Assembly        = assemblyName;
            eventDefinition.Class           = className;
            eventDefinition.Update();
        }
 private static void AddReceiverToList(SPList list, string rName, SPEventReceiverType rType, int seq)
 {
     if (!list.EventReceivers.Cast <SPEventReceiverDefinition>().Any(r => r.Name == rName))
     {
         SPEventReceiverDefinition _def = list.EventReceivers.Add();
         _def.Assembly        = Assembly.GetExecutingAssembly().FullName;
         _def.Class           = "Roster.Presentation.EventReceivers.SyncDataReceiver";
         _def.Name            = rName;
         _def.Type            = rType;
         _def.SequenceNumber  = seq;
         _def.Synchronization = SPEventReceiverSynchronization.Default;
         _def.Update();
     }
 }
예제 #12
0
        static void Main(string[] args)
        {
            #region ItemAdded
            try
            {
                using (SPSite site = new SPSite("http://sp:1220/sites/SPSite/"))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["Country"];

                        SPEventReceiverDefinition def = list.EventReceivers.Add();

                        def.Assembly        = "ConsoleApplicationExecutingEventReceiver, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c";//604f58e28557db00
                        def.Class           = "ConsoleApplicationExecutingEventReceiver.ASyncEvents";
                        def.Name            = "ItemAdded Event";
                        def.Type            = SPEventReceiverType.ItemAdded;
                        def.SequenceNumber  = 1000;
                        def.Synchronization = SPEventReceiverSynchronization.Synchronous;
                        def.Update();
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            #endregion

            #region ItemDeleting

            //  Console.ReadKey();
            //  SPSite collection = new SPSite(http://sitename/);
            //  SPUser user = new SPUser();
            //  SPWeb site = collection.RootWeb;
            //  SPList list = site.Lists["Program"];
            //  string asmName = "DeleteData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=21ce19119994750e";
            //  string className = " DeleteData.DeleteRefrence";
            //  // Register the events with the list
            //  list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, asmName, className);
            //// Clean up the code
            //  site.Dispose();
            //  collection.Dispose();
            //  Console.WriteLine("Sucessfully Registered");
            //  // Return to calling environment : Success
            //  Environment.Exit(0);

            #endregion
        }
예제 #13
0
        internal void CreateJobsList(SPWeb spWeb)
        {
            string listTitle       = "Jobs";
            string listDescription = "List of jobs and assignments.";
            Dictionary <string, SPFieldType> columns = new Dictionary <string, SPFieldType>();

            // The "Title" column will be added based on the GenericList template. That field
            // will be used as the category name for the job (e.g., Shopping), so only need to add
            // the remaining fields.
            columns.Add("Description", SPFieldType.Text);
            columns.Add("AssignedTo", SPFieldType.Text);

            // Creating list (or retrieving GUID for list if it already exists).
            Guid listId = CreateCustomList(spWeb, listTitle, listDescription, columns, false);

            if (listId.Equals(Guid.Empty))
            {
                return;
            }

            SPList list = spWeb.Lists[listId];

            // Add event receiver (if the current Jobs list is not already associated with the receiver).
            bool   ReceiverExists    = false;
            string receiverClassName = "PushNotificationsList.ListItemEventReceiver";

            for (int i = 0; i < list.EventReceivers.Count; i++)
            {
                SPEventReceiverDefinition rd = list.EventReceivers[i];
                if (rd.Class == receiverClassName && rd.Type == SPEventReceiverType.ItemAdded)
                {
                    ReceiverExists = true;
                    break;
                }
            }

            if (ReceiverExists == false)
            {
                SPEventReceiverDefinition eventReceiver = list.EventReceivers.Add();
                // Must specify information here for this specific assembly.
                eventReceiver.Assembly        = "PushNotificationsList, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=c8c80701196c142d";
                eventReceiver.Class           = receiverClassName;
                eventReceiver.Name            = "ItemAdded Event";
                eventReceiver.Type            = SPEventReceiverType.ItemAdded;
                eventReceiver.SequenceNumber  = 10000;
                eventReceiver.Synchronization = SPEventReceiverSynchronization.Synchronous;
                eventReceiver.Update();
            }
        }
        private void EventReceiverPropertyGrid_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
        {
            try
            {
                if (this.EventReceiverPropertyGrid.SelectedObject != null)
                {
                    SPEventReceiverDefinition definition = (SPEventReceiverDefinition)this.EventReceiverPropertyGrid.SelectedObject;

                    definition.Update();
                }
            }
            catch (Exception ex)
            {
                this.HandleException(ex);
            }
        }
예제 #15
0
        public void RegisterItemEventHandler(ref SPList list, Type receiverClassType, SPEventReceiverType receiverType, int sequence, SPEventReceiverSynchronization sync)
        {
            SPEventReceiverDefinition def = GetEventReceiver(ref list, receiverClassType, receiverType);

            if (def == null)
            {
                def = list.EventReceivers.Add();

                def.Assembly = receiverClassType.Assembly.FullName;                    //"ERDefinition, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=704f58d28567dc00";
                def.Class    = receiverClassType.Name;                                 // "ERDefinition.ItemEvents";
                def.Name     = receiverClassType.Name + "_" + receiverType.ToString(); //ItemAdded Event";
                def.Type     = receiverType;
            }
            def.SequenceNumber  = sequence;
            def.Synchronization = sync;
            def.Update();
        }
        /// <summary>
        /// Adds an event receiver to a the specified event receiver definition collection.
        /// </summary>
        /// <param name="eventReceivers">The event receivers.</param>
        /// <param name="eventReceiverType">Type of the event receiver.</param>
        /// <param name="assembly">The assembly.</param>
        /// <param name="className">Name of the class.</param>
        /// <param name="name">The name.</param>
        /// <returns></returns>
        public static SPEventReceiverDefinition Add(SPEventReceiverDefinitionCollection eventReceivers, SPEventReceiverType eventReceiverType, string assembly, string className, string name)
        {
            SPEventReceiverDefinition def = GetEventReceiver(eventReceivers, eventReceiverType, assembly, className);

            if (def == null)
            {
                eventReceivers.Add(eventReceiverType, assembly, className);
                def = GetEventReceiver(eventReceivers, eventReceiverType, assembly, className);
                if (def != null && !String.IsNullOrEmpty(name))
                {
                    def.Name = name;
                    def.Update();
                }
                return(def);
            }
            return(def);
        }
예제 #17
0
        public static void Register(this SPEventReceiverDefinitionCollection collection, string name, Type receiverType, SPEventReceiverType actionsToHandle, SPEventReceiverSynchronization synchronization = SPEventReceiverSynchronization.Synchronous, int sequenceNumber = 11000)
        {
            SPEventReceiverDefinition receiverDefinition = collection.Cast <SPEventReceiverDefinition>()
                                                           .SingleOrDefault(receiver => string.Equals(receiver.Name, name));

            if (receiverDefinition == null)
            {
                receiverDefinition                 = collection.Add();
                receiverDefinition.Name            = name;
                receiverDefinition.Synchronization = synchronization;
                receiverDefinition.Type            = actionsToHandle;
                receiverDefinition.SequenceNumber  = sequenceNumber;
                receiverDefinition.Assembly        = receiverType.Assembly.ToString();
                receiverDefinition.Class           = receiverType.FullName;
                receiverDefinition.Update();
            }
        }
예제 #18
0
        private SPEventReceiverDefinition AddEventReceiverDefinition(SPContentType contentType, SPEventReceiverType type, Assembly assembly, string className, SPEventReceiverSynchronization syncType)
        {
            SPEventReceiverDefinition eventReceiverDefinition = null;

            var isAlreadyDefined = contentType.EventReceivers.Cast <SPEventReceiverDefinition>()
                                   .Any(x => (x.Class == className) && (x.Type == type));

            // If definition isn't already defined, add it to the content type
            if (!isAlreadyDefined)
            {
                eventReceiverDefinition                 = contentType.EventReceivers.Add();
                eventReceiverDefinition.Type            = type;
                eventReceiverDefinition.Assembly        = assembly.FullName;
                eventReceiverDefinition.Synchronization = syncType;
                eventReceiverDefinition.Class           = className;
                eventReceiverDefinition.Update();
                contentType.Update(true);
            }

            return(eventReceiverDefinition);
        }
예제 #19
0
        /// <summary>
        /// A site was provisioned.
        /// </summary>
        public override void WebProvisioned(SPWebEventProperties properties)
        {
            base.WebProvisioned(properties);

            try
            {
                SPEventReceiverDefinition pageAddedEvt = properties.Web.Site.EventReceivers
                                                         .OfType <SPEventReceiverDefinition>()
                                                         .FirstOrDefault(evt => evt.Name == "EVT_PageCreatedItemAdded");

                if (pageAddedEvt != null)
                {
                    foreach (SPList list in properties.Web.Lists.OfType <SPList>().Where(l => !l.Hidden && l.BaseType == SPBaseType.DocumentLibrary))
                    {
                        SPEventReceiverDefinition newEvt = list.EventReceivers.Add(pageAddedEvt.Id);

                        newEvt.Update();
                        list.Update();
                    }
                }
            }
            catch { }
        }
예제 #20
0
        internal static void CreateReceiverDefinitions(SPWeb web)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (new SPMonitoredScope("Append RoleEventReceiver Zimbra"))
                {
                    SPEventReceiverDefinition RoleAssignmentAdded = web.EventReceivers.Add();
                    RoleAssignmentAdded.Name     = "Zimbra RoleAssignment Added";
                    RoleAssignmentAdded.Type     = SPEventReceiverType.RoleAssignmentAdded;
                    RoleAssignmentAdded.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleAssignmentAdded.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleAssignmentAdded.Update();

                    SPEventReceiverDefinition RoleAssignmentAdding = web.EventReceivers.Add();
                    RoleAssignmentAdding.Name     = "Zimbra RoleAssignment Adding";
                    RoleAssignmentAdding.Type     = SPEventReceiverType.RoleAssignmentAdding;
                    RoleAssignmentAdding.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleAssignmentAdding.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleAssignmentAdding.Update();

                    SPEventReceiverDefinition RoleAssignmentDeleted = web.EventReceivers.Add();
                    RoleAssignmentDeleted.Name     = "Zimbra RoleAssignment Deleted";
                    RoleAssignmentDeleted.Type     = SPEventReceiverType.RoleAssignmentDeleted;
                    RoleAssignmentDeleted.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleAssignmentDeleted.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleAssignmentDeleted.Update();

                    SPEventReceiverDefinition RoleAssignmentDeleting = web.EventReceivers.Add();
                    RoleAssignmentDeleting.Name     = "Zimbra RoleAssignment Deleting";
                    RoleAssignmentDeleting.Type     = SPEventReceiverType.RoleAssignmentDeleting;
                    RoleAssignmentDeleting.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleAssignmentDeleting.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleAssignmentDeleting.Update();

                    SPEventReceiverDefinition RoleDefinitionAdded = web.EventReceivers.Add();
                    RoleDefinitionAdded.Name     = "Zimbra RoleDefinition Added";
                    RoleDefinitionAdded.Type     = SPEventReceiverType.RoleDefinitionAdded;
                    RoleDefinitionAdded.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleDefinitionAdded.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleDefinitionAdded.Update();

                    SPEventReceiverDefinition RoleDefinitionAdding = web.EventReceivers.Add();
                    RoleDefinitionAdding.Name     = "Zimbra RoleDefinition Adding";
                    RoleDefinitionAdding.Type     = SPEventReceiverType.RoleDefinitionAdding;
                    RoleDefinitionAdding.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleDefinitionAdding.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleDefinitionAdding.Update();

                    SPEventReceiverDefinition RoleDefinitionDeleted = web.EventReceivers.Add();
                    RoleDefinitionDeleted.Name     = "Zimbra RoleDefinition Deleted";
                    RoleDefinitionDeleted.Type     = SPEventReceiverType.RoleDefinitionDeleted;
                    RoleDefinitionDeleted.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleDefinitionDeleted.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleDefinitionDeleted.Update();

                    SPEventReceiverDefinition RoleDefinitionDeleting = web.EventReceivers.Add();
                    RoleDefinitionDeleting.Name     = "Zimbra RoleDefinition Deleting";
                    RoleDefinitionDeleting.Type     = SPEventReceiverType.RoleDefinitionDeleting;
                    RoleDefinitionDeleting.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleDefinitionDeleting.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleDefinitionDeleting.Update();

                    SPEventReceiverDefinition RoleDefinitionUpdated = web.EventReceivers.Add();
                    RoleDefinitionUpdated.Name     = "Zimbra RoleDefinition Updated";
                    RoleDefinitionUpdated.Type     = SPEventReceiverType.RoleDefinitionUpdated;
                    RoleDefinitionUpdated.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleDefinitionUpdated.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleDefinitionUpdated.Update();

                    SPEventReceiverDefinition RoleDefinitionUpdating = web.EventReceivers.Add();
                    RoleDefinitionUpdating.Name     = "Zimbra RoleDefinition Updating";
                    RoleDefinitionUpdating.Type     = SPEventReceiverType.RoleDefinitionUpdating;
                    RoleDefinitionUpdating.Assembly = Assembly.GetExecutingAssembly().FullName;
                    RoleDefinitionUpdating.Class    = "ClubCloud.Provider.ZimbraRoleEventReceiver";
                    RoleDefinitionUpdating.Update();

                    web.Update();
                }
            });
        }
        void saveButton_Click(object sender, EventArgs e)
        {
            if (PowerEventReceiversHelper.IsUserInPowerEventReceiversGroup == false)
            {
                throw new SecurityException("Access Denied! Current user is not a farm administrator.");
            }

            if (scriptProperty == null)
            {
                scriptProperty = new SPFeatureProperty(propNameScript, scriptBox.Text);
                feature.Properties.Add(scriptProperty);
            }
            else
            {
                scriptProperty.Value = scriptBox.Text;
            }

            if (sequenceProperty == null)
            {
                sequenceProperty = new SPFeatureProperty(propNameSequence, sequenceNumber.Text);
                feature.Properties.Add(sequenceProperty);
            }
            else
            {
                sequenceProperty.Value = sequenceNumber.Text;
            }

            if (synchronousProperty == null)
            {
                synchronousProperty = new SPFeatureProperty(propNameSynchronous, checkBoxSynchronous.Checked.ToString());
                feature.Properties.Add(synchronousProperty);
            }
            else
            {
                synchronousProperty.Value = checkBoxSynchronous.Checked.ToString();
            }

            feature.Properties.Update();

            //clean power event receivers
            List <SPEventReceiverDefinition> receiversToDelete = new List <SPEventReceiverDefinition>();

            SPEventReceiverDefinitionCollection receivers = null;

            if (eventType == PowerEventType.Item || eventType == PowerEventType.List)
            {
                receivers = list.EventReceivers;
            }
            else
            {
                receivers = web.EventReceivers;
            }

            foreach (SPEventReceiverDefinition receiver in receivers)
            {
                if (receiver.Class == typeof(PowerItemEventReceiver).FullName)
                {
                    receiversToDelete.Add(receiver);
                }
            }

            foreach (SPEventReceiverDefinition receiver in receiversToDelete)
            {
                receiver.Delete();
            }

            if (!String.IsNullOrEmpty(sequenceNumber.Text))
            {
                Runspace runspace = null;
                try
                {
                    SPSecurity.RunWithElevatedPrivileges(() => {
                        runspace = RunspaceFactory.CreateRunspace();
                        runspace.Open();
                        Pipeline pipe = runspace.CreatePipeline(scriptBox.Text);
                        pipe.Invoke();

                        pipe = runspace.CreatePipeline("get-childitem function:\\");
                        Collection <PSObject> results = pipe.Invoke();

                        string[] receiverTypes = Enum.GetNames(typeof(SPEventReceiverType));

                        foreach (PSObject obj in results)
                        {
                            FunctionInfo func = (FunctionInfo)obj.BaseObject;

                            if (receiverTypes.Contains(func.Name))
                            {
                                SPEventReceiverDefinition eventReceiverDef = null;
                                if (eventType == PowerEventType.Web)
                                {
                                    eventReceiverDef = web.EventReceivers.Add();
                                }
                                else
                                {
                                    eventReceiverDef = list.EventReceivers.Add();
                                }

                                eventReceiverDef.Assembly        = Assembly.GetExecutingAssembly().FullName;
                                eventReceiverDef.Class           = eventDefinitionType;
                                eventReceiverDef.Type            = (SPEventReceiverType)Enum.Parse(typeof(SPEventReceiverType), func.Name);
                                eventReceiverDef.SequenceNumber  = int.Parse(sequenceNumber.Text);
                                eventReceiverDef.Synchronization = (Boolean.Parse(synchronousProperty.Value) || func.Name.Contains("ing"))
                                                                       ? SPEventReceiverSynchronization.Synchronous
                                                                       : SPEventReceiverSynchronization.Asynchronous;
                                eventReceiverDef.Update();
                            }
                        }
                    });
                    Response.Redirect(redirectUrl, true);
                }
                catch (Exception ex)
                {
                    literalError.Text  = String.Format("<div style='Color:red'><b>{0}</b></div>", ex.Message);
                    literalError.Text += String.Format("<div>{0}</div>", HttpUtility.HtmlEncode(ex.StackTrace));
                }
                finally
                {
                    if (runspace != null && runspace.RunspaceStateInfo.State != RunspaceState.Closed)
                    {
                        runspace.Close();
                        runspace = null;
                    }
                }
            }
        }
예제 #22
0
 public void Update()
 {
     m_eventReceiverDefinition.Update();
 }
        public virtual void UpdateEventReceiver(SPEventReceiverDefinition eventReceiver, string eventReceiverName, string assembly, string className, SPEventReceiverType type, SPEventReceiverSynchronization sync, int? sequenceNumber)
        {
            eventReceiver.Name = eventReceiverName;
            eventReceiver.Assembly = assembly;
            eventReceiver.Class = className;
            eventReceiver.Synchronization = sync;

            if (sequenceNumber.HasValue)
                eventReceiver.SequenceNumber = sequenceNumber.Value;

            eventReceiver.Update();
        }
예제 #24
0
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                SPWeb      web          = (SPWeb)properties.Feature.Parent;
                SPWeb      parentWeb    = web.Site.RootWeb;
                SPList     eventLog     = parentWeb.Lists.TryGetList("CCPEventFeatureLog");
                SPListItem eventLogItem = eventLog.AddItem();
                SPList     proposals    = web.Lists.TryGetList("Proposals");
                SPList     contracts    = web.Lists.TryGetList("Contracts");

                if (proposals != null) //attach receiver to proposals
                {
                    string id   = proposals.ID.ToString();
                    Guid   guid = new Guid(id);
                    SPEventReceiverDefinition receiver1 = proposals.EventReceivers.Add(guid, proposals);
                    receiver1.Name            = "ListEvents";
                    receiver1.Assembly        = System.Reflection.Assembly.GetExecutingAssembly().FullName;
                    receiver1.Class           = "ClientCenterProject.ListEvents";
                    receiver1.Type            = SPEventReceiverType.ItemAdded;
                    receiver1.Synchronization = SPEventReceiverSynchronization.Synchronous;
                    receiver1.SequenceNumber  = 50984;
                    receiver1.Update();

                    //Add log to eventlog
                    eventLogItem["Proposals"] = "Receiver attach to " + proposals.Title + " at: " + web.Title + " : " + web.Url;
                    eventLogItem.Update();
                }  //if
                else
                {
                    //Add log to eventlog
                    eventLogItem["Proposals"] = "No Proposals at: " + web.Title + " : " + web.Url;
                    eventLogItem.Update();
                }

                if (contracts != null)  //attach receiver to contracts
                {
                    string id   = contracts.ID.ToString();
                    Guid   guid = new Guid(id);
                    SPEventReceiverDefinition receiver2 = contracts.EventReceivers.Add(guid, contracts);
                    receiver2.Name            = "ListEvents";
                    receiver2.Assembly        = System.Reflection.Assembly.GetExecutingAssembly().FullName;
                    receiver2.Class           = "ClientCenterProject.ListEvents";
                    receiver2.Type            = SPEventReceiverType.ItemAdded;
                    receiver2.Synchronization = SPEventReceiverSynchronization.Synchronous;
                    receiver2.SequenceNumber  = 50985;
                    receiver2.Update();

                    //Add log to eventlog
                    eventLogItem["Contracts"] = "Receiver attach to " + contracts.Title + " at: " + web.Title + " : " + web.Url;
                    eventLogItem.Update();
                }  //if
                else
                {
                    //Add log to eventlog
                    eventLogItem["Contracts"] = "No Contracts at: " + web.Title + " : " + web.Url;
                    eventLogItem.Update();
                }
            }
            catch (Exception e)
            {
                SPWeb      web       = (SPWeb)properties.Feature.Parent;
                SPWeb      parentWeb = web.Site.RootWeb;
                SPList     eventLog  = parentWeb.Lists.TryGetList("CCPEventFeatureLog");
                SPListItem item      = eventLog.AddItem();
                item["CCPWebEvents"] = "FeatureActivated : " + e.Message;
                item.Update();
            }
        }
예제 #25
0
        void saveButton_Click(object sender, EventArgs e)
        {
            if (SPFarm.Local.CurrentUserIsAdministrator() == false)
            {
                throw new SecurityException("Access Denied! Current user is not a farm administrator.");
            }

            if (scriptProperty == null)
            {
                scriptProperty = new SPFeatureProperty(propNameScript, scriptBox.Text);
                feature.Properties.Add(scriptProperty);
            }
            else
            {
                scriptProperty.Value = scriptBox.Text;
            }

            if (sequenceProperty == null)
            {
                sequenceProperty = new SPFeatureProperty(propNameSequence, sequenceNumber.Text);
                feature.Properties.Add(sequenceProperty);
            }
            else
            {
                sequenceProperty.Value = sequenceNumber.Text;
            }

            feature.Properties.Update();

            //clean power event receivers
            List <SPEventReceiverDefinition> receiversToDelete = new List <SPEventReceiverDefinition>();

            SPEventReceiverDefinitionCollection receivers = null;

            if (eventType == PowerEventType.Item || eventType == PowerEventType.List)
            {
                receivers = list.EventReceivers;
            }
            else
            {
                receivers = web.EventReceivers;
            }

            foreach (SPEventReceiverDefinition receiver in receivers)
            {
                if (receiver.Class == typeof(PowerItemEventReceiver).FullName)
                {
                    receiversToDelete.Add(receiver);
                }
            }

            foreach (SPEventReceiverDefinition receiver in receiversToDelete)
            {
                receiver.Delete();
            }

            if (!String.IsNullOrEmpty(sequenceNumber.Text))
            {
                Runspace runspace = null;
                try
                {
                    runspace = RunspaceFactory.CreateRunspace();
                    runspace.Open();
                    Pipeline pipe = runspace.CreatePipeline(scriptBox.Text);
                    pipe.Invoke();

                    pipe = runspace.CreatePipeline("get-childitem function:\\");
                    Collection <PSObject> results = pipe.Invoke();

                    string[] receiverTypes = Enum.GetNames(typeof(SPEventReceiverType));

                    foreach (PSObject obj in results)
                    {
                        FunctionInfo func = (FunctionInfo)obj.BaseObject;

                        if (receiverTypes.Contains(func.Name))
                        {
                            SPEventReceiverDefinition eventReceiverDef = null;
                            if (eventType == PowerEventType.Web)
                            {
                                eventReceiverDef = web.EventReceivers.Add();
                            }
                            else
                            {
                                eventReceiverDef = list.EventReceivers.Add();
                            }

                            eventReceiverDef.Assembly       = Assembly.GetExecutingAssembly().FullName;
                            eventReceiverDef.Class          = eventDefinitionType;
                            eventReceiverDef.Type           = (SPEventReceiverType)Enum.Parse(typeof(SPEventReceiverType), func.Name);
                            eventReceiverDef.SequenceNumber = int.Parse(sequenceNumber.Text);
                            eventReceiverDef.Update();
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (runspace != null && runspace.RunspaceStateInfo.State != RunspaceState.Closed)
                    {
                        runspace.Close();
                        runspace = null;
                    }
                }
            }

            Response.Redirect(redirectUrl, true);
        }
예제 #26
0
        internal static void CreateReceiverDefinitions(SPWeb web)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (new SPMonitoredScope("Create GroupEventReceivers Zimbra"))
                {
                    SPEventReceiverDefinition GroupAdded = web.EventReceivers.Add();
                    GroupAdded.Name     = "Zimbra Group Added";
                    GroupAdded.Type     = SPEventReceiverType.GroupAdded;
                    GroupAdded.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupAdded.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupAdded.Update();

                    SPEventReceiverDefinition GroupAdding = web.EventReceivers.Add();
                    GroupAdding.Name     = "Zimbra Group Adding";
                    GroupAdding.Type     = SPEventReceiverType.GroupAdding;
                    GroupAdding.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupAdding.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupAdding.Update();

                    SPEventReceiverDefinition GroupDeleted = web.EventReceivers.Add();
                    GroupDeleted.Name     = "Zimbra Group Deleted";
                    GroupDeleted.Type     = SPEventReceiverType.GroupDeleted;
                    GroupDeleted.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupDeleted.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupDeleted.Update();

                    SPEventReceiverDefinition GroupDeleting = web.EventReceivers.Add();
                    GroupDeleting.Name     = "Zimbra Group Deleting";
                    GroupDeleting.Type     = SPEventReceiverType.GroupDeleting;
                    GroupDeleting.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupDeleting.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupDeleting.Update();

                    SPEventReceiverDefinition GroupUpdated = web.EventReceivers.Add();
                    GroupUpdated.Name     = "Zimbra Group Updated";
                    GroupUpdated.Type     = SPEventReceiverType.GroupUpdated;
                    GroupUpdated.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupUpdated.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupUpdated.Update();

                    SPEventReceiverDefinition GroupUpdating = web.EventReceivers.Add();
                    GroupUpdating.Name     = "Zimbra Group Updating";
                    GroupUpdating.Type     = SPEventReceiverType.GroupUpdating;
                    GroupUpdating.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupUpdating.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupUpdating.Update();

                    SPEventReceiverDefinition GroupUserAdded = web.EventReceivers.Add();
                    GroupUserAdded.Name     = "Zimbra Group User Added";
                    GroupUserAdded.Type     = SPEventReceiverType.GroupUserAdded;
                    GroupUserAdded.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupUserAdded.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupUserAdded.Update();

                    SPEventReceiverDefinition GroupUserAdding = web.EventReceivers.Add();
                    GroupUserAdding.Name     = "Zimbra Group User Adding";
                    GroupUserAdding.Type     = SPEventReceiverType.GroupUserAdding;
                    GroupUserAdding.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupUserAdding.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupUserAdding.Update();

                    SPEventReceiverDefinition GroupUserDeleted = web.EventReceivers.Add();
                    GroupUserDeleted.Name     = "Zimbra Group User Deleted";
                    GroupUserDeleted.Type     = SPEventReceiverType.GroupUserDeleted;
                    GroupUserDeleted.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupUserDeleted.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupUserDeleted.Update();

                    SPEventReceiverDefinition GroupUserDeleting = web.EventReceivers.Add();
                    GroupUserDeleting.Name     = "Zimbra Group User Deleting";
                    GroupUserDeleting.Type     = SPEventReceiverType.GroupUserDeleting;
                    GroupUserDeleting.Assembly = Assembly.GetExecutingAssembly().FullName;
                    GroupUserDeleting.Class    = "ClubCloud.Provider.ZimbraGroupEventReceiver";
                    GroupUserDeleting.Update();

                    web.Update();
                }
            });
        }