/// <summary> /// creates a new CmsResource object from an Adobe file (is PDF, PSD, AI) /// </summary> /// <param name="imageFilename"></param> /// <returns></returns> public static CmsLocalFileOnDisk CreateFomAdobeDocument(string adobeFilename) { CmsLocalFileOnDisk ret = new CmsLocalFileOnDisk(); ret.filename = Path.GetFileName(adobeFilename); ret.filepath = adobeFilename; ret.fileDirectory = Path.GetDirectoryName(adobeFilename); ret.MimeType = PageUtils.MimeTypeLookup(Path.GetExtension(adobeFilename)); if (File.Exists(adobeFilename)) { FileInfo fi = new FileInfo(adobeFilename); ret.FileSize = fi.Length; ret.FileTimestamp = fi.LastWriteTime; MetaDataItem[] metaData = MetaDataUtils.GetXmpData(adobeFilename); ret.MetaData = CmsLocalFileOnDiskMetaItem.FromMetaDataItems(ret, metaData); } return(ret); }
} // Get public CmsLocalFileOnDisk GetResourceByFilename(string filename) { string sql = "select AutoIncId, ResourceId, RevisionNumber, Filename, FilePath, FileDirectory, FileSize, FileTimestamp, MimeType, ModifiedBy, ModificationDate from resourceitems "; sql += " where LOWER(FilePath) = '" + dbEncode(filename.ToLower()) + "' AND deleted is null order by ResourceId, RevisionNumber DESC ; "; DataSet ds = this.RunSelectQuery(sql); if (this.hasRows(ds)) { foreach (DataRow dr in ds.Tables[0].Rows) { CmsLocalFileOnDisk res = ResourceFromDataRow(dr); int lastExistingRevNum = getLastExistingRevisionNumber(res.ResourceId); if (lastExistingRevNum == res.RevisionNumber) { res.MetaData = CmsLocalFileOnDiskMetaItem.FetchAll(res); return(res); } } // foreach } return(new CmsLocalFileOnDisk()); }
public static CmsLocalFileOnDisk CreateFromFile(string filenameOnDisk) { CmsLocalFileOnDisk ret = new CmsLocalFileOnDisk(); ret.filename = Path.GetFileName(filenameOnDisk); ret.filepath = filenameOnDisk; ret.fileDirectory = Path.GetDirectoryName(filenameOnDisk); ret.MimeType = PageUtils.MimeTypeLookup(Path.GetExtension(filenameOnDisk)); if (File.Exists(filenameOnDisk)) { FileInfo fi = new FileInfo(filenameOnDisk); ret.FileSize = fi.Length; ret.FileTimestamp = fi.LastWriteTime; MetaDataItem[] metaData = new MetaDataItem[0]; if (MetaDataUtils.CanExtractImageMetaData(filenameOnDisk)) { metaData = MetaDataUtils.GetFromImageFile(filenameOnDisk); } else if (MetaDataUtils.CanExtractOLEMetaData(filenameOnDisk)) { metaData = MetaDataUtils.GetFromOLEDocument(filenameOnDisk); } else if (MetaDataUtils.CanExtractXmpData(filenameOnDisk)) { metaData = MetaDataUtils.GetXmpData(filenameOnDisk); } ret.MetaData = CmsLocalFileOnDiskMetaItem.FromMetaDataItems(ret, metaData); } return(ret); }
public static new CmsLocalImageOnDisk[] UpdateFolderInDatabase(DirectoryInfo di) { CmsLocalFileOnDisk[] arr = CmsLocalFileOnDisk.UpdateFolderInDatabase(di); return(FromFileArray(arr)); }
public static CmsLocalImageOnDisk ConvertFileToImageObj(CmsLocalFileOnDisk file) { return(new CmsLocalImageOnDisk(file)); }
public static CmsLocalImageOnDisk[] FetchAllImagesInDirectory(string directoryPath) { return(FromFileArray(CmsLocalFileOnDisk.FetchAllFilesInDirectory(directoryPath))); }
public static CmsLocalImageOnDisk[] FetchAllImagesInDirectory(DirectoryInfo di) { return(FromFileArray(CmsLocalFileOnDisk.FetchAllFilesInDirectory(di.FullName))); }
public static CmsLocalImageOnDisk[] FetchAllImagesInDirectory(string directoryPath, string[] fileExtensions) { return(FromFileArray(CmsLocalFileOnDisk.FetchAllFilesInDirectory(directoryPath, fileExtensions))); }
} // CreateFromImageFile public static CmsLocalImageOnDisk[] FetchAllImagesInDirectory(DirectoryInfo di, string[] fileExtensions) { return(FromFileArray(CmsLocalFileOnDisk.FetchAllFilesInDirectory(di.FullName, fileExtensions))); }
protected CmsLocalFileOnDisk[] ResourcesWithMetaItemsFromDataRows(DataRowCollection rows) { Dictionary <int, CmsLocalFileOnDisk> resources = new Dictionary <int, CmsLocalFileOnDisk>(); foreach (DataRow dr in rows) { int resId = Convert.ToInt32(dr["ResourceId"]); CmsLocalFileOnDisk item; if (resources.ContainsKey(resId)) { item = resources[resId]; } else { item = new CmsLocalFileOnDisk(); item.autoincid = Convert.ToInt32(dr["AutoIncId"]); item.resourceid = resId; item.revisionnumber = Convert.ToInt32(dr["RevisionNumber"]); item.filename = (dr["Filename"]).ToString(); item.filepath = (dr["FilePath"]).ToString(); item.fileDirectory = (dr["FileDirectory"]).ToString(); item.filesize = Convert.ToInt64(dr["FileSize"]); item.filetimestamp = Convert.ToDateTime(dr["FileTimestamp"]); item.mimetype = (dr["MimeType"]).ToString(); // -- note: if the following line causes an exception, flush the resourceitems and resourceitemmetadata tables. // ie: run the following SQL: "truncate table resourceitems; truncate table resourceitemmetadata;" // all captions will be lost and will need to be re-created. item.modifiedby = Convert.ToInt32(dr["ModifiedBy"]); item.modificationdate = Convert.ToDateTime(dr["ModificationDate"]); } if (dr["metaId"] != DBNull.Value) { CmsLocalFileOnDiskMetaItem metaItem = new CmsLocalFileOnDiskMetaItem(); metaItem.autoincid = Convert.ToInt32(dr["metaId"]); metaItem.ResourceId = resId; metaItem.ResourceRevisionNumber = item.RevisionNumber; metaItem.Name = dr["metaName"].ToString(); metaItem.ItemValue = dr["metaValue"].ToString(); item.metaData.Add(metaItem); } if (!resources.ContainsKey(resId)) { resources.Add(resId, item); } } // foreach return((new List <CmsLocalFileOnDisk>(resources.Values)).ToArray()); }
} // Update public bool Delete(int ResourceId, int RevisionNumber, bool deletePhysicalFiles) { CmsLocalFileOnDisk resToDelete = Get(ResourceId, RevisionNumber); if (resToDelete.ResourceId != ResourceId) { return(false); } string renamedFilename = ""; string renamedFilenameOnDisk = ""; // remove all derivative thumbnail images if (deletePhysicalFiles) { foreach (CmsLocalFileOnDiskMetaItem meta in resToDelete.MetaData) { if (meta.Name.StartsWith("IMAGEThumb") && meta.Name.EndsWith("URL") && meta.ItemValue.IndexOf(".aspx") == -1) { string thumbFilename = System.Web.Hosting.HostingEnvironment.MapPath(meta.ItemValue); try { File.Delete(thumbFilename); } catch { } } // if } // foreach // -- rename the actual file on disk renamedFilename = DeletedFileFilenamePrefix + DateTime.Now.ToString("yyyyMMdd.HH.mm.ss.") + resToDelete.FileName; string currentFilenameOnDisk = resToDelete.FilePath; renamedFilenameOnDisk = Path.GetDirectoryName(currentFilenameOnDisk) + Path.DirectorySeparatorChar + renamedFilename; try { if (System.IO.File.Exists(currentFilenameOnDisk)) { System.IO.File.Move(currentFilenameOnDisk, renamedFilenameOnDisk); } } catch (Exception e) { Console.Write(e.Message); return(false); } } // if deletePhysicalFiles else { renamedFilename = resToDelete.filename; renamedFilenameOnDisk = resToDelete.filepath; } // update the database string sql = "UPDATE resourceitems "; sql += " set deleted = " + dbEncode(DateTime.Now) + ", Filename = '" + dbEncode(renamedFilename) + "', FilePath = '" + dbEncode(renamedFilenameOnDisk) + "' "; sql += " WHERE ResourceId = " + ResourceId.ToString() + " AND RevisionNumber = " + RevisionNumber.ToString() + " "; int numAffected = this.RunUpdateQuery(sql); if (numAffected < 0) { return(false); } return(true); }
/// <summary> /// /// </summary> /// <param name="directoryInfo"></param> /// <returns></returns> public static CmsLocalFileOnDisk[] UpdateFolderInDatabase(DirectoryInfo directoryInfo) { List <CmsLocalFileOnDisk> existingResources = new List <CmsLocalFileOnDisk>(FetchAllFilesInDirectory(directoryInfo.FullName)); List <CmsLocalFileOnDisk> ret = new List <CmsLocalFileOnDisk>(); foreach (FileInfo fi in directoryInfo.GetFiles()) { if (fi.Name.StartsWith(DeletedFileFilenamePrefix)) // skip deleted files { continue; } CmsLocalFileOnDisk res = GetByFilename(fi.FullName, existingResources.ToArray()); bool doSave = false; if (res.FilePath == fi.FullName) { if (res.FileSize != fi.Length || res.FileTimestamp.ToString("yyyy-MM-dd HH:mm:ss") != fi.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss")) { // update file CmsLocalFileOnDisk resBak = res; res = CreateFromFile(fi.FullName); res.autoincid = resBak.autoincid; res.resourceid = resBak.resourceid; res.revisionnumber = resBak.revisionnumber; doSave = true; } else { doSave = false; // filetime has not changed } } else { // insert res = CreateFromFile(fi.FullName); doSave = true; } if (doSave) { if (!res.SaveToDatabase()) { return(new CmsLocalFileOnDisk[0]); } } else { int idToRemove = -1; for (int i = 0; i < existingResources.Count; i++) { if (String.Compare(existingResources[i].FilePath, res.FilePath, true) == 0) { idToRemove = i; break; } } // for if (idToRemove >= 0) { existingResources.RemoveAt(idToRemove); } } ret.Add(res); } // foreach // -- remove other existingResources that no longer exist on disk foreach (CmsLocalFileOnDisk res in existingResources) { CmsLocalFileOnDisk.Delete(res, false); } return(ret.ToArray()); }
} // get public static bool Delete(CmsLocalFileOnDisk resource, bool deletePhysicalFiles) { return((new CmsResourceDB()).Delete(resource.resourceid, resource.revisionnumber, deletePhysicalFiles)); } // Delete
} // getAll public static bool BulkInsert(CmsLocalFileOnDisk item, CmsLocalFileOnDiskMetaItem[] subItems) { return((new CmsResourceMetaItemDB()).BulkInsert(item, subItems)); } // getAll
} // SaveToDatabase public static CmsLocalFileOnDiskMetaItem[] FetchAll(CmsLocalFileOnDisk parentResource) { return((new CmsResourceMetaItemDB()).FetchAllForFile(parentResource)); } // getAll