mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-02 01:52:10 +09:00
글 삭제 이전에 trigger를 만들어 해당 글에 달린 댓글의 사용자별 개수를 파악하여 포인트 감소하도록 코드 수정. 자신의 글에 댓글을 달 경우 포인트 증가하지 않도록 변경
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4266 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
5260252282
commit
196367218e
3 changed files with 83 additions and 4 deletions
|
|
@ -89,6 +89,7 @@
|
|||
// 가입/글작성/댓글작성/파일업로드/다운로드에 대한 트리거 추가
|
||||
$oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after');
|
||||
$oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after');
|
||||
$oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before');
|
||||
$oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after');
|
||||
$oModuleController->insertTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after');
|
||||
$oModuleController->insertTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after');
|
||||
|
|
@ -117,6 +118,7 @@
|
|||
// 가입/글작성/댓글작성/파일업로드/다운로드에 대한 트리거 추가
|
||||
if(!$oModuleModel->getTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after')) return true;
|
||||
if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) return true;
|
||||
if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) return true;
|
||||
if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) return true;
|
||||
if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) return true;
|
||||
if(!$oModuleModel->getTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after')) return true;
|
||||
|
|
@ -149,6 +151,8 @@
|
|||
$oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after');
|
||||
if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'))
|
||||
$oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after');
|
||||
if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'))
|
||||
$oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before');
|
||||
if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'))
|
||||
$oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after');
|
||||
if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after'))
|
||||
|
|
|
|||
|
|
@ -101,26 +101,79 @@
|
|||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시글 삭제 이전에 게시글의 댓글에 대한 포인트 감소 처리를 하는 trigger
|
||||
**/
|
||||
function triggerBeforeDeleteDocument(&$obj) {
|
||||
$document_srl = $obj->document_srl;
|
||||
$member_srl = $obj->member_srl;
|
||||
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
// 지울 대상 글의 댓글에 대한 처리
|
||||
$comment_point = $config->module_point[$module_srl]['insert_comment'];
|
||||
if(!isset($comment_point)) $comment_point = $config->insert_comment;
|
||||
|
||||
// 댓글 포인트가 있으면 처리
|
||||
if(!$comment_point) return new Object();
|
||||
|
||||
// 해당 글에 포함된 모든 댓글을 추출
|
||||
$cp_args->document_srl = $document_srl;
|
||||
$output = executeQueryArray('point.getCommentUsers', $cp_args);
|
||||
|
||||
// 대상이 없으면 return
|
||||
if(!$output->data) return new Object();
|
||||
|
||||
// 대상 회원 번호를 정리
|
||||
$member_srls = array();
|
||||
$cnt = count($output->data);
|
||||
for($i=0;$i<$cnt;$i++) {
|
||||
if($output->data[$i]->member_srl<1) continue;
|
||||
$member_srls[$output->data[$i]->member_srl] = $output->data[$i]->count;
|
||||
}
|
||||
|
||||
// 원글 작성 회원의 번호는 제거
|
||||
if($member_srl) unset($member_srls[$member_srl]);
|
||||
if(!count($member_srls)) return new Object();
|
||||
|
||||
// 각 회원들을 모두 돌면서 포인트 감소
|
||||
$oPointModel = &getModel('point');
|
||||
|
||||
// 포인트를 구해옴
|
||||
$point = $config->module_point[$module_srl]['download_file'];
|
||||
foreach($member_srls as $member_srl => $cnt) {
|
||||
$cur_point = $oPointModel->getPoint($member_srl, true);
|
||||
$cur_point -= $cnt * $comment_point;
|
||||
$this->setPoint($member_srl,$cur_point);
|
||||
}
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 게시글 삭제 포인트 적용 trigger
|
||||
**/
|
||||
function triggerDeleteDocument(&$obj) {
|
||||
$module_srl = $obj->module_srl;
|
||||
$member_srl = $obj->member_srl;
|
||||
|
||||
// 지울 대상 글에 대한 처리
|
||||
if(!$module_srl || !$member_srl) return new Object();
|
||||
|
||||
// 로그인 상태일때만 실행
|
||||
$logged_info = Context::get('logged_info');
|
||||
if(!$logged_info->member_srl) return new Object();
|
||||
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
// 대상 회원의 포인트를 구함
|
||||
$oPointModel = &getModel('point');
|
||||
$cur_point = $oPointModel->getPoint($member_srl, true);
|
||||
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
||||
$point = $config->module_point[$module_srl]['insert_document'];
|
||||
if(!isset($point)) $point = $config->insert_document;
|
||||
$cur_point -= $point;
|
||||
|
|
@ -144,6 +197,12 @@
|
|||
$member_srl = $obj->member_srl;
|
||||
if(!$module_srl || !$member_srl) return new Object();
|
||||
|
||||
// 원글이 본인의 글이라면 포인트를 올리지 않음
|
||||
$document_srl = $obj->document_srl;
|
||||
$oDocumentModel = &getModel('document');
|
||||
$oDocument = $oDocumentModel->getDocument($document_srl);
|
||||
if(!$oDocument->isExists() || $oDocument->get('member_srl')==$member_srl) return new Object();
|
||||
|
||||
// point 모듈 정보 가져옴
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('point');
|
||||
|
|
|
|||
16
modules/point/queries/getCommentUsers.xml
Normal file
16
modules/point/queries/getCommentUsers.xml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<query id="getCommentUsers" action="select">
|
||||
<tables>
|
||||
<table name="comments" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" />
|
||||
<column name="count(*)" alias="count"/>
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />
|
||||
<condition operation="excess" column="member_srl" default="0" pipt="and" />
|
||||
</conditions>
|
||||
<groups>
|
||||
<group column="member_srl" />
|
||||
</groups>
|
||||
</query>
|
||||
Loading…
Add table
Add a link
Reference in a new issue