/EQT_V1/EQTWebApp/fckeditor/editor/filemanager/connectors/php/commands.php
PHP | 273 lines | 188 code | 48 blank | 37 comment | 44 complexity | c50123b2cd04ed38a9a82bd393c3deb0 MD5 | raw file
Possible License(s): LGPL-2.1
1<?php 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 is the File Manager Connector for PHP. 23 */ 24 25function GetFolders( $resourceType, $currentFolder ) 26{ 27 // Map the virtual path to the local server path. 28 $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFolders' ) ; 29 30 // Array that will hold the folders names. 31 $aFolders = array() ; 32 33 $oCurrentFolder = opendir( $sServerDir ) ; 34 35 while ( $sFile = readdir( $oCurrentFolder ) ) 36 { 37 if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) ) 38 $aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ; 39 } 40 41 closedir( $oCurrentFolder ) ; 42 43 // Open the "Folders" node. 44 echo "<Folders>" ; 45 46 natcasesort( $aFolders ) ; 47 foreach ( $aFolders as $sFolder ) 48 echo $sFolder ; 49 50 // Close the "Folders" node. 51 echo "</Folders>" ; 52} 53 54function GetFoldersAndFiles( $resourceType, $currentFolder ) 55{ 56 // Map the virtual path to the local server path. 57 $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'GetFoldersAndFiles' ) ; 58 59 // Arrays that will hold the folders and files names. 60 $aFolders = array() ; 61 $aFiles = array() ; 62 63 $oCurrentFolder = opendir( $sServerDir ) ; 64 65 while ( $sFile = readdir( $oCurrentFolder ) ) 66 { 67 if ( $sFile != '.' && $sFile != '..' ) 68 { 69 if ( is_dir( $sServerDir . $sFile ) ) 70 $aFolders[] = '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ; 71 else 72 { 73 $iFileSize = @filesize( $sServerDir . $sFile ) ; 74 if ( !$iFileSize ) { 75 $iFileSize = 0 ; 76 } 77 if ( $iFileSize > 0 ) 78 { 79 $iFileSize = round( $iFileSize / 1024 ) ; 80 if ( $iFileSize < 1 ) $iFileSize = 1 ; 81 } 82 83 $aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ; 84 } 85 } 86 } 87 88 // Send the folders 89 natcasesort( $aFolders ) ; 90 echo '<Folders>' ; 91 92 foreach ( $aFolders as $sFolder ) 93 echo $sFolder ; 94 95 echo '</Folders>' ; 96 97 // Send the files 98 natcasesort( $aFiles ) ; 99 echo '<Files>' ; 100 101 foreach ( $aFiles as $sFiles ) 102 echo $sFiles ; 103 104 echo '</Files>' ; 105} 106 107function CreateFolder( $resourceType, $currentFolder ) 108{ 109 if (!isset($_GET)) { 110 global $_GET; 111 } 112 $sErrorNumber = '0' ; 113 $sErrorMsg = '' ; 114 115 if ( isset( $_GET['NewFolderName'] ) ) 116 { 117 $sNewFolderName = $_GET['NewFolderName'] ; 118 $sNewFolderName = SanitizeFolderName( $sNewFolderName ) ; 119 120 if ( strpos( $sNewFolderName, '..' ) !== FALSE ) 121 $sErrorNumber = '102' ; // Invalid folder name. 122 else 123 { 124 // Map the virtual path to the local server path of the current folder. 125 $sServerDir = ServerMapFolder( $resourceType, $currentFolder, 'CreateFolder' ) ; 126 127 if ( is_writable( $sServerDir ) ) 128 { 129 $sServerDir .= $sNewFolderName ; 130 131 $sErrorMsg = CreateServerFolder( $sServerDir ) ; 132 133 switch ( $sErrorMsg ) 134 { 135 case '' : 136 $sErrorNumber = '0' ; 137 break ; 138 case 'Invalid argument' : 139 case 'No such file or directory' : 140 $sErrorNumber = '102' ; // Path too long. 141 break ; 142 default : 143 $sErrorNumber = '110' ; 144 break ; 145 } 146 } 147 else 148 $sErrorNumber = '103' ; 149 } 150 } 151 else 152 $sErrorNumber = '102' ; 153 154 // Create the "Error" node. 155 echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ; 156} 157 158function FileUpload( $resourceType, $currentFolder, $sCommand ) 159{ 160 if (!isset($_FILES)) { 161 global $_FILES; 162 } 163 $sErrorNumber = '0' ; 164 $sFileName = '' ; 165 166 if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) ) 167 { 168 global $Config ; 169 170 $oFile = $_FILES['NewFile'] ; 171 172 // Map the virtual path to the local server path. 173 $sServerDir = ServerMapFolder( $resourceType, $currentFolder, $sCommand ) ; 174 175 // Get the uploaded file name. 176 $sFileName = $oFile['name'] ; 177 $sFileName = SanitizeFileName( $sFileName ) ; 178 179 $sOriginalFileName = $sFileName ; 180 181 // Get the extension. 182 $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ; 183 $sExtension = strtolower( $sExtension ) ; 184 185 if ( isset( $Config['SecureImageUploads'] ) ) 186 { 187 if ( ( $isImageValid = IsImageValid( $oFile['tmp_name'], $sExtension ) ) === false ) 188 { 189 $sErrorNumber = '202' ; 190 } 191 } 192 193 if ( isset( $Config['HtmlExtensions'] ) ) 194 { 195 if ( !IsHtmlExtension( $sExtension, $Config['HtmlExtensions'] ) && 196 ( $detectHtml = DetectHtml( $oFile['tmp_name'] ) ) === true ) 197 { 198 $sErrorNumber = '202' ; 199 } 200 } 201 202 // Check if it is an allowed extension. 203 if ( !$sErrorNumber && IsAllowedExt( $sExtension, $resourceType ) ) 204 { 205 $iCounter = 0 ; 206 207 while ( true ) 208 { 209 $sFilePath = $sServerDir . $sFileName ; 210 211 if ( is_file( $sFilePath ) ) 212 { 213 $iCounter++ ; 214 $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ; 215 $sErrorNumber = '201' ; 216 } 217 else 218 { 219 move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ; 220 221 if ( is_file( $sFilePath ) ) 222 { 223 if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] ) 224 { 225 break ; 226 } 227 228 $permissions = 0777; 229 230 if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] ) 231 { 232 $permissions = $Config['ChmodOnUpload'] ; 233 } 234 235 $oldumask = umask(0) ; 236 chmod( $sFilePath, $permissions ) ; 237 umask( $oldumask ) ; 238 } 239 240 break ; 241 } 242 } 243 244 if ( file_exists( $sFilePath ) ) 245 { 246 //previous checks failed, try once again 247 if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid( $sFilePath, $sExtension ) === false ) 248 { 249 @unlink( $sFilePath ) ; 250 $sErrorNumber = '202' ; 251 } 252 else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml( $sFilePath ) === true ) 253 { 254 @unlink( $sFilePath ) ; 255 $sErrorNumber = '202' ; 256 } 257 } 258 } 259 else 260 $sErrorNumber = '202' ; 261 } 262 else 263 $sErrorNumber = '202' ; 264 265 266 $sFileUrl = CombinePaths( GetResourceTypePath( $resourceType, $sCommand ) , $currentFolder ) ; 267 $sFileUrl = CombinePaths( $sFileUrl, $sFileName ) ; 268 269 SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ) ; 270 271 exit ; 272} 273?>