diff --git a/modules/editor/editor.controller.php b/modules/editor/editor.controller.php index 1d79fbe57..d7ca497c8 100644 --- a/modules/editor/editor.controller.php +++ b/modules/editor/editor.controller.php @@ -52,7 +52,6 @@ } else { $args->ipaddress = $_SERVER['REMOTE_ADDR']; } - debugPrint($args); // 일단 이전 저장본 삭제 $oDB = &DB::getInstance(); diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index c4634a501..60b30d369 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -10,7 +10,7 @@ /** * @brief 자동저장되어 있는 정보를 가져옴 **/ - function getSavedDoc() { + function getSavedDoc($upload_target_srl) { // 로그인 회원이면 member_srl, 아니면 ipaddress로 저장되어 있는 문서를 찾음 if(Context::get('is_logged')) { $logged_info = Context::get('logged_info'); @@ -28,6 +28,11 @@ $oEditorController = &getController('editor'); $oEditorController->deleteSavedDoc(); + // 첨부된 파일이 있으면 현재 글 번호로 옮김 + $module_srl = Context::get('module_srl'); + $oFileController = &getController('file'); + $oFileController->moveFile($saved_doc->document_srl, $module_srl, $upload_target_srl); + return $saved_doc; } diff --git a/modules/editor/editor.view.php b/modules/editor/editor.view.php index 0e8e13d6a..94f68d3ae 100644 --- a/modules/editor/editor.view.php +++ b/modules/editor/editor.view.php @@ -67,7 +67,7 @@ // 저장된 임시본이 있는지 검사 if($enable_autosave) { - $saved_doc = $oEditorModel->getSavedDoc(); + $saved_doc = $oEditorModel->getSavedDoc($upload_target_srl); Context::set('saved_doc', $saved_doc); } Context::set('enable_autosave', $enable_autosave); diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index c15fd5053..2fba452b2 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -132,6 +132,49 @@ return $output; } + /** + * @brief 특정 글의 첨부파일을 다른 글로 이동 + **/ + function moveFile($source_srl, $target_module_srl, $target_srl) { + $oDB = &DB::getInstance(); + + $oFileModel = &getModel('file'); + $file_list = $oFileModel->getFiles($source_srl); + if(!$file_list) return; + + $file_count = count($file_list); + + for($i=0;$i<$file_count;$i++) { + + unset($file_info); + $file_info = $file_list[$i]; + $old_file = $file_info->uploaded_filename; + + // 이미지인지 기타 파일인지 체크하여 이동할 위치 정함 + if(eregi("\.(jpg|jpeg|gif|png|wmv|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi)$", $file_info->source_filename)) { + $path = sprintf("./files/attach/images/%s/%s/", $target_module_srl,$target_srl); + $new_file = $path.$file_info->source_filename; + } else { + $path = sprintf("./files/attach/binaries/%s/%s/", $target_module_srl, $target_srl); + $new_file = $path.md5(crypt(rand(1000000,900000), rand(0,100))); + } + + // 디렉토리 생성 + FileHandler::makeDir($path); + + // 파일 이동 + @rename($old_file, $new_file); + + // DB 정보도 수정 + unset($args); + $args->file_srl = $file_info->file_srl; + $args->uploaded_filename = $new_file; + $args->module_srl = $file_info->module_srl; + $args->upload_target_srl = $target_srl; + $oDB->executeQuery('file.updateFile', $args); + } + } + /** * @brief upload_target_srl을 키로 하는 첨부파일을 찾아서 java script 코드로 return **/ diff --git a/modules/file/file.model.php b/modules/file/file.model.php index 249c420a8..99d99da16 100644 --- a/modules/file/file.model.php +++ b/modules/file/file.model.php @@ -56,6 +56,7 @@ $args->upload_target_srl = $upload_target_srl; $args->sort_index = 'file_srl'; $output = $oDB->executeQuery('file.getFiles', $args); + if(!$output->data) return; $file_list = $output->data; diff --git a/modules/file/queries/updateFile.xml b/modules/file/queries/updateFile.xml new file mode 100644 index 000000000..8c583c95e --- /dev/null +++ b/modules/file/queries/updateFile.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +