안녕하세요. 지난번에 이어 달력 플러그인을 다시 올립니다. 이번에는 게시물버젼과 코멘트 버젼을 통합했습니다. 별로 쓸모가 많지는 않을 거라 생각되는데...그냥 올려봅니다. 어떻게 올리는지 잘 모르시는 분은 이전 달력플러그인 올리는 방법을 먼저 참조하셔도 됩니다.

일단 제일 간단한 방법은
 1. 압축파일의 압축을 푼후 /public_html/zb5/plugins/ 에 복사한다. 이때, 같은 폴더가 존재하지만 덮어쓴다.
 2. zSvc.class.php파일을 /public_html/zb5/classes/에 복사한다. 이때, 같은 파일이 존재하지만 덮어쓴다.
이상이 제일 간단한 방법입니다.

그다음 1차 복잡한 방법
1. 압축파일은 동일하게 폴더에 덮어쓴다.
2. zSvc.class.php을 찾아서 다른 부분만 수정해서 올린다. 파란색으로 지정된 부분이 추가부분입니다.
  2.1. 
    'calendar',    //추가해야함 Line 31
    
'calendar_comment', //추가해야함 Line 32
    var $archive = null; //추가해야함 Line 70
    var $calendar_module_list  = null; //추가해야함 Line71

$this->archive= $_REQUEST['archive']?trim(stripslashes($_REQUEST['archive'])):null;//추가해야함 Line 102
      $this->calendar_module_list = $_REQUEST['calendar_list']? $_REQUEST['calendar_list']:null; //추가해야함 Line 103
//아래부분 추가 Line 612
        case 'calendar' :
            $this->_viewCalendarArticles();
            $filename = "view_articles.tpl";
          break;
        case 'calendar_comment' :
            $this->_viewCalendarArticles('comment');
            $filename = "view_articles.tpl";
          break;
//여기까지
//또 추가할 부분 Line 615
function _viewCalendarArticles($type=null) {
     
      $target_srl = $this->target_srl;
      $this->_getTargetInfo($target_srl);

      if(!$this->calendar_module_list)
      {
       $oMember = &zMember::instance();
       $member_obj->return_type = 'object';
       $output = $oMember->proc('get_module_list',$member_obj);
       if(!count($output->module_srl_list)) return;
    
       $module_srl_list = $output->module_srl_list;
       $module_name_list = $output->module_name_list;
     }else
     {
       $oDB = &zDB::instance();
        $module_info = $oDB->select(array('module_srl','title'),'module_manager',"module_srl='{$this->calendar_module_list}'");
        while($tmp = $oDB->fetch()) {
       $module_srl_list[] = $tmp->module_srl;
       $module_name_list[$tmp->module_srl] = $tmp->title;
     }
     }
      require_class('zSearch');
      $oSearch = new zSearch();
      $oSearch->setMemberSrl($target_srl);
      $oSearch->setModuleSrlList($module_srl_list);
      if($this->archive) $oSearch->setArchive($this->archive);
      if($type == 'comment')
      {
       $output = $oSearch->searchComment(20,10);
     }else
     {
       $output = $oSearch->searchArticle(20,10);
     }

      $this->total_articles = $output->total_articles;
      $this->oPageNav = $output->oPageNav;
      if($type == 'comment')
      {
       $this->target_info->user_id = " Total comment list [date: {$this->archive}] ";
     }else
     {
       $this->target_info->user_id = " Total article list [date: {$this->archive}] ";
     }

   $this->$target_info->exp_icon=null;
   $this->$target_info->image_mark=null;
   $this->$target_info->image_nick=null;
   $this->$target_info->nick_name=null;
     
      $article_list = $output->article_list;

      if(count($article_list)) foreach($article_list as $_k => $tmp) {
        $tmp->url = zUrl::getSourceUrl($tmp->article_srl);
        $tmp->module_url = "./?mid={$tmp->module_srl}";
        $tmp->module_name = $module_name_list[$tmp->module_srl];
        $this->article_list[] = $tmp;
      }

}


//여기까지

/public_html/zb5/classes/zSearch.class.php에서
//line 141 아래부분 추가
 function searchComment($list_cnt, $page_cnt, $cur_page = null, $sid = null) {
      $oDB = &zDB::instance();

      $table_list = 'comment';

      $member_srl = $oDB->addquotes($this->member_srl);
      $module_srl = $oDB->addquotes($this->module_srl);
      $serial_srl = $oDB->addquotes($this->serial_srl);
      if($this->module_srl_list) $module_srl_list = implode(",",$this->module_srl_list);

      if($module_srl) $cond_list[] = "module_srl = '{$module_srl}'";
      elseif(count($module_srl_list)) $cond_list[] = "module_srl in ({$module_srl_list})";
      if($member_srl) $cond_list[] = "member_srl='{$member_srl}'";

      if ($this->archive) {
        $archive = $oDB->addquotes($this->archive);
        $cond_list[] = "regdate like '%{$archive}%'";
      }

      $total_articles = $oDB->getCount($table_list,$cond_list);

      $t_obj['article_srl'] = null;
      $t_obj['mid'] = null;
      $t_obj['serial_srl'] = $this->serial_srl;
      if($sid) $t_obj['sid'] = $sid;
      elseif($this->sid) $t_obj['sid'] = $this->sid;

      $oPageNav = Zeroboard::getPageNav($total_articles, $list_cnt, $page_cnt, $cur_page, $t_obj);


      if($oPageNav->start_cnt<0) $oPageNav->start_cnt = 0;
      $oDB->select('*','comment', $cond_list, 'modify_order', $oPageNav->start_cnt, $oPageNav->list_cnt);
      while($tmp = $oDB->fetch()) {
        $tmp->url = zUrl::getSourceUrl($tmp->article_srl);
        $tmp->title = strip_tags($tmp->article);
        $output->article_list[] = $tmp;
      }

      $output->total_articles = $total_articles;
      $output->oPageNav = $oPageNav;
      return $output;
    }
//여기까지
기존에 제가 만들었던 게시물 달력을 사용하시고 계시는 분은 파일을 통채로 덮어쓰시던지 아니면 예전 파일과 비교해서 틀린 부분을 수정하시면 됩니다.

게시물 달력으로 설정할때 위와 같이 설정합니다.


코멘트 달력으로 설정할 경우 위와같이 설정합니다.

수정사항
2007/03/06 메뉴와 모듈을 선택하도록 수정했습니다. 그러나 zSvc.class.php는 아직 수정을 못했습니다. 이 부분은 좀 연구해봐야 할 듯합니다.
2007/03/08 일단 하나의 모듈에서는 정상동작하게 수정했습니다. 그러나 아직 여러개의 모듈에서 동작하는 부분은 완성하지 못했습니다. 일단 일정관리로만 사용하실거라면 하나만 있으면 되니 올려드립니다.테마 파일중 default만이 일정관리로 동작합니다. 그리고 나머지 테마들은 한번 사용해보세요. 약간 이상한....

2007/06/07 코멘트 리스트 찾아오는 부분에서 처음 리스트만 찾아오는 오류 수정
  if($oPageNav->start_cnt<0) $oPageNav->start_cnt = 0;
      $oDB->select('*','comment', $cond_list, 'modify_order', $oPageNav->start_cnt, $oPageNav->list_cnt);