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(); }
/// <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(); }
/// <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)); }
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(); }
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); }