포럼
Core의 document 모듈의 일부함수를 아래처럼 바꾸는건 어떨까요?
2012.01.10 21:38
사용자포럼 쪽에다가도 써뒀지만..
여기도 써두는게 나을듯해서요
여러가지 용도로 확장하기에 이게 좋을듯해서 건의해봅니다.
구글 이슈 등록해둬도 되겠지만..
일단 다른 개발자분들도 한번 보고 생각을 나눠보는게 좋을듯해서 써둡니다.
(이 게시판은.. XE 개발자나, 서드파티 개발자들도 볼테니깐요)
XE Core 의
modules/document/document.controller.php 에서
function procDocumentVoteUp() { 함수 끝부분에
$point = 1; 부분을
$point = Context::get('point');
if(!$point) $point = 1;
로 고치시면 안 될까요?
function procDocumentVoteDown() { 에서도
$point = -1; 부분을 아래처럼 고쳐주시면 안 될까요?
$point = Context::get('point');
if(!$point) $point = -1;
혹시 다른 소스상과 충돌하는 부분이 있을까봐, 다른 개발자분들도 계시고하니 여기다가 남겨봅니다.
참고로 저렇게 고치면.. 버튼을 눌렀을때 추천수 및 비추천수 값을 1 이 아니라 다양하게 변화시키게 조작가능합니다.
이를 잘 활용하면, 별점 게시판 등에도 얼마든지 적용가능하죠..
물론 이것만으로는 추천수등을 다르게 하진 못해요.
왜냐면, doCallModuleAction() 이 함수가, 별도의 point 변수를 전달을 안 하기 때문이죠.
이 스크립트까지 바꾸기엔 여기저기서 많이 사용하기에, common/js/common.js 의 함수자체를 바꿔달라고하기는 좀 그렇고
차라리 상황에 따라 이 함수랑 유사하게 스킨내부에 재정의하면 될듯해서요.. (스크립트니 Core 와 무관하게 처리가능해서요)
따라서, 위에 언급한 저 두개 함수만 다른 호환이나 보완 등의 문제에 큰 문제가 없다면
저렇게 바꾸면, 상당히 여러가지로 확장성이 있을듯한데..
어떻게 생각하세요?
전 큰 문제 없다면 Core 의 document 모듈에 꼭 적용해주었으면 합니다 ^^;;;
댓글 3
-
sol
2012.01.10 22:13
-
sejin7940
2012.01.10 22:48
뭐, 악용하려면 소스를 분석해서
본문에서 , 버튼을 만들어, doCallModuleAction() 를 연결해 추천수를 조작할 수는 있겠죠 ^^;;;
그러면 결국 추천수 자체를 범위로 할 수 있게 만들려는 곳들에서만..(예를들어 범위의 추천이나, 별점 게시판등)
따로 module_srl 값으로 제한ㅇ르 해서 max 추천수 제한걸어서 처리하면.. 결국 악용 자체를 막을 수 있지만.
이건 결국 어쩔 수 없이 항상 소스를 고쳐야해서..
혹시....
추천수를 1이 아니라, 특정 값 (예를들어 추천수 5 증가)을 전달해 변화시킬 수 있는 방법이 없을까요?
소스를 최대한 건들지 않는 범위내에서..
-
wiley
2012.01.11 02:40
모듈확장기능을 사용하셔서 document모듈의 procDocumentVoteUp 메서드를 재정의 하셔도 될 것 같습니다.
혹은 게시판이나 다른 응용모듈에서 procDocumentVoteUp 직접 호출 하는 대신에 document모듈의 인스턴스를 참조로 가져와서 updateVotedCount을 호출하여 point값을 마음대로 주시면 되지 않을까 싶습니다.
약간 위험할 수 있습니다.
임의로 사용자가 point 값을 바꿀 수 있기 때문입니다.