안녕하세요.
http://blog.papermodel.org 를 운영하고 있는 사람입니다.
텍스트큐브 1.6.3을 사용하다가 1.7로 업그레이드를 했습니다.
20여명이 다중 사용자 모드로 블로그를 사용하고 있는데요.
관리자 로그인 상태와 비 로그인 상태에서 사이드 바쪽에 태그 구름이 다르게 출력되는 문제로 질문을 올렸었습니다.
전에도 같은 문제(http://forum.tattersite.com/ko/viewtopic.php?id=5722)가 있는 사용자가 있었던것 같은데, 별다른 해결책이 없어서 혼자 그냥 소스를 들여다 보았는데요. 해결 비슷하게 되어서 한번 보시라고 올려봅니다. 제가 제대로 고친건지, 아니면 더 좋은 방법이 있는지요.
=====
http://forum.tattersite.com/ko/viewtopic.php?id=5778
이 글을 올렸었고요.
문제가 된다고 추정되는 부분은 lib/model/blog.tag.php 입니다.
38번째줄에 getRandomTags 함수가 있는데요.
태그 빈도수, 이름수, 임의수순으로 태그를 뽑아오는 부분인것 같습니다.
각각 관리자 로그인 상태와 비 로그인 상태를 구분하여 태그를 뽑아오는데요.
(비공개 포스트의 경우에는 관리자 로그인 상태에서만 해당 태그를 뽑아오네요.)
49~54, 63~68, 76~81 줄이 비 로그인 상태에서 태그를 뽑아오는 부분인데요.
52번째줄을 보면
WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.blogid = $blogid
이렇게 되어 있는데요.
아래 처럼 진하게 표시한 부분을 추가하면
WHERE r.entry = e.id AND e.visibility > 0 AND t.id = r.tag AND r.blogid = $blogid AND e.blogid = $blogid
비 로그인 상태에서도 정상적인 방법으로 태그를 뽑아 오더라고요.
다중 사용자 모드에서 기존 방법 처럼 (비 로그인 상태에서) 태그를 뽑게 되면 r.entry = e.id 이 부분에서 블로그 아이디가 다르더라 하더라도 entry id만 같으면 그것도 같이 계산에 추가가 되어 해당 엔트리 아이디만큼 태그 빈도수가 늘어나는 것 같습니다. 그래서 태그를 뽑아올때 엔트리 아이디와 블로그 아이디 모두를 조건에 넣어주면 현재 해당하는 블로그에서만 태그를 가져오는 것 같습니다.
66, 79번째 줄에도 끝에 AND e.blogid = $blogid 이렇게만 더해주면 될것 같습니다.
블로그를 혼자 사용하시는 분들은 해당사항 없고요.
다중 사용자 모드로 사용하시는 분들은 좀 생각해볼 만할 문제인것 같네요.