게시판:자유게시판의 토론 주제

사족 근황 겸 혹시 해서 질문입니다:

'닉네임 변경 이력을 기록으로 남게 하기'를 만들려고 하는데, '닉네임이 변경되는 시점'을 감지하는 것을 잘 하지 못하겠습니다,

  1. 변경 이력은 '만약 user settings중에 하나인 realname을 변경하였다면, 변경되기 전 realname과 변경된 realname을 기록으로 남긴다'가 좋을 것 같았습니다.
    1. 기록을 출력하는 법은 미디어위키위키에 쉽게 잘 나와있었습니다(#).
  2. UserSaveSettings라는 hook이 있는데 이 hook에서는 User 변수 하나에만 접근할 수 있고 이 유저 변수는 이미 변경된 환경설정이 반영된 settings만을 확인할 수 있습니다. 즉 이 hook에서는 변경되었는지 안 되었는지와 무관하게 무조건 현재 realname만 참조할 수 있었습니다.(UserSaveOptions에서 nickname을 참조해도 마찬가지입니다)
  3. SavePreferences라는 hook에서는 $old라는 이름으로 이전 prefereneces를 참조할 수 있었던 것 같은데(그럼 $old와 new를 비교해서 realname은 비교를 못해도 nickname은 비교할 수 있었을텐데[리얼네임 확장기능을 realname field 대신 nickname field(현재는 서명이 저장되는 곳)을 사용하도록 변경하는 것은 간단하게 가능합니다].), 이 hook이 미디어위키 1.16.0.에서 제거되었고 UserSaveOptions으로 대체되었다고 합니다.
  4. 환경설정을 통해 DB에 realname를 갱신하는 부분에 적절한 hook이 있는가 찾아보았습니다. User class의 saveSettings() 함수(소스)는 바로 db의 update문에 대한 wrapping function를 호출하며, Setting의 전후 값을 동시에 전달받는 hook은 없어 보입니다.
    1. 대신해서 update wrapping function(소스) 안에 적절한 hook이 있는가 살펴봤는데 없습니다.

그래서

  1. 환경설정 변경시점에
    1. 로그를 찾아서 이전에 닉네임을 변경한 로그가 있으면
      1. 그것을 현재 닉네임과 비교해서 그 값이 다르면
        1. 기록을 출력
      2. 없으면 가입했을 때 닉네임을 찾아서[찾을 수 있는지 모르겠음] 그것을 현재 닉네임과 비교해서 그 값이 다르면
        1. 기록을 출력

을 생각하고 있습니다.

근데 뭔가 삽질 같아서… 누군가 저를 도와 주시면 제가 기프티콘이라도……드리겠습니다ㅠㅠㅠㅠ