웹마스터 팁

이번에도 말이 좀 짧습니다. 양해부탁드립니다

출처 : http://sejin7940.co.kr/tips_xe/2233

 

XE Core에 해당하는 modules/document/document.controller.php  내부의 함수 하나를 변경해야하니..

혹시 모르니 document.controller.php   파일은 백업해두고 진행하세요.  ^^;; 

그런데 이게 몇버전에 적용되고 안 되는지는 사실 정확히 파악은 안 되어있어요. 그런데 함수 특성상 왠만하면 될거라고 생각하빈다

 

-------------------------------------------------------------------------------------------------------------------------------

 

XE Core 대로라면..  추천은 1회 밖에 못한다.   이는 관리자도 예외가 아니다.

보통은 동일한 ID인 경우만 제한하기에,  여러 아이디를 만들어 추천수 상승이 가능했는데..

XE에서는  IP가 동일한 경우, 세션정보에 남아있는 경우 까지 전부 검토하기에, 여러개 아이디를 만들어도 동일 컴퓨터에선 추천이 불가능하다.

 

결국, XE에서 추천관련된 소스를 수정해본다.

사실, 이 부분에서 유효성 검토하는 부분들을 골라 주석처리해버리면, 관리자든 회원이든 무한추천 가능해진다

그런데, 사실 추천제한을 관리자에게만 예외로 두길 일반적으로 원할듯해서

별도의 if 문을 두어, 관리자에겐 추천여부 검토 소스를 안 거치게 하는 걸로도 무한추천기능을 넣었다.

다만,  단순히 이렇게만 할 경우,  관리자가 추천한 기록은 남지 않게 되는 문제가 생긴다.

(특히 관리자가  최고관리자 부여한 아이디를 여러개 사용시에 기록상 문제가 생길 수 있다)

 추후 그 글을 추천한 사람이 누군지 알 수 있게 하는 기능을 추가할 것을 대비해서  (DB에는 다 기록이 남아있다)

관리자일지라도 추천 정보가  DB에 남도록 보완해두었다. 

 

수정방법은...

 

modules/document/document.controller.php  에서

function updateVotedCount    함수를  아래 소스로 통채로 교체해버리면 적용이 된다.

추후 XE Core 업데이트시 이 파일이 수정되면, 이 부분을 다시 교체하면 된다. 

(개인적인 생각으로 이 파일이 업데이트되는 일은 있어도,  이 함수가 변경되지는 않을 듯하기에  소스가 변형되지는 않을듯하다)

 

  


 /**
  * @brief 해당 document의 추천수 증가 -> 관리자 무한추천기능 추가 (sejin7940)
  **/
function updateVotedCount($document_srl, $point = 1) {
         if($point > 0) $failed_voted = 'failed_voted';
         else $failed_voted = 'failed_blamed';
         // member model 객체 생성 - 로그인한 회원 정보
         $oMemberModel = &getModel('member');
         $member_info = $oMemberModel->getLoggedInfo();
        // 문서 원본을 가져옴
         $oDocumentModel = &getModel('document');
         $oDocument = $oDocumentModel->getDocument($document_srl, false, false);
 
         // 최고관리자에게 무한 추천권한 주기 위해서  (sejin7940 수정)
         if ($member_info->is_admin=="Y") {
                  $args->member_srl = $member_srl;
                  $args->document_srl = $document_srl;
                  // 추천수 업데이트
                  if($point < 0) {
                           $args->blamed_count = $oDocument->get('blamed_count') + $point;
                           $output = executeQuery('document.updateBlamedCount', $args);
                  }
                  else {
                           $args->voted_count = $oDocument->get('voted_count') + $point;
                           $output = executeQuery('document.updateVotedCount', $args);
                  }
                  if(!$output->toBool()) return $output;
                  // 추천자 조회기능을 위해 추천 로그기록은 남겨둠
                  $output = executeQuery('document.getDocumentVotedLogInfo', $args);
                  if($output->data->count) {
                            $args->point = $point;
                            $output = executeQuery('document.insertDocumentVotedLog', $args);
                   }
        }
        else {
               // 세션 정보에 추천 정보가 있으면 중단
               if($_SESSION['voted_document'][$document_srl]) return new Object(-1, $failed_voted);
               // 글의 작성 ip와 현재 접속자의 ip가 동일하면 패스
               if($oDocument->get('ipaddress') == $_SERVER['REMOTE_ADDR']) {
                       $_SESSION['voted_document'][$document_srl] = true;
                       return new Object(-1, $failed_voted);
              }
              // document의 작성자가 회원일때 조사
             if($oDocument->get('member_srl')) {
                          // 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 생각하고 세션 등록후 패스
                        if($member_srl && $member_srl == $oDocument->get('member_srl')) {
                                   $_SESSION['voted_document'][$document_srl] = true;
                                   return new Object(-1, $failed_voted);
                        }
               }
              // 로그인 사용자이면 member_srl, 비회원이면 ipaddress로 판단
             if($member_srl) {
                       $args->member_srl = $member_srl;
              } else {
                      $args->ipaddress = $_SERVER['REMOTE_ADDR'];
              }
             $args->document_srl = $document_srl;
             $output = executeQuery('document.getDocumentVotedLogInfo', $args);
              // 로그 정보에 추천 로그가 있으면 세션 등록후 패스
             if($output->data->count) {
                      $_SESSION['voted_document'][$document_srl] = true;
                       return new Object(-1, $failed_voted);
              }
             // 추천수 업데이트
              if($point < 0)   {
                      $args->blamed_count = $oDocument->get('blamed_count') + $point;
                      $output = executeQuery('document.updateBlamedCount', $args);
              }
               else   {
                      $args->voted_count = $oDocument->get('voted_count') + $point;
                      $output = executeQuery('document.updateVotedCount', $args);
               }
               if(!$output->toBool()) return $output;
               // 로그 남기기
               $args->point = $point;
               $output = executeQuery('document.insertDocumentVotedLog', $args);
               if(!$output->toBool()) return $output;
              // 세션 정보에 남김
               $_SESSION['voted_document'][$document_srl] = true;
               $obj->member_srl = $oDocument->get('member_srl');
               $obj->module_srl = $oDocument->get('module_srl');
               $obj->point = $point;
               $output = ModuleHandler::triggerCall('document.updateVotedCount', 'after', $obj);
               if(!$output->toBool()) return $output;
         }
         // 결과 리턴
         if($point > 0)   return new Object(0, 'success_voted');
         else  return new Object(0, 'success_blamed');
  }  

 

