issue 626 added a function that prohibit nickname.

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.3.2@11079 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
devjin 2012-08-24 09:23:38 +00:00
parent 6c491423a4
commit 9c41e35ba3
13 changed files with 253 additions and 13 deletions

View file

@ -78,6 +78,7 @@
<action name="procMemberAdminInsertJoinForm" type="controller" standalone="true" ruleset="insertJoinForm" /> <action name="procMemberAdminInsertJoinForm" type="controller" standalone="true" ruleset="insertJoinForm" />
<action name="procMemberAdminUpdateJoinForm" type="controller" standalone="true" /> <action name="procMemberAdminUpdateJoinForm" type="controller" standalone="true" />
<action name="procMemberAdminDeleteJoinForm" type="controller" standalone="true" /> <action name="procMemberAdminDeleteJoinForm" type="controller" standalone="true" />
<action name="procMemberAdminUpdateDeniedNickName" type="controller" />
<action name="procMemberAdminInsertDeniedID" type="controller" standalone="true" ruleset="insertDeniedId" /> <action name="procMemberAdminInsertDeniedID" type="controller" standalone="true" ruleset="insertDeniedId" />
<action name="procMemberAdminUpdateDeniedID" type="controller" standalone="true" /> <action name="procMemberAdminUpdateDeniedID" type="controller" standalone="true" />
<action name="procMemberAdminUpdateGroupOrder" type="controller" standalone="true" /> <action name="procMemberAdminUpdateGroupOrder" type="controller" standalone="true" />

View file

@ -119,6 +119,10 @@
<value xml:lang="tr"><![CDATA[Yasaklanmış bir kimlik girdiniz.]]></value> <value xml:lang="tr"><![CDATA[Yasaklanmış bir kimlik girdiniz.]]></value>
<value xml:lang="vi"><![CDATA[ID đăng nhập của bạn đã bị cấm sử dụng.]]></value> <value xml:lang="vi"><![CDATA[ID đăng nhập của bạn đã bị cấm sử dụng.]]></value>
</item> </item>
<item name="denied_nick_name">
<value xml:lang="ko"><![CDATA[사용 금지된 닉네임입니다.]]></value>
<value xml:lang="en"><![CDATA[You have entered a prohibited nick name.]]></value>
</item>
<item name="null_user_id"> <item name="null_user_id">
<value xml:lang="ko"><![CDATA[회원 아이디를 입력해주세요.]]></value> <value xml:lang="ko"><![CDATA[회원 아이디를 입력해주세요.]]></value>
<value xml:lang="en"><![CDATA[Please enter your ID.]]></value> <value xml:lang="en"><![CDATA[Please enter your ID.]]></value>
@ -1010,6 +1014,10 @@
<value xml:lang="tr"><![CDATA[Yasaklanmış Kimlikler]]></value> <value xml:lang="tr"><![CDATA[Yasaklanmış Kimlikler]]></value>
<value xml:lang="vi"><![CDATA[Tên sử dụng cấm đăng kí]]></value> <value xml:lang="vi"><![CDATA[Tên sử dụng cấm đăng kí]]></value>
</item> </item>
<item name="cmd_manage_nick_name">
<value xml:lang="ko"><![CDATA[금지 닉네임 관리]]></value>
<value xml:lang="en"><![CDATA[Prohibited NickNames]]></value>
</item>
<item name="cmd_manage_form"> <item name="cmd_manage_form">
<value xml:lang="ko"><![CDATA[가입 폼 관리]]></value> <value xml:lang="ko"><![CDATA[가입 폼 관리]]></value>
<value xml:lang="en"><![CDATA[Signup Form]]></value> <value xml:lang="en"><![CDATA[Signup Form]]></value>
@ -2309,10 +2317,14 @@ 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="zh-TW"><![CDATA[換行區隔]]></value> <value xml:lang="zh-TW"><![CDATA[換行區隔]]></value>
</item> </item>
<item name="count_manage_id"> <item name="count_manage_id">
<value xml:lang="ko"><![CDATA[<span class="_deniedIDCount">%s</span>개의 금지아이디가 있습니다.]]></value> <value xml:lang="ko"><![CDATA[<span class="_deniedIDCount">%s</span>개의 금지 아이디가 있습니다.]]></value>
<value xml:lang="en"><![CDATA[There are <strong>%s</strong> prohibited ID.]]></value> <value xml:lang="en"><![CDATA[There are <span class="_deniedIDCount">%s</span> prohibited ID.]]></value>
<value xml:lang="jp"><![CDATA[<span class="_deniedIDCount">%s</span>個の禁止IDがあります。]]></value> <value xml:lang="jp"><![CDATA[<span class="_deniedIDCount">%s</span>個の禁止IDがあります。]]></value>
<value xml:lang="zh-TW"><![CDATA[已有 <strong>%s</strong> 個禁止帳號]]></value> <value xml:lang="zh-TW"><![CDATA[已有 <span class="_deniedIDCount">%s</span> 個禁止帳號]]></value>
</item>
<item name="count_manage_nick_name">
<value xml:lang="ko"><![CDATA[<span class="_deniedNickNameCount">%s</span>개의 금지 닉네임이 있습니다.]]></value>
<value xml:lang="en"><![CDATA[There are <span class="_deniedNickNameCount">%s</span> prohibited nick name.]]></value>
</item> </item>
<item name="user_list"> <item name="user_list">
<value xml:lang="ko"><![CDATA[회원 목록]]></value> <value xml:lang="ko"><![CDATA[회원 목록]]></value>
@ -2415,6 +2427,10 @@ 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="jp"><![CDATA[追加する禁止IDを入力してください。]]></value> <value xml:lang="jp"><![CDATA[追加する禁止IDを入力してください。]]></value>
<value xml:lang="zh-TW"><![CDATA[請輸入禁止帳號]]></value> <value xml:lang="zh-TW"><![CDATA[請輸入禁止帳號]]></value>
</item> </item>
<item name="msg_null_prohibited_nick_name">
<value xml:lang="ko"><![CDATA[추가할 금지 닉네임을 입력해주세요.]]></value>
<value xml:lang="en"><![CDATA[Please enter a nick name to prohibit.]]></value>
</item>
<item name="identifier"> <item name="identifier">
<value xml:lang="ko"><![CDATA[로그인 계정]]></value> <value xml:lang="ko"><![CDATA[로그인 계정]]></value>
<value xml:lang="en"><![CDATA[Login Account]]></value> <value xml:lang="en"><![CDATA[Login Account]]></value>

