diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php
index 4b726a63a..dfe95b9ff 100644
--- a/modules/board/board.controller.php
+++ b/modules/board/board.controller.php
@@ -88,7 +88,7 @@ class boardController extends board
$obj->member_srl = -1*$logged_info->member_srl;
}
$obj->email_address = $obj->homepage = $obj->user_id = '';
- $obj->user_name = $obj->nick_name = 'anonymous';
+ $obj->user_name = $obj->nick_name = $this->createAnonymousName($this->module_info->anonymous_name ?: 'anonymous', $logged_info->member_srl, $obj->document_srl);
$bAnonymous = true;
if($is_update===false)
{
@@ -187,7 +187,7 @@ class boardController extends board
$oMail = new Mail();
$oMail->setTitle($obj->title);
$oMail->setContent( sprintf("From : %s
\r\n%s", getFullUrl('','document_srl',$obj->document_srl), getFullUrl('','document_srl',$obj->document_srl), $obj->content));
- $oMail->setSender($obj->user_name ? $obj->user_name : 'anonymous', $obj->email_address ? $obj->email_address : $member_config->webmaster_email);
+ $oMail->setSender($obj->user_name ?: null, $obj->email_address ? $obj->email_address : $member_config->webmaster_email);
$target_mail = explode(',',$this->module_info->admin_mail);
for($i=0;$inotify_message = 'N';
$obj->member_srl = -1*$logged_info->member_srl;
$obj->email_address = $obj->homepage = $obj->user_id = '';
- $obj->user_name = $obj->nick_name = 'anonymous';
+ $obj->user_name = $obj->nick_name = $this->createAnonymousName($this->module_info->anonymous_name ?: 'anonymous', $logged_info->member_srl, $obj->document_srl);
$bAnonymous = true;
}
else
@@ -632,4 +632,38 @@ class boardController extends board
return new Object();
}
+
+ /**
+ * Create an anonymous nickname.
+ *
+ * @param string $format
+ * @param int $member_srl
+ * @param int $document_srl
+ * @return string
+ */
+ public function createAnonymousName($format, $member_srl, $document_srl)
+ {
+ if (strpos($format, '$NUM') !== false)
+ {
+ $num = hash_hmac('sha256', $member_srl ?: \RX_CLIENT_IP, config('crypto.authentication_key'));
+ $num = sprintf('%08d', hexdec(substr($num, 0, 8)) % 100000000);
+ return strtr($format, array('$NUM' => $num));
+ }
+ elseif (strpos($format, '$DAILYNUM') !== false)
+ {
+ $num = hash_hmac('sha256', ($member_srl ?: \RX_CLIENT_IP) . ':date:' . date('Y-m-d'), config('crypto.authentication_key'));
+ $num = sprintf('%08d', hexdec(substr($num, 0, 8)) % 100000000);
+ return strtr($format, array('$DAILYNUM' => $num));
+ }
+ elseif (strpos($format, '$DOCNUM') !== false)
+ {
+ $num = hash_hmac('sha256', ($member_srl ?: \RX_CLIENT_IP) . ':document_srl:' . $document_srl, config('crypto.authentication_key'));
+ $num = sprintf('%08d', hexdec(substr($num, 0, 8)) % 100000000);
+ return strtr($format, array('$DOCNUM' => $num));
+ }
+ else
+ {
+ return $format;
+ }
+ }
}
diff --git a/modules/board/lang/ko.php b/modules/board/lang/ko.php
index 23e90484a..b0c8c3414 100644
--- a/modules/board/lang/ko.php
+++ b/modules/board/lang/ko.php
@@ -2,6 +2,7 @@
$lang->board = '게시판';
$lang->except_notice = '공지사항 제외';
$lang->use_anonymous = '익명 사용';
+$lang->anonymous_name = '익명 닉네임';
$lang->cmd_manage_menu = '메뉴관리';
$lang->list_target_item = '대상 항목';
$lang->list_display_item = '표시 항목';
@@ -26,6 +27,7 @@ $lang->about_layout_setup = '블로그의 레이아웃 코드를 직접 수정
$lang->about_board_category = '분류를 만들 수 있습니다. 분류가 오동작을 할 경우 캐시파일 재생성을 수동으로 해주시면 해결이 될 수 있습니다.';
$lang->about_except_notice = '목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다.';
$lang->about_use_anonymous = '글쓴이의 정보를 없애고 익명으로 게시판 사용을 할 수 있게 합니다. 스킨설정에서 글쓴이 정보등을 보이지 않도록 하시면 더욱 유용합니다. 추가설정의 문서 히스토리 사용이 꺼져있지 않으면 문서 수정시 작성자가 표시될 수 있습니다.';
+$lang->about_anonymous_name = '익명 기능을 사용할 때 표시할 익명 닉네임을 정할 수 있습니다.
$NUM을 사용하면 회원마다 고유한 난수를 부여할 수 있습니다. (예: 익명_$NUM → 익명_12345678)
$DAILYNUM을 사용하면 매일 난수가 변경되고, $DOCNUM을 사용하면 문서마다 변경됩니다.';
$lang->about_board = '게시판을 생성하고 관리할 수 있습니다.';
$lang->about_consultation = '상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다. 단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다.';
$lang->about_secret = '게시판 및 댓글의 비밀글 기능을 사용할 수 있도록 합니다.';
diff --git a/modules/board/skins/default/_comment.html b/modules/board/skins/default/_comment.html
index 99c6983ac..ada266cb0 100644
--- a/modules/board/skins/default/_comment.html
+++ b/modules/board/skins/default/_comment.html
@@ -9,9 +9,9 @@
{$comment->getRegdate('Y.m.d H:i')}
diff --git a/modules/board/skins/default/_read.html b/modules/board/skins/default/_read.html
index 280c3461e..f99b11ab1 100644
--- a/modules/board/skins/default/_read.html
+++ b/modules/board/skins/default/_read.html
@@ -9,9 +9,9 @@
{$oDocument->getRegdate('Y.m.d H:i')}
- {$oDocument->getNickName()}
- {$oDocument->getNickName()}
- {$oDocument->getNickName()}
+ {$oDocument->getNickName()}
+ {$oDocument->getNickName()}
+ {$oDocument->getNickName()}
{$lang->readed_count}:{$oDocument->get('readed_count')}
{$lang->cmd_vote}:{$oDocument->get('voted_count')}
diff --git a/modules/board/skins/xedition/_comment.html b/modules/board/skins/xedition/_comment.html
index fabb798c7..e2fffcbbd 100644
--- a/modules/board/skins/xedition/_comment.html
+++ b/modules/board/skins/xedition/_comment.html
@@ -9,9 +9,9 @@
{$comment->getRegdate('Y.m.d H:i')}
diff --git a/modules/board/skins/xedition/_read.html b/modules/board/skins/xedition/_read.html
index f0102cb25..8558205ec 100644
--- a/modules/board/skins/xedition/_read.html
+++ b/modules/board/skins/xedition/_read.html
@@ -7,9 +7,9 @@
- {$oDocument->getNickName()}
- {$oDocument->getNickName()}
- {$oDocument->getNickName()}
+ {$oDocument->getNickName()}
+ {$oDocument->getNickName()}
+ {$oDocument->getNickName()}
{$oDocument->getRegdate('Y.m.d H:i')}
diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html
index 0dbdcb961..d7b3ae8da 100644
--- a/modules/board/tpl/board_insert.html
+++ b/modules/board/tpl/board_insert.html
@@ -205,6 +205,14 @@
+
+
+
+
diff --git a/modules/comment/comment.admin.view.php b/modules/comment/comment.admin.view.php
index 0ea4d7bb3..057eb978e 100644
--- a/modules/comment/comment.admin.view.php
+++ b/modules/comment/comment.admin.view.php
@@ -67,6 +67,7 @@ class commentAdminView extends comment
Context::set('page_navigation', $output->page_navigation);
Context::set('secret_name_list', $secretNameList);
+ // Module List
$oModuleModel = getModel('module');
$module_list = array();
$mod_srls = array();
@@ -75,7 +76,6 @@ class commentAdminView extends comment
$mod_srls[] = $val->module_srl;
}
$mod_srls = array_unique($mod_srls);
- // Module List
$mod_srls_count = count($mod_srls);
if($mod_srls_count)
{
@@ -90,7 +90,32 @@ class commentAdminView extends comment
}
}
Context::set('module_list', $module_list);
-
+
+ // Get anonymous nicknames
+ $anonymous_member_srls = array();
+ foreach($output->data as $val)
+ {
+ if($val->get('member_srl') < 0)
+ {
+ $anonymous_member_srls[] = abs($val->get('member_srl'));
+ }
+ }
+ if($anonymous_member_srls)
+ {
+ $member_args = new stdClass();
+ $member_args->member_srl = $anonymous_member_srls;
+ $member_output = executeQueryArray('member.getMembers', $member_args);
+ if($member_output)
+ {
+ $member_nick_neme = array();
+ foreach($member_output->data as $member)
+ {
+ $member_nick_neme[$member->member_srl] = $member->nick_name;
+ }
+ }
+ }
+ Context::set('member_nick_name', $member_nick_neme);
+
// set the template
$this->setTemplatePath($this->module_path . 'tpl');
$this->setTemplateFile('comment_list');
diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php
index 9242cc3bd..5856a735a 100644
--- a/modules/comment/comment.item.php
+++ b/modules/comment/comment.item.php
@@ -496,7 +496,7 @@ class commentItem extends Object
*/
function getProfileImage()
{
- if(!$this->isExists() || !$this->get('member_srl'))
+ if(!$this->isExists() || $this->get('member_srl') <= 0)
{
return;
}
@@ -517,7 +517,7 @@ class commentItem extends Object
function getSignature()
{
// pass if the posting not exists.
- if(!$this->isExists() || !$this->get('member_srl'))
+ if(!$this->isExists() || $this->get('member_srl') <= 0)
{
return;
}
diff --git a/modules/comment/tpl/comment_list.html b/modules/comment/tpl/comment_list.html
index 40f8be128..4ce9ff983 100644
--- a/modules/comment/tpl/comment_list.html
+++ b/modules/comment/tpl/comment_list.html
@@ -53,7 +53,11 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
{$comment}{$lang->no_text_comment}
-
{$val->getNickName()} |
+
+ {$val->getNickName()}
+ ({$member_nick_name[abs($val->get('member_srl'))]})
+ {$val->getNickName()}
+ |
{number_format($val->get('voted_count'))}/{number_format($val->get('blamed_count'))} |
{(zdate($val->regdate,"Y-m-d\nH:i:s"))} |
{$val->ipaddress} |
diff --git a/modules/document/document.admin.view.php b/modules/document/document.admin.view.php
index 5e322fc38..44d5ac579 100644
--- a/modules/document/document.admin.view.php
+++ b/modules/document/document.admin.view.php
@@ -72,13 +72,34 @@ class documentAdminView extends document
}
Context::set('search_option', $search_option);
+ // Module List
$oModuleModel = getModel('module');
$module_list = array();
$mod_srls = array();
- $anonymous_member_srls = array();
foreach($output->data as $oDocument)
{
$mod_srls[] = $oDocument->get('module_srl');
+ }
+ $mod_srls = array_unique($mod_srls);
+ $mod_srls_count = count($mod_srls);
+ if($mod_srls_count)
+ {
+ $columnList = array('module_srl', 'mid', 'browser_title');
+ $module_output = $oModuleModel->getModulesInfo($mod_srls, $columnList);
+ if($module_output && is_array($module_output))
+ {
+ foreach($module_output as $module)
+ {
+ $module_list[$module->module_srl] = $module;
+ }
+ }
+ }
+ Context::set('module_list', $module_list);
+
+ // Get anonymous nicknames
+ $anonymous_member_srls = array();
+ foreach($output->data as $oDocument)
+ {
if($oDocument->get('member_srl') < 0)
{
$anonymous_member_srls[] = abs($oDocument->get('member_srl'));
@@ -99,22 +120,6 @@ class documentAdminView extends document
}
}
Context::set('member_nick_name', $member_nick_neme);
- $mod_srls = array_unique($mod_srls);
- // Module List
- $mod_srls_count = count($mod_srls);
- if($mod_srls_count)
- {
- $columnList = array('module_srl', 'mid', 'browser_title');
- $module_output = $oModuleModel->getModulesInfo($mod_srls, $columnList);
- if($module_output && is_array($module_output))
- {
- foreach($module_output as $module)
- {
- $module_list[$module->module_srl] = $module;
- }
- }
- }
- Context::set('module_list', $module_list);
// Specify a template
$this->setTemplatePath($this->module_path.'tpl');
diff --git a/modules/document/document.item.php b/modules/document/document.item.php
index 63b8747e6..9b38b216a 100644
--- a/modules/document/document.item.php
+++ b/modules/document/document.item.php
@@ -1168,7 +1168,7 @@ class documentItem extends Object
*/
function getProfileImage()
{
- if(!$this->isExists() || !$this->get('member_srl')) return;
+ if(!$this->isExists() || $this->get('member_srl') <= 0) return;
$oMemberModel = getModel('member');
$profile_info = $oMemberModel->getProfileImage($this->get('member_srl'));
if(!$profile_info) return;
@@ -1183,7 +1183,7 @@ class documentItem extends Object
function getSignature()
{
// Pass if a document doesn't exist
- if(!$this->isExists() || !$this->get('member_srl')) return;
+ if(!$this->isExists() || $this->get('member_srl') <= 0) return;
// Get signature information
$oMemberModel = getModel('member');
$signature = $oMemberModel->getSignature($this->get('member_srl'));
diff --git a/modules/document/tpl/document_list.html b/modules/document/tpl/document_list.html
index 82c917227..a4f6afcdc 100644
--- a/modules/document/tpl/document_list.html
+++ b/modules/document/tpl/document_list.html
@@ -53,8 +53,9 @@ xe.lang.msg_empty_search_keyword = '{$lang->msg_empty_search_keyword}';
{htmlspecialchars($oDocument->getTitleText())}{$lang->no_title_document}
- {$oDocument->getNickName()}
- ({$lang->anonymous}) {$member_nick_name[abs($oDocument->get('member_srl'))]}
+ {$oDocument->getNickName()}
+ ({$member_nick_name[abs($oDocument->get('member_srl'))]})
+ {$oDocument->getNickName()}
|
{$oDocument->get('readed_count')} |
{$oDocument->get('voted_count')}/{$oDocument->get('blamed_count')} |