public Dictionary <string, object> UpdateTemplate(string domain, byte[] postData, DynamicTableObject obj) { var oldTemplate = obj.Values; IndexedDB.Serializer.Simple.SimpleConverter <TemplateUpdateModel> converter = new IndexedDB.Serializer.Simple.SimpleConverter <TemplateUpdateModel>(); var model = converter.FromBytes(postData); var hash = Lib.Security.Hash.ComputeGuid(model.Bytes); var userId = oldTemplate["userId"]; if (hash != model.ByteHash || model.UserId.ToString() != userId.ToString()) { return(null); } oldTemplate["link"] = model.Link; oldTemplate["description"] = model.Description; oldTemplate["tags"] = model.Tags; oldTemplate["lastModified"] = DateTime.UtcNow; oldTemplate["lastModifiedTimeStamp"] = DateTime.UtcNow.Ticks; var existImages = new List <string>(); if (oldTemplate["images"] != null && !string.IsNullOrEmpty(oldTemplate["images"].ToString())) { var oldlist = Kooboo.Lib.Helper.JsonHelper.Deserialize <List <string> >(oldTemplate["images"].ToString()); var newlist = JsonHelper.Deserialize <List <string> >(model.Images); existImages = clearImagePath(oldlist, newlist); } var images = new List <ScreenshotImage>(); var thumbnail = string.Empty; if (model.Bytes != null && model.Bytes.Length > 0) { Guid oldsiteid = model.Id; // there is a change of zip. File.WriteAllBytes(GetFilePath(model.Id.ToString()), model.Bytes); oldTemplate["size"] = model.Bytes.Length; // update to preview sites. var siteDb = ImportBinary(domain, model.Bytes, oldTemplate); if (model.NewImages.Count == 0 && existImages.Count() == 0) { images = GetScreenshotImages(siteDb, domain); if (images.Count > 0) { thumbnail = images[0].FileName; } } // remove the old site. Sites.Service.WebSiteService.Delete(oldsiteid); } foreach (var image in model.NewImages) { var screenshotImage = new ScreenshotImage { Base64 = image.Base64, FileName = Guid.NewGuid().ToString().Replace("-", "") + Kooboo.Lib.Helper.UrlHelper.FileExtension(image.FileName) }; images.Add(screenshotImage); if (image.IsDefault) { thumbnail = screenshotImage.FileName; } } var imagelist = new List <string>(); foreach (var image in images) { string relativeurl = image.FileName; var filepath = GetImagePath(relativeurl); File.WriteAllBytes(filepath, image.Bytes); imagelist.Add(relativeurl); } existImages.AddRange(imagelist); oldTemplate["images"] = existImages.ToArray(); oldTemplate["thumbNail"] = string.IsNullOrEmpty(thumbnail) ? GetDefaultImage(existImages, model.NewDefault) : thumbnail; return(oldTemplate); }
public Dictionary <string, object> UploadOldFormat(string domain, byte[] postData) { IndexedDB.Serializer.Simple.SimpleConverter <TemplateDataModel> converter = new IndexedDB.Serializer.Simple.SimpleConverter <TemplateDataModel>(); var model = converter.FromBytes(postData); var hash = Lib.Security.Hash.ComputeGuid(model.Bytes); if (hash != model.ByteHash || model.UserId == default(Guid) || model.Bytes.Length == 0) { return(null); } var dic = new Dictionary <string, object>(); dic["name"] = model.Name; dic["link"] = model.Link; dic["description"] = model.Description; dic["tags"] = model.Tags; dic["userId"] = model.UserId; var user = Data.GlobalDb.Users.Get(model.UserId); if (user != null) { dic["userName"] = user.FullName; } dic["lastModified"] = DateTime.UtcNow; dic["lastModifiedTimeStamp"] = DateTime.UtcNow.Ticks; dic["downloadCount"] = 0; dic["score"] = 0; dic["id"] = Guid.NewGuid().ToString(); var filePath = GetFilePath(dic["id"].ToString()); File.WriteAllBytes(filePath, model.Bytes); dic["size"] = model.Bytes.Length; var siteDb = ImportBinary(domain, model.Bytes, dic); Lib.Helper.IOHelper.EnsureDirectoryExists(ImagePath); var images = new List <ScreenshotImage>(); var thumbnail = ""; if (model.Images.Count() == 0) { images = GetScreenshotImages(siteDb, domain); if (images.Count > 0) { thumbnail = images[0].FileName; } } else { foreach (var image in model.Images) { var screenshotImage = new ScreenshotImage { Base64 = image.Base64, FileName = Guid.NewGuid().ToString().Replace("-", "") + Kooboo.Lib.Helper.UrlHelper.FileExtension(image.FileName) }; images.Add(screenshotImage); if (image.IsDefault) { thumbnail = screenshotImage.FileName; } } if (string.IsNullOrEmpty(thumbnail) && images.Count > 0) { thumbnail = images[0].FileName; } } var imagelist = new List <string>(); foreach (var image in images) { string relativeurl = image.FileName; var filepath = GetImagePath(relativeurl); File.WriteAllBytes(filepath, image.Bytes); imagelist.Add(relativeurl); } dic["images"] = imagelist.ToArray(); dic["thumbNail"] = thumbnail; return(dic); }