질문/조언질답게시판

이미지 90.jpg

 

해당 애드온을 사용중인데 최고관리자에 경우 이름이 변경되지만 게시판 관리자에 경우 이름이 변경되지 않습니다.

 

$GLOBALS['admin_name'] = '관리자';
  if($addon_info->admin_name) $GLOBALS['admin_name'] = $addon_info->admin_name;

  $track = $output;

  $track = preg_replace_callback('/(member_)([0-9]+)(.+\">)(.+)(<\/a>)/',function($m){
    $args = new stdClass;
    $args->member_srl =$m[2];
  $result = executeQuery('addons.admin_namer.getMemberIsAdmin', $args);
  $is_admin = $result->data->is_admin;
  if($is_admin == 'Y'){
     $m[0] = str_replace($m[4],$GLOBALS['admin_name'],$m[0]);
  }
  return $m[0];
},$track);
$output = $track;

 

해당 애드온의 일부 내용입니다. if($is_admin == 'Y') 이 부분을 if($grant->manager)이라고 변경했는데 해당 코드가 안 먹히네요

 

애드온 php 소스에서 $grant->manager를 활용하기 위해선 어떻게 하면 좋을까요?

  • profile

    $grant->manager는 게시판에서 현재 로그인한 회원이 관리자인지 아닌지 체크하는 기능입니다. 그런데 여기서 필요한 것은 현재 로그인한 회원이 아니라 다른 회원(글쓴이)이 관리자인지 아닌지 체크하는 기능입니다. 따라서 원하시는 기능을 구현하는 데 $grant->manager는 쓸모가 없습니다.

    아마도 게시판 설정을 불러와서 게시판 관리자로 지정된 회원들의 목록을 먼저 확보한 후, 글쓴이가 그 목록에 포함되어 있는지 체크하는 방식으로 하셔야 할 거예요. 그런데 이게 안 그래도 어마무시하게 비효율적으로 구현된 애드온이라 (메인화면에 노출되는 글 수만큼 쿼리가 발생합니다. 100개라면 100번의 쿼리를... ㄷㄷㄷ) 그런 것까지 체크하려면 골치아플 것 같네요.

  • profile profile
    기진곰님 답변보고 바로 깔끔하게 포기했습니다. 해당 애드온은 그냥 최고관리자만 쓰는 걸로 해야겠네요. 답변 주셔서 감사합니다.