이 문서는 낙엽1124님이 게시판:자유게시판의 "닉네임 기능(가칭)의 도입에 관한 설문을 실시합니다~" 주제의 게시물의 두 판 사이의 차이를 보여줍니다.
역사 문서에서 이 게시물의 다른 판을 볼 수 있습니다.
5번째 줄: | 5번째 줄: | ||
## 기록을 출력하는 법은 미디어위키위키에 쉽게 잘 나와있었습니다([[mediawikiwiki:Manual:Logging_to_Special:Log|#]]). | ## 기록을 출력하는 법은 미디어위키위키에 쉽게 잘 나와있었습니다([[mediawikiwiki:Manual:Logging_to_Special:Log|#]]). | ||
# [[mediawikiwiki:Manual:Hooks/UserSaveSettings|UserSaveSettings]]라는 hook이 있는데 이 hook에서는 User 변수 하나에만 접근할 수 있고 이 유저 변수는 이미 변경된 환경설정이 반영된 settings만을 확인할 수 있습니다. 즉 이 hook에서는 변경되었는지 안 되었는지와 무관하게 무조건 현재 realname만 참조할 수 있었습니다.([[mediawikiwiki:Manual:Hooks/UserSaveOptions|UserSaveOptions]]에서 nickname을 참조해도 마찬가지입니다) | # [[mediawikiwiki:Manual:Hooks/UserSaveSettings|UserSaveSettings]]라는 hook이 있는데 이 hook에서는 User 변수 하나에만 접근할 수 있고 이 유저 변수는 이미 변경된 환경설정이 반영된 settings만을 확인할 수 있습니다. 즉 이 hook에서는 변경되었는지 안 되었는지와 무관하게 무조건 현재 realname만 참조할 수 있었습니다.([[mediawikiwiki:Manual:Hooks/UserSaveOptions|UserSaveOptions]]에서 nickname을 참조해도 마찬가지입니다) | ||
# [[mediawikiwiki:Manual:Hooks/SavePreferences|SavePreferences]]라는 hook에서는 $old라는 이름으로 이전 prefereneces를 참조할 수 있었던 것 같은데(그럼 $old와 new를 비교해서 realname은 비교를 못해도 nickname은 비교할 수 있었을텐데<sup>[리얼네임 확장기능을 realname field 대신 nickname field(현재는 서명이 저장되는 곳)을 사용하도록 변경하는 것은 간단하게 가능합니다].</sup>), 이 hook이 미디어위키 1.16.0.에서 제거되었고 UserSaveOptions으로 대체되었다고 합니다. | # [[mediawikiwiki:Manual:Hooks/SavePreferences|SavePreferences]]라는 hook에서는 $old라는 이름으로 이전 prefereneces를 참조할 수 있었던 것 같은데(그럼 $old와 new를 비교해서 realname은 비교를 못해도 nickname은 비교할 수 있었을텐데<sup>[리얼네임 확장기능을 realname field 대신 nickname field(현재는 서명이 저장되는 곳)을 사용하도록 변경하는 것은 간단하게 가능합니다].</sup>), 이 hook이 미디어위키 1.16.0.에서 제거되었고 UserSaveOptions으로 대체되었다고 합니다. UserSaveOptions에는 $old와 같은 변수가 없습니다. | ||
# 환경설정을 통해 DB에 | # 환경설정을 통해 DB에 realname을 갱신하는 부분에 적절한 hook이 있는가 찾아보았습니다. User class의 [https://doc.wikimedia.org/mediawiki-core/1.27.1/php/classUser.html#ac58b30a22b3fb746bb03ea788b7d0ebc saveSettings() 함수]([https://doc.wikimedia.org/mediawiki-core/1.27.1/php/User_8php_source.html#l03767 소스])는 바로 db의 update문에 대한 wrapping function를 호출하며, Setting의 전후 값을 동시에 전달받는 hook은 없어 보입니다. | ||
## 대신해서 [https://doc.wikimedia.org/mediawiki-core/1.27.1/php/classDatabaseBase.html#af5f56f8c7220cb3f405a51663d524d25 update wrapping function]([https://doc.wikimedia.org/mediawiki-core/1.27.1/php/Database_8php_source.html#l01503 소스]) 안에 적절한 hook이 있는가 살펴봤는데 없습니다. | ## 대신해서 [https://doc.wikimedia.org/mediawiki-core/1.27.1/php/classDatabaseBase.html#af5f56f8c7220cb3f405a51663d524d25 update wrapping function]([https://doc.wikimedia.org/mediawiki-core/1.27.1/php/Database_8php_source.html#l01503 소스]) 안에 적절한 hook이 있는가 살펴봤는데 없습니다. | ||
그래서 | 그래서 | ||
17번째 줄: | 17번째 줄: | ||
아니면 | 아니면 | ||
* [[특수:환경설정]]을 변조해서 '저장'을 누를 때 실제로 저장하기 직전에 realname을 비교하기 | * [[특수:환경설정]]을 변조해서 '저장'을 누를 때 실제로 저장하기 직전에 realname을 비교하기 | ||
* 이 경우에 [[특수:환경설정]]이 아닌 다른 방법(api를 써서 변경한다든가…)로 realname을 변경하면 기록이 남지 않는다는 문제가 생기지만 전 이 문제를 무시할 것입니다. | |||
아니면 | 아니면 | ||
* UserSaveSettings hook에서 realname이 변경되었든 아니든 그냥 무조건 기록으로 남기기 | * UserSaveSettings hook에서 realname이 변경되었든 아니든 그냥 무조건 기록으로 남기기 |