극단적인 드루팔 메시지 숨김법
* 이 방법은 극단적인 메시지 숨김법입니다.
에러 메시지의 근본적인 문제를 해결하기를 바라며 본 방법은 급할 때 이외에 추천하지 않습니다.
드루팔 drupal_set_message는 온갖 에러/경고 메시지를 다 뿌려대다 보니
드루지기처럼 게으른 자들에게는 악몽과 같다 (왠만하면 표시하지 말고 몰래 알려줘!)
PHP의 버전변경이나 각종 모듈의 업그레이드로 예상못한 에러가 생기면
시스템의 패스마져 공개되는 경우가 있어 꽤나 신경쓰인다. (물론 잘 정비하면 문제 없지만)
그래서 관리자 권한자인 경우에만 메시지를 표시토록
includes/bootstrap.inc 를 아래와 같이 수정하면 당분간 편하다.
게으른 관리자를 위한 극단적인 수정이다.
function is_admin()
{
global $user;
if ($user->roles) {
$roles = implode("','", array_keys($user->roles));
$is_admin = db_result(db_query("SELECT COUNT(rid) FROM {permission} WHERE rid IN ('$roles') AND perm LIKE '%access administration pages%'"));
}
return $is_admin;
}
function drupal_set_message($message = NULL, $type = 'status', $repeat = TRUE) {
if (!is_admin()) { return NULL; }
if ($message) {
if (!isset($_SESSION['messages'])) {
$_SESSION['messages'] = array();
}
if (!isset($_SESSION['messages'][$type])) {
$_SESSION['messages'][$type] = array();
}
if ($repeat || !in_array($message, $_SESSION['messages'][$type])) {
$_SESSION['messages'][$type][] = $message;
}
}
// messages not set when DB connection fails
return isset($_SESSION['messages']) ? $_SESSION['messages'] : NULL;
}
요약하자면,
function drupal_set_message(...)의 첫 줄에 아래 코드를 삽입하는 것이다.
if (!is_admin()) { return NULL; }
- Login to post comments
댓글
2021년에도 유효한 방법이다. 그런데 드루팔6을
2021년에도 유효한 방법이다.
그런데 드루팔6을 2021년에도 유지하는 것은 보안상 좋지 않다.