/* see cffm.cfm for details about these */ this.includeDir = arguments.includeDir; this.includeDirWeb = arguments.includeDirWeb; this.disallowedExtensions = arguments.disallowedExtensions; this.editableExtensions = arguments.editableExtensions; this.allowedExtensions = arguments.allowedExtensions; this.overwriteDefault = arguments.overwriteDefault; this.iconPath = arguments.iconPath; this.debug = arguments.debug; this.templateWrapperAbove = arguments.templateWrapperAbove; this.templateWrapperBelow = arguments.templateWrapperBelow; this.cffmFilename = arguments.cffmFilename; this.enableImageDimensionsInDirList = arguments.enableImageDimensionsInDirList; this.maxImageDimensionsPerFileListing = arguments.maxImageDimensionsPerFileListing; this.readOnly = arguments.readOnly; this.allowUnzip = arguments.allowUnzip; this.allowCreateDirectory = arguments.allowCreateDirectory; this.allowMultipleUploads = arguments.allowMultipleUploads; this.maxUploadSize = arguments.maxUploadSize; this.useContextMenus = arguments.useContextMenus; this.useFileActionButtons = arguments.useFileActionButtons; if (not DirectoryExists(this.includeDir)) { FatalError('Directory Not Found: #this.includeDir#'); } // ******************************************************** // and set some default values // ******************************************************** if (arguments.scopeVariables.action eq "") { arguments.scopeVariables.action = "list"; } if (arguments.scopeVariables.overWrite eq "") { arguments.scopeVariables.overWrite = this.overwriteDefault; } // ******************************************************** // some vars are being passed to java methods and MUST be // cast to double using javacast // ******************************************************** arguments.scopeVariables = this.forceNumeric(arguments.scopeVariables, "resizeWidthValue,resizeHeightValue,cropStartX,cropStartY,cropWidthValue,cropHeightValue,preserveAspect,cropToExact,rotateDegrees"); if (this.readOnly) { retVal.errorCode = 1; retVal.errorMessage = "Operation failed: This application is configured to be read only. (NOMSG)"; return retVal; } else if (getPathType(arguments.deleteFile) eq "") { retVal.errorCode = 1; retVal.errorMessage = "#this.resourcekit['errorMsg.t12']#: #arguments.deleteFile#"; return retVal; } var zipFile = ""; // ZipFile var entries = ""; // Enumeration of ZipEntry var entry = ""; // ZipEntry var fil = ""; //File var inStream = ""; var filOutStream = ""; var bufOutStream = ""; var nm = ""; var pth = ""; var lenPth = ""; var buffer = ""; var l = 0; var retVal = StructNew(); var ext = ""; retVal.errorCode = 0; retVal.errorMessage = ""; if (this.readOnly) { retVal.errorCode = 1; retVal.errorMessage = "Operation failed: This application is configured to be read only (NOMSG)"; return retVal; } else if (NOT this.allowUnzip) { retVal.errorCode = 1; retVal.errorMessage = "Operation failed: Unzipping of files on the server via this application is disabled."; return retVal; } if (outputPath eq "") { outputPath = getDirectoryFromPath(zipFilePath); } if (right(outputpath,1) neq getDirectorySeparator()) { outputpath = outputpath & getDirectorySeparator(); } zipFile = createObject("java", "java.util.zip.ZipFile"); zipFile.init(zipFilePath); entries = zipFile.entries(); while(entries.hasMoreElements()) { entry = entries.nextElement(); if(NOT entry.isDirectory()) { nm = entry.getName(); lenPth = len(nm) - len(getFileFromPath(nm)); if (lenPth) { pth = outputPath & left(nm, lenPth); } else { pth = outputPath; } if (NOT directoryExists(pth)) { fil = createObject("java", "java.io.File"); fil.init(pth); fil.mkdirs(); } if (listLen(nm,".") gt 1) { ext = listlast(nm,"."); } if ( checkExtension(ext) ) { if ( arguments.overwrite or not fileExists(outputPath & nm) ) { filOutStream = createObject( "java", "java.io.FileOutputStream"); filOutStream.init(outputPath & nm); bufOutStream = createObject( "java", "java.io.BufferedOutputStream"); bufOutStream.init(filOutStream); inStream = zipFile.getInputStream(entry); buffer = repeatString(" ",1024).getBytes(); l = inStream.read(buffer); while(l GTE 0) { bufOutStream.write(buffer, 0, l); l = inStream.read(buffer); } inStream.close(); bufOutStream.close(); } } } } zipFile.close(); fileType = getPathType(arguments.oldFile); if (fileType eq "") { retVal.errorCode = 1; retVal.errorMessage = "#this.resourcekit['errorMsg.t12']#: #arguments.oldFile#"; return retVal; } if (fileType eq "file" and NOT checkExtension(extension)) { retVal.errorCode = 1; retVal.errorMessage = "#this.resourcekit['errorMsg.t15']#: #extension#"; return retVal; } if ((arguments.action eq "rename" or arguments.action eq "move") and getPathType(arguments.newFile) eq "directory") { retVal.errorCode = 1; if (arguments.action eq "rename") { retVal.errorMessage = this.resourcekit['errorMsg.t17']; } else if (action eq "move") { retVal.errorMessage = this.resourcekit['errorMsg.t16']; } return retVal; } var tmp = ""; tmp = this.includeDir; if (arguments.subdir neq "") { tmp = tmp & getDirectorySeparator() & REReplace(arguments.subdir,"[\\\/]",getDirectorySeparator(),"ALL"); } if (arguments.filename neq "") { tmp = tmp & getDirectorySeparator() & arguments.filename; } return tmp; var tmp = ""; tmp = this.includeDirWeb; if (arguments.subdir neq "") { tmp = tmp & "/" & arguments.subdir; } if (arguments.filename neq "") { tmp = tmp & "/" & arguments.filename; } return tmp; //extract file extension from file name //build mime type array mimeStruct.ai="application/postscript"; mimeStruct.aif="audio/x-aiff"; mimeStruct.aifc="audio/x-aiff"; mimeStruct.aiff="audio/x-aiff"; mimeStruct.asc="text/plain"; mimeStruct.au="audio/basic"; mimeStruct.avi="video/x-msvideo"; mimeStruct.bcpio="application/x-bcpio"; mimeStruct.bin="application/octet-stream"; mimeStruct.c="text/plain"; mimeStruct.cc="text/plain"; mimeStruct.ccad="application/clariscad"; mimeStruct.cdf="application/x-netcdf"; mimeStruct.class="application/octet-stream"; mimeStruct.cpio="application/x-cpio"; mimeStruct.cpt="application/mac-compactpro"; mimeStruct.csh="application/x-csh"; mimeStruct.css="text/css"; mimeStruct.dcr="application/x-director"; mimeStruct.dir="application/x-director"; mimeStruct.dms="application/octet-stream"; mimeStruct.doc="application/msword"; mimeStruct.drw="application/drafting"; mimeStruct.dvi="application/x-dvi"; mimeStruct.dwg="application/acad"; mimeStruct.dxf="application/dxf"; mimeStruct.dxr="application/x-director"; mimeStruct.eps="application/postscript"; mimeStruct.etx="text/x-setext"; mimeStruct.exe="application/octet-stream"; mimeStruct.ez="application/andrew-inset"; mimeStruct.f="text/plain"; mimeStruct.f90="text/plain"; mimeStruct.fli="video/x-fli"; mimeStruct.gif="image/gif"; mimeStruct.gtar="application/x-gtar"; mimeStruct.gz="application/x-gzip"; mimeStruct.h="text/plain"; mimeStruct.hdf="application/x-hdf"; mimeStruct.hh="text/plain"; mimeStruct.hqx="application/mac-binhex40"; mimeStruct.htm="text/html"; mimeStruct.html="text/html"; mimeStruct.ice="x-conference/x-cooltalk"; mimeStruct.ief="image/ief"; mimeStruct.iges="model/iges"; mimeStruct.igs="model/iges"; mimeStruct.ips="application/x-ipscript"; mimeStruct.ipx="application/x-ipix"; mimeStruct.jpe="image/jpeg"; mimeStruct.jpeg="image/jpeg"; mimeStruct.jpg="image/jpeg"; mimeStruct.js="application/x-javascript"; mimeStruct.kar="audio/midi"; mimeStruct.latex="application/x-latex"; mimeStruct.lha="application/octet-stream"; mimeStruct.lsp="application/x-lisp"; mimeStruct.lzh="application/octet-stream"; mimeStruct.m="text/plain"; mimeStruct.man="application/x-troff-man"; mimeStruct.me="application/x-troff-me"; mimeStruct.mesh="model/mesh"; mimeStruct.mid="audio/midi"; mimeStruct.midi="audio/midi"; mimeStruct.mif="application/vnd.mif"; mimeStruct.mime="www/mime"; mimeStruct.mov="video/quicktime"; mimeStruct.movie="video/x-sgi-movie"; mimeStruct.mp2="audio/mpeg"; mimeStruct.mp3="audio/mpeg"; mimeStruct.mpe="video/mpeg"; mimeStruct.mpeg="video/mpeg"; mimeStruct.mpg="video/mpeg"; mimeStruct.mpga="audio/mpeg"; mimeStruct.ms="application/x-troff-ms"; mimeStruct.msh="model/mesh"; mimeStruct.nc="application/x-netcdf"; mimeStruct.oda="application/oda"; mimeStruct.pbm="image/x-portable-bitmap"; mimeStruct.pdb="chemical/x-pdb"; mimeStruct.pdf="application/pdf"; mimeStruct.pgm="image/x-portable-graymap"; mimeStruct.pgn="application/x-chess-pgn"; mimeStruct.png="image/png"; mimeStruct.pnm="image/x-portable-anymap"; mimeStruct.pot="application/mspowerpoint"; mimeStruct.ppm="image/x-portable-pixmap"; mimeStruct.pps="application/mspowerpoint"; mimeStruct.ppt="application/mspowerpoint"; mimeStruct.ppz="application/mspowerpoint"; mimeStruct.pre="application/x-freelance"; mimeStruct.prt="application/pro_eng"; mimeStruct.ps="application/postscript"; mimeStruct.qt="video/quicktime"; mimeStruct.ra="audio/x-realaudio"; mimeStruct.ram="audio/x-pn-realaudio"; mimeStruct.ras="image/cmu-raster"; mimeStruct.rgb="image/x-rgb"; mimeStruct.rm="audio/x-pn-realaudio"; mimeStruct.roff="application/x-troff"; mimeStruct.rpm="audio/x-pn-realaudio-plugin"; mimeStruct.rtf="text/rtf"; mimeStruct.rtx="text/richtext"; mimeStruct.scm="application/x-lotusscreencam"; mimeStruct.set="application/set"; mimeStruct.sgm="text/sgml"; mimeStruct.sgml="text/sgml"; mimeStruct.sh="application/x-sh"; mimeStruct.shar="application/x-shar"; mimeStruct.silo="model/mesh"; mimeStruct.sit="application/x-stuffit"; mimeStruct.skd="application/x-koan"; mimeStruct.skm="application/x-koan"; mimeStruct.skp="application/x-koan"; mimeStruct.skt="application/x-koan"; mimeStruct.smi="application/smil"; mimeStruct.smil="application/smil"; mimeStruct.snd="audio/basic"; mimeStruct.sol="application/solids"; mimeStruct.spl="application/x-futuresplash"; mimeStruct.src="application/x-wais-source"; mimeStruct.step="application/STEP"; mimeStruct.stl="application/SLA"; mimeStruct.stp="application/STEP"; mimeStruct.sv4cpio="application/x-sv4cpio"; mimeStruct.sv4crc="application/x-sv4crc"; mimeStruct.swf="application/x-shockwave-flash"; mimeStruct.t="application/x-troff"; mimeStruct.tar="application/x-tar"; mimeStruct.tcl="application/x-tcl"; mimeStruct.tex="application/x-tex"; mimeStruct.texi="application/x-texinfo"; mimeStruct.texinfo="application/x-texinfo"; mimeStruct.tif="image/tiff"; mimeStruct.tiff="image/tiff"; mimeStruct.tr="application/x-troff"; mimeStruct.tsi="audio/TSP-audio"; mimeStruct.tsp="application/dsptype"; mimeStruct.tsv="text/tab-separated-values"; mimeStruct.txt="text/plain"; mimeStruct.unv="application/i-deas"; mimeStruct.ustar="application/x-ustar"; mimeStruct.vcd="application/x-cdlink"; mimeStruct.vda="application/vda"; mimeStruct.viv="video/vnd.vivo"; mimeStruct.vivo="video/vnd.vivo"; mimeStruct.vrml="model/vrml"; mimeStruct.wav="audio/x-wav"; mimeStruct.wrl="model/vrml"; mimeStruct.xbm="image/x-xbitmap"; mimeStruct.xlc="application/vnd.ms-excel"; mimeStruct.xll="application/vnd.ms-excel"; mimeStruct.xlm="application/vnd.ms-excel"; mimeStruct.xls="application/vnd.ms-excel"; mimeStruct.xlw="application/vnd.ms-excel"; mimeStruct.xml="text/xml"; mimeStruct.xpm="image/x-xpixmap"; mimeStruct.xwd="image/x-xwindowdump"; mimeStruct.xyz="chemical/x-pdb"; mimeStruct.zip="application/zip"; "> #arguments.errorContent# {#LOCAL.output#} {#LOCAL.output#}