1.0.6에서는 제대로 작동 하던 기능이
1.1.0인가 1.1.1로 넘어오면서 제대로 작동하지 않았습니다.

                function dispBoardWrite() {
            // 권한 체크
            if(!$this->grant->write_document) return $this->dispBoardMessage('msg_not_permitted');
        
         // check point
         if(Context::get('is_logged')) {
            $logged_info = Context::get('logged_info');
            $oPointModel = &getModel('point');
        $current_point = $oPointModel->getPoint($logged_info->member_srl);
        $oModuleModel = &getModel('module');
        $point_config = $oModuleModel->getModulePartConfigs('point');
        $module_srl = Context::get('module_srl');
        $current_module_point = ($point_config[$module_srl]['insert_document']? $point_config[$module_srl]['insert_document'] : $point_config->insert_document);
        if ($current_point + $current_module_point < 0) return $this->dispBoardMessage('msg_not_enough_point');



예전과 지금의 Module의 Config를 가져오는 방법이 달라져서 제대로 작동하지 않았습니다.
1.1.1에서 적용중인 자료입니다.
Posted by Parker Falcon

댓글을 달아주세요

  1. 뚱^^
    2009.01.10 02:30
    댓글 주소 수정/삭제 댓글
    글 조회시 포인트 체크하여 포인트가 조회에 필요한 포인트 보다 작을 때 조회 불가능하게 하는 방법 부탁합니다. 일러 주신대로 아래와 같이 수정하여 보았는데 삽질만 엄청하고 있습니다.
    기본적을 프로그래밍을 모르니 무지 힘들군요ㅠㅠ
    조언 부탁합니다.

    function dispBoardContent() {
    /**
    * 목록보기 권한 체크 (모든 권한은 ModuleObject에서 xml 정보와 module_info의 grant 값을 비교하여 미리 설정하여 놓음)
    **/
    if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
    // 포인트 검사
    if(Context::get('is_logged')) {
    $logged_info = Context::get('logged_info');
    $oPointModel = &getModel('point');
    $current_point = $oPointModel->getPoint($logged_info->member_srl);
    $oModuleModel = &getModel('module');
    $point_config = $oModuleModel->getModulePartConfigs('point');
    $module_srl = Context::get('module_srl');
    $current_module_point = ($point_config[$module_srl]['insert_document']? $point_config[$module_srl]['insert_document'] : $point_config->insert_document);
    if ($current_point + $current_module_point < 0) return $this->dispBoardMessage('msg_not_enough_point');
    }

    /**
    * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅
    **/
    $this->dispBoardCatogoryList();
    • 2009.01.10 12:27 신고
      댓글 주소 수정/삭제
      $current_module_point = ($point_config[$module_srl]['insert_document']? $point_config[$module_srl]['insert_document'] : $point_config->insert_document);
      이부분은 insert_document 즉 글작성시의 포인트를 말합니다.
      read_document로 바꾸어보세요
  2. 뚱^^
    2009.01.10 18:16
    댓글 주소 수정/삭제 댓글
    우왕! 감사합니다.
  3. 2009.01.13 12:38
    댓글 주소 수정/삭제 댓글
    안녕하세요. Parker Falcon님의 도움으로 포인트 문제를 해결했던 "뚱^^"입니다.
    정말 큰힘이 되었습니다. 이 문제로 여러군데 도움을 요청하고 고민도 많이했는데 Parker Falcon님의 도움으로 쉽게 해결했습니다.
    혼자 이것 저것을 건드리다 또 이렇게 질문을 드리네요.
    아래 소스에서 메세지를 point 모듈의 "LANG" 폴더의 "ko.lang.php" 화일에 메세지를 추가하는 것이 맞는지요?
    원하는 메세지를 뛰우지 못해서 이렇게 질문을 남깁니다.
    if ($current_point + $current_module_point < 0) return $this->dispBoardMessage('msg_not_enough_point');
    }
    • 2009.01.13 14:46 신고
      댓글 주소 수정/삭제
      도움이 되었다니 다행입니다 :)
      실제 lang이 가져와지는 것이 두 곳이 있는데,
      어떠한 곳이라도 상관은 없습니다.
      그래도 해당 모듈에 있는 lang에 추가하시는게 좋겠죠 ^^
      저도 모듈 아래의 lang에 추가하였습니다.
  4. 조현우
    2009.01.16 16:03
    댓글 주소 수정/삭제 댓글
    또 질문을 하게되네요. 알고 싶었던 기능인데, 너무감사합니다.
    그런데 이 팁을 적용해보니, 포인트가 부족하면 글목록부터 볼수가 없네요. 저의 경우는 글목록은 아무나 볼수 있게 하고, 게시글을 읽을경우만 포인트에 따라 권한을 주려고 하고 있습니다.

    미리 감사드립니다.
    • 2009.01.17 14:15 신고
      댓글 주소 수정/삭제
      제가 쓴 글은 게시물을 작성할 때 포인트를 체크하는 루틴입니다.
      따로 넣지 않으셨으면 글 목록을 출력할 때는 저 부분이 실행되지 않는데요, 혹시 해당 소스를 어디쯤에 넣으셨는지 확인해주세요 :)
  5. 조현우
    2009.01.17 14:26
    댓글 주소 수정/삭제 댓글
    원댓글(뚱님)에서 처럼,
    function dispBoardContent() {
    /**
    * 목록보기 권한 체크 (모든 권한은 ModuleObject에서 xml 정보와 module_info의 grant 값을 비교하여 미리 설정하여 놓음)
    **/
    if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
    이아랫에 넣었고, 실패해서, 아래코드 밑쪽근처에도 넣었는데, 아예 페이지에러가 뜨더군요. ^^;;;
    (무식하면 용감하다고...)

    // 글 보기 권한을 체크해서 권한이 없으면 오류 메세지 출력하도록 처리
    if(!$this->grant->view && !$oDocument->isGranted()) {
    $oDocument = null;
    $oDocument = $oDocumentModel->getDocument(0);
    Context::set('document_srl','',true);

    귀잖게 안할려고, 아무리 머리를 쥐어짜도... 답은 먼곳에.. ^^;;
  6. 2009.01.23 11:02
    댓글 주소 수정/삭제 댓글
    조현우님 말처럼 포인트가 모자라면 목록도 보지 못하는 건 맞습니다.
    저도 목록은 보게 할려고 고민중인데 해결이 안되네요. 조언 부탁합니다.
    부탁할려니 미안해서리 머뭇거리다 현우님 질문을 보고 부탁해보네요.
  7. 2009.01.23 18:00 신고
    댓글 주소 수정/삭제 댓글
    if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
    이 부분은, 목록을 보는 권한이 없으면 에러메시지를 출력하는 줄 입니다.

    조현우님의 경우에 일단 지금
    dispBoardContent() 함수의 소스를 보여주시면 제가 확인해 볼 수 있겠습니다.
    소스가 어떻게 되어있는지 제가 잘 몰라서 답변 드리기 점점 모호해져서요 ㅠㅠ
  8. 2009.01.30 11:42
    댓글 주소 수정/삭제 댓글
    소스가 아래와 같이 되어 있는데 포인트가 모자라면 목록이 안보이네요..
    뭐가 문제일까요?

    function dispBoardContent() {
    /**
    * 목록보기 권한 체크 (모든 권한은 ModuleObject에서 xml 정보와 module_info의 grant 값을 비교하여 미리 설정하여 놓음)
    **/
    if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted');
    // 포인트 검사
    if(Context::get('is_logged')) {
    $logged_info = Context::get('logged_info');
    $oPointModel = &getModel('point');
    $current_point = $oPointModel->getPoint($logged_info->member_srl);
    $oModuleModel = &getModel('module');
    $point_config = $oModuleModel->getModulePartConfigs('point');
    $module_srl = Context::get('module_srl');
    $current_module_point = ($point_config[$module_srl]['read_document']? $point_config[$module_srl]['read_document'] : $point_config->read_document);
    if ($current_point + $current_module_point < 0) return $this->dispBoardMessage('msg_not_enough_point');
    }

    /**
    * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅
    **/
    $this->dispBoardCatogoryList();


    /**
    * 목록이 노출될때 같이 나오는 검색 옵션을 정리하여 스킨에서 쓸 수 있도록 context set
    **/
    // 템플릿에서 사용할 검색옵션 세팅 (검색옵션 key값은 미리 선언되어 있는데 이에 대한 언어별 변경을 함)
    foreach($this->search_option as $opt) $search_option[$opt] = Context::getLang($opt);

    // 모듈정보를 확인하여 확장변수에서도 검색이 설정되어 있는지 확인
    for($i=1;$i<=20;$i++) {
    $ex_name = trim($this->module_info->extra_vars[$i]->name);
    if(!$ex_name) continue;
    if($this->module_info->extra_vars[$i]->search == 'Y') $search_option['extra_vars'.$i] = $ex_name;
    }
    Context::set('search_option', $search_option);


    // 게시글을 가져옴
    $this->dispBoardContentView();

    // 공지사항 목록을 구해서 context set (공지사항을 매페이지 제일 상단에 위치하기 위해서)
    $this->dispBoardNoticeList();

    // 목록
    $this->dispBoardContentList();

    // template_file을 list.html로 지정
    $this->setTemplateFile('list');
    }

    function dispBoardCatogoryList(){
    if($this->module_info->use_category=='Y') {
    $oDocumentModel = &getModel('document');
    Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl));
    }
    }