private void AddEventReceiverToWeb(SPWeb currentWeb, SPEventReceiverType type)
        {
            SPEventReceiverDefinition def = currentWeb.EventReceivers.Add();
            def.Name = "Web Event Receiver - " + type.ToString();
            def.Type = type;
            def.Assembly = Assembly.GetExecutingAssembly().FullName;
            def.Class = eventRcvClass;
            def.Update();

            currentWeb.Update();
        }
Esempio n. 2
0
        /// <summary>
        /// Log the event to the specified list
        /// </summary>
        /// <param name="web"></param>
        /// <param name="listName"></param>
        /// <param name="eventType"></param>
        /// <param name="details"></param>
        public static void LogEvent(SPWeb web, string listName, SPEventReceiverType eventType, string details)
        {
            SPList     logList = Common.EnsureLogList(web, listName);
            SPListItem logItem = logList.Items.Add();

            logItem["Title"]   = string.Format("{0} triggered at {1}", eventType, DateTime.Now);
            logItem["Event"]   = eventType.ToString();
            logItem["Before"]  = Common.IsBeforeEvent(eventType);
            logItem["Date"]    = DateTime.Now;
            logItem["Details"] = details;
            logItem.Update();
        }
Esempio n. 3
0
        /// <summary>
        /// Removes the event receiver.
        /// </summary>
        /// <param name="spList">The sp list.</param>
        /// <param name="assembly">The assembly.</param>
        /// <param name="className">Name of the class.</param>
        /// <param name="spEventReceiverType">Type of the sp event receiver.</param>
        /// <param name="eventReceiverElement">The event receiver element.</param>
        private void RemoveEventReceiver(SPList spList, string assembly, string className,
                                         SPEventReceiverType spEventReceiverType, ref XElement eventReceiverElement)
        {
            var eventElement = new XElement("EventReceiver", new XAttribute("Type", spEventReceiverType.ToString()),
                                            new XAttribute("Assembly", assembly), new XAttribute("Class", className),
                                            new XAttribute("SiteId", spList.ParentWeb.Site.ID),
                                            new XAttribute("WebId", spList.ParentWeb.ID),
                                            new XAttribute("ListId", spList.ID),
                                            new XAttribute("Status", 0));

            bool found = false;

            var events = new List <SPEventReceiverDefinition>();

            foreach (SPEventReceiverDefinition spEventReceiverDefinition in
                     spList.EventReceivers.Cast <SPEventReceiverDefinition>()
                     .Where(spEventReceiverDefinition =>
                            spEventReceiverDefinition.Assembly.Equals(assembly) &&
                            spEventReceiverDefinition.Class.Equals(className) &&
                            spEventReceiverDefinition.Type == spEventReceiverType))
            {
                found = true;

                events.Add(spEventReceiverDefinition);
            }

            if (found)
            {
                foreach (SPEventReceiverDefinition spEventReceiverDefinition in events)
                {
                    spEventReceiverDefinition.Delete();
                }

                spList.Update();

                eventElement.SetValue("Event receiver successfully uninstalled.");
            }
            else
            {
                // ReSharper disable PossibleNullReferenceException

                eventElement.Attribute("Status").SetValue(1);

                // ReSharper restore PossibleNullReferenceException

                eventElement.SetValue("Operation not performed. Event receiver was not found.");
            }

            eventReceiverElement.Add(new XElement("Data", eventElement));
        }
Esempio n. 4
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();
        }
Esempio n. 5
0
        public static MethodInfo ResolveEventHook(string assemblyFullName, string classFullName, SPEventReceiverType eventType)
        {
            MethodInfo method = null;

            Assembly assembly = Assembly.LoadWithPartialName(assemblyFullName);

            if (assembly != null)
            {
                Type type = assembly.GetType(classFullName);

                if (type != null)
                {
                    MethodInfo tempMethod = type.GetMethod(eventType.ToString());

                    if ((tempMethod != null) && (tempMethod.DeclaringType == type))
                    {
                        method = tempMethod;
                    }
                }
            }

            return(method);
        }