1 | diff -ru --exclude='fckconfig*' FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/commands.php FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/commands.php |
---|
2 | --- FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/commands.php 2007-03-01 22:55:20.000000000 +0000 |
---|
3 | +++ FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/commands.php 2007-03-27 12:56:52.000000000 +0100 |
---|
4 | @@ -177,33 +177,70 @@ |
---|
5 | |
---|
6 | $arAllowed = $Config['AllowedExtensions'][$resourceType] ; |
---|
7 | $arDenied = $Config['DeniedExtensions'][$resourceType] ; |
---|
8 | + $arRegexp = (isSet ($Config['Regexp']) && array_key_exists ($resourceType, $Config['Regexp']) ? $Config['Regexp'][$resourceType] : ''); |
---|
9 | |
---|
10 | - if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) ) |
---|
11 | + if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) && ( $arRegexp === '' || ereg( $arRegexp, RemoveExtension( $sOriginalFileName ) ) ) ) |
---|
12 | { |
---|
13 | - $iCounter = 0 ; |
---|
14 | - |
---|
15 | - while ( true ) |
---|
16 | - { |
---|
17 | - $sFilePath = $sServerDir . $sFileName ; |
---|
18 | - |
---|
19 | + // Assign the new file's name |
---|
20 | + $sFilePath = $sServerDir . $sFileName ; |
---|
21 | + $doUpload = true; |
---|
22 | + |
---|
23 | + // If the file already exists, select what behaviour should be adopted |
---|
24 | + if ( is_file( $sFilePath ) ) { |
---|
25 | + $sFilenameClashBehaviour = (isSet ($Config['filenameClashBehaviour']) ? $Config['filenameClashBehaviour'] : 'newname'); |
---|
26 | + switch ($sFilenameClashBehaviour) { |
---|
27 | + |
---|
28 | + // overwrites the version on the server with the same name |
---|
29 | + case 'overwrite': |
---|
30 | + $sErrorNumber = '204' ; |
---|
31 | + // Do nothing - move_uploaded_file will just overwrite naturally |
---|
32 | + break; |
---|
33 | + |
---|
34 | + // generate an error so that the file uploading fails |
---|
35 | + case false: |
---|
36 | + case 'false': // String version in case someone quotes the boolean text equivalent |
---|
37 | + $sErrorNumber = '205' ; |
---|
38 | + $doUpload = false; |
---|
39 | + break; |
---|
40 | + |
---|
41 | + // give the uploaded file a new name (this was the (unconfigurable) behaviour in FCKeditor2.2) - named as: originalName(number).extension |
---|
42 | + case 'newname': |
---|
43 | + $iCounter = 0 ; |
---|
44 | + while ( true ) |
---|
45 | + { |
---|
46 | + if ( is_file( $sFilePath ) ) |
---|
47 | + { |
---|
48 | + $iCounter++ ; |
---|
49 | + $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ; |
---|
50 | + $sErrorNumber = '201' ; |
---|
51 | + $sFilePath = $sServerDir . $sFileName ; |
---|
52 | + } |
---|
53 | + else |
---|
54 | + { |
---|
55 | + break ; |
---|
56 | + } |
---|
57 | + } |
---|
58 | + break; |
---|
59 | + |
---|
60 | + // (default behaviour) back up the version on the server to the same name + timestamp appended to the filename (after the extension) |
---|
61 | + case 'renameold': |
---|
62 | + default: |
---|
63 | + $timestamp = '.' . date ('Ymd-His'); |
---|
64 | + copy ($sFilePath, $sFilePath . $timestamp); |
---|
65 | + $sFileName = $sFileName . $timestamp; |
---|
66 | + $sErrorNumber = '206' ; |
---|
67 | + break; |
---|
68 | + } // End of switch statement |
---|
69 | + } |
---|
70 | + |
---|
71 | + // Now its name has been assigned, move the uploaded file into position |
---|
72 | + if ($doUpload) { |
---|
73 | + move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ; |
---|
74 | if ( is_file( $sFilePath ) ) |
---|
75 | { |
---|
76 | - $iCounter++ ; |
---|
77 | - $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ; |
---|
78 | - $sErrorNumber = '201' ; |
---|
79 | - } |
---|
80 | - else |
---|
81 | - { |
---|
82 | - move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ; |
---|
83 | - |
---|
84 | - if ( is_file( $sFilePath ) ) |
---|
85 | - { |
---|
86 | - $oldumask = umask(0) ; |
---|
87 | - chmod( $sFilePath, 0777 ) ; |
---|
88 | - umask( $oldumask ) ; |
---|
89 | - } |
---|
90 | - |
---|
91 | - break ; |
---|
92 | + $oldumask = umask(0) ; |
---|
93 | + chmod( $sFilePath, 0777 ) ; |
---|
94 | + umask( $oldumask ) ; |
---|
95 | } |
---|
96 | } |
---|
97 | } |
---|
98 | diff -ru --exclude='fckconfig*' FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/config.php FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/config.php |
---|
99 | --- FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/config.php 2007-03-06 11:21:08.000000000 +0000 |
---|
100 | +++ FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/config.php 2007-03-27 13:22:09.000000000 +0100 |
---|
101 | @@ -24,33 +24,57 @@ |
---|
102 | |
---|
103 | global $Config ; |
---|
104 | |
---|
105 | -// SECURITY: You must explicitelly enable this "connector". (Set it to "true"). |
---|
106 | +// SECURITY: You must explicitly enable this "connector". (Set it to "true"). |
---|
107 | $Config['Enabled'] = false ; |
---|
108 | |
---|
109 | |
---|
110 | // Path to user files relative to the document root. |
---|
111 | -$Config['UserFilesPath'] = '/userfiles/' ; |
---|
112 | +$Config['UserFilesPath'] = '/userfiles/' ; // Set to / if you want filebrowsing across the whole site directory |
---|
113 | |
---|
114 | // Fill the following value it you prefer to specify the absolute path for the |
---|
115 | -// user files directory. Usefull if you are using a virtual directory, symbolic |
---|
116 | +// user files directory. Useful if you are using a virtual directory, symbolic |
---|
117 | // link or alias. Examples: 'C:\\MySite\\userfiles\\' or '/root/mysite/userfiles/'. |
---|
118 | // Attention: The above 'UserFilesPath' must point to the same directory. |
---|
119 | -$Config['UserFilesAbsolutePath'] = '' ; |
---|
120 | +$Config['UserFilesAbsolutePath'] = '' ; // Set to $_SERVER['DOCUMENT_ROOT'] if you want filebrowsing across the whole site |
---|
121 | |
---|
122 | // Due to security issues with Apache modules, it is reccomended to leave the |
---|
123 | // following setting enabled. |
---|
124 | $Config['ForceSingleExtension'] = true ; |
---|
125 | |
---|
126 | +// What to do if a file being uploaded has the same name as an existing file on the server |
---|
127 | +// 'renameold' - (default behaviour) backs up the version on the server to the same name + timestamp appended to the filename (after the extension) |
---|
128 | +// 'overwrite' - overwrites the version on the server with the same name |
---|
129 | +// 'newname' - gives the uploaded file a new name (this was the (unconfigurable) behaviour in FCKeditor2.2) |
---|
130 | +// false - generates an error so that the file uploading fails |
---|
131 | +$Config['filenameClashBehaviour'] = 'renameold'; |
---|
132 | + |
---|
133 | +// In the following groupings: |
---|
134 | +// 'Subdirectory' is the subdirectory under the main 'UserFilesPath' |
---|
135 | +// e.g. 'File/' |
---|
136 | +// or leave it blank as '' to use the main UserFilesPath directory (i.e. the user can add files across the whole site) |
---|
137 | +// 'Regexp' ereg-style regexp which the name must validate to |
---|
138 | +// This regexp applies to the part BEFORE the dot + file extension |
---|
139 | +// e.g. '^([-_a-zA-Z0-9]{1,25})$' (which would be sensible for best practice) |
---|
140 | +// or leave it blank as '' for no checking |
---|
141 | + |
---|
142 | +$Config['Subdirectory']['File'] = 'file/' ; |
---|
143 | $Config['AllowedExtensions']['File'] = array() ; |
---|
144 | $Config['DeniedExtensions']['File'] = array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis') ; |
---|
145 | +$Config['Regexp']['File'] = '' ; |
---|
146 | |
---|
147 | +$Config['Subdirectory']['Image'] = 'image/' ; |
---|
148 | $Config['AllowedExtensions']['Image'] = array('jpg','gif','jpeg','png') ; |
---|
149 | $Config['DeniedExtensions']['Image'] = array() ; |
---|
150 | +$Config['Regexp']['Image'] = '' ; |
---|
151 | |
---|
152 | +$Config['Subdirectory']['Flash'] = 'flash/' ; |
---|
153 | $Config['AllowedExtensions']['Flash'] = array('swf','fla') ; |
---|
154 | $Config['DeniedExtensions']['Flash'] = array() ; |
---|
155 | +$Config['Regexp']['Flash'] = '' ; |
---|
156 | |
---|
157 | +$Config['Subdirectory']['Media'] = 'media/' ; |
---|
158 | $Config['AllowedExtensions']['Media'] = array('swf','fla','jpg','gif','jpeg','png','avi','mpg','mpeg') ; |
---|
159 | $Config['DeniedExtensions']['Media'] = array() ; |
---|
160 | +$Config['Regexp']['Media'] = '' ; |
---|
161 | |
---|
162 | ?> |
---|
163 | \ No newline at end of file |
---|
164 | diff -ru --exclude='fckconfig*' FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/connector.php FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/connector.php |
---|
165 | --- FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/connector.php 2007-03-01 22:55:20.000000000 +0000 |
---|
166 | +++ FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/connector.php 2007-03-27 13:04:42.000000000 +0100 |
---|
167 | @@ -36,6 +36,11 @@ |
---|
168 | // Get the "UserFiles" path. |
---|
169 | $GLOBALS["UserFilesPath"] = '' ; |
---|
170 | |
---|
171 | +// Global the subdirectories for the media types |
---|
172 | +if (isSet ($Config['Subdirectory'])) { |
---|
173 | + $GLOBALS['Subdirectory'] = $Config['Subdirectory'] ; |
---|
174 | +} |
---|
175 | + |
---|
176 | if ( isset( $Config['UserFilesPath'] ) ) |
---|
177 | $GLOBALS["UserFilesPath"] = $Config['UserFilesPath'] ; |
---|
178 | else if ( isset( $_GET['ServerPath'] ) ) |
---|
179 | diff -ru --exclude='fckconfig*' FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/io.php FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/io.php |
---|
180 | --- FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/connectors/php/io.php 2007-03-01 22:55:20.000000000 +0000 |
---|
181 | +++ FCKeditor_2.4.1-patched/editor/filemanager/browser/default/connectors/php/io.php 2007-03-27 13:13:19.000000000 +0100 |
---|
182 | @@ -24,10 +24,7 @@ |
---|
183 | |
---|
184 | function GetUrlFromPath( $resourceType, $folderPath ) |
---|
185 | { |
---|
186 | - if ( $resourceType == '' ) |
---|
187 | - return RemoveFromEnd( $GLOBALS["UserFilesPath"], '/' ) . $folderPath ; |
---|
188 | - else |
---|
189 | - return $GLOBALS["UserFilesPath"] . strtolower( $resourceType ) . $folderPath ; |
---|
190 | + return $GLOBALS["UserFilesPath"] . GetResourceTypeSubdirectory ( $resourceType ) . RemoveFromStart ( $folderPath , '/' ); |
---|
191 | } |
---|
192 | |
---|
193 | function RemoveExtension( $fileName ) |
---|
194 | @@ -38,7 +35,7 @@ |
---|
195 | function ServerMapFolder( $resourceType, $folderPath ) |
---|
196 | { |
---|
197 | // Get the resource type directory. |
---|
198 | - $sResourceTypePath = $GLOBALS["UserFilesDirectory"] . strtolower( $resourceType ) . '/' ; |
---|
199 | + $sResourceTypePath = $GLOBALS["UserFilesDirectory"] . GetResourceTypeSubdirectory ( $resourceType ); |
---|
200 | |
---|
201 | // Ensure that the directory exists. |
---|
202 | CreateServerFolder( $sResourceTypePath ) ; |
---|
203 | @@ -47,6 +44,27 @@ |
---|
204 | return $sResourceTypePath . RemoveFromStart( $folderPath, '/' ) ; |
---|
205 | } |
---|
206 | |
---|
207 | + |
---|
208 | +// Function to determine the directory where the files for this resource type are located |
---|
209 | +function GetResourceTypeSubdirectory ( $resourceType ) |
---|
210 | +{ |
---|
211 | + // Return the empty string if no resource type specified, i.e. don't go down into any subdirectory |
---|
212 | + if ($resourceType == '') {return '';} |
---|
213 | + |
---|
214 | + // Use the configured value if it exists; NB array_key_exists is used rather than isSet to allow empty values |
---|
215 | + if (isSet ($GLOBALS['Subdirectory']) && array_key_exists ($resourceType, $GLOBALS['Subdirectory'])) { |
---|
216 | + |
---|
217 | + // If the value is empty, don't add a slash to the empty string, and return that |
---|
218 | + if ($GLOBALS['Subdirectory'][$resourceType] == '') {return '';} |
---|
219 | + |
---|
220 | + // Otherwise ensure the subdirectory is slash-terminated, and return that |
---|
221 | + return RemoveFromEnd( $GLOBALS['Subdirectory'][$resourceType], '/' ) . '/'; |
---|
222 | + } |
---|
223 | + |
---|
224 | + // Otherwise default to the resource type name itself as the directory name |
---|
225 | + return strtolower ( $resourceType ) . '/'; |
---|
226 | +} |
---|
227 | + |
---|
228 | function GetParentFolder( $folderPath ) |
---|
229 | { |
---|
230 | $sPattern = "-[/\\\\][^/\\\\]+[/\\\\]?$-" ; |
---|
231 | @@ -55,6 +73,12 @@ |
---|
232 | |
---|
233 | function CreateServerFolder( $folderPath ) |
---|
234 | { |
---|
235 | + // Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms |
---|
236 | + while (strpos ($folderPath, '//') !== false) |
---|
237 | + { |
---|
238 | + $folderPath = str_replace( '//', '/', $folderPath ) ; |
---|
239 | + } |
---|
240 | + |
---|
241 | $sParent = GetParentFolder( $folderPath ) ; |
---|
242 | |
---|
243 | // Check if the parent exists, or create it. |
---|
244 | diff -ru --exclude='fckconfig*' FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/frmupload.html FCKeditor_2.4.1-patched/editor/filemanager/browser/default/frmupload.html |
---|
245 | --- FCKeditor_2.4.1-virgin/editor/filemanager/browser/default/frmupload.html 2007-03-01 22:55:20.000000000 +0000 |
---|
246 | +++ FCKeditor_2.4.1-patched/editor/filemanager/browser/default/frmupload.html 2007-03-27 13:16:46.000000000 +0100 |
---|
247 | @@ -81,6 +81,17 @@ |
---|
248 | case 202 : |
---|
249 | alert( 'Invalid file' ) ; |
---|
250 | break ; |
---|
251 | + case 204 : |
---|
252 | + window.parent.frames['frmResourcesList'].Refresh() ; |
---|
253 | + alert( 'Your file has been successfully uploaded, and replaced the existing file with the same name.' ) ; |
---|
254 | + break ; |
---|
255 | + case 205 : |
---|
256 | + alert( 'A file of that name already exists, so the upload failed.' ) ; |
---|
257 | + break ; |
---|
258 | + case 206 : |
---|
259 | + window.parent.frames['frmResourcesList'].Refresh() ; |
---|
260 | + alert( 'Your file has been successfully uploaded. There was already a file of that name, so that previous file has been backed up by being renamed to "' + data + '".' ) ; |
---|
261 | + break ; |
---|
262 | default : |
---|
263 | alert( 'Error on file upload. Error number: ' + errorNumber ) ; |
---|
264 | break ; |
---|