Q&A

요즘 사이트현황을 출력해 주는거에 관심 있는 회원들이 많네요.

 

현재 전체회원수에 휴면회원이 빠지게 되는데요. 별도로 휴면계정정리모듈에서 확인할 수 있는 휴면회원을 불러오는 것을 추가해 주려고 합니다.

 

저희 사이트 경우도 천여명이 항상 휴면으로 전환되어 있는 상황이라 이 회원수도 전체회원수에 포함해 주려고 하는 목적으로 오늘 시도해보려구요.

 

// 가입한 회원수 출력
$oMemberModel = &getModel('member');
            $args->date = date("Ymd000000", time()-60*60*24);
            $today = date("Ymd");
            $output = executeQueryArray("admin.getMemberStatus", $args);
            if($output->data) {
                foreach($output->data as $var) {
                    if($var->date == $today) {
                        $status->member->today = $var->count;
                    } else {
                        $status->member->yesterday = $var->count;
                    }
                }
            }            
            $output = executeQuery("admin.getMemberCount", $args);
            $status->member->total = $output->data->count;
            Context::set('start_module', $output->data);
            Context::set('status', $status);

 

 

 

 

//휴면회원수

 

휴면회원수는 그냥 간단하게 현재 휴면회원숫자만 가져오면 됩니다.

휴면계정정리모듈의 관리자페이지에 

별도의 저장공간으로 이동된 휴면회원은 1,076명입니다. 라고 출력되는 숫자 입니다.

댓글 11

  • 화 이 팅 !
  • 모듈의 admin뷰 쪽에.


    /**
    * 별도저장 회원 목록을 표시하는 메소드.
    */
    public function dispMember_ExpireAdminListMoved()
    {
    // 현재 설정을 불러온다.
    $config = $this->getConfig();
    Context::set('mex_config', $config);

    // 검색 조건을 불러온다.
    $search_target = Context::get('search_target');
    $search_keyword = Context::get('search_keyword');
    if (!in_array($search_target, array('email_address', 'user_id', 'user_name', 'nick_name')) || !$search_keyword)
    {
    Context::set('search_target', $search_target = null);
    Context::set('search_keyword', $search_keyword = null);
    }
    $valid_list_counts = array(10, 20, 30, 50, 100, 200, 300);
    $list_count = intval(Context::get('list_count'));
    if (!in_array($list_count, $valid_list_counts)) $list_count = 10;
    Context::set('list_count', $list_count);

    // 휴면계정 목록을 불러온다.
    $obj = new stdClass();
    if ($search_target && $search_keyword) $obj->$search_target = trim($search_keyword);
    $moved_members_count = executeQuery('member_expire.countMovedMembers', $obj);
    $moved_members_count = $moved_members_count->toBool() ? $moved_members_count->data->count : 0;
    $obj->list_count = $list_count;
    $obj->page = $page = Context::get('page') ? Context::get('page') : 1;
    $obj->orderby = 'desc';
    $moved_members = executeQuery('member_expire.getMovedMembers', $obj);
    $moved_members = $moved_members->toBool() ? $moved_members->data : array();
    $member_srls = array();
    foreach ($moved_members as $member)
    {
    if ($member->member_srl > 0)
    {
    $member_srls[] = $member->member_srl;
    }
    }
    if (count($member_srls))
    {
    $moved_members_groups = getModel('member')->getMembersGroups($member_srls);
    }
    else
    {
    $moved_members_groups = array();
    }
    Context::set('expire_threshold', $this->translateThreshold($config->expire_threshold));
    Context::set('moved_members_count', $moved_members_count);
    Context::set('moved_members', $moved_members);
    Context::set('moved_members_groups', $moved_members_groups);

    // 페이징을 처리한다.
    $paging = new Object();
    $paging->total_count = $moved_members_count;
    $paging->total_page = max(1, ceil($moved_members_count / $list_count));
    $paging->page = $page;
    $paging->page_navigation = new PageHandler($paging->total_count, $paging->total_page, $page, $list_count);
    Context::set('paging', $paging);
    Context::set('page', $page);

    // 템플릿을 지정한다.
    Context::setBrowserTitle('별도저장 회원 목록 - XE Admin');
    $this->setTemplatePath($this->module_path.'tpl');
    $this->setTemplateFile('list_moved');
    }
  • $obj = new stdClass();
    $moved_members_count = executeQuery('member_expire.countMovedMembers', $obj);
    $moved_members_count = $moved_members_count->toBool() ? $moved_members_count->data->count : 0;

    이 부분을 활용하시면 될 것 같네요.
  • @기진곰
    네. 그부분을 적용 시도 하고 있습니다. 감사합니다!
  • 점점 더 진화하는군요! 굳~
  • @튜닝셀프

    아직 시작하시는 사이트라 휴면회원이 없지만 저희처럼 오래된 사이트는 휴면회원이 천단위라 이걸 빼버리면 좀 아쉬워서요~~ 휴면회원이라는게 5분 후에라도 로그인 하면 다시 회원수에 편입되는 상태이라 실제 회원수에는 포함시키는게 좋을 것 같아요.

  • @웹지기
    그쵸~ 어떻게 보면 신규회원보다 사이트에 접속할 확률이 더 높은 회원이니까요. ^^
  • @튜닝셀프
    아니요 ㅋ 휴면회원에서 다시 복원되는 회원수 는 많지 않아요. 1년 이상 장기 미로그인 이라면 다시 활동하지 않을 확율이 더 높지만 일반적으로 휴면계정을 운영하지 않으면 이런 회원들도 모두 회원수에 표시되므로 저희도 표시해 주는거로 바꾼거죠.

    저희는 휴면이 1년 유지되면 계정은 아예 삭제해요.
    이렇게 사라진 회원만 저희는 아마 천단위 일거에요.
  • @웹지기
    흠.. 그렇군요~ 저희 사이트는 아직 멀었지만, 언젠간 고심할 날이 오겠죠 ㅎㅎ 이 게시물 잘 숙지해두겠습니다. ^^
  • //휴면회원수
    $output = executeQuery('member_expire.countMovedMembers', $args);
    $status->exp_member->total = $output->data->count;
    Context::set('start_module', $output->data);
    Context::set('status', $status);

    위내용을 추가해 주고..

    스킨에서 회원수를 회원수+휴면회원수 로 처리했습니다.
    {number_format($status->exp_member->total+$status->member->total)}

    1200여명 회원수에서 2300여명으로 변경표시되었네요.

  • @웹지기
    음음 코드가 무엇인지 알지도 못하지만 타운에 웹지기님같은 분들이 많아서 좋네요. 화이팅하십시오 !!