Config['AllowedExtensions']['Files'] = Array('jpg','gif','jpeg','png','swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg','zip','rar','arj','gz','tar','doc','pdf','ppt','rdp','swf','swt','txt','vsd','xls','csv','odt'); $this->Config['DeniedExtensions']['Files'] = Array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg'); $this->Config['AllowedExtensions']['Images'] = Array('jpg','gif','jpeg','png', 'bmp'); $this->Config['DeniedExtensions']['Images'] = Array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg'); $this->Config['AllowedExtensions']['Flash'] = Array('swf','fla'); $this->Config['DeniedExtensions']['Flash'] = Array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg'); $this->Config['AllowedExtensions']['Media'] = Array('asf','asx','avi','wav','wax','wma','wm','wmv','m3u','mp2v','mpg','mpeg','m1v','mp2','mp3','mpa','mpe','mpv2','mp4','mid','midi','rmi','qt','aif','aifc','aiff','mov','flv','rm','svcd','swf','vcd'); $this->Config['DeniedExtensions']['Media'] = Array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg'); $this->Config['AllowedExtensions']['Documents'] = Array('doc','pdf','ppt','rdp','swf','swt','txt','vsd','xls','csv','zip','odt'); $this->Config['DeniedExtensions']['Documents'] = Array('php','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','dll','reg'); $this->Config['ExtensionIcons'] = Array('ai','avi','bmp','cs','dll','doc','exe','fla','gif','htm','html','jpg','js','mdb','mp3','pdf','png','ppt','rdp','swf','swt','txt','vsd','xls','xml','zip'); } function CreateFolder($folder = '') { if (!$folder) { return false; } $folderPath = WRITEABLE . '/user_files/' . $folder; if (file_exists($folderPath) && is_dir($folderPath)) { return true; } $permissions = defined('FCK_FOLDERS_PERMISSIONS') ? FCK_FOLDERS_PERMISSIONS : '0777'; return mkdir($folderPath); // , $permissions } function IsAllowedExtension($folder, $file_name) { $base_folder = $this->getBaseFolder($folder); $ext = strtolower( pathinfo($file_name, PATHINFO_EXTENSION) ); if (isset($this->Config['DeniedExtensions'][$folder])) { if (in_array($ext, $this->Config['DeniedExtensions'][$folder])) { return false; } } if (isset($this->Config['AllowedExtensions'][$folder])) { if (!in_array($ext, $this->Config['AllowedExtensions'][$folder])) { return false; } } return true; } function getBaseFolder($folder) { $end = strpos('/', $folder); if ($end) { return substr($folder, 0, $end); } return $folder; } function ReadFolders($files_dir) { $aFolders = array(); $oCurrentFolder = opendir($files_dir) ; $KernelSystemFolders = defined('KERNEL_SYSTEM_FOLDERS') ? KERNEL_SYSTEM_FOLDERS : array('icons', 'CVS', '.svn'); while ( $sFile = readdir( $oCurrentFolder ) ) { if (is_dir($files_dir . $sFile ) && !in_array($sFile,$KernelSystemFolders) && $sFile != '.' && $sFile != '..') { $aFolders[] = $sFile; } } closedir( $oCurrentFolder ) ; return $aFolders; } function ReadFiles($files_dir) { $aFiles = array(); $oCurrentFolder = opendir($files_dir) ; while ( $sFile = readdir( $oCurrentFolder ) ) { if (!is_dir($files_dir . $sFile )) { $aFiles[] = $sFile; } } closedir( $oCurrentFolder ) ; return $aFiles; } function PrintFolders() { $order_by = $this->Application->GetVar('order_by'); $sort_by = $this->Application->GetVar('sort_by'); $folder = $this->Application->GetVar('folder'); $files_dir = WRITEABLE . '/user_files/' . $folder . '/'; $aFolders = $this->ReadFolders($files_dir); $order_by = $this->Application->GetVar('order_by'); $sort_by = $this->Application->GetVar('sort_by'); natcasesort($aFolders); $ret = ''; foreach ($aFolders as $k => $v) { $ret .= ''.$v.''."\n"; } if ($sort_by == 'name' && $order_by == '_desc') { $aFolders = array_reverse($aFolders); } foreach ($aFolders as $k => $v) { $ret .= ''.$v.''."\n"; } return $ret; } function CalculateFileSize($size) { if ( $size > 0 ) { $size = round( $size / 1024 ); $size = ($size < 1)? 1:$size;// round( $iFileSize / 1024 ) ; } return $size; } function CheckIconType($v) { $ext = strtolower( pathinfo($v, PATHINFO_EXTENSION) ); return ($ext && in_array($ext, $this->Config['ExtensionIcons']))? $ext : 'default.icon'; } function GetXmlString($size,$url,$icon,$date,$file_name) { return ''.$file_name.''."\n"; } function PrintFiles() { $order_by = $this->Application->GetVar('order_by'); $sort_by = $this->Application->GetVar('sort_by'); $folder = $this->Application->GetVar('folder'); $files_dir = WRITEABLE . '/user_files/' . $folder . '/'; $files_url = BASE_PATH . str_replace(DIRECTORY_SEPARATOR, '/', WRITEBALE_BASE) . '/user_files/' . $folder . '/'; $aFiles = $this->ReadFiles($files_dir); $ret = ''; $date_format = "m/d/Y h:i A"; natcasesort($aFiles); if ($sort_by == 'name' && $order_by == '_desc') { $aFiles = array_reverse($aFiles, TRUE); } foreach ($aFiles as $k => $v) { $aFilesSize[$k] = filesize( $files_dir . $v); $aFilesDate[$k] = filectime( $files_dir . $v); } if ($sort_by == 'name') { foreach ($aFiles as $k => $file) { $size = $this->CalculateFileSize($aFilesSize[$k]); $date = date($date_format, $aFilesDate[$k]); $icon = $this->CheckIconType($file); $ret .= $this->GetXmlString($size,$files_url.$file,$icon,$date,$file); } } if ($sort_by == 'date') { asort($aFilesDate); if($order_by == '_desc') { $aFilesDate = array_reverse($aFilesDate,TRUE); } foreach ($aFilesDate as $k => $date) { $size = $this->CalculateFileSize($aFilesSize[$k]); $file = $aFiles[$k]; $date = date($date_format, $date); $icon = $this->CheckIconType($file); $ret .= $this->GetXmlString($size,$files_url.$file,$icon,$date,$file); } } if ($sort_by == 'size') { asort($aFilesSize); if($order_by == '_desc') { $aFilesSize = array_reverse($aFilesSize,TRUE); } foreach ($aFilesSize as $k => $size) { $size = $this->CalculateFileSize($size); $file = $aFiles[$k]; $date = date($date_format, $aFilesDate[$k]); $icon = $this->CheckIconType($file); $ret .= $this->GetXmlString($size,$files_url.$file,$icon,$date,$file); } } return $ret; } function UploadFile() { $upload_dir = $this->Application->GetVar('upload_dir'); $type = explode('/', $upload_dir); $type = $type[0]; $sServerDir = WRITEABLE . '/user_files/' . $upload_dir . '/'; $aUpFile = $_FILES['NewFile']; $sFileName = $aUpFile['name']; $sOriginalFileName = $aUpFile['name']; $sExtension = strtolower(substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ); $sErrorNumber = 0; if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) ) { if (in_array($sExtension, $this->Config['AllowedExtensions'][$type])) { if (!$aUpFile['error']) { $iCounter = 0 ; while ( true ) { $sFilePath = $sServerDir . $sFileName; if ( is_file( $sFilePath ) ) { $iCounter++ ; $sFileName = $this->RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension; $sErrorNumber = '201'; } else { // Turn off all error reporting. error_reporting( 0 ) ; // Enable error tracking to catch the error. ini_set( 'track_errors', '1' ); move_uploaded_file( $aUpFile['tmp_name'], $sFilePath ); $sErrorMsg = $php_errormsg; // Restore the configurations. ini_restore( 'track_errors' ); ini_restore( 'error_reporting' ); if ( is_file( $sFilePath ) ) { $oldumask = umask(0); chmod( $sFilePath, 0666 ); umask( $oldumask ); } break ; } } } } else { $sErrorNumber = '203'; } } else { $sErrorNumber = '202' ; } echo '' ; } function RemoveExtension( $fileName ) { return substr( $fileName, 0, strrpos( $fileName, '.' ) ) ; } }