internal override FileSystem.Directory CreateDirectory(string VirtualPath)
{
VirtualPath = VirtualPath.VirtualPathToDbPath();
if (DirectoryExists(VirtualPath))
return GetDirectory(VirtualPath);
var directoryName = "root";
if (!string.IsNullOrWhiteSpace(VirtualPath))
directoryName = string.Format("/{0}", VirtualPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last());
FileSystem.FileStoreDb db = new FileSystem.FileStoreDb(this.connectionString);
FileSystem.FileStoreDirectory dir = new FileSystem.FileStoreDirectory
{
BlogID = Blog.CurrentInstance.Id,
CreateDate = DateTime.Now,
FullPath = VirtualPath,
Id = Guid.NewGuid(),
LastAccess = DateTime.Now,
Name = directoryName,
LastModify = DateTime.Now
};
if (!string.IsNullOrWhiteSpace(VirtualPath))
{
var parentPath = VirtualPath.Contains("/") ? VirtualPath.Substring(0, VirtualPath.LastIndexOf("/")) : string.Empty;
dir.ParentID = this.GetDirectory(parentPath).Id;
}
db.FileStoreDirectories.InsertOnSubmit(dir);
db.SubmitChanges();
db.Dispose();
return GetDirectory(VirtualPath);
}