XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠
제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
글들을 관리자가 이동시킬 경우, 확장변수 이동에 버그가 있습니다.
최신 XE 1.5.2 에서 발생
이 버그는 확장변수가 있는체로 이동할때 발생하는 것이고
그냥 눈으로 볼땐 버그가 없는 것처럼 제대로 이동되는것처럼 보이지만.
이동 한 후, 확장변수를 수정해서 저장하면 저장이 안 됩니다.
원인은 글을 이동시키면
xe_documents 에서 해당 글의 module_srl 값은 바뀌는데
xe_document_extra_vars 에 있는module_srl 값이 안 바뀌어서 그럽니다.
그러나 실제 글에서 확장변수 출력시 document_srl 값을 기준으로 출력하니 실제 module_srl 값이 달라도 정상적으로 출력되는 것처럼 보입니다.
문제는, 이동한 글을 저장하게 되면
document_srl 과 module_srl 이 모두 같아야 update 가 되는데
module_srl 값이 다르다보니, 이중으로 새로 등록이 되어버립니다.
(확장변수 저장하고 DB에서 해당 글을 조회해보면, 똑같은 확장변수가 이전전의 module_srl 값으로 하나, 이동된 module_srl 값으로 하나 존재함을 확인할 수 있다)
이렇게 이중으로 기록이 되면서, 그 후에 실제 view 화면등에서 확장변수를 출력할때, module_srl 값까지 확인을 안 하다보니, 최초 기제되었던 이전전의 화장변수 기준으로 읽어오게 되어 실제 변경되어 수정된 내역이계속 안 나타나게 되는겁니다
이 현상을 해결하기 위해서는, 글이동될때 xe_document_extra_vars 에서 module_srl 값까지도 다 바꿔주면 된다.
사용할 수 있는 쿼리문이 있을까해서 찾아봤지만, 쿼리를 차지 못해서
쿼리문을 하나 추가하고, document 모듈의 파일 한군데를 수정해서 이 현상을 해결했다.
modules/document/document.admin.controller.php 에서
moveDocumentModule함수내에 대략 117번째줄 즈음에
// 글 이동시 확장변수값들도 전부 이동시키기 위해서 ( sejin7940)
$obj->document_srl = $document_srl;
$output = executeQuery('document.moveDocumentExtraVars', $obj);
문구를 추가해주고
document/queries/moveDocumentExtrVars.xml 파일을 새로 생성
<query id="moveDocumentExtraVars" action="update">
<tables>
<table name="document_extra_vars" />
</tables>
<columns>
<column name="module_srl" var="module_srl" filter="number" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" notnull="notnull" />
</conditions>
</query>
이렇게하면 글이동시 확장변수 버그가 해결이 된다.