View file

@ -778,6 +778,42 @@
$this->setRedirectUrl($returnUrl); $this->setRedirectUrl($returnUrl);
} }
/**
* Add a denied nick name
* @return void
**/
function procMemberAdminUpdateDeniedNickName()
{
$nick_name = Context::get('nick_name');
$mode = Context::get('mode');
$mode = $mode ? $mode : 'insert';
if($mode == 'delete')
{
$output = $this->deleteDeniedNickName($nick_name);
if(!$output->toBool())
{
return $output;
}
$msg_code = 'success_deleted';
$this->setMessage($msg_code);
}
else
{
$nick_names = explode(',',$nick_name);
$success_nick_names = array();
foreach($nick_names as $val)
{
$output = $this->insertDeniedNickName($val, '');
if($output->toBool()) $success_nick_names[] = $val;
}
$this->add('nick_names', implode(',',$success_nick_names));
}
}
/** /**
* Update denied ID * Update denied ID
* @return void|Object (void : success, Object : fail) * @return void|Object (void : success, Object : fail)
@ -959,16 +995,35 @@
return executeQuery('member.insertDeniedID', $args); return executeQuery('member.insertDeniedID', $args);
} }
function insertDeniedNickName($nick_name, $description = '')
{
$args->nick_name = $nick_name;
$args->description = $description;
return executeQuery('member.insertDeniedNickName', $args);
}
/** /**
* Delete a denied ID * delete a denied id
* @param string $user_id * @param string $user_id
* @return Object * @return object
**/ **/
function deleteDeniedID($user_id) { function deleteDeniedID($user_id) {
$args->user_id = $user_id; $args->user_id = $user_id;
return executeQuery('member.deleteDeniedID', $args); return executeQuery('member.deleteDeniedID', $args);
} }
/**
* delete a denied nick name
* @param string $nick_name
* @return object
**/
function deleteDeniedNickName($nick_name)
{
$args->nick_name = $nick_name;
return executeQuery('member.deleteDeniedNickName', $args);
}
/** /**
* Delete a join form * Delete a join form
* @param int $member_join_form_srl * @param int $member_join_form_srl

View file

@ -101,8 +101,8 @@
* *
* @return void * @return void
**/ **/
function dispMemberAdminConfig() { function dispMemberAdminConfig()
global $lang; // retrieve configuration via module model instance {
$oModuleModel = &getModel('module'); $oModuleModel = &getModel('module');
$oMemberModel = &getModel('member'); $oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig(); $config = $oMemberModel->getMemberConfig();
@ -135,9 +135,27 @@
$editor = $oEditorModel->getEditor(0, $option); $editor = $oEditorModel->getEditor(0, $option);
Context::set('editor', $editor); Context::set('editor', $editor);
// get denied ID list $signupForm = $config->signupForm;
$denied_list = $oMemberModel->getDeniedIDs(); foreach($signupForm as $val)
Context::set('deniedIDs', $denied_list); {
if($val->name == 'user_id')
{
$userIdInfo = $val;
break;
}
}
if($userIdInfo->isUse)
{
// get denied ID list
Context::set('useUserID', 1);
$denied_list = $oMemberModel->getDeniedIDs();
Context::set('deniedIDs', $denied_list);
}
// get denied NickName List
$deniedNickNames = $oMemberModel->getDeniedNickNames();
Context::set('deniedNickNames', $deniedNickNames);
$security = new Security(); $security = new Security();
$security->encodeHTML('config..'); $security->encodeHTML('config..');

View file

@ -208,6 +208,11 @@
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_user_id'); if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_user_id');
break; break;
case 'nick_name' : case 'nick_name' :
// Check denied ID
if($oMemberModel->isDeniedNickName($value))
{
return new Object(0,'denied_nick_name');
}
// Check if duplicated // Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByNickName($value); $member_srl = $oMemberModel->getMemberSrlByNickName($value);
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_nick_name'); if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_nick_name');
@ -1675,6 +1680,11 @@
$member_srl = $oMemberModel->getMemberSrlByUserID($args->user_id); $member_srl = $oMemberModel->getMemberSrlByUserID($args->user_id);
if($member_srl) return new Object(-1,'msg_exists_user_id'); if($member_srl) return new Object(-1,'msg_exists_user_id');
// nickname check is prohibited
if($oMemberModel->isDeniedNickName($args->nick_name))
{
return new Object(-1,'denied_nick_name');
}
$member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name); $member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
if($member_srl) return new Object(-1,'msg_exists_nick_name'); if($member_srl) return new Object(-1,'msg_exists_nick_name');
@ -1764,7 +1774,8 @@
/** /**
* Modify member information * Modify member information
**/ **/
function updateMember($args) { function updateMember($args)
{
// Call a trigger (before) // Call a trigger (before)
$output = ModuleHandler::triggerCall('member.updateMember', 'before', $args); $output = ModuleHandler::triggerCall('member.updateMember', 'before', $args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
@ -1804,6 +1815,11 @@
$args->user_id = $orgMemberInfo->user_id; $args->user_id = $orgMemberInfo->user_id;
} }
if($args->nick_name && $oMemberModel->isDeniedNickName($args->nick_name))
{
return new Object(-1, 'denied_nick_name');
}
list($args->email_id, $args->email_host) = explode('@', $args->email_address); list($args->email_id, $args->email_host) = explode('@', $args->email_address);
// Website, blog, checks the address // Website, blog, checks the address
if($args->homepage && !preg_match("/^[a-z]+:\/\//is",$args->homepage)) $args->homepage = 'http://'.$args->homepage; if($args->homepage && !preg_match("/^[a-z]+:\/\//is",$args->homepage)) $args->homepage = 'http://'.$args->homepage;

View file

@ -660,6 +660,17 @@
return $output->data; return $output->data;
} }
function getDeniedNickNames()
{
$output = executeQueryArray('member.getDeniedNickNames');
if(!$output->toBool())
{
return array();
}
return $output->data;
}
/** /**
* @brief Verify if ID is denied * @brief Verify if ID is denied
**/ **/
@ -670,6 +681,20 @@
return false; return false;
} }
/**
* @brief Verify if nick name is denied
**/
function isDeniedNickName($nickName)
{
$args->nick_name = $nickName;
$output = executeQuery('member.chkDeniedNickName', $args);
if($output->data->count) return true;
if(!$output->toBool())
{
return true;
}
return false;
}
/** /**
* @brief Get information of the profile image * @brief Get information of the profile image
**/ **/

