connector.lasso
资源名称:MEIMS.rar [点击查看]
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:9k
源码类别:
数据库编程
开发平台:
Visual C++
- [//lasso
- /*
- * FCKeditor - The text editor for Internet - http://www.fckeditor.net
- * Copyright (C) 2003-2007 Frederico Caldeira Knabben
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- * This is the File Manager Connector for Lasso.
- */
- /*.....................................................................
- Include global configuration. See config.lasso for details.
- */
- include('config.lasso');
- /*.....................................................................
- Translate current date/time to GMT for custom header.
- */
- var('headerDate') = date_localtogmt(date)->format('%a, %d %b %Y %T GMT');
- /*.....................................................................
- Convert query string parameters to variables and initialize output.
- */
- var(
- 'Command' = action_param('Command'),
- 'Type' = action_param('Type'),
- 'CurrentFolder' = action_param('CurrentFolder'),
- 'ServerPath' = action_param('ServerPath'),
- 'NewFolderName' = action_param('NewFolderName'),
- 'NewFile' = null,
- 'NewFileName' = string,
- 'OrigFilePath' = string,
- 'NewFilePath' = string,
- 'commandData' = string,
- 'folders' = 't<Folders>n',
- 'files' = 't<Files>n',
- 'errorNumber' = integer,
- 'responseType' = 'xml',
- 'uploadResult' = '0'
- );
- /*.....................................................................
- Calculate the path to the current folder.
- */
- $ServerPath == '' ? $ServerPath = $config->find('UserFilesPath');
- var('currentFolderURL' = $ServerPath
- + $config->find('Subdirectories')->find(action_param('Type'))
- + action_param('CurrentFolder')
- );
- /*.....................................................................
- Build the appropriate response per the 'Command' parameter. Wrap the
- entire process in an inline for file tag permissions.
- */
- inline($connection);
- select($Command);
- /*.............................................................
- List all subdirectories in the 'Current Folder' directory.
- */
- case('GetFolders');
- $commandData += 't<Folders>n';
- iterate(file_listdirectory($currentFolderURL), local('this'));
- #this->endswith('/') ? $commandData += 'tt<Folder name="' + #this->removetrailing('/')& + '" />n';
- /iterate;
- $commandData += 't</Folders>n';
- /*.............................................................
- List both files and folders in the 'Current Folder' directory.
- Include the file sizes in kilobytes.
- */
- case('GetFoldersAndFiles');
- iterate(file_listdirectory($currentFolderURL), local('this'));
- if(#this->endswith('/'));
- $folders += 'tt<Folder name="' + #this->removetrailing('/')& + '" />n';
- else;
- local('size') = file_getsize($currentFolderURL + #this) / 1024;
- $files += 'tt<File name="' + #this + '" size="' + #size + '" />n';
- /if;
- /iterate;
- $folders += 't</Folders>n';
- $files += 't</Files>n';
- $commandData += $folders + $files;
- /*.............................................................
- Create a directory 'NewFolderName' within the 'Current Folder.'
- */
- case('CreateFolder');
- var('newFolder' = $currentFolderURL + $NewFolderName + '/');
- file_create($newFolder);
- /*.........................................................
- Map Lasso's file error codes to FCKEditor's error codes.
- */
- select(file_currenterror( -errorcode));
- case(0);
- $errorNumber = 0;
- case( -9983);
- $errorNumber = 101;
- case( -9976);
- $errorNumber = 102;
- case( -9977);
- $errorNumber = 102;
- case( -9961);
- $errorNumber = 103;
- case;
- $errorNumber = 110;
- /select;
- $commandData += '<Error number="' + $errorNumber + '" />n';
- /*.............................................................
- Process an uploaded file.
- */
- case('FileUpload');
- /*.........................................................
- This is the only command that returns an HTML response.
- */
- $responseType = 'html';
- /*.........................................................
- Was a file actually uploaded?
- */
- file_uploads->size ? $NewFile = file_uploads->get(1) | $uploadResult = '202';
- if($uploadResult == '0');
- /*.....................................................
- Split the file's extension from the filename in order
- to follow the API's naming convention for duplicate
- files. (Test.txt, Test(1).txt, Test(2).txt, etc.)
- */
- $NewFileName = $NewFile->find('OrigName');
- $OrigFilePath = $currentFolderURL + $NewFileName;
- $NewFilePath = $OrigFilePath;
- local('fileExtension') = '.' + $NewFile->find('OrigExtension');
- local('shortFileName') = $NewFileName->removetrailing(#fileExtension)&;
- /*.....................................................
- Make sure the file extension is allowed.
- */
- if($config->find('DeniedExtensions')->find($Type) >> $NewFile->find('OrigExtension'));
- $uploadResult = '202';
- else;
- /*.................................................
- Rename the target path until it is unique.
- */
- while(file_exists($NewFilePath));
- $NewFilePath = $currentFolderURL + #shortFileName + '(' + loop_count + ')' + #fileExtension;
- /while;
- /*.................................................
- Copy the uploaded file to its final location.
- */
- file_copy($NewFile->find('path'), $NewFilePath);
- /*.................................................
- Set the error code for the response. Note whether
- the file had to be renamed.
- */
- select(file_currenterror( -errorcode));
- case(0);
- $OrigFilePath != $NewFilePath ? $uploadResult = 201;
- case;
- $uploadResult = '202';
- /select;
- /if;
- /if;
- /*.........................................................
- Set the HTML response.
- */
- if($uploadResult == '0' || $uploadResult == '201');
- $__html_reply__ = '
- <script type="text/javascript">
- window.parent.frames['frmUpload'].OnUploadCompleted(' + $uploadResult + ','' + $NewFilePath + '','' + $NewFilePath->split('/')->last + '');
- </script>
- ';
- else;
- $__html_reply__ = '
- <script type="text/javascript">
- window.parent.frames['frmUpload'].OnUploadCompleted(' + $uploadResult + ');
- </script>
- ';
- /if;
- /select;
- /inline;
- /*.....................................................................
- Send a custom header for xml responses.
- */
- if($responseType == 'xml');
- header;
- ]
- HTTP/1.0 200 OK
- Date: [$headerDate]
- Server: Lasso Professional [lasso_version( -lassoversion)]
- Expires: Mon, 26 Jul 1997 05:00:00 GMT
- Last-Modified: [$headerDate]
- Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
- Pragma: no-cache
- Keep-Alive: timeout=15, max=98
- Connection: Keep-Alive
- Content-Type: text/xml; charset=utf-8
- [//lasso
- /header;
- /*.................................................................
- Set the content type encoding for Lasso.
- */
- content_type('text/xml; charset=utf-8');
- /*.................................................................
- Wrap the response as XML and output.
- */
- $__html_reply__ = '
- <?xml version="1.0" encoding="utf-8" ?>
- <Connector command="' + $Command + '" resourceType="' + $Type + '">
- <CurrentFolder path="' + $CurrentFolder + '" url="' + $currentFolderURL + '" />
- ' + $commandData + '
- </Connector>
- ';
- /if;
- ]