Listen/Subscribe to EPiServer CMS 5 R1 File Events
Product version: |
EPiServer CMS 5 R1 |
---|---|
Document version: |
1.0 |
Document creation date: |
24-11-2006 |
Document last saved: |
12-09-2007 |
The base for File Event subscription is the UnifiedFile and UnifiedDirectory classes. They are abstraction classes of the underlying file system and the facade for EPiServer CMS 5 and file management.
UnifiedFile triggers events (both pre and post events) to subscribers when a file is
- deleted
- checked out
- checked in
- moved
- copied
UnifiedDirectory triggers events (both pre and post events) to subscribers when
- a file is added
- a directory is added
- a directory is moved
- a directory is copied
- a directory is deleted
Since UnifiedFile and UnifiedDirectory are highly abstract classes in the EPiServer CMS 5 object hierarchy, there is no knowledge of who (logged-in EPiServer CMS 5 user) performed the operation. This makes more sense since underlying FileSystems (such as NativeFileSystem) can have a non-EPiServer CMS 5 user manipulating files directly outside the admin UI. It is not recommended to use the local file directory used by EPiServer CMS 5 directly since other functionality may rely on events being triggered, for example Workflows.
Below is a sample code snippet to illustrate how to subscribe on File events. The example class is a singleton instance storing the list of events (as strings) triggered by UnifiedFile, in a real live scenario the listener for events might be implemented differently.
public class Subscriber
{
private static Subscriber instance = null;
private static IList<string> events = new List<string>();
static Subscriber()
{
UnifiedFile.UnifiedFileMoved += new UnifiedFileEventHandler<UnifiedVirtualPathEventArgs>(UnifiedFile_FileMoved);
}
void UnifiedFile_FileMoved(UnifiedFile sender,
UnifiedVirtualPathEventArgs args)
{
events.Add("File moved from: " +
args.VirtualPath +
" to:" +
args.NewVirtualPath);
}
public static Subscriber Instance
{
get
{
if (instance == null)
instance = new Subscriber();
return instance;
}
}
public IList GetEvents()
{
return events;
}
}