Subversion Repositories Applications.papyrus

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
431 ddelon 1
<?php
2
/*
3
 * FCKeditor - The text editor for internet
4
 * Copyright (C) 2003-2005 Frederico Caldeira Knabben
5
 *
6
 * Licensed under the terms of the GNU Lesser General Public License:
7
 * 		http://www.opensource.org/licenses/lgpl-license.php
8
 *
9
 * For further information visit:
10
 * 		http://www.fckeditor.net/
11
 *
12
 * File Name: commands.php
13
 * 	This is the File Manager Connector for PHP.
14
 *
15
 * File Authors:
16
 * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
17
 */
18
 
19
function GetFolders( $resourceType, $currentFolder )
20
{
21
	// Map the virtual path to the local server path.
22
	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
23
 
24
	// Open the "Folders" node.
25
	echo "<Folders>" ;
26
 
27
	$oCurrentFolder = opendir( $sServerDir ) ;
28
 
29
	while ( $sFile = readdir( $oCurrentFolder ) )
30
	{
31
		if ( $sFile != '.' && $sFile != '..' && is_dir( $sServerDir . $sFile ) )
32
			echo '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
33
	}
34
 
35
	closedir( $oCurrentFolder ) ;
36
 
37
	// Close the "Folders" node.
38
	echo "</Folders>" ;
39
}
40
 
41
function GetFoldersAndFiles( $resourceType, $currentFolder )
42
{
43
	// Map the virtual path to the local server path.
44
	$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
45
 
46
	// Initialize the output buffers for "Folders" and "Files".
47
	$sFolders	= '<Folders>' ;
48
	$sFiles		= '<Files>' ;
49
 
50
	$oCurrentFolder = opendir( $sServerDir ) ;
51
 
52
	while ( $sFile = readdir( $oCurrentFolder ) )
53
	{
54
		if ( $sFile != '.' && $sFile != '..' )
55
		{
56
			if ( is_dir( $sServerDir . $sFile ) )
57
				$sFolders .= '<Folder name="' . ConvertToXmlAttribute( $sFile ) . '" />' ;
58
			else
59
			{
60
				$iFileSize = filesize( $sServerDir . $sFile ) ;
61
				if ( $iFileSize > 0 )
62
				{
63
					$iFileSize = round( $iFileSize / 1024 ) ;
64
					if ( $iFileSize < 1 ) $iFileSize = 1 ;
65
				}
66
 
67
				$sFiles	.= '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
68
			}
69
		}
70
	}
71
 
72
	echo $sFolders ;
73
	// Close the "Folders" node.
74
	echo '</Folders>' ;
75
 
76
	echo $sFiles ;
77
	// Close the "Files" node.
78
	echo '</Files>' ;
79
}
80
 
81
function CreateFolder( $resourceType, $currentFolder )
82
{
83
	$sErrorNumber	= '0' ;
84
	$sErrorMsg		= '' ;
85
 
86
	if ( isset( $_GET['NewFolderName'] ) )
87
	{
88
		$sNewFolderName = $_GET['NewFolderName'] ;
89
 
90
		// Map the virtual path to the local server path of the current folder.
91
		$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
92
 
93
		if ( is_writable( $sServerDir ) )
94
		{
95
			$sServerDir .= $sNewFolderName ;
96
 
97
			$sErrorMsg = CreateServerFolder( $sServerDir ) ;
98
 
99
			switch ( $sErrorMsg )
100
			{
101
				case '' :
102
					$sErrorNumber = '0' ;
103
					break ;
104
				case 'Invalid argument' :
105
				case 'No such file or directory' :
106
					$sErrorNumber = '102' ;		// Path too long.
107
					break ;
108
				default :
109
					$sErrorNumber = '110' ;
110
					break ;
111
			}
112
		}
113
		else
114
			$sErrorNumber = '103' ;
115
	}
116
	else
117
		$sErrorNumber = '102' ;
118
 
119
	// Create the "Error" node.
120
	echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
121
}
122
 
123
function FileUpload( $resourceType, $currentFolder )
124
{
125
	$sErrorNumber = '0' ;
126
	$sFileName = '' ;
127
 
128
	if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
129
	{
130
		$oFile = $_FILES['NewFile'] ;
131
 
132
		// Map the virtual path to the local server path.
133
		$sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
134
 
135
		// Get the uploaded file name.
136
		$sFileName = $oFile['name'] ;
137
		$sOriginalFileName = $sFileName ;
138
		$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
139
		$sExtension = strtolower( $sExtension ) ;
140
 
141
		global $Config ;
142
 
143
		$arAllowed	= $Config['AllowedExtensions'][$resourceType] ;
144
		$arDenied	= $Config['DeniedExtensions'][$resourceType] ;
145
 
146
		if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
147
		{
148
			$iCounter = 0 ;
149
 
150
			while ( true )
151
			{
152
				$sFilePath = $sServerDir . $sFileName ;
153
 
154
				if ( is_file( $sFilePath ) )
155
				{
156
					$iCounter++ ;
157
					$sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
158
					$sErrorNumber = '201' ;
159
				}
160
				else
161
				{
162
					move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
163
 
164
					if ( is_file( $sFilePath ) )
165
					{
166
						$oldumask = umask(0) ;
167
						chmod( $sFilePath, 0777 ) ;
168
						umask( $oldumask ) ;
169
					}
170
 
171
					break ;
172
				}
173
			}
174
		}
175
		else
176
			$sErrorNumber = '202' ;
177
	}
178
	else
179
		$sErrorNumber = '202' ;
180
 
181
	echo '<script type="text/javascript">' ;
182
	echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
183
	echo '</script>' ;
184
 
185
	exit ;
186
}
187
?>