질문/조언팁/리소스 공유
  • 댓글 레벨 제한 방법

- 작성 제한

 

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 [ 감사합니다 ] 제외');
        }
        

 

물론 레벨과 허용문구는 수정하셔도 무방합니다.

 

- 수정 제한

 

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 [ 감사합니다 ] 제외');
        }

 

 

  • 쪽지 레벨 제한 방법

 

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);

 

 

 

애드온을 만드는 방법을 안다면 애드온으로 제작해봤을텐데..

애드온 제작 경험이 없고 방법을 검색해도 xe스쿨은 접속이 안되고 흑흑..

 

그냥 코어 수정으로 때려버립니다..


서버에 요청 중입니다. 잠시만 기다려 주십시오...