주제: RSS Reader 문제점
얼마전 리더기능 개선하다가 확인한 것입니다. 이미 패치가 된 것인지 어떤지는 잘 모르겠네요..
피드 업데이트시, 가져온 글의 퍼머링크가 {prefix}FeedItems 에 이미 존재하는 경우 업데이트된 것으로 보고 insert 하지 않게 되어있더군요.
문제는 같은 URL 이라 하더라도 {prefix}Feeds 와 더불어 {prefix}FeedItems 에 저장된 글이 사용자에게 보여질때는 해당 owner 를 체크합니다.
예를들어, owner 1 이 domain.com/rss 를 피드 등록해서 {prefix}Feeds 의 id 1 로 저장되었다고 가정합니다.
owner 2 역시 domain.com/rss 를 등록하게 되면 이것은 {prefix}Feeds 의 id 2 인 피드로 저장이 됩니다.
owner 1 이 먼저 피드 업데이트를 하는 경우, 이 글들은 {prefix}FeedItems 에 feed 1 로 등록이 되지만 이 글들을 owner 2 에서는 가져오지 못합니다.
그러나 owner 2 가 업데이트 과정을 진행하면 가져온 글들은 이미 등록되어 있는것으로 인식되어 insert 가 일어나지 않습니다.
blog/owner/reader/update/index.php 의 316번째 줄에서,
if($id=fetchQueryCell("SELECT id FROM {$database['prefix']}FeedItems WHERE permalink='{$item['permalink']}'")){
구문을
if($id=fetchQueryCell("SELECT id FROM {$database['prefix']}FeedItems WHERE feed='{$feedId}' and permalink='{$item['permalink']}'")){
로 바꾸어주어야 합니다.
다만 이 방법은 db 자원을 낭비할 수 있기 때문에 썩 좋은 방법은 아닙니다. 그러나 permalink 를 기준으로 삼아 자료를 공유하도록 하려면 {prefix}Feeds 를 비롯한 피드 정보 처리 방법을 모두 바꾸어 주어야 하기 때문에 일단 이 정도로도 특별한 문제없이 사용할 수 있습니다.