댓글 레벨 제한 및 쪽지 레벨 제한
- 댓글 레벨 제한 방법
- 작성 제한
comment.controller.php 파일
function insertComment($obj, $manual_inserted = FALSE, $update_document = TRUE) 부분으로 가셔서
// get the original posting 부분 끝나는 지점에 레벨 제한 부분을 붙여넣어주세요.
// get the original posting
if(!$manual_inserted)
{
$oDocument = $oDocumentModel->getDocument($document_srl);
if($document_srl != $oDocument->document_srl)
{
return new BaseObject(-1, 'msg_invalid_document');
}
if($oDocument->isLocked())
{
return new BaseObject(-1, 'msg_invalid_request');
}
if($obj->homepage)
{
$obj->homepage = removeHackTag($obj->homepage);
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
{
$obj->homepage = 'http://'.$obj->homepage;
}
}
// input the member's information if logged-in
$logged_info = Context::get('logged_info');
if(Context::get('is_logged') && !$obj->manual_member_info)
{
$obj->member_srl = $logged_info->member_srl;
// user_id, user_name and nick_name already encoded
$obj->user_id = htmlspecialchars_decode($logged_info->user_id);
$obj->user_name = htmlspecialchars_decode($logged_info->user_name);
$obj->nick_name = htmlspecialchars_decode($logged_info->nick_name);
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
}
}
// 레벨 제한
$module_info = Context::get("module_info");
$module_srl = $module_info->module_srl;
if (in_array($module_srl, array(1000,1001,1002,1003)))
{
// 포인트 & 레벨 정보 불러오기
$oPointModel = &getModel('point');
$point = $oPointModel->getPoint($logged_info->member_srl);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$level = $oPointModel->getLevel($point, $config->level_step);
// 어드민은 레벨제한 없이 작성가능
$notadmin = $logged_info->is_admin != 'Y';
// 본인 글에서는 레벨 제한 없이 작성가능
$nothuman = $obj->member_srl != $oDocument->get('member_srl');
if ($level<3 && $notadmin && $nothuman && $obj->content != "감사합니다") return new Object(-1, '3레벨 미만 유저는 댓글을 작성하실 수 없습니다. \n [ 감사합니다 ] 제외');
}
if(!$manual_inserted)
{
$oDocument = $oDocumentModel->getDocument($document_srl);
if($document_srl != $oDocument->document_srl)
{
return new BaseObject(-1, 'msg_invalid_document');
}
if($oDocument->isLocked())
{
return new BaseObject(-1, 'msg_invalid_request');
}
if($obj->homepage)
{
$obj->homepage = removeHackTag($obj->homepage);
if(!preg_match('/^[a-z]+:\/\//i',$obj->homepage))
{
$obj->homepage = 'http://'.$obj->homepage;
}
}
// input the member's information if logged-in
$logged_info = Context::get('logged_info');
if(Context::get('is_logged') && !$obj->manual_member_info)
{
$obj->member_srl = $logged_info->member_srl;
// user_id, user_name and nick_name already encoded
$obj->user_id = htmlspecialchars_decode($logged_info->user_id);
$obj->user_name = htmlspecialchars_decode($logged_info->user_name);
$obj->nick_name = htmlspecialchars_decode($logged_info->nick_name);
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
}
}
// 레벨 제한
$module_info = Context::get("module_info");
$module_srl = $module_info->module_srl;
if (in_array($module_srl, array(1000,1001,1002,1003)))
{
// 포인트 & 레벨 정보 불러오기
$oPointModel = &getModel('point');
$point = $oPointModel->getPoint($logged_info->member_srl);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$level = $oPointModel->getLevel($point, $config->level_step);
// 어드민은 레벨제한 없이 작성가능
$notadmin = $logged_info->is_admin != 'Y';
// 본인 글에서는 레벨 제한 없이 작성가능
$nothuman = $obj->member_srl != $oDocument->get('member_srl');
if ($level<3 && $notadmin && $nothuman && $obj->content != "감사합니다") return new Object(-1, '3레벨 미만 유저는 댓글을 작성하실 수 없습니다. \n [ 감사합니다 ] 제외');
}
물론 레벨과 허용문구는 수정하셔도 무방합니다.
- 수정 제한
comment.controller.php 파일
function updateComment($obj, $is_admin = FALSE, $manual_updated = FALSE) 부분으로 가셔서
// set modifier's information if logged-in and posting author and modifier are matched.
부분 끝나는 지점에 레벨 제한을 붙여주세요
// set modifier's information if logged-in and posting author and modifier are matched.
$logged_info = Context::get('logged_info');
if(Context::get('is_logged') && !$obj->manual_member_info)
{
if($source_obj->member_srl == $logged_info->member_srl)
{
$obj->member_srl = $logged_info->member_srl;
$obj->user_name = $logged_info->user_name;
$obj->nick_name = $logged_info->nick_name;
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
}
}
// 레벨 제한
$module_info = Context::get("module_info");
$module_srl = $module_info->module_srl;
if (in_array($module_srl, array(1000,1001,1002,1003)))
{
// 포인트 & 레벨 정보 불러오기
$oPointModel = &getModel('point');
$point = $oPointModel->getPoint($logged_info->member_srl);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$level = $oPointModel->getLevel($point, $config->level_step);
// 어드민은 레벨제한 없이 작성가능
$notadmin = $logged_info->is_admin != 'Y';
// 본인 글에서는 레벨 제한 없이 작성가능
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($obj->document_srl);
$nothuman = $obj->member_srl != $oDocument->get('member_srl');
if ($level<3 && $notadmin && $nothuman && $obj->content != "감사합니다") return new Object(-1, '다운로드 게시판에서 3레벨 미만 유저는 댓글을 수정하실 수 없습니다. \n [ 감사합니다 ] 제외');
}
$logged_info = Context::get('logged_info');
if(Context::get('is_logged') && !$obj->manual_member_info)
{
if($source_obj->member_srl == $logged_info->member_srl)
{
$obj->member_srl = $logged_info->member_srl;
$obj->user_name = $logged_info->user_name;
$obj->nick_name = $logged_info->nick_name;
$obj->email_address = $logged_info->email_address;
$obj->homepage = $logged_info->homepage;
}
}
// 레벨 제한
$module_info = Context::get("module_info");
$module_srl = $module_info->module_srl;
if (in_array($module_srl, array(1000,1001,1002,1003)))
{
// 포인트 & 레벨 정보 불러오기
$oPointModel = &getModel('point');
$point = $oPointModel->getPoint($logged_info->member_srl);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$level = $oPointModel->getLevel($point, $config->level_step);
// 어드민은 레벨제한 없이 작성가능
$notadmin = $logged_info->is_admin != 'Y';
// 본인 글에서는 레벨 제한 없이 작성가능
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($obj->document_srl);
$nothuman = $obj->member_srl != $oDocument->get('member_srl');
if ($level<3 && $notadmin && $nothuman && $obj->content != "감사합니다") return new Object(-1, '다운로드 게시판에서 3레벨 미만 유저는 댓글을 수정하실 수 없습니다. \n [ 감사합니다 ] 제외');
}
- 쪽지 레벨 제한 방법
communication.controller.php 파일
function procCommunicationSendMessage() 부분으로 가셔서
// check whether to allow to receive the message(pass if a top-administrator) 부분 끝나는 지점에 붙여주세요
// Check if there is a member to receive a message
$oMemberModel = getModel('member');
$oCommunicationModel = getModel('communication');
$config = $oCommunicationModel->getConfig();
if(!$oCommunicationModel->checkGrant($config->grant_send))
{
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
$receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
if($receiver_member_info->member_srl != $receiver_srl)
{
throw new Rhymix\Framework\Exception('msg_not_exists_member');
}
// check whether to allow to receive the message(pass if a top-administrator)
if($logged_info->is_admin != 'Y')
{
if($receiver_member_info->allow_message == 'F')
{
if(!$oCommunicationModel->isFriend($receiver_member_info->member_srl))
{
throw new Rhymix\Framework\Exception('msg_allow_message_to_friend');
}
}
else if($receiver_member_info->allow_message == 'N')
{
throw new Rhymix\Framework\Exception('msg_disallow_message');
}
}
//레벨 제한
$oPointModel = &getModel('point');
$point = $oPointModel->getPoint(Context::get('logged_info')->member_srl);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$level = $oPointModel->getLevel($point, $config->level_step);
// 어드민은 레벨제한 없이 작성가능
$notadmin = $logged_info->is_admin != 'Y';
if($level<5 && $notadmin) return new Object(-1, '5레벨 미만 유저는 쪽지를 발송하실 수 없습니다 ㅡㅡ! ');
// send a message
$output = $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content);
$oMemberModel = getModel('member');
$oCommunicationModel = getModel('communication');
$config = $oCommunicationModel->getConfig();
if(!$oCommunicationModel->checkGrant($config->grant_send))
{
throw new Rhymix\Framework\Exceptions\NotPermitted;
}
$receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl);
if($receiver_member_info->member_srl != $receiver_srl)
{
throw new Rhymix\Framework\Exception('msg_not_exists_member');
}
// check whether to allow to receive the message(pass if a top-administrator)
if($logged_info->is_admin != 'Y')
{
if($receiver_member_info->allow_message == 'F')
{
if(!$oCommunicationModel->isFriend($receiver_member_info->member_srl))
{
throw new Rhymix\Framework\Exception('msg_allow_message_to_friend');
}
}
else if($receiver_member_info->allow_message == 'N')
{
throw new Rhymix\Framework\Exception('msg_disallow_message');
}
}
//레벨 제한
$oPointModel = &getModel('point');
$point = $oPointModel->getPoint(Context::get('logged_info')->member_srl);
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('point');
$level = $oPointModel->getLevel($point, $config->level_step);
// 어드민은 레벨제한 없이 작성가능
$notadmin = $logged_info->is_admin != 'Y';
if($level<5 && $notadmin) return new Object(-1, '5레벨 미만 유저는 쪽지를 발송하실 수 없습니다 ㅡㅡ! ');
// send a message
$output = $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content);
애드온을 만드는 방법을 안다면 애드온으로 제작해봤을텐데..
애드온 제작 경험이 없고 방법을 검색해도 xe스쿨은 접속이 안되고 흑흑..
그냥 코어 수정으로 때려버립니다..
댓글 0