제목 글쓴이 날짜
1.5.2.3 에서 게시글이 등록이 되는데 ajax XML parser 에러가 나는경우 엑스셀코드 2012.04.28
1.5.2.3 업데이트 후 이미지, 아이콘 테두리 생김 현상 없애는 방법 [3] 비밀얌 2012.04.28
그누보드 데이터를 XE 로 이전하는 컨버터 입니다. [2] file joyhmbc 2012.04.27
기본 css 파일 언로드 하기. [9] 엘카 2012.04.26
제로보드4에서 xe로 이전시 갤러리 게시판 이미지 깨어지는 현상 해결방법 [2] 최르토스 2012.04.22
게시판에 다운로드 횟수 출력하기 (스케치북 게시판 전용) [5] file 숭숭군 2012.04.20
추천, 신고 제한 해제 (관리자만 v1.5.2.2) [4] mugenk 2012.04.09
회원가입폼 비밀번호 찾기 질문/답변 삭제및 필수항목 선택 (송동우님 팁) [8] 때린데 또때려 2012.04.09
이미지 외부링크 차단하는법 [6] 리리슐츠 2012.04.08
회원가입폼 비밀번호 찾기 질문/답변 삭제및 필수항목 선택 (송동우님 팁) 때린데 또때려 2012.04.08
조회수 클릭때마다 올라가기(1.5.2 버전) 송동우님 팁 [7] 때린데 또때려 2012.04.08
마우스 오버시 텍스트 호버링(주석나타내기..레이어적용) [1] Konghee 2012.04.02
선택된 카테고리의 공지글들만 나타나게 하는 팁 [1] sejin7940 2012.04.02
이번 xe 1.5.2.1 업데이트 하고 게시판 보기 .htaccess 문제 권기성2 2012.03.29
Contact us 체크박스 및 전화번호가 array로 나오는 거 패치 [9] hhgyu 2012.03.27
XE를 처음 설치하면 기본적으로 필요한 자료들 - 초보자용 V2013-05-20 [11] Treasurej 2012.03.26
제로보드4 에서 xe 1.5 버전설치후 xml 파일 이전시 파일 누락되는 현상해결 [4] 때린데 또때려 2012.03.24
그룹별 회원정보 검색 & 회원의 추가가입폼 복수 검색 팁 (XE 1.5) sejin7940 2012.03.22
쪽지함 모바일에서 pc로 안넘기고 모바일 레이아웃에서 띄우는법&질문 [5] file 제발도와주세요 2012.03.20
[공유]로그인 하지 않아도 게시판에서 회원정보 출력 하기 (가입품 확장변수 포함) [6] file rminkim 2012.03.20