~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/web/static/htdocs/applets/FCKeditor/editor/filemanager/connectors/perl/commands.pl

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mto: This revision was merged to the branch mainline in revision 18.
  • Revision ID: james.westby@ubuntu.com-20080622211713-inlv5k4eifxckelr
ImportĀ upstreamĀ versionĀ 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#####
2
 
#  FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
 
#  Copyright (C) 2003-2010 Frederico Caldeira Knabben
4
 
#
5
 
#  == BEGIN LICENSE ==
6
 
#
7
 
#  Licensed under the terms of any of the following licenses at your
8
 
#  choice:
9
 
#
10
 
#   - GNU General Public License Version 2 or later (the "GPL")
11
 
#     http://www.gnu.org/licenses/gpl.html
12
 
#
13
 
#   - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14
 
#     http://www.gnu.org/licenses/lgpl.html
15
 
#
16
 
#   - Mozilla Public License Version 1.1 or later (the "MPL")
17
 
#     http://www.mozilla.org/MPL/MPL-1.1.html
18
 
#
19
 
#  == END LICENSE ==
20
 
#
21
 
#  This is the File Manager Connector for Perl.
22
 
#####
23
 
 
24
 
sub GetFolders
25
 
{
26
 
 
27
 
        local($resourceType, $currentFolder) = @_;
28
 
 
29
 
        # Map the virtual path to the local server path.
30
 
        $sServerDir = &ServerMapFolder($resourceType, $currentFolder);
31
 
        print "<Folders>";                      # Open the "Folders" node.
32
 
 
33
 
        opendir(DIR,"$sServerDir");
34
 
        @files = grep(!/^\.\.?$/,readdir(DIR));
35
 
        closedir(DIR);
36
 
 
37
 
        foreach $sFile (@files) {
38
 
                if($sFile != '.' && $sFile != '..' && (-d "$sServerDir$sFile")) {
39
 
                        $cnv_filename = &ConvertToXmlAttribute($sFile);
40
 
                        print '<Folder name="' . $cnv_filename . '" />';
41
 
                }
42
 
        }
43
 
        print "</Folders>";                     # Close the "Folders" node.
44
 
}
45
 
 
46
 
sub GetFoldersAndFiles
47
 
{
48
 
 
49
 
        local($resourceType, $currentFolder) = @_;
50
 
        # Map the virtual path to the local server path.
51
 
        $sServerDir = &ServerMapFolder($resourceType,$currentFolder);
52
 
 
53
 
        # Initialize the output buffers for "Folders" and "Files".
54
 
        $sFolders       = '<Folders>';
55
 
        $sFiles         = '<Files>';
56
 
 
57
 
        opendir(DIR,"$sServerDir");
58
 
        @files = grep(!/^\.\.?$/,readdir(DIR));
59
 
        closedir(DIR);
60
 
 
61
 
        foreach $sFile (@files) {
62
 
                if($sFile ne '.' && $sFile ne '..') {
63
 
                        if(-d "$sServerDir$sFile") {
64
 
                                $cnv_filename = &ConvertToXmlAttribute($sFile);
65
 
                                $sFolders .= '<Folder name="' . $cnv_filename . '" />' ;
66
 
                        } else {
67
 
                                ($iFileSize,$refdate,$filedate,$fileperm) = (stat("$sServerDir$sFile"))[7,8,9,2];
68
 
                                if($iFileSize > 0) {
69
 
                                        $iFileSize = int($iFileSize / 1024);
70
 
                                        if($iFileSize < 1) {
71
 
                                                $iFileSize = 1;
72
 
                                        }
73
 
                                }
74
 
                                $cnv_filename = &ConvertToXmlAttribute($sFile);
75
 
                                $sFiles .= '<File name="' . $cnv_filename . '" size="' . $iFileSize . '" />' ;
76
 
                        }
77
 
                }
78
 
        }
79
 
        print $sFolders ;
80
 
        print '</Folders>';                     # Close the "Folders" node.
81
 
        print $sFiles ;
82
 
        print '</Files>';                       # Close the "Files" node.
83
 
}
84
 
 
85
 
sub CreateFolder
86
 
