Changeset 5144

Show
Ignore:
Timestamp:
01/27/08 16:25:02 (10 months ago)
Author:
inureyes
Message:

#774

  • 트랙백 RSS 지원


Location:
trunk
Files:
2 added
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/model/blog.rss.php

    r5003 r5144  
    216216} 
    217217 
     218 
     219function getTrackbackRSSTotal($blogid) { 
     220    global $database, $serviceURL, $defaultURL, $blogURL, $blog, $service; 
     221 
     222    if(empty($blogid)) $blogid = getBlogId(); 
     223 
     224    $channel = array(); 
     225    $channel['title'] = $blog['title']. ': '._text('최근 트랙백 목록'); 
     226    $channel['link'] = "$defaultURL/"; 
     227    $channel['description'] = $blog['description']; 
     228    $channel['language'] = $blog['language']; 
     229    $channel['pubDate'] = Timestamp::getRFC1123(); 
     230    $channel['generator'] = TEXTCUBE_NAME . ' ' . TEXTCUBE_VERSION; 
     231 
     232    if (!empty($blog['logo']) && file_exists(ROOT."/attach/$blogid/{$blog['logo']}")) { 
     233        $logoInfo = getimagesize(ROOT."/attach/$blogid/{$blog['logo']}"); 
     234        $channel['url'] = $serviceURL."/attach/".$blogid."/".$blog['logo']; 
     235        $channel['width'] = $logoInfo[0]; 
     236        $channel['height'] = $logoInfo[1]; 
     237    } 
     238    $result = getRecentTrackbacks($blogid, 20, true); 
     239    if (!$result) 
     240        $result = array(); 
     241 
     242    $channel['items'] = array(); 
     243    foreach($result as $row) { 
     244        $trackbackURL = $defaultURL."/".$row['entry']."#trackback"; 
     245        $content = htmlspecialchars($row['excerpt']); 
     246        $item = array( 
     247            'id' => $row['id'],  
     248            'title' => $row['subject'],  
     249            'link' => $trackbackURL.$row['id'],  
     250            'categories' => array(), 'description' => $content,  
     251            'author' => '('.htmlspecialchars($row['site']).')',  
     252            'pubDate' => Timestamp::getRFC1123($row['written']), 
     253            'comments' => $trackbackURL, 
     254            'guid' => $trackbackURL 
     255        ); 
     256        array_push($channel['items'], $item); 
     257    } 
     258    $rss = array('channel' => $channel); 
     259    return publishRSS($blogid, $rss); 
     260} 
     261 
     262function getTrackbackRSSByEntryId($blogid, $entryId) { 
     263    global $database, $serviceURL, $defaultURL, $blogURL, $blog, $service; 
     264 
     265    if(empty($blogid)) $blogid = getBlogId(); 
     266    $entry = POD::queryRow("SELECT slogan, visibility, category FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id = $entryId"); 
     267    if(empty($entry)) return false; 
     268    if($entry['visibility'] < 2) return false; 
     269    if(in_array($entry['category'], getCategoryVisibilityList($blogid, 'private'))) return false; 
     270    $channel = array(); 
     271    $channel['title'] = $blog['title']. ': '._textf('%1 에 달린 트랙백',$entry['slogan']); 
     272    if($blog['useSlogan']) { 
     273        $channel['link'] = $defaultURL."/entry/".URL::encode($entry['slogan'],true); 
     274    } else { 
     275        $channel['link'] = $defaultURL."/".$entryId; 
     276    } 
     277    $channel['description'] = $blog['description']; 
     278    $channel['language'] = $blog['language']; 
     279    $channel['pubDate'] = Timestamp::getRFC1123(); 
     280    $channel['generator'] = TEXTCUBE_NAME . ' ' . TEXTCUBE_VERSION; 
     281 
     282    if (!empty($blog['logo']) && file_exists(ROOT."/attach/$blogid/{$blog['logo']}")) { 
     283        $logoInfo = getimagesize(ROOT."/attach/$blogid/{$blog['logo']}"); 
     284        $channel['url'] = $serviceURL."/attach/".$blogid."/".$blog['logo']; 
     285        $channel['width'] = $logoInfo[0]; 
     286        $channel['height'] = $logoInfo[1]; 
     287    } 
     288    $result = POD::queryAll("SELECT * 
     289        FROM {$database['prefix']}Trackbacks 
     290        WHERE blogid = ".$blogid."  
     291            AND entry = ".$entryId." 
     292            AND isFiltered = 0"); 
     293    if (!$result) 
     294        $result = array(); 
     295 
     296    $channel['items'] = array(); 
     297 
     298    foreach($result as $row) { 
     299        $trackbackURL = $channel['link']."#trackback"; 
     300        $content = htmlspecialchars($row['excerpt']); 
     301        $item = array( 
     302            'id' => $row['id'],  
     303            'title' => $row['subject'],  
     304            'link' => $channel['link']."#trackback".$row['id'],  
     305            'categories' => array(), 'description' => $content,  
     306            'author' => '('.htmlspecialchars($row['site']).')',  
     307            'pubDate' => Timestamp::getRFC1123($row['written']), 
     308            'comments' => $trackbackURL, 
     309            'guid' => $trackbackURL 
     310        ); 
     311        array_push($channel['items'], $item); 
     312    } 
     313    $rss = array('channel' => $channel); 
     314    return publishRSS($blogid, $rss); 
     315} 
     316 
    218317function publishRSS($blogid, $data) { 
    219318    global $blog; 
  • trunk/lib/model/blog.trackback.php

    r5085 r5144  
    7575} 
    7676 
    77 function getRecentTrackbacks($blogid, $count = false) { 
     77function getRecentTrackbacks($blogid, $count = false, $guestShip = false) { 
    7878    global $database; 
    7979    global $skinSetting; 
    80     $sql = doesHaveOwnership() ? "SELECT t.*, e.slogan  
     80    $sql = (doesHaveOwnership() && !$guestShip) ? "SELECT t.*, e.slogan  
    8181        FROM  
    8282            {$database['prefix']}Trackbacks t