/EQT_V2/EQT/EQTWebApp/fckeditor/editor/filemanager/connectors/cfm/cf_commands.cfm

http://sgsoft-las.googlecode.com/ · ColdFusion · 230 lines · 163 code · 30 blank · 37 comment · 4 complexity · 7bedac0a7ed00a646e0b2ace68702ea7 MD5 · raw file

  1. <cfsetting enablecfoutputonly="Yes">
  2. <!---
  3. * FCKeditor - The text editor for Internet - http://www.fckeditor.net
  4. * Copyright (C) 2003-2009 Frederico Caldeira Knabben
  5. *
  6. * == BEGIN LICENSE ==
  7. *
  8. * Licensed under the terms of any of the following licenses at your
  9. * choice:
  10. *
  11. * - GNU General Public License Version 2 or later (the "GPL")
  12. * http://www.gnu.org/licenses/gpl.html
  13. *
  14. * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  15. * http://www.gnu.org/licenses/lgpl.html
  16. *
  17. * - Mozilla Public License Version 1.1 or later (the "MPL")
  18. * http://www.mozilla.org/MPL/MPL-1.1.html
  19. *
  20. * == END LICENSE ==
  21. *
  22. * This file include the functions that handle the Command requests
  23. * in the ColdFusion Connector (MX 6.0 and above).
  24. --->
  25. <cffunction name="FileUpload" returntype="void" output="true">
  26. <cfargument name="resourceType" type="string" required="yes" default="">
  27. <cfargument name="currentFolder" type="string" required="yes" default="">
  28. <cfargument name="sCommand" type="string" required="yes" default="">
  29. <cfset var sFileName = "">
  30. <cfset var sFilePart = "">
  31. <cfset var sFileExt = "">
  32. <cfset var sFileUrl = "">
  33. <cfset var sTempDir = "">
  34. <cfset var sTempFilePath = "">
  35. <cfset var errorNumber = 0>
  36. <cfset var customMsg = 0>
  37. <cfset var counter = 0>
  38. <cfset var destination = "">
  39. <cftry>
  40. <cfif isDefined( "REQUEST.Config.TempDirectory" )>
  41. <cfset sTempDir = REQUEST.Config.TempDirectory>
  42. <cfelse>
  43. <cfset sTempDir = GetTempDirectory()>
  44. </cfif>
  45. <cfif NOT DirectoryExists (sTempDir)>
  46. <cfthrow message="Invalid temporary directory: #sTempDir#">
  47. </cfif>
  48. <cffile action="UPLOAD" filefield="NewFile" destination="#sTempDir#" nameconflict="makeunique" mode="0755" />
  49. <cfset sTempFilePath = CFFILE.ServerDirectory & REQUEST.fs & CFFILE.ServerFile>
  50. <!--- Map the virtual path to the local server path. --->
  51. <cfset sServerDir = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, ARGUMENTS.sCommand) >
  52. <!--- Get the uploaded file name. --->
  53. <cfset sFileName = SanitizeFileName( CFFILE.ClientFile ) >
  54. <cfset sOriginalFileName = sFileName >
  55. <cfif isDefined( "REQUEST.Config.SecureImageUploads" ) and REQUEST.Config.SecureImageUploads>
  56. <cfif not IsImageValid( sTempFilePath, CFFILE.ClientFileExt )>
  57. <cftry>
  58. <cffile action="delete" file="#sTempFilePath#">
  59. <cfcatch type="any">
  60. </cfcatch>
  61. </cftry>
  62. <cfthrow errorcode="202" type="fckeditor">
  63. </cfif>
  64. </cfif>
  65. <cfif isDefined( "REQUEST.Config.HtmlExtensions" ) and not listFindNoCase( REQUEST.Config.HtmlExtensions, CFFILE.ClientFileExt )>
  66. <cfif DetectHtml( sTempFilePath )>
  67. <cftry>
  68. <cffile action="delete" file="#sTempFilePath#">
  69. <cfcatch type="any">
  70. </cfcatch>
  71. </cftry>
  72. <cfthrow errorcode="202" type="fckeditor">
  73. </cfif>
  74. </cfif>
  75. <cfif not IsAllowedExt( CFFILE.ClientFileExt, ARGUMENTS.resourceType )>
  76. <cftry>
  77. <cffile action="delete" file="#sTempFilePath#">
  78. <cfcatch type="any">
  79. </cfcatch>
  80. </cftry>
  81. <cfthrow errorcode="202" type="fckeditor">
  82. </cfif>
  83. <!--- When the original filename already exists, add numbers (0), (1), (2), ... at the end of the filename. --->
  84. <cfscript>
  85. sFileExt = GetExtension( sFileName ) ;
  86. sFilePart = RemoveExtension( sFileName );
  87. while( fileExists( sServerDir & sFileName ) )
  88. {
  89. counter = counter + 1;
  90. sFileName = sFilePart & '(#counter#).' & CFFILE.ClientFileExt;
  91. errorNumber = 201;
  92. }
  93. </cfscript>
  94. <cfset destination = sServerDir & sFileName>
  95. <cflock name="#destination#" timeout="30" type="Exclusive">
  96. <cftry>
  97. <cffile action="move" source="#sTempFilePath#" destination="#destination#" mode="755">
  98. <!--- omit CF 6.1 error during moving uploaded file, just copy that file instead of moving --->
  99. <cfcatch type="any">
  100. <cffile action="copy" source="#sTempFilePath#" destination="#destination#" mode="755">
  101. </cfcatch>
  102. </cftry>
  103. </cflock>
  104. <cfset sFileUrl = CombinePaths( GetResourceTypePath( ARGUMENTS.resourceType, sCommand ) , ARGUMENTS.currentFolder ) >
  105. <cfset sFileUrl = CombinePaths( sFileUrl , sFileName ) >
  106. <cfcatch type="fckeditor">
  107. <cfset errorNumber = CFCATCH.ErrorCode>
  108. </cfcatch>
  109. <cfcatch type="any">
  110. <cfset errorNumber = "1">
  111. <cfset customMsg = CFCATCH.Message >
  112. </cfcatch>
  113. </cftry>
  114. <cfset SendUploadResults( errorNumber, sFileUrl, sFileName, customMsg ) >
  115. </cffunction>
  116. <cffunction name="GetFolders" returntype="void" output="true">
  117. <cfargument name="resourceType" type="String" required="true">
  118. <cfargument name="currentFolder" type="String" required="true">
  119. <cfset var i = 1>
  120. <cfset var folders = "">
  121. <!--- Map the virtual path to the local server path --->
  122. <cfset var sServerDir = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, "GetFolders" ) >
  123. <!--- Sort directories first, name ascending --->
  124. <cfdirectory action="list" directory="#sServerDir#" name="qDir" sort="type,name">
  125. <cfscript>
  126. while( i lte qDir.recordCount )
  127. {
  128. if( compareNoCase( qDir.type[i], "FILE" ) and not listFind( ".,..", qDir.name[i] ) )
  129. {
  130. folders = folders & '<Folder name="#HTMLEditFormat( qDir.name[i] )#" />' ;
  131. }
  132. i = i + 1;
  133. }
  134. </cfscript>
  135. <cfoutput><Folders>#folders#</Folders></cfoutput>
  136. </cffunction>
  137. <cffunction name="GetFoldersAndfiles" returntype="void" output="true">
  138. <cfargument name="resourceType" type="String" required="true">
  139. <cfargument name="currentFolder" type="String" required="true">
  140. <cfset var i = 1>
  141. <cfset var folders = "">
  142. <cfset var files = "">
  143. <!--- Map the virtual path to the local server path --->
  144. <cfset var sServerDir = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, "GetFolders" ) >
  145. <!--- Sort directories first, name ascending --->
  146. <cfdirectory action="list" directory="#sServerDir#" name="qDir" sort="type,name">
  147. <cfscript>
  148. while( i lte qDir.recordCount )
  149. {
  150. if( not compareNoCase( qDir.type[i], "DIR" ) and not listFind( ".,..", qDir.name[i] ) )
  151. {
  152. folders = folders & '<Folder name="#HTMLEditFormat(qDir.name[i])#" />' ;
  153. }
  154. else if( not compareNoCase( qDir.type[i], "FILE" ) )
  155. {
  156. fileSizeKB = round(qDir.size[i] / 1024) ;
  157. files = files & '<File name="#HTMLEditFormat(qDir.name[i])#" size="#IIf( fileSizeKB GT 0, DE( fileSizeKB ), 1)#" />' ;
  158. }
  159. i = i + 1 ;
  160. }
  161. </cfscript>
  162. <cfoutput><Folders>#folders#</Folders></cfoutput>
  163. <cfoutput><Files>#files#</Files></cfoutput>
  164. </cffunction>
  165. <cffunction name="CreateFolder" returntype="void" output="true">
  166. <cfargument name="resourceType" required="true" type="string">
  167. <cfargument name="currentFolder" required="true" type="string">
  168. <cfset var sNewFolderName = url.newFolderName >
  169. <cfset var sServerDir = "" >
  170. <cfset var errorNumber = 0>
  171. <cfset var sErrorMsg = "">
  172. <cfset var currentFolderPath = ServerMapFolder( ARGUMENTS.resourceType, ARGUMENTS.currentFolder, 'CreateFolder' )>
  173. <cfparam name="url.newFolderName" default="">
  174. <cfscript>
  175. sNewFolderName = SanitizeFolderName( sNewFolderName ) ;
  176. </cfscript>
  177. <cfif not len( sNewFolderName ) or len( sNewFolderName ) gt 255>
  178. <cfset errorNumber = 102>
  179. <cfelseif directoryExists( currentFolderPath & sNewFolderName )>
  180. <cfset errorNumber = 101>
  181. <cfelseif find( "..", sNewFolderName )>
  182. <cfset errorNumber = 103>
  183. <cfelse>
  184. <cfset errorNumber = 0>
  185. <!--- Map the virtual path to the local server path of the current folder. --->
  186. <cfset sServerDir = currentFolderPath & sNewFolderName >
  187. <cftry>
  188. <cfdirectory action="create" directory="#currentFolderPath##sNewFolderName#" mode="755">
  189. <cfcatch type="any">
  190. <!---
  191. un-resolvable error numbers in ColdFusion:
  192. * 102 : Invalid folder name.
  193. * 103 : You have no permissions to create the folder.
  194. --->
  195. <cfset errorNumber = 110>
  196. </cfcatch>
  197. </cftry>
  198. </cfif>
  199. <cfoutput><Error number="#errorNumber#" originalDescription="#HTMLEditFormat(sErrorMsg)#" /></cfoutput>
  200. </cffunction>