{
87
 
 
88
 
        local($resourceType, $currentFolder) = @_;
89
 
        $sErrorNumber   = '0' ;
90
 
        $sErrorMsg              = '' ;
91
 
 
92
 
        if($FORM{'NewFolderName'} ne "") {
93
 
                $sNewFolderName = $FORM{'NewFolderName'};
94
 
                $sNewFolderName =~ s/\.|\\|\/|\||\:|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
95
 
                # Map the virtual path to the local server path of the current folder.
96
 
                $sServerDir = &ServerMapFolder($resourceType, $currentFolder);
97
 
                if(-w $sServerDir) {
98
 
                        $sServerDir .= $sNewFolderName;
99
 
                        $sErrorMsg = &CreateServerFolder($sServerDir);
100
 
                        if($sErrorMsg == 0) {
101
 
                                $sErrorNumber = '0';
102
 
                        } elsif($sErrorMsg eq 'Invalid argument' || $sErrorMsg eq 'No such file or directory') {
103
 
                                $sErrorNumber = '102';          #// Path too long.
104
 
                        } else {
105
 
                                $sErrorNumber = '110';
106
 
                        }
107
 
                } else {
108
 
                        $sErrorNumber = '103';
109
 
                }
110
 
        } else {
111
 
                $sErrorNumber = '102' ;
112
 
        }
113
 
        # Create the "Error" node.
114
 
        $cnv_errmsg = &ConvertToXmlAttribute($sErrorMsg);
115
 
        print '<Error number="' . $sErrorNumber . '" />';
116
 
}
117
 
 
118
 
sub FileUpload
119
 
{
120
 
eval("use File::Copy;");
121
 
 
122
 
        local($resourceType, $currentFolder) = @_;
123
 
        $allowedExtensions = $allowedExtensions{$resourceType};
124
 
 
125
 
        $sErrorNumber = '0' ;
126
 
        $sFileName = '' ;
127
 
        if($new_fname) {
128
 
                # Map the virtual path to the local server path.
129
 
                $sServerDir = &ServerMapFolder($resourceType,$currentFolder);
130
 
 
131
 
                # Get the uploaded file name.
132
 
                $sFileName = $new_fname;
133
 
                $sFileName =~ s/\\|\/|\||\:|\?|\*|\"|<|>|[[:cntrl:]]/_/g;
134
 
                $sFileName =~ s/\.(?![^.]*$)/_/g;
135
 
 
136
 
                $ext = '';
137
 
                if($sFileName =~ /([^\\\/]*)\.(.*)$/) {
138
 
                        $ext  = $2;
139
 
                }
140
 
 
141
 
                $allowedRegex = qr/^($allowedExtensions)$/i;
142
 
                if (!($ext =~ $allowedRegex)) {
143
 
                        SendUploadResults('202', '', '', '');
144
 
                }
145
 
 
146
 
                $sOriginalFileName = $sFileName;
147
 
 
148
 
                $iCounter = 0;
149
 
                while(1) {
150
 
                        $sFilePath = $sServerDir . $sFileName;
151
 
                        if(-e $sFilePath) {
152
 
                                $iCounter++ ;
153
 
                                ($path,$BaseName,$ext) = &RemoveExtension($sOriginalFileName);
154
 
                                $sFileName = $BaseName . '(' . $iCounter . ').' . $ext;
155
 
                                $sErrorNumber = '201';
156
 
                        } else {
157
 
                                copy("$img_dir/$new_fname","$sFilePath");
158
 
                                if (defined $CHMOD_ON_UPLOAD) {
159
 
                                        if ($CHMOD_ON_UPLOAD) {
160
 
                                                umask(000);
161
 
                                                chmod($CHMOD_ON_UPLOAD,$sFilePath);
162
 
                                        }
163
 
                                }
164
 
                                else {
165
 
                                        umask(000);
166
 
                                        chmod(0777,$sFilePath);
167
 
                                }
168
 
                                unlink("$img_dir/$new_fname");
169
 
                                last;
170
 
                        }
171
 
                }
172
 
        } else {
173
 
                $sErrorNumber = '202' ;
174
 
        }
175
 
        $sFileName      =~ s/"/\\"/g;
176
 
 
177
 
        SendUploadResults($sErrorNumber, $GLOBALS{'UserFilesPath'}.$resourceType.$currentFolder.$sFileName, $sFileName, '');
178
 
}
179
 
 
180
 
sub SendUploadResults
181
 
{
182
 
 
183
 
        local($sErrorNumber, $sFileUrl, $sFileName, $customMsg) = @_;
184
 
 
185
 
        # Minified version of the document.domain automatic fix script (#1919).
186
 
        # The original script can be found at _dev/domain_fix_template.js
187
 
        # Note: in Perl replace \ with \\ and $ with \$
188
 
        print <<EOF;
189
 
Content-type: text/html
190
 
 
191
 
<script type="text/javascript">
192
 
(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\\.|\$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
193
 
 
194
 
EOF
195
 
        print 'window.parent.OnUploadCompleted(' . $sErrorNumber . ',"' . JS_cnv($sFileUrl) . '","' . JS_cnv($sFileName) . '","' . JS_cnv($customMsg) . '") ;';
196
 
        print '</script>';
197
 
        exit ;
198
 
}
199
 
 
200
 
1;