접근 가능그룹 함수로 쉽게 사용하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

접근 가능그룹 함수로 쉽게 사용하기 정보

접근 가능그룹 함수로 쉽게 사용하기

본문

팁앤테크에 올릴만한 내용이 될지 몰라 그냥 혼자 만들어서 쓰다가 올려드려봅니다.

접근가능 게시판 그룹은 gr_id 값들만 알면 되므로 저의 경우에는
아래 만든 함수 중 get_allow_group_array와 array_to_string_element를 활용하여
SELECT ~ WHERE ~ IN 으로 활용하여 간결하게 바꾸려는 목적으로 만들었었는데요...
MySQL 4.1 이상 버전이라면 서브쿼리를 쓰면 되겠지만 사용하고 있는게 4.0 버전이라 안되는 것도 있고 또 사용가능하다고 해도 너무 길게 지저분해질것 같아서 활용해봤죠...
제가 사용하는 예제는 맨 아래에 넣어드릴께요.

=====
/////
// 접근가능 게시판 그룹 함수
// array function get_allow_group_array(void)
// string function array_to_string_element($allow_group_array [, $sp_string=", "])
// bool function is_allow_group($groupname, $allow_group_array)
// bool function allow_group_count($allow_group_array)
/////

// 접근가능 게시판 그룹을 배열로 리턴
function get_allow_group_array()
{
  global $g4, $is_admin, $member;
  if ($is_admin != "super")
        $sql .= "SELECT a.gr_id FROM $g4[group_table] AS a LEFT JOIN $g4[group_member_table] AS b ON a.gr_id = b.gr_id WHERE (b.mb_id = '$member[mb_id]' AND a.gr_use_access = '1' ) OR a.gr_use_access = '0' ORDER BY a.gr_10, a.gr_id ";
  else
    $sql .= "SELECT gr_id FROM $g4[group_table] ORDER BY gr_id ";

  $result = sql_query($sql);
  for ($i=0; $row=sql_fetch_array($result); $i++) $allow_group[$i] .= "$row[gr_id]";
  return $allow_group;
}

// 1차원 배열을 스트링으로 변환
// $sp_string값은 접근그룹명 사이에 구분값
function array_to_string_element($allow_group_array, $sp_string=", ")
{
  $i=0;
  foreach ($allow_group_array as $element) $in_element .= ($i++==0 ? "'$element'" : $sp_string. "'$element'");
  return $in_element;
}

// 접근가능그룹인지 확인
function is_allow_group($groupname, $allow_group_array)
{
  return in_array($groupname, $allow_group_array);
}

// 접근가능그룹의 갯수 리턴
function allow_group_count($allow_group_array)
{
  return count($allow_group_array);
}

=====
활용예 : /bbs/new.php

[수정전]
...
$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c
    where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' ";
...
$sql = " select gr_id, gr_subject from $g4[group_table] order by gr_id ";
...

[수정후]
...
$sql_allow_group = array_to_string_element(get_allow_group_array());
$sql_common = " from $g4[board_new_table] a, $g4[board_table] b, $g4[group_table] c
    where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' and b.gr_id in ($sql_allow_group) ";
...
$sql = " select gr_id, gr_subject from $g4[group_table] where gr_id in ($sql_allow_group) order by gr_id ";
...
추천
0

댓글 1개

전체 4 |RSS

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT