issue 1118 add a function that sync member info and document/comment in member configuration page.

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.3.2@10990 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
devjin 2012-08-07 05:20:57 +00:00
parent 8e4a8dc4ed
commit 72e620a9b2
10 changed files with 119 additions and 6 deletions

View file

@ -93,15 +93,22 @@
* @return void
*/
function procImporterAdminSync() {
$oMemberModel = &getModel('member');
$member_config = $oMemberModel->getMemberConfig();
$postFix = ($member_config->identifier == 'email_address') ? 'ByEmail' : '';
// 계정이 이메일인 경우 이메일 정보로 사용자를 싱크하도록 한다. 이때 변수명은 그대로 user_id를 사용한다.
/* DBMS가 CUBRID인 경우 MySQL과 동일한 방법으로는 문서 댓글에 대한 사용자 정보를 동기화 없으므로 예외 처리 합니다.
CUBRID를 사용하지 않는 경우에만 보편적인 기존 질의문을 사용합니다. */
$db_info = Context::getDBInfo ();
if ($db_info->db_type != "cubrid") {
$output = executeQuery('importer.updateDocumentSync');
$output = executeQuery('importer.updateCommentSync');
$output = executeQuery('importer.updateDocumentSync'.$postFix);
$output = executeQuery('importer.updateCommentSync'.$postFix);
}
else {
$output = executeQueryArray ('importer.getDocumentMemberSrlWithUserID');
$output = executeQueryArray ('importer.getDocumentMemberSrlWithUserID'.$postFix);
if (is_array ($output->data) && count ($output->data)) {
$success_count = 0;
$error_count = 0;
@ -109,7 +116,7 @@
foreach ($output->data as $val) {
$args->user_id = $val->user_id;
$args->member_srl = $val->member_srl;
$tmp = executeQuery ('importer.updateDocumentSyncForCUBRID', $args);
$tmp = executeQuery ('importer.updateDocumentSyncForCUBRID'.$postFix, $args);
if ($tmp->toBool () === true) {
$success_count++;
}
@ -120,7 +127,7 @@
}
} // documents section
$output = executeQueryArray ('importer.getCommentMemberSrlWithUserID');
$output = executeQueryArray ('importer.getCommentMemberSrlWithUserID'.$postFix);
if (is_array ($output->data) && count ($output->data)) {
$success_count = 0;
$error_count = 0;
@ -128,7 +135,7 @@
foreach ($output->data as $val) {
$args->user_id = $val->user_id;
$args->member_srl = $val->member_srl;
$tmp = executeQuery ('importer.updateCommentSyncForCUBRID', $args);
$tmp = executeQuery ('importer.updateCommentSyncForCUBRID'.$postFix, $args);
if ($tmp->toBool () === true) {
$success_count++;
}

View file

@ -0,0 +1,19 @@
<query id="getCommentMemberSrlWithUserIDByEmail" action="select">
<tables>
<table name="member" alias="member" />
<table name="comments" alias="comments" />
</tables>
<columns>
<column name="member.member_srl" alias="member_srl" />
<column name="member.email_address" alias="user_id" />
</columns>
<conditions>
<condition operation="equal" column="comments.email_address" default="member.email_address" />
</conditions>
<groups>
<group column="member_srl" />
</groups>
<navigation>
<index var="member_srl" default="member_srl" order="asc" />
</navigation>
</query>

View file

@ -0,0 +1,19 @@
<query id="getDocumentMemberSrlWithUserIDByEmail" action="select">
<tables>
<table name="member" alias="member" />
<table name="documents" alias="documents" />
</tables>
<columns>
<column name="member.member_srl" alias="member_srl" />
<column name="member.email_address" alias="user_id" />
</columns>
<conditions>
<condition operation="equal" column="documents.email_address" default="member.email_address" />
</conditions>
<groups>
<group column="member_srl" />
</groups>
<navigation>
<index var="member_srl" default="member_srl" order="asc" />
</navigation>
</query>

View file

@ -0,0 +1,12 @@
<query id="updateCommentSyncByEmail" action="update">
<tables>
<table name="comments" alias="comments" />
<table name="member" alias="member" />
</tables>
<columns>
<column name="comments.member_srl" default="member.member_srl" filter="number" />
</columns>
<conditions>
<condition operation="equal" column="comments.email_address" default="member.email_address" />
</conditions>
</query>

View file

@ -0,0 +1,11 @@
<query id="updateCommentSyncForCUBRIDByEmail" action="update">
<tables>
<table name="comments" />
</tables>
<columns>
<column name="member_srl" var="member_srl" filter="number" />
</columns>
<conditions>
<condition operation="equal" column="email_address" var="user_id" />
</conditions>
</query>

View file

@ -0,0 +1,12 @@
<query id="updateDocumentSyncByEmail" action="update">
<tables>
<table name="documents" alias="documents" />
<table name="member" alias="member" />
</tables>
<columns>
<column name="documents.member_srl" default="member.member_srl" filter="number" />
</columns>
<conditions>
<condition operation="equal" column="documents.email_address" default="member.email_address" />
</conditions>
</query>

View file

@ -0,0 +1,11 @@
<query id="updateDocumentSyncForCUBRIDByEmail" action="update">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="member_srl" var="member_srl" filter="number" />
</columns>
<conditions>
<condition operation="equal" column="email_address" var="user_id" />
</conditions>
</query>

View file

@ -2442,6 +2442,12 @@ Bạn có thể quản lý thành viên bằng cách tạo những nhóm mới,
<value xml:lang="en"><![CDATA[Member Configuration]]></value>
<value xml:lang="zh-TW"><![CDATA[會員設定]]></value>
</item>
<item name="cmd_member_sync">
<value xml:lang="ko"><![CDATA[회원정보 동기화]]></value>
</item>
<item name="about_member_sync">
<value xml:lang="ko"><![CDATA[회원정보와 게시물과 댓글 정보를 동기화 합니다. 데이터가 많은 경우 시간이 오래 소요될 수 있습니다. 이용자가 많은 경우 반드시 서비스를 중단하시고 진행하시기 바랍니다.]]></value>
</item>
<item name="msg_success_modify_email_address">
<value xml:lang="ko"><![CDATA[이메일 주소가 정상적으로 변경되었습니다. 변경된 이메일 주소로 로그인 가능합니다.]]></value>
</item>

View file

@ -192,4 +192,13 @@ jQuery(function($){
}
});
$('.__sync').click(function (){
exec_xml(
'importer', // module
'procImporterAdminSync', // act
null,
function(ret){if(ret && (!ret.error || ret.error == '0'))alert(ret.message);}, // callback
resp = ['error','message'] // response tags
);
});
});

View file

@ -8,6 +8,7 @@
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p>
</div>
<form action="./" class="form" ruleset="insertConfig" method="post">
<input type="hidden" name="module" value="member" />
<input type="hidden" name="act" value="procMemberAdminInsertConfig" />
@ -220,6 +221,12 @@
<span class="btn medium"><input type="submit" value="{$lang->cmd_save}" /></span>
</div>
</form>
<h2 class="h2">{$lang->cmd_member_sync}</h2>
<div class="form">
<span class="btn small"><input type="button" value="{$lang->cmd_member_sync}" class="__sync" /></span>
<p class="description">{$lang->about_member_sync}</p>
</div>
<div class="modal" id="userDefine">
<form action="./" class="fg form" ruleset="insertJoinForm" method="post">
<input type="hidden" name="module" value="member" />