--- /dev/null
+<?php\r
+/*\r
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
+ * Copyright (C) 2003-2008 Frederico Caldeira Knabben\r
+ *\r
+ * == BEGIN LICENSE ==\r
+ *\r
+ * Licensed under the terms of any of the following licenses at your\r
+ * choice:\r
+ *\r
+ * - GNU General Public License Version 2 or later (the "GPL")\r
+ * http://www.gnu.org/licenses/gpl.html\r
+ *\r
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
+ * http://www.gnu.org/licenses/lgpl.html\r
+ *\r
+ * - Mozilla Public License Version 1.1 or later (the "MPL")\r
+ * http://www.mozilla.org/MPL/MPL-1.1.html\r
+ *\r
+ * == END LICENSE ==\r
+ *\r
+ * This is the File Manager Connector for PHP.\r
+ */\r
+\r
+function GetFolders( $resourceType, $currentFolder )\r
+{\r
+ // Map the virtual path to the local server path.\r
+ $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFolders' ) ;\r
+\r
+ // Array that will hold the folders names.\r
+ $aFolders = array() ;\r
+\r
+ $oCurrentFolder = opendir( $sServerDir ) ;\r
+\r
+ while ( $sFile = readdir( $oCurrentFolder ) )\r
+ {\r
+ if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )\r
+ $aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;\r
+ }\r
+\r
+ closedir( $oCurrentFolder ) ;\r
+\r
+ // Open the "Folders" node.\r
+ echo "<Folders>" ;\r
+\r
+ natcasesort( $aFolders ) ;\r
+ foreach ( $aFolders as $sFolder )\r
+ echo $sFolder ;\r
+\r
+ // Close the "Folders" node.\r
+ echo "</Folders>" ;\r
+}\r
+\r
+function GetFoldersAndFiles( $resourceType, $currentFolder )\r
+{\r
+ // Map the virtual path to the local server path.\r
+ $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFoldersAndFiles' ) ;\r
+\r
+ // Arrays that will hold the folders and files names.\r
+ $aFolders = array() ;\r
+ $aFiles = array() ;\r
+\r
+ $oCurrentFolder = opendir( $sServerDir ) ;\r
+\r
+ while ( $sFile = readdir( $oCurrentFolder ) )\r
+ {\r
+ if ( $sFile != '.' && $sFile != '..' )\r
+ {\r
+ if ( is_dir( $sServerDir . $sFile ) )\r
+ $aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;\r
+ else\r
+ {\r
+ $iFileSize = @filesize( $sServerDir . $sFile ) ;\r
+ if ( !$iFileSize ) {\r
+ $iFileSize = 0 ;\r
+ }\r
+ if ( $iFileSize > 0 )\r
+ {\r
+ $iFileSize = round( $iFileSize / 1024 ) ;\r
+ if ( $iFileSize < 1 ) $iFileSize = 1 ;\r
+ }\r
+\r
+ $aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;\r
+ }\r
+ }\r
+ }\r
+\r
+ // Send the folders\r
+ natcasesort( $aFolders ) ;\r
+ echo '<Folders>' ;\r
+\r
+ foreach ( $aFolders as $sFolder )\r
+ echo $sFolder ;\r
+\r
+ echo '</Folders>' ;\r
+\r
+ // Send the files\r
+ natcasesort( $aFiles ) ;\r
+ echo '<Files>' ;\r
+\r
+ foreach ( $aFiles as $sFiles )\r
+ echo $sFiles ;\r
+\r
+ echo '</Files>' ;\r
+}\r
+\r
+function CreateFolder( $resourceType, $currentFolder )\r
+{\r
+ if (!isset($_GET)) {\r
+ global $_GET;\r
+ }\r
+ $sErrorNumber = '0' ;\r
+ $sErrorMsg = '' ;\r
+\r
+ if ( isset( $_GET['NewFolderName'] ) )\r
+ {\r
+ $sNewFolderName = $_GET['NewFolderName'] ;\r
+ $sNewFolderName = SanitizeFolderName( $sNewFolderName ) ;\r
+\r
+ if ( strpos( $sNewFolderName, '..' ) !== FALSE )\r
+ $sErrorNumber = '102' ; // Invalid folder name.\r
+ else\r
+ {\r
+ // Map the virtual path to the local server path of the current folder.\r
+ $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'CreateFolder' ) ;\r
+\r
+ if ( is_writable( $sServerDir ) )\r
+ {\r
+ $sServerDir .= $sNewFolderName ;\r
+\r
+ $sErrorMsg = CreateServerFolder( $sServerDir ) ;\r
+\r
+ switch ( $sErrorMsg )\r
+ {\r
+ case '' :\r
+ $sErrorNumber = '0' ;\r
+ break ;\r
+ case 'Invalid argument' :\r
+ case 'No such file or directory' :\r
+ $sErrorNumber = '102' ; // Path too long.\r
+ break ;\r
+ default :\r
+ $sErrorNumber = '110' ;\r
+ break ;\r
+ }\r
+ }\r
+ else\r
+ $sErrorNumber = '103' ;\r
+ }\r
+ }\r
+ else\r
+ $sErrorNumber = '102' ;\r
+\r
+ // Create the "Error" node.\r
+ echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;\r
+}\r
+\r
+function FileUpload( $resourceType, $currentFolder, $sCommand )\r
+{\r
+ if (!isset($_FILES)) {\r
+ global $_FILES;\r
+ }\r
+ $sErrorNumber = '0' ;\r
+ $sFileName = '' ;\r
+\r
+ if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )\r
+ {\r
+ global $Config ;\r
+\r
+ $oFile = $_FILES['NewFile'] ;\r
+\r
+ // Map the virtual path to the local server path.\r
+ $sServerDir = ServerMapFolder( $resourceType, $currentFolder, $sCommand ) ;\r
+\r
+ // Get the uploaded file name.\r
+ $sFileName = $oFile['name'] ;\r
+ $sFileName = SanitizeFileName( $sFileName ) ;\r
+\r
+ $sOriginalFileName = $sFileName ;\r
+\r
+ // Get the extension.\r
+ $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;\r
+ $sExtension = strtolower( $sExtension ) ;\r
+\r
+ if ( isset( $Config['SecureImageUploads'] ) )\r
+ {\r
+ if ( ( $isImageValid = IsImageValid( $oFile['tmp_name'], $sExtension ) ) === false )\r
+ {\r
+ $sErrorNumber = '202' ;\r
+ }\r
+ }\r
+\r
+ if ( isset( $Config['HtmlExtensions'] ) )\r
+ {\r
+ if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) &&\r
+ ( $detectHtml = DetectHtml( $oFile['tmp_name'] ) ) === true )\r
+ {\r
+ $sErrorNumber = '202' ;\r
+ }\r
+ }\r
+\r
+ // Check if it is an allowed extension.\r
+ if ( !$sErrorNumber && IsAllowedExt( $sExtension, $resourceType ) )\r
+ {\r
+ $iCounter = 0 ;\r
+\r
+ while ( true )\r
+ {\r
+ $sFilePath = $sServerDir . $sFileName ;\r
+\r
+ if ( is_file( $sFilePath ) )\r
+ {\r
+ $iCounter++ ;\r
+ $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;\r
+ $sErrorNumber = '201' ;\r
+ }\r
+ else\r
+ {\r
+ move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;\r
+\r
+ if ( is_file( $sFilePath ) )\r
+ {\r
+ if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] )\r
+ {\r
+ break ;\r
+ }\r
+\r
+ $permissions = 0777;\r
+\r
+ if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] )\r
+ {\r
+ $permissions = $Config['ChmodOnUpload'] ;\r
+ }\r
+\r
+ $oldumask = umask(0) ;\r
+ chmod( $sFilePath, $permissions ) ;\r
+ umask( $oldumask ) ;\r
+ }\r
+\r
+ break ;\r
+ }\r
+ }\r
+\r
+ if ( file_exists( $sFilePath ) )\r
+ {\r
+ //previous checks failed, try once again\r
+ if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid( $sFilePath, $sExtension ) === false )\r
+ {\r
+ @unlink( $sFilePath ) ;\r
+ $sErrorNumber = '202' ;\r
+ }\r
+ else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml( $sFilePath ) === true )\r
+ {\r
+ @unlink( $sFilePath ) ;\r
+ $sErrorNumber = '202' ;\r
+ }\r
+ }\r
+ }\r
+ else\r
+ $sErrorNumber = '202' ;\r
+ }\r
+ else\r
+ $sErrorNumber = '202' ;\r
+\r
+\r
+ $sFileUrl = CombinePaths( GetResourceTypePath( $resourceType, $sCommand ) , $currentFolder ) ;\r
+ $sFileUrl = CombinePaths( $sFileUrl, $sFileName ) ;\r
+\r
+ SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ) ;\r
+\r
+ exit ;\r
+}\r
+?>\r