글/댓글쓰기 시에 회원 로그인이 되었다고 체크되면 스팸필터가 아예 동작하지 않도록
아니면 스팸필터 모듈 작동시에 최초로 로그인이 되었나 안 되었나부터 체크하도록 해서 로그인이 되었을 경우 차단된 ip내역이나 금지어 등을 적용하지 않도록 할 수 없을까요?
간단하게 해결이 안 되는 부분인지... 제작을 맡겨야 하는건지 모르겠네요
뭐 저로서는 스팸필터 모듈을 살펴봤지만 뭐가 뭔지 하나도 모르겠더군요...
만약 제작을 맡긴다면 이건 모듈 제작으로 들어가나요?
근데 스팸필터 모듈을 개조하는 식으로 하는것보다는 애드온으로 하는게 더 유지보수에 있어서도 나을 거 같은데...
애드온이 실행되는 시점을 보니까 모듈 실행 전에 실행되도록 할 수도 있던데, 그럼 애드온을 통해서 로그인 체크시에 스팸필터 작동 안하도록 할 수도 있나요?
댓글 11
만약 모듈 수정이 싫으시다면 별도로 애드온을 제작하시면 될것같네요
spamfilter.controller.php를 수정합니다.
triggerInsertDocument, triggerInsertComment에서
if($is_logged)
{
if($logged_info->is_admin == 'Y') return new Object();
if($grant->manager) return new Object();
}
부분을
if($is_logged) return new Object();
이렇게 수정하시면 말씀하신대로 로그인 되어있는 경우에는 스팸필터가 적용되지 않을겁니다.
실제로 해본건 아니고 코드만보고 알려드린거니 혹시 안되면 말해주세요.
위쪽을 if($is_logged) return; 으로 return만 추가해주고 { } 부분을 지워주면 깔끔하지 않을까요?
그냥 지나가다가 참견 해봅니다...^^;
위쪽에 is_logged가 선언된건
// Check the login status, login information, and permission
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
$grant = Context::get('grant');
부분 말고는 없는데,
굳이 저 부분까지 생략해서 깔끔하게 하려면
권한체크를 안하니까 필요없어진 $logged_info, $grant 두 줄도 같이 제거하고
if(Context::get('is_logged')) return new Object();로 바꿔주면 되겠네요.
저는
if($is_logged)
{
if($logged_info->is_admin == 'Y') return new Object();
if($grant->manager) return new Object();
}
부분을
if($is_logged) return new Object();
으로 교체하면 되겠다는 댓글이였는데.. {}부분은 없어요