mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +09:00
ìª½ì§ ë°ì´í° ì´ì ì²ë¦¬
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3371 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
541d9f7c94
commit
55c3623bff
13 changed files with 244 additions and 0 deletions
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
<action name="procImporterAdminSync" type="controller" standalone="true" />
|
||||
<action name="procImporterAdminMemberImport" type="controller" standalone="true" />
|
||||
<action name="procImporterAdminMessageImport" type="controller" standalone="true" />
|
||||
<action name="procImporterAdminModuleImport" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -240,6 +240,144 @@
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 메세지xml 파일을 분석해서 import
|
||||
**/
|
||||
function procImporterAdminMessageImport() {
|
||||
set_time_limit(0);
|
||||
|
||||
$xml_file = Context::get('xml_file');
|
||||
$total_count = (int)Context::get('total_count');
|
||||
$success_count = (int)Context::get('success_count');
|
||||
$readed_line = (int)Context::get('readed_line');
|
||||
|
||||
// xml_file 경로가 없으면 에러~
|
||||
if(!$xml_file) return new Object(-1, 'msg_no_xml_file');
|
||||
|
||||
// local 파일 지정인데 파일이 없으면 역시 에러~
|
||||
if(!eregi('^http:',$xml_file) && (!eregi("\.xml$", $xml_file) || !file_exists($xml_file)) ) return new Object(-1,'msg_no_xml_file');
|
||||
|
||||
// 이제부터 데이터를 가져오면서 처리
|
||||
$fp = $this->getFilePoint($xml_file);
|
||||
if(!$fp) return new Object(-1,'msg_no_xml_file');
|
||||
|
||||
$obj = null;
|
||||
$inserted_count = 0;
|
||||
|
||||
// 본문 데이터부터 처리 시작
|
||||
$read_line = 0;
|
||||
while(!feof($fp)) {
|
||||
$str = trim(fgets($fp, 1024));
|
||||
|
||||
if($str == "</message>") $read_line ++;
|
||||
if($read_line < $readed_line) continue;
|
||||
|
||||
// 한 아이템 준비 시작
|
||||
if($str == '<message>') {
|
||||
$obj = null;
|
||||
continue;
|
||||
|
||||
// 아이템 종료시 DB 입력
|
||||
} else if( $str == '</message>') {
|
||||
if($this->importMessage($obj)) $inserted_count ++;
|
||||
if($inserted_count >= 500) {
|
||||
$manual_break = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// messages 태그 체크 (전체 개수를 구함)
|
||||
} else if(substr($str,0,9)=='<messages') {
|
||||
preg_match('/count="([0-9]+)"/i', $str, $matches);
|
||||
$total_count = $matches[1];
|
||||
continue;
|
||||
|
||||
// 선언구 패스~
|
||||
} else if(substr($str,0,5)=='<?xml') {
|
||||
continue;
|
||||
|
||||
// 종료 부분
|
||||
} else if($str == '</messages>') {
|
||||
break;
|
||||
|
||||
// 변수 체크
|
||||
} else {
|
||||
$buff .= $str;
|
||||
$pos = strpos($buff, '>');
|
||||
$key = substr($buff, 1, $pos-1);
|
||||
if(substr($buff, -1 * ( strlen($key)+3)) == '</'.$key.'>') {
|
||||
$val = base64_decode(substr($buff, $pos, strlen($buff)-$pos*2-2));
|
||||
if($is_extra_var) $extra_var->{$key} = $val;
|
||||
else $obj->{$key} = $val;
|
||||
$buff = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
$success_count += $inserted_count;
|
||||
|
||||
if($manual_break) {
|
||||
$this->add('total_count',$total_count);
|
||||
$this->add('success_count',$success_count);
|
||||
$this->add('readed_line',$read_line);
|
||||
$this->add('is_finished','0');
|
||||
$this->setMessage(sprintf(Context::getLang('msg_importing'), $total_count, $success_count));
|
||||
} else {
|
||||
$this->add('is_finished','1');
|
||||
$this->setMessage(sprintf(Context::getLang('msg_import_finished'), $success_count, $total_count));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 주어진 xml 파일을 파싱해서 회원 정보 입력
|
||||
**/
|
||||
function importMessage($obj) {
|
||||
// 보낸이/ 받는이의 member_srl을 구함 (존재하지 않으면 그냥 pass..)
|
||||
$sender_args->user_id = $obj->sender;
|
||||
$sender_output = executeQuery('member.getMemberInfo',$sender_args);
|
||||
$sender_srl = $sender_output->data->member_srl;
|
||||
if(!$sender_srl) return false;
|
||||
|
||||
$receiver_args->user_id = $obj->receiver;
|
||||
$receiver_output = executeQuery('member.getMemberInfo',$receiver_args);
|
||||
$receiver_srl = $receiver_output->data->member_srl;
|
||||
if(!$receiver_srl) return false;
|
||||
|
||||
// 보내는 사용자의 쪽지함에 넣을 쪽지
|
||||
$sender_args->sender_srl = $sender_srl;
|
||||
$sender_args->receiver_srl = $receiver_srl;
|
||||
$sender_args->message_type = 'S';
|
||||
$sender_args->title = $obj->title;
|
||||
$sender_args->content = $obj->content;
|
||||
$sender_args->readed = $obj->readed;
|
||||
$sender_args->regdate = $obj->regdate;
|
||||
$sender_args->readed_date = $obj->readed_date;
|
||||
$sender_args->related_srl = getNextSequence();
|
||||
$sender_args->message_srl = getNextSequence();
|
||||
$sender_args->list_order = $sender_args->message_srl * -1;
|
||||
|
||||
$output = executeQuery('member.sendMessage', $sender_args);
|
||||
if(!$output->toBool()) return false;
|
||||
|
||||
// 받는 회원의 쪽지함에 넣을 쪽지
|
||||
$receiver_args->message_srl = $sender_args->related_srl;
|
||||
$receiver_args->list_order = $sender_args->related_srl*-1;
|
||||
$receiver_args->sender_srl = $sender_srl;
|
||||
if(!$receiver_args->sender_srl) $receiver_args->sender_srl = $receiver_srl;
|
||||
$receiver_args->receiver_srl = $receiver_srl;
|
||||
$receiver_args->message_type = 'R';
|
||||
$receiver_args->title = $obj->title;
|
||||
$receiver_args->content = $obj->content;
|
||||
$receiver_args->readed = $obj->readed;
|
||||
$receiver_args->regdate = $obj->regdate;
|
||||
$receiver_args->readed_date = $obj->readed_date;
|
||||
$output = executeQuery('member.sendMessage', $receiver_args);
|
||||
if(!$output->toBool()) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function procImporterAdminModuleImport() {
|
||||
set_time_limit(0);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@
|
|||
|
||||
$template_filename = "module";
|
||||
break;
|
||||
case 'message' :
|
||||
$template_filename = "message";
|
||||
break;
|
||||
case 'sync' :
|
||||
$template_filename = "sync";
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
$lang->importer = 'Transfer zeroboard datas';
|
||||
$lang->source_type = 'Previous target';
|
||||
$lang->type_member = 'Member data';
|
||||
$lang->type_message = 'Message data';
|
||||
$lang->type_module = 'Articles data';
|
||||
$lang->type_syncmember = 'Synchronize member data';
|
||||
$lang->target_module = 'Target module';
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
|
||||
// blah blah..
|
||||
$lang->about_type_member = 'If you are transfering the member information, select this option';
|
||||
$lang->about_type_message = 'If you are transfering the message information, select this option';
|
||||
$lang->about_type_module = 'If you are transfering the board or articles information, select this option';
|
||||
$lang->about_type_syncmember = 'If you are trying to synchronize the member information after transfering member and article information, select this option';
|
||||
$lang->about_importer = "You can transfer Zeroboard4, Zeroboard5 Beta or other program's data into ZeroboardXE's data.\nIn order to tranfer, you have to use <a href=\"#\" onclick=\"winopen('');return false;\">XML Exporter</a> to convert the data you want into XML File then upload it.";
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
$lang->importer = 'Transferir los datos de zeroboard';
|
||||
$lang->source_type = 'Objetivo a transferir';
|
||||
$lang->type_member = 'Información del usuario';
|
||||
$lang->type_message = '쪽지(메세지) 정보';
|
||||
$lang->type_module = 'Información del documento.';
|
||||
$lang->type_syncmember = 'Sincronizar la información del usuario';
|
||||
$lang->target_module = 'Objetivo del módulo';
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
|
||||
// bla bla...
|
||||
$lang->about_type_member = 'Seleccione esta opción si estas transferiendo la información del usuario.';
|
||||
$lang->about_type_message = '데이터 이전 대상이 쪽지(메세지)일 경우 선택해주세요';
|
||||
$lang->about_type_module = 'Seleccione esta opción si estas transfeririendo información del documento de los tableros';
|
||||
$lang->about_type_syncmember = 'Seleccione esta opción cuando tenga que sincronizar la información del usuario luego de haber transferido la información del usuario y del artículo.';
|
||||
$lang->about_importer = "Es posible trasferir los datos de Zeroboard4, zb5beta o de otros programas a ZeroBoardXE.\nPara la transferencia debe utilizar <a href=\"#\" onclick=\"winopen('');return false;\">Exportador XML</a> para transformar los datos en archivo XML, y luego subir ese archivo.";
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
$lang->importer = 'ZBデータ変換';
|
||||
$lang->source_type = 'データ変換の対象';
|
||||
$lang->type_member = '会員情報';
|
||||
$lang->type_message = '쪽지(메세지) 정보';
|
||||
$lang->type_module = '書き込みデータ情報';
|
||||
$lang->type_syncmember = '会員情報同期化';
|
||||
$lang->target_module = '対象モジュール';
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
|
||||
// Bla, Blah..
|
||||
$lang->about_type_member = 'データ変換の対象が会員情報の場合は選択してください。';
|
||||
$lang->about_type_message = '데이터 이전 대상이 쪽지(메세지)일 경우 선택해주세요';
|
||||
$lang->about_type_module = 'データ変換の対象が書き込みデータである場合は選択してください。';
|
||||
$lang->about_type_syncmember = '会員情報と書き込みデータなどの変換を行った後、会員情報を同期化する必要がある場合は、選択してください。';
|
||||
$lang->about_importer = "ゼロボード4、zb5betaまたは他のプログラムの書き込みデータをゼロボードXEのデータに変換することができます。\n変換するためには、<a href=\"#\" onclick=\"winopen('');return false;\">XML Exporter</a>を利用して変換したい書き込みデータをXMLファイルで作成してアップロードしてください。";
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
$lang->importer = '제로보드 데이터 이전';
|
||||
$lang->source_type = '이전 대상';
|
||||
$lang->type_member = '회원 정보';
|
||||
$lang->type_message = '쪽지(메세지) 정보';
|
||||
$lang->type_module = '게시물 정보';
|
||||
$lang->type_syncmember = '회원정보 동기화';
|
||||
$lang->target_module = '대상 모듈';
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
|
||||
// 주절 주절..
|
||||
$lang->about_type_member = '데이터 이전 대상이 회원정보일 경우 선택해주세요';
|
||||
$lang->about_type_message = '데이터 이전 대상이 쪽지(메세지)일 경우 선택해주세요';
|
||||
$lang->about_type_module = '데이터 이전 대상이 게시판등의 게시물 정보일 경우 선택해주세요';
|
||||
$lang->about_type_syncmember = '회원정보와 게시물정보등을 이전후 회원정보 동기화 해야 할때 선택해주세요';
|
||||
$lang->about_importer = "제로보드4, zb5beta 또는 다른 프로그램의 데이터를 제로보드XE 데이터로 이전할 수 있습니다.\n이전을 위해서는 <a href=\"#\" onclick=\"winopen('');return false;\">XML Exporter</a>를 이용해서 원하는 데이터를 XML파일로 생성후 업로드해주셔야 합니다.";
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
$lang->importer = 'Импортировать данные zeroboard';
|
||||
$lang->source_type = 'Предыдущее назначение';
|
||||
$lang->type_member = 'Данные пользователей';
|
||||
$lang->type_message = '쪽지(메세지) 정보';
|
||||
$lang->type_module = 'Данные статей';
|
||||
$lang->type_syncmember = 'Синхронизировать данные пользователей';
|
||||
$lang->target_module = 'Модуль назначения';
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
|
||||
// blah blah.. чепуха)
|
||||
$lang->about_type_member = 'Если Вы импортируете информацию пользователей, выберите эту опцию';
|
||||
$lang->about_type_message = '데이터 이전 대상이 쪽지(메세지)일 경우 선택해주세요';
|
||||
$lang->about_type_module = 'Если Вы импортируете информацию форума или статей, выберите эту опцию';
|
||||
$lang->about_type_syncmember = 'Если Вы пытаетесь синхронизировать информацию пользователей после импорта информации пользователей и статей, выберите эту опцию';
|
||||
$lang->about_importer = "Вы можете импортировать данные Zeroboard4, Zeroboard5 Beta или других программ в ZeroboardXE.\nЧтобы импортировать, Вам следует использовать <a href=\"#\" onclick=\"winopen('');return false;\">XML Экспортер (XML Exporter)</a>, чтобы конвертировать нужные данные в XML Файл и затем загрузить его.";
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
$lang->importer = '数据导入';
|
||||
$lang->source_type = '导入对象';
|
||||
$lang->type_member = '会员信息';
|
||||
$lang->type_message = '쪽지(메세지) 정보';
|
||||
$lang->type_module = '版面信息';
|
||||
$lang->type_syncmember = '同步会员信息';
|
||||
$lang->target_module = '模块对象';
|
||||
|
|
@ -44,6 +45,7 @@
|
|||
|
||||
// 说明
|
||||
$lang->about_type_member = '数据导入对象为会员信息时请选择此项。';
|
||||
$lang->about_type_message = '데이터 이전 대상이 쪽지(메세지)일 경우 선택해주세요';
|
||||
$lang->about_type_module = '数据导入对象为版面主题时请选择此项。';
|
||||
$lang->about_type_syncmember = '导入会员信息和文章信息后需要同步会员信息时请选择此项。';
|
||||
$lang->about_importer = "不仅可以导入Zeroboard 4,Zb5beta的数据,也可以把其他程序数据导入到Zeroboard XE当中。\n导入数据时请利用 <a href=\"#\" onclick=\"winopen('');return false;\">XML Exporter</a>生成XML文件后再上传。";
|
||||
|
|
|
|||
|
|
@ -23,6 +23,10 @@
|
|||
<th scope="col"><label for="source_type_member">{$lang->type_member}</label></th>
|
||||
<td class="left"><input type="radio" name="source_type" value="member" id="source_type_member" /> <label for="source_type_member">{$lang->about_type_member}</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><label for="source_type_message">{$lang->type_message}</label></th>
|
||||
<td class="left"><input type="radio" name="source_type" value="message" id="source_type_message" /> <label for="source_type_message">{$lang->about_type_message}</label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><label for="source_type_syncmember">{$lang->type_syncmember}</label></th>
|
||||
<td class="left"><input type="radio" name="source_type" value="sync" id="source_type_syncmember" /> <label for="source_type_syncmember">{$lang->about_type_syncmember}</label></td>
|
||||
|
|
|
|||
|
|
@ -67,6 +67,58 @@ function completeImportMember(ret_obj) {
|
|||
}
|
||||
}
|
||||
|
||||
/* 쪽지 데이터 import */
|
||||
function doImportMessage(fo_obj) {
|
||||
var xml_file = fo_obj.xml_file.value;
|
||||
if(!xml_file) return false;
|
||||
|
||||
var params = new Array();
|
||||
params['xml_file'] = xml_file;
|
||||
params['total_count'] = fo_obj.total_count.value;
|
||||
params['success_count'] = fo_obj.success_count.value;
|
||||
params['readed_line'] = fo_obj.readed_line.value;
|
||||
|
||||
var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished");
|
||||
|
||||
exec_xml('importer','procImporterAdminMessageImport', params, completeImportMessage, response_tags);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function completeImportMessage(ret_obj) {
|
||||
var total_count = ret_obj['total_count'];
|
||||
var success_count = ret_obj['success_count'];
|
||||
var readed_line = ret_obj['readed_line'];
|
||||
var is_finished = ret_obj['is_finished'];
|
||||
|
||||
if(is_finished == '1') {
|
||||
var fo_obj = xGetElementById("fo_import");
|
||||
fo_obj.total_count.value = 0;
|
||||
fo_obj.success_count.value = 0;
|
||||
fo_obj.readed_line.value = 0;
|
||||
fo_obj.xml_file.disabled = false;
|
||||
xGetElementById("status").style.display = "none";
|
||||
xGetElementById("status_button_prev").style.display = "block";
|
||||
xGetElementById("status_button").style.display = "none";
|
||||
|
||||
|
||||
xInnerHtml("status", ret_obj['message']);
|
||||
alert(ret_obj['message']);
|
||||
} else {
|
||||
var fo_obj = xGetElementById("fo_import");
|
||||
fo_obj.total_count.value = total_count;
|
||||
fo_obj.success_count.value = success_count;
|
||||
fo_obj.readed_line.value = readed_line;
|
||||
fo_obj.xml_file.disabled = true;
|
||||
xGetElementById("status").style.display = "block";
|
||||
xGetElementById("status_button_prev").style.display = "none";
|
||||
xGetElementById("status_button").style.display = "block";
|
||||
xInnerHtml("status", ret_obj['message']);
|
||||
|
||||
doImportMessage(fo_obj);
|
||||
}
|
||||
}
|
||||
|
||||
/* 모듈 데이터 import */
|
||||
function doImportModule(fo_obj) {
|
||||
var target_module = fo_obj.target_module.options[fo_obj.target_module.selectedIndex].value;
|
||||
|
|
|
|||
33
modules/importer/tpl/message.html
Normal file
33
modules/importer/tpl/message.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<!--%import("js/importer_admin.js")-->
|
||||
<!--%import("css/importer.css")-->
|
||||
|
||||
<h3>{$lang->importer} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<div class="infoText">{nl2br($lang->about_importer)}</div>
|
||||
|
||||
<div>
|
||||
<form action="./" method="get" onsubmit="return doImportMessage(this)" id="fo_import">
|
||||
<input type="hidden" name="total_count" value="0" />
|
||||
<input type="hidden" name="success_count" value="0" />
|
||||
<input type="hidden" name="readed_line" value="0" />
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<caption>{$lang->import_step_title[2]} - {$lang->import_step_desc[2]}</caption>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="text" name="xml_file" value="./" class="inputTypeText w400" />
|
||||
<p>ex1) ../message.xml</p>
|
||||
<p>ex2) http://...../message.xml</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="button">
|
||||
<div id="status_button_prev"><span class="button"><input type="submit" value="{$lang->cmd_next}" /></span></div>
|
||||
<div id="status_button" style="display:none"><span class="button"><input type="submit" value="{$lang->cmd_continue}" /></span></div>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div id="status" style="display:none"></div>
|
||||
</form>
|
||||
</div>
|
||||
Loading…
Add table
Add a link
Reference in a new issue