View file

@ -0,0 +1,11 @@
<query id="chkDeniedNickName" action="select">
<tables>
<table name="member_denied_nick_name" />
</tables>
<columns>
<column name="count(*)" alias="count" />
</columns>
<conditions>
<condition operation="equal" column="nick_name" var="nick_name" />
</conditions>
</query>

View file

@ -0,0 +1,8 @@
<query id="deleteDeniedNickName" action="delete">
<tables>
<table name="member_denied_nick_name" />
</tables>
<conditions>
<condition operation="equal" column="nick_name" var="nick_name" notnull="notnull" />
</conditions>
</query>

View file

@ -0,0 +1,8 @@
<query id="getDeniedNickNames" action="select">
<tables>
<table name="member_denied_nick_name" />
</tables>
<columns>
<column name="*" />
</columns>
</query>

View file

@ -0,0 +1,10 @@
<query id="insertDeniedNickName" action="insert">
<tables>
<table name="member_denied_nick_name" />
</tables>
<columns>
<column name="nick_name" var="nick_name" notnull="notnull" />
<column name="regdate" default="curdate()" />
<column name="description" var="description" default="" />
</columns>
</query>

View file

@ -0,0 +1,5 @@
<table name="member_denied_nick_name">
<column name="nick_name" type="varchar" size="80" notnull="notnull" primary_key="primary_key" />
<column name="regdate" type="date" />
<column name="description" type="text" />
</table>

