게시판별로 댓글 작성제한을 레벨별로 걸어두었는데
7.1에서는 정상작동하던게 7.3에서는 작동을 안하네요..
// 레벨 제한 $module_info = Context::get("module_info"); $module_srl = $module_info->module_srl; if (in_array($module_srl, array(게시판 모듈srl))) { // 포인트 & 레벨 정보 불러오기 $oPointModel = &getModel('point'); $point = $oPointModel->getPoint($logged_info->member_srl); $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $level = $oPointModel->getLevel($point, $config->level_step); // 어드민은 레벨제한 없이 작성가능 $notadmin = $logged_info->is_admin != 'Y'; // 본인 글에서는 레벨 제한 없이 작성가능 $nothuman = $obj->member_srl != $oDocument->get('member_srl'); $subject = $obj->content; $pattern = "/감사합니다[.!]*|사랑합니다[.!]*/"; preg_match($pattern, $subject, $matches); if ($level<5 && $notadmin && $nothuman && !in_array($subject, $matches)) return new BaseObject(-1, '해당게시판에서는 5레벨 미만은 지정된 문구 외에 작성하실 수 없습니다.'); }
이런식으로 작성을 해놨습니다.
7.1에서 테스트했을때는 정상적으로 작동을 했는데
7.3에서는 계속 지정해둔 오류문구가 뜨네요.. 조건에 안맞는것도 아닌데..
if ($level<5 && $notadmin && $nothuman && !in_array($subject, $matches))
조건이 4개나 있는데 그 중 어느 것이 참으로 나와서는 안 되는 상황에서 참으로 나오는지 각각 따로 찍어보시면 되겠습니다. 개인적으로는 마지막 조건이 가장 의심스럽네요. 정규식 체크 후에 in_array 함수로 또다시 체크하는 방식은 생전 처음 봅니다. ㅎㅎ
서버 환경이 바뀌었다면 정규식 마지막 슬래시 뒤에 u를 붙여서 유니코드 처리를 해주어야 할 수도 있습니다.