diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php
index 5e29a3bff..3f5b6f030 100644
--- a/classes/file/FileHandler.class.php
+++ b/classes/file/FileHandler.class.php
@@ -22,7 +22,7 @@
$fp = fopen($file_name, "r");
$buff = '';
if($fp) {
- while(!feof($fp) || strlen($buff)<$filesize) {
+ while(!feof($fp) && strlen($buff)<=$filesize) {
$str = fgets($fp, 1024);
$buff .= $str;
}
diff --git a/classes/page/PageHandler.class.php b/classes/page/PageHandler.class.php
index b1f2a96b2..487ffc215 100644
--- a/classes/page/PageHandler.class.php
+++ b/classes/page/PageHandler.class.php
@@ -31,7 +31,7 @@
$first_page = $cur_page-(int)($page_count/2);
if($first_page<1) $first_page = 1;
- $last_page = $first_page+$page_count-1;
+ $last_page = $total_page;
if($last_page>$total_page) $last_page = $total_page;
$this->first_page = $first_page;
diff --git a/modules/importer/importer.controller.php b/modules/importer/importer.controller.php
index cee6ee9b1..c20897157 100644
--- a/modules/importer/importer.controller.php
+++ b/modules/importer/importer.controller.php
@@ -7,6 +7,10 @@
class importerController extends importer {
+ var $oXml = null;
+ var $oMemberController = null;
+ var $oDocumentController = null;
+
/**
* @brief 초기화
**/
@@ -75,24 +79,127 @@
}
/**
- * @brief import xml file
- * XML File을 읽어서 파싱 후 입력..
+ * @brief import 실행
**/
function procImporterAdminImport() {
set_time_limit(0);
+ // 변수 체크
$module_srl = Context::get('module_srl');
- $category_srl = Context::get('category_srl');
+ $category_srl = Context::get('category_list');
$xml_file = Context::get('xml_file');
// 파일을 찾을 수 없으면 에러 표시
if(!file_exists($xml_file)) return new Object(-1,'msg_no_xml_file');
- // XML Parser로 XML을 읽음
- $xml_doc = XmlParser::loadXmlFile($xml_file);
+ $this->oXml = new XmlParser();
- $this->setError(-1);
- $this->setMessage('haha');
+ // module_srl이 있으면 module데이터로 판단하여 처리, 아니면 회원정보로..
+ if($module_srl) return $this->importModule($xml_file, $module_srl, $category_srl);
+ return $this->importMember($xml_file);
+ }
+
+ /**
+ * @brief 회원정보 import
+ **/
+ function importMember($xml_file) {
+ $filesize = filesize($xml_file);
+ if($filesize<1) return;
+
+ $this->oMemberController = &getController('member');
+
+ $fp = fopen($xml_file, "r");
+ $readed_size = 0;
+ if($fp) {
+ while(!feof($fp) && $readed_size<=$filesize) {
+ $str = fgets($fp, 256);
+ $readed_size += strlen($str);
+
+ $buff .= $str;
+ $buff = preg_replace_callback('!([^<]*)!is', array($this, '_importMember'), $buff);
+
+ if(eregi('', $str)) break;
+ }
+ fclose($fp);
+ }
+
+ return new Object(0,'msg_import_finished');
+ }
+
+ function _importMember($matches) {
+ $user_id = $matches[1];
+ $buff = sprintf('%s',base64_decode($matches[2]));
+ $xml_doc = $this->oXml->parse($buff);
+
+ $args->user_id = $xml_doc->member->user_id->body;
+ $args->user_name = $xml_doc->member->user_name->body;
+ $args->nick_name = $xml_doc->member->nick_name->body;
+ $args->homepage = $xml_doc->member->homepage->body;
+ $args->birthday = $xml_doc->member->birthday->body;
+ $args->email_address = $xml_doc->member->email_address->body;
+ $args->password = $xml_doc->member->password->body;
+ $args->regdate = $xml_doc->member->regdate->body;
+ $args->allow_mailing = $xml_doc->member->allow_mailing->body;
+ $args->allow_message = 'Y';
+ $output = $this->oMemberController->insertMember($args);
+
+ if($output->toBool()) {
+ $member_srl = $output->get('member_srl');
+ if($xml_doc->member->image_nickname->body) {
+ $image_nickname = base64_decode($xml_doc->member->image_nickname->body);
+ $fp = fopen('./files/cache/tmp_imagefile','w');
+ fwrite($fp, $image_nickname);
+ fclose($fp);
+
+ $this->oMemberController->insertImageName($member_srl, './files/cache/tmp_imagefile');
+ }
+ if($xml_doc->member->image_mark->body) {
+ $image_mark = base64_decode($xml_doc->member->image_mark->body);
+ $fp = fopen('./files/cache/tmp_imagefile','w');
+ fwrite($fp, $image_mark);
+ fclose($fp);
+
+ $this->oMemberController->insertImageMark($member_srl, './files/cache/tmp_imagefile');
+ }
+ @unlink('./files/cache/tmp_imagefile');
+ if($xml_doc->member->signature->body) {
+ $oMemberController->putSignature($member_srl, $xml_doc->member->signature->body);
+ }
+ }
+
+ usleep(100);
+ return '';
+ }
+
+ /**
+ * @brief 게시물 import
+ **/
+ function importModule($xml_file) {
+ $filesize = filesize($xml_file);
+ if($filesize<1) return;
+
+ $this->oDocumentController = &getController('document');
+
+ $fp = fopen($xml_file, "r");
+ $readed_size = 0;
+ if($fp) {
+ while(!feof($fp) && $readed_size<=$filesize) {
+ $str = fgets($fp, 1024);
+ $readed_size += strlen($str);
+
+ $buff .= $str;
+ $buff = preg_replace_callback('!([^<]*)!is', array($this, '_importModule'), $buff);
+ }
+ fclose($fp);
+ }
+
+ return new Object(-1,'haha');
+ }
+
+ function _importModule($matches) {
+ $user_id = $matches[1];
+ $xml_doc = sprintf('%s',base64_decode($matches[2]));
+ return '';
}
}
?>
diff --git a/modules/importer/lang/ko.lang.php b/modules/importer/lang/ko.lang.php
index 779d85809..702e47fae 100644
--- a/modules/importer/lang/ko.lang.php
+++ b/modules/importer/lang/ko.lang.php
@@ -35,6 +35,8 @@
// 안내/경고
$lang->msg_sync_member = '동기화 버튼을 클릭하시면 회원정보와 게시물정보의 동기화를 시작합니다.';
$lang->msg_no_xml_file = 'XML파일을 찾을 수 없습니다. 경로를 다시 확인해주세요';
+ $lang->msg_invalid_xml_file = '잘못된 형식의 XML파일입니다';
+ $lang->msg_import_finished = '데이터 입력이 완료되었습니다. 상황에 따라 입력되지 못한 데이터가 있을 수 있습니다.';
// 주절 주절..
$lang->about_type_member = '데이터 이전 대상이 회원정보일 경우 선택해주세요';
diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php
index 70a60781d..3bbcab8d4 100644
--- a/modules/member/member.controller.php
+++ b/modules/member/member.controller.php
@@ -725,6 +725,16 @@
$config = $oModuleModel->getModuleConfig('member');
if($logged_info->is_admin != 'Y' && $config->image_name != 'Y') return $this->stop('msg_not_uploaded_image_name');
+ $this->insertImageName($member_srl, $file['tmp_name']);
+
+ // 페이지 리프레쉬
+ $this->setRefreshPage();
+ }
+
+ function insertImageName($member_srl, $target_file) {
+ $oModuleModel = &getModel('module');
+ $config = $oModuleModel->getModuleConfig('member');
+
// 정해진 사이즈를 구함
$max_width = $config->image_name_max_width;
if(!$max_width) $max_width = "90";
@@ -732,10 +742,7 @@
if(!$max_height) $max_height = "20";
$target_filename = sprintf('files/attach/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl);
- FileHandler::createImageFile($file['tmp_name'], $target_filename, $max_width, $max_height, 'gif');
-
- // 페이지 리프레쉬
- $this->setRefreshPage();
+ FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif');
}
/**
@@ -778,6 +785,16 @@
$config = $oModuleModel->getModuleConfig('member');
if($logged_info->is_admin != 'Y' && $config->image_mark != 'Y') return $this->stop('msg_not_uploaded_image_mark');
+ $this->insertImageMark($member_srl, $file['tmp_name']);
+
+ // 페이지 리프레쉬
+ $this->setRefreshPage();
+ }
+
+ function insertImageMark($member_srl, $target_file) {
+ $oModuleModel = &getModel('module');
+ $config = $oModuleModel->getModuleConfig('member');
+
// 정해진 사이즈를 구함
$max_width = $config->image_mark_max_width;
if(!$max_width) $max_width = "20";
@@ -785,10 +802,8 @@
if(!$max_height) $max_height = "20";
$target_filename = sprintf('files/attach/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl);
- FileHandler::createImageFile($file['tmp_name'], $target_filename, $max_width, $max_height, 'gif');
+ FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif');
- // 페이지 리프레쉬
- $this->setRefreshPage();
}
/**
diff --git a/modules/member/tpl/member_list.html b/modules/member/tpl/member_list.html
index 165704d49..b6fc98fa9 100644
--- a/modules/member/tpl/member_list.html
+++ b/modules/member/tpl/member_list.html
@@ -28,7 +28,7 @@
- | {$val->member_srl} |
+ {$no} |
{htmlspecialchars($val->user_id)} |
{htmlspecialchars($val->user_name)} |
{htmlspecialchars($val->nick_name)} |