View file

@ -41,6 +41,25 @@ function doUpdateDeniedID(user_id, mode, message) {
); );
} }
/* prohibited nick name functions */
function doUpdateDeniedNickName(nick_name, mode, message)
{
if(typeof(message)!='undefined' && !confirm(message)) return;
exec_xml(
'member',
'procMemberAdminUpdateDeniedNickName',
{nick_name:nick_name, mode:mode},
function(){
if (mode == 'delete'){
jQuery('#denied_'+nick_name).remove();
jQuery('._deniedNickNameCount').html(jQuery('#deniedNickNameList li').length);
}
},
['error','message','tpl']
);
}
jQuery(function($){ jQuery(function($){
// hide form if enable_join is setted "No" // hide form if enable_join is setted "No"
var suSetting = $('fieldset.suSetting'); // 회원가입 설정 var suSetting = $('fieldset.suSetting'); // 회원가입 설정
@ -136,7 +155,9 @@ jQuery(function($){
var tag; var tag;
function on_complete(data){ function on_complete(data){
var uids = data.user_ids.split(','); var userIds = $.trim(data.user_ids);
if(userIds == '') return;
var uids = userIds.split(',');
for (var i=0; i<uids.length; i++){ for (var i=0; i<uids.length; i++){
tag = '<li id="denied_'+uids[i]+'">'+uids[i]+' <a href="#" class="side" onclick="doUpdateDeniedID(\''+uids[i]+'\', \'delete\', \''+xe.lang.confirm_delete+'\');return false;">'+xe.lang.cmd_delete+'</a></li>'; tag = '<li id="denied_'+uids[i]+'">'+uids[i]+' <a href="#" class="side" onclick="doUpdateDeniedID(\''+uids[i]+'\', \'delete\', \''+xe.lang.confirm_delete+'\');return false;">'+xe.lang.cmd_delete+'</a></li>';
$('#deniedList').append($(tag)); $('#deniedList').append($(tag));
@ -150,6 +171,38 @@ jQuery(function($){
}); });
$('button._addDeniedNickName').click(function(){
var ids = $('#prohibited_nick_name').val();
if(ids == ''){
alert(xe.lang.msg_null_prohibited_nick_name);
$('#prohibited_nick_name').focus();
return;
}
ids = ids.replace(/\n/g, ',');
var tag;
function on_complete(data)
{
$('#prohibited_nick_name').val('');
var nickNames = $.trim(data.nick_names);
if(nickNames == '') return;
var uids = nickNames.split(',');
for (var i=0; i<uids.length; i++)
{
tag = '<li id="denied_'+uids[i]+'">'+uids[i]+' <a href="#" class="side" onclick="doUpdateDeniedNickName(\''+uids[i]+'\', \'delete\', \''+xe.lang.confirm_delete+'\');return false;">'+xe.lang.cmd_delete+'</a></li>';
$('#deniedNickNameList').append($(tag));
}
$('._deniedNickNameCount').html($('#deniedNickNameList li').length);
}
jQuery.exec_json('member.procMemberAdminUpdateDeniedNickName', {'nick_name': ids}, on_complete);
});
$('input[name=identifier]').change(function(){ $('input[name=identifier]').change(function(){
var $checkedTR = $('input[name=identifier]:checked').closest('tr'); var $checkedTR = $('input[name=identifier]:checked').closest('tr');
var $notCheckedTR = $('input[name=identifier]:not(:checked)').closest('tr'); var $notCheckedTR = $('input[name=identifier]:not(:checked)').closest('tr');

View file

@ -5,6 +5,7 @@
xe.lang.confirm_delete = '{$lang->confirm_delete}'; xe.lang.confirm_delete = '{$lang->confirm_delete}';
xe.lang.cmd_delete = '{$lang->cmd_delete}'; xe.lang.cmd_delete = '{$lang->cmd_delete}';
xe.lang.msg_null_prohibited_id = '{$lang->msg_null_prohibited_id}'; xe.lang.msg_null_prohibited_id = '{$lang->msg_null_prohibited_id}';
xe.lang.msg_null_prohibited_nick_name = '{$lang->msg_null_prohibited_nick_name}';
</script> </script>
<div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}"> <div cond="$XE_VALIDATOR_MESSAGE" class="message {$XE_VALIDATOR_MESSAGE_TYPE}">
<p>{$XE_VALIDATOR_MESSAGE}</p> <p>{$XE_VALIDATOR_MESSAGE}</p>
@ -104,7 +105,20 @@
<p class="a"><div id="member_colorset"></div></p> <p class="a"><div id="member_colorset"></div></p>
</li> </li>
<li> <li>
<p class="q"><label for="prohibited_id">{$lang->cmd_manage_id}({$lang->about_manage_id} {sprintf($lang->count_manage_id, count($deniedIDs))})</label></p> <p class="q"><label for="prohibited_nick_name">{$lang->cmd_manage_nick_name}({sprintf($lang->count_manage_nick_name, count($deniedNickNames))})</label></p>
<div class="a">
<ul class="textList" id="deniedNickNameList">
<li loop="$deniedNickNames=>$nicknameInfo" id="denied_{$nicknameInfo->nick_name}">{$nicknameInfo->nick_name} <a href="#" class="side" onclick="doUpdateDeniedNickName('{$nicknameInfo->nick_name}','delete','{$lang->confirm_delete}');return false;">{$lang->delete}</a></li>
</ul>
</div>
<div class="a">
<textarea rows="8" cols="42" id="prohibited_nick_name" title="{$lang->add_prohibited_id}"></textarea>
<span class="btn"><button type="button" class="_addDeniedNickName">{$lang->add}</button></span>
<span class="desc">{$lang->multi_line_input}</span>
</div>
</li>
<li cond="$useUserID">
<p class="q"><label for="prohibited_id">{$lang->cmd_manage_id}({sprintf($lang->count_manage_id, count($deniedIDs))})</label></p>
<div class="a"> <div class="a">
<ul class="textList" id="deniedList"> <ul class="textList" id="deniedList">
<li loop="$deniedIDs=>$denied_info" id="denied_{$denied_info->user_id}">{$denied_info->user_id} <a href="#" class="side" onclick="doUpdateDeniedID('{$denied_info->user_id}','delete','{$lang->confirm_delete}');return false;">{$lang->delete}</a></li> <li loop="$deniedIDs=>$denied_info" id="denied_{$denied_info->user_id}">{$denied_info->user_id} <a href="#" class="side" onclick="doUpdateDeniedID('{$denied_info->user_id}','delete','{$lang->confirm_delete}');return false;">{$lang->delete}</a></li>