- 트리거 등 반환값이 필요하지 않은 곳에서 new BaseObject()를 반환하는 것 삭제
- 모듈 설치, 업데이트 후 무의미한 new BaseObject()를 반환하는 것 삭제
- 사용자에게 에러 메시지를 돌려주는 용도로 new BaseObject(-1, '에러메시지')를
사용하는 경우는 대부분 $this->setError()로 변경함. 언어 변환과 sprintf()
처리까지 한 번에 이루어지므로 이쪽이 더 편리함.
xpressengine/xe-core#2181 적용시 에러 반환 문법을 단순화하기 위한 조치
기존 방식: return new Object(-1, '에러메시지');
XE 제안 방식: return class_exists('BaseObject') ? new BaseObject(-1, '에러메시지') : new Object('에러메시지');
라이믹스 방식: return $this->setError('에러메시지');
기존의 setError() 메소드가 에러 코드만 받을 수 있어서 호환성 보장에 도움이 안 되므로
에러 코드와 에러 메시지를 동시에 넣을 수 있도록 개선하고,
에러 코드를 넣지 않고 에러 메시지만 지정해도 자동으로 -1 에러 코드가 들어가도록 하였음.
(첫 번째 인자가 정수인지 아닌지에 따라 판단함.)
setError(), setMessage(), setMessageType() 등 기존에 무의미한 반환값을 가지던 메소스들 모두
$this를 반환하도록 함으로써 액션이나 트리거 등의 반환값으로 유효하도록 하고,
원할 경우 method chaining까지 사용할 수 있음.
또한 에러메시지에 변수를 넣어야 할 경우
return new Object(-1, sprintf(Context::getLang('error_msg'), $var1, $var2));
이렇게 복잡해지는 문제도 해결하기 위해
setError()에 추가로 넣은 인자는 모두 자동으로 sprintf() 처리를 거치도록 함.
예: return $this->setError('error_msg', $var1, $var2);
즉, 아래와 같은 호출 형태가 모두 유효함.
- $this->setError(-1);
- $this->setError(-1, 'error_msg');
- $this->setError(-1, 'error_msg', $var1, $var2);
- $this->setError('error_msg');
- $this->setError('error_msg', $var1, $var2);
단, 이 커밋 이후 신규 작성하는 코어 클래스나 서드파티 자료에서만 사용할 수 있음.
기존 버전과의 호환성을 유지하기를 원하는 서드파티 자료는 XE에서 제안한 삼항식을 사용해야 함.
- 가입 약관, 개인정보처리방침 등을 5개까지 추가할 수 있음
- 약관마다 각각 필수 또는 선택을 지정할 수 있음
- 모든 필수 약관에 동의해야 가입 가능
- 기본 스킨은 수정함. 서드파티 스킨에는 여전히 약관 1개만 표시됨
- 서드파티 스킨 사용시 동의 하나만 선택해도 전체 동의로 간주
문서나 댓글을 작성하거나 수정할 때 트리거에서 회원 정보를 조작할 수
있도록 허용함. $obj->manual_member_info = true 로 바꾸어 반환하면
글쓴이의 정보가 현재 로그인한 사용자나 최초 작성시 정보로 덮어씌워지지
않고 트리거에서 지정한 그대로 남음.
기존에도 $manual_inserted 를 사용하면 이런 기능을 구현할 수 있었으나,
이 변수는 트리거에서 조작할 수 없으며 다른 체크도 모두 건너뛰는 등
여러 가지 불편이 있어서 이렇게 일부 정보만 변경하도록 허용하는 새 방법을
제공함. 익명 게시판 등을 좀더 편리하게 개발할 수 있을 것으로 예상됨.
모바일에서만 사용할 수 있었던 dispBoardCategory() 액션을 PC에서도 사용할 수
있도록 변경함. (PC용 스킨에서 category.html 템플릿을 제공하는 경우에 한함)
모바일에서만 사용할 수 있었던 getBoardCommentPage() 액션의 이름을
dispBoardCommentPage()로 바꾸어 PC에서도 사용할 수 있도록 변경하고
기존의 모바일 getBoardCommentPage() 액션은 dispBoardCommentPage()로 연결함.
(get으로 시작하는 액션명은 원래 model에서 써야 하는데 잘못 지정됨)
누가 모바일 스킨을 만들다가 필요해서 추가한 액션인 것 같은데
왜 PC에서는 사용할 수 없도록 해놓았는지 의문임.
비슷한 기능을 PC에서 사용하기 위해 getBoardCommentPageForPC() 등의 액션을
임의로 추가하여 사용하는 사이트가 은근히 많이 보임.