source: branches/1.2/workflow/js/fckeditor/editor/filemanager/browser/default/connectors/php/commands.php @ 1349

Revision 1349, 5.4 KB checked in by niltonneto, 15 years ago (diff)

Ticket #561 - Inclusão do módulo Workflow faltante nessa versão.

  • Property svn:executable set to *
Line 
1<?php
2/*
3 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
4 * Copyright (C) 2003-2007 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 ) ;
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 ) ;
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 > 0 )
75                                {
76                                        $iFileSize = round( $iFileSize / 1024 ) ;
77                                        if ( $iFileSize < 1 ) $iFileSize = 1 ;
78                                }
79
80                                $aFiles[] = '<File name="' . ConvertToXmlAttribute( $sFile ) . '" size="' . $iFileSize . '" />' ;
81                        }
82                }
83        }
84
85        // Send the folders
86        natcasesort( $aFolders ) ;
87        echo '<Folders>' ;
88
89        foreach ( $aFolders as $sFolder )
90                echo $sFolder ;
91
92        echo '</Folders>' ;
93
94        // Send the files
95        natcasesort( $aFiles ) ;
96        echo '<Files>' ;
97
98        foreach ( $aFiles as $sFiles )
99                echo $sFiles ;
100
101        echo '</Files>' ;
102}
103
104function CreateFolder( $resourceType, $currentFolder )
105{
106        $sErrorNumber   = '0' ;
107        $sErrorMsg              = '' ;
108
109        if ( isset( $_GET['NewFolderName'] ) )
110        {
111                $sNewFolderName = $_GET['NewFolderName'] ;
112
113                if ( strpos( $sNewFolderName, '..' ) !== FALSE )
114                        $sErrorNumber = '102' ;         // Invalid folder name.
115                else
116                {
117                        // Map the virtual path to the local server path of the current folder.
118                        $sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
119
120                        if ( is_writable( $sServerDir ) )
121                        {
122                                $sServerDir .= $sNewFolderName ;
123
124                                $sErrorMsg = CreateServerFolder( $sServerDir ) ;
125
126                                switch ( $sErrorMsg )
127                                {
128                                        case '' :
129                                                $sErrorNumber = '0' ;
130                                                break ;
131                                        case 'Invalid argument' :
132                                        case 'No such file or directory' :
133                                                $sErrorNumber = '102' ;         // Path too long.
134                                                break ;
135                                        default :
136                                                $sErrorNumber = '110' ;
137                                                break ;
138                                }
139                        }
140                        else
141                                $sErrorNumber = '103' ;
142                }
143        }
144        else
145                $sErrorNumber = '102' ;
146
147        // Create the "Error" node.
148        echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
149}
150
151function FileUpload( $resourceType, $currentFolder )
152{
153        $sErrorNumber = '0' ;
154        $sFileName = '' ;
155
156        if ( isset( $_FILES['NewFile'] ) && !is_null( $_FILES['NewFile']['tmp_name'] ) )
157        {
158                global $Config ;
159
160                $oFile = $_FILES['NewFile'] ;
161
162                // Map the virtual path to the local server path.
163                $sServerDir = ServerMapFolder( $resourceType, $currentFolder ) ;
164
165                // Get the uploaded file name.
166                $sFileName = $oFile['name'] ;
167
168                // Replace dots in the name with underscores (only one dot can be there... security issue).
169                if ( $Config['ForceSingleExtension'] )
170                        $sFileName = preg_replace( '/\\.(?![^.]*$)/', '_', $sFileName ) ;
171
172                $sOriginalFileName = $sFileName ;
173
174                // Get the extension.
175                $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
176                $sExtension = strtolower( $sExtension ) ;
177
178                $arAllowed      = $Config['AllowedExtensions'][$resourceType] ;
179                $arDenied       = $Config['DeniedExtensions'][$resourceType] ;
180
181                if ( ( count($arAllowed) == 0 || in_array( $sExtension, $arAllowed ) ) && ( count($arDenied) == 0 || !in_array( $sExtension, $arDenied ) ) )
182                {
183                        $iCounter = 0 ;
184
185                        while ( true )
186                        {
187                                $sFilePath = $sServerDir . $sFileName ;
188
189                                if ( is_file( $sFilePath ) )
190                                {
191                                        $iCounter++ ;
192                                        $sFileName = RemoveExtension( $sOriginalFileName ) . '(' . $iCounter . ').' . $sExtension ;
193                                        $sErrorNumber = '201' ;
194                                }
195                                else
196                                {
197                                        move_uploaded_file( $oFile['tmp_name'], $sFilePath ) ;
198
199                                        if ( is_file( $sFilePath ) )
200                                        {
201                                                $oldumask = umask(0) ;
202                                                chmod( $sFilePath, 0777 ) ;
203                                                umask( $oldumask ) ;
204                                        }
205
206                                        break ;
207                                }
208                        }
209                }
210                else
211                        $sErrorNumber = '202' ;
212        }
213        else
214                $sErrorNumber = '202' ;
215
216        echo '<script type="text/javascript">' ;
217        echo 'window.parent.frames["frmUpload"].OnUploadCompleted(' . $sErrorNumber . ',"' . str_replace( '"', '\\"', $sFileName ) . '") ;' ;
218        echo '</script>' ;
219
220        exit ;
221}
222?>
Note: See TracBrowser for help on using the repository browser.