Page 1 of 1

which code and where to change ?

Posted: Sat Jan 12, 2008 6:14 pm
by sakinolan
hi,i have a question about vbulletin forum script rss output :

rss output of the vbulletin forum is on (external.php) and only short story of the posts included in rss output, i mean forumposts are trimmed, i want to show all content of the forumpost on external.php.

here is the code for vbulletin forum rss page (external.php) :

Code: Select all

<?php
/*======================================================================*\
|| #################################################################### ||
|| # vBulletin 3.7.0 Beta 3
|| # ---------------------------------------------------------------- # ||
|| # Copyright ©2000–2007 Jelsoft Enterprises Ltd. All Rights Reserved. ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| #################################################################### ||
\*======================================================================*/
#phpinfo();
// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
 
// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NOSHUTDOWNFUNC', 1);
define('SKIP_SESSIONCREATE', 1);
define('DIE_QUIETLY', 1);
define('THIS_SCRIPT', 'external');
 
// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array('postbit');
 
// get special data templates from the datastore
$specialtemplates = array();
 
// pre-cache templates used by all actions
$globaltemplates = array(
    'bbcode_code_printable',
    'bbcode_html_printable',
    'bbcode_php_printable',
    'bbcode_quote_printable',
    'postbit_attachment',
    'postbit_attachmentimage',
    'postbit_attachmentthumbnail',
    'postbit_external',
);
 
// pre-cache templates used by specific actions
$actiontemplates = array();
 
// take the first of "forumids" and make it "forumid" for style stuff
// see bug #22743
if ($_REQUEST['forumids'])
{
    // quick way of getting the first value
    $_REQUEST['forumid'] = intval($_REQUEST['forumids']);
}
 
// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
 
// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################
 
// We don't want no stinkin' sessionhash
$vbulletin->session->vars['sessionurl'] =
$vbulletin->session->vars['sessionurl_q'] =
$vbulletin->session->vars['sessionurl_js'] =
$vbulletin->session->vars['sessionhash'] = '';
 
$vbulletin->input->clean_array_gpc('r', array(
    'forumid'  => TYPE_UINT,
    'forumids' => TYPE_STR,
    'type'     => TYPE_STR,
    'lastpost' => TYPE_BOOL,
    'nohtml'   => TYPE_BOOL,
    'fulldesc' => TYPE_BOOL,
    'count'    => TYPE_UINT,
));
 
($hook = vBulletinHook::fetch_hook('external_start')) ? eval($hook) : false;
 
$description = $vbulletin->options['description'];
$podcast = false;
// check to see if there is a forum preference
if ($vbulletin->GPC['forumid'])
{
    $vbulletin->GPC['forumids'] .= ',' . $vbulletin->GPC['forumid'];
}
 
if ($vbulletin->GPC['forumids'] != '')
{
    $forumchoice = array();
    $forumids = explode(',', $vbulletin->GPC['forumids']);
    foreach ($forumids AS $forumid)
    {
        $forumid = intval($forumid);
        $forumperms =& $vbulletin->userinfo['forumpermissions']["$forumid"];
 
        if (isset($vbulletin->forumcache["$forumid"])
            AND ($forumperms & $vbulletin->bf_ugp_forumpermissions['canview'])
            AND ($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers'])
            AND (($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR $vbulletin->GPC['type'] == 'JS') // JS only shows titles
            AND verify_forum_password($forumid, $vbulletin->forumcache["$forumid"]['password'], false)
        )
        {
            $forumchoice[] = $forumid;
        }
    }
 
    // Sort forums for caching purposes -- ensure they are in numeric order for best potential cache hit
    sort($forumchoice, SORT_NUMERIC);
    $forumchoice = array_unique($forumchoice);
 
    $number_of_forums = sizeof($forumchoice);
 
    if ($number_of_forums == 1)
    {
        $title = unhtmlspecialchars($vbulletin->forumcache["$forumchoice[0]"]['title_clean']);
        $description = unhtmlspecialchars($vbulletin->forumcache["$forumchoice[0]"]['description_clean']);
    }
    else if ($number_of_forums > 1)
    {
        $title = implode(',', $forumchoice);
    }
    else
    {
        $title = '';
    }
 
    if (!empty($forumchoice))
    {
        $forumsql = "AND thread.forumid IN(" . implode(',', $forumchoice) . ")";
    }
    else
    {
        $forumsql = "";
    }
}
else
{
    foreach (array_keys($vbulletin->forumcache) AS $forumid)
    {
        $forumperms =& $vbulletin->userinfo['forumpermissions']["$forumid"];
        if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']
            AND ($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewothers'])
            AND (($forumperms & $vbulletin->bf_ugp_forumpermissions['canviewthreads']) OR $vbulletin->GPC['type'] == 'JS') // JS only shows titles
            AND verify_forum_password($forumid, $vbulletin->forumcache["$forumid"]['password'], false)
        )
        {
            $forumchoice[] = $forumid;
        }
    }
 
    if (!empty($forumchoice))
    {
        $forumsql = "AND thread.forumid IN(" . implode(',', $forumchoice) . ")";
    }
    else
    {
        $forumsql = "";
    }
}
 
if (empty($forumchoice))
{   // no access to view selected forums
    exit;
}
 
$vbulletin->GPC['type'] = strtoupper($vbulletin->GPC['type']);
switch ($vbulletin->GPC['type'])
{
    case 'JS':
        if (!$vbulletin->options['externaljs'])
        {
            exit;
        }
        $vbulletin->GPC['nohtml'] = 0;
        break;
    case 'XML':
        if (!$vbulletin->options['externalxml'])
        {
            exit;
        }
        break;
    case 'RSS':
        $vbulletin->GPC['nohtml'] = 0;
    case 'RSS1':
    case 'RSS2':
        if (!$vbulletin->options['externalrss'])
        {
            exit;
        }
        break;
    default:
        $handled = false;
        ($hook = vBulletinHook::fetch_hook('external_type')) ? eval($hook) : false;
        if (!$handled)
        {
            if (!$vbulletin->options['externalrss'])
            {
                exit;
            }
            $vbulletin->GPC['type'] = 'RSS2';
        }
}
 
if (!$vbulletin->options['externalcount'])
{
    $vbulletin->options['externalcount'] = 15;
}
 
if (!$vbulletin->GPC['count'] OR $vbulletin->GPC['count'] > $vbulletin->options['externalcount'])
{
    $count = $vbulletin->options['externalcount'];
}
else
{
    $count = $vbulletin->GPC['count'];
}
 
if (!intval($vbulletin->options['externalcache']) OR $vbulletin->options['externalcache'] > 1440)
{
    $externalcache = 60;
}
else
{
    $externalcache = $vbulletin->options['externalcache'];
}
 
$cachetime = $externalcache * 60;
$cachehash = md5(
    $vbulletin->options['externalcutoff'] . '|' .
    $externalcache . '|' .
    $vbulletin->GPC['type'] . '|' .
    $vbulletin->GPC['lastpost'] . '|' .
    $vbulletin->GPC['nohtml'] . '|' .
    $vbulletin->GPC['fulldesc'] . '|' .
    $count . '|' .
    $forumsql
);
 
if ($_SERVER['HTTP_IF_NONE_MATCH'] == "\"$cachehash\"" AND !empty($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
    $timediff = strtotime(gmdate('D, d M Y H:i:s') . ' GMT') - strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
    if ($timediff <= $cachetime)
    {
        $db->close();
        if (SAPI_NAME == 'cgi' OR SAPI_NAME == 'cgi-fcgi')
        {
            header('Status: 304 Not Modified');
        }
        else
        {
            header('HTTP/1.1 304 Not Modified');
        }
        exit;
    }
}
 
if ($foundcache = $db->query_first_slave("
    SELECT text, headers, dateline
    FROM " . TABLE_PREFIX . "externalcache
    WHERE cachehash = '" . $db->escape_string($cachehash) . "' AND
         dateline >= " . (TIMENOW - $cachetime) . "
"))
{
    $db->close();
    if (!empty($foundcache['headers']))
    {
        $headers = unserialize($foundcache['headers']);
        if (!empty($headers))
        {
            foreach($headers AS $header)
            {
                header($header);
            }
        }
    }
    echo $foundcache['text'];
    exit;
}
 
$cutoff = (!$vbulletin->options['externalcutoff']) ? 0 : TIMENOW - $vbulletin->options['externalcutoff'] * 86400;
 
// remove threads from users on the global ignore list if user is not a moderator
$globalignore = '';
if (trim($vbulletin->options['globalignore']) != '')
{
    require_once(DIR . '/includes/functions_bigthree.php');
    if ($Coventry = fetch_coventry('string'))
    {
        $globalignore = "AND postuserid NOT IN ($Coventry) ";
    }
}
 
$hook_query_fields = $hook_query_joins = $hook_query_where = '';
($hook = vBulletinHook::fetch_hook('external_query')) ? eval($hook) : false;
 
$threadcache = array();
// query last threads from visible / chosen forums
$threads = $db->query_read_slave("
    SELECT thread.threadid, thread.title, thread.prefixid, post.attach,
        " . ($vbulletin->GPC['lastpost']
            ? "thread.lastposter AS postusername, thread.lastpost AS dateline,"
            : "thread.postusername, thread.dateline, podcastitem.*,")
        . "
        forum.forumid,
        post.pagetext AS message, post.allowsmilie, post.postid
        $hook_query_fields
    FROM " . TABLE_PREFIX . "thread AS thread
    INNER JOIN " . TABLE_PREFIX . "forum AS forum ON(forum.forumid = thread.forumid)
    " . ($vbulletin->GPC['lastpost']
        ? "LEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = thread.lastpostid)"
        : "LEFT JOIN " . TABLE_PREFIX . "post AS post ON (post.postid = thread.firstpostid)
            LEFT JOIN " . TABLE_PREFIX . "podcastitem AS podcastitem ON (podcastitem.postid = thread.firstpostid)")
    . "
    $hook_query_joins
    WHERE 1=1
        $forumsql
        AND thread.visible = 1
        AND post.visible = 1
        AND open <> 10
        AND " . ($vbulletin->GPC['lastpost'] ? "thread.lastpost" : "thread.dateline") . " > $cutoff
        $globalignore
        $hook_query_where
    ORDER BY " . ($vbulletin->GPC['lastpost'] ? "thread.lastpost DESC" : "thread.dateline DESC") . "
    LIMIT $count
");
 
$postids = array();
while ($thread = $db->fetch_array($threads))
{ // fetch the threads
    // remove sessionhash from urls:
    $thread['prefix_plain'] = ($thread['prefixid'] ? htmlspecialchars_uni($vbphrase["prefix_$thread[prefixid]_title_plain"]) . ' ' : '');
    $threadcache[] = $thread;
    if ($thread['attach'])
    {
        $postids["$thread[postid]"] = $thread['threadid'];
    }
}
$lastmodified = (!empty($thread[0]['dateline']) ? $thread[0]['dateline'] : TIMENOW);
$expires = TIMENOW + $cachetime;
 
$attachmentcache = array();
if (!$vbulletin->GPC['nohtml'] AND !empty($postids) AND ($vbulletin->GPC['type'] == 'RSS1' OR $vbulletin->GPC['type'] == 'RSS2'))
{
    $attachments = $db->query_read_slave("
        SELECT dateline, thumbnail_dateline, filename, filesize, visible, attachmentid, counter, attachmenttype.mimetype,
            postid, IF(thumbnail_filesize > 0, 1, 0) AS hasthumbnail, thumbnail_filesize,
            attachmenttype.thumbnail AS build_thumbnail, attachmenttype.newwindow
        FROM " . TABLE_PREFIX . "attachment
        LEFT JOIN " . TABLE_PREFIX . "attachmenttype AS attachmenttype USING (extension)
        WHERE postid IN (" . implode(', ', array_keys($postids)) . ")
        ORDER BY attachmentid
    ");
    while ($attachment = $db->fetch_array($attachments))
    {
        if (!$attachment['build_thumbnail'])
        {
            $attachment['hasthumbnail'] = false;
        }
        $attachmentcache["{$postids[$attachment[postid]]}"]["$attachment[attachmentid]"] = $attachment;
    }
}
 
if ($number_of_forums == 1 AND $vbulletin->GPC['type'] == 'RSS2' AND $vbulletin->options['rsspodcast'])
{
    $podcastinfo = $db->query_first_slave("
        SELECT *
        FROM " . TABLE_PREFIX . "podcast
        WHERE forumid = $forumid AND enabled = 1
    ");
    $podcastforumid = $forumchoice[0];
}
else
{
    $podcastforumid = 0;
}
 
$output = '';
$headers = array();
if ($vbulletin->GPC['type'] == 'JS')
{ // javascript output
    $output = "
    function thread(threadid, title, poster, threaddate, threadtime)
    {
        this.threadid = threadid;
        this.title = title;
        this.poster = poster;
        this.threaddate = threaddate;
        this.threadtime = threadtime;
    }
    ";
    $output .= "var threads = new Array(" . sizeof ($threadcache) . ");\r\n";
    if (!empty($threadcache))
    {
        foreach ($threadcache AS $threadnum => $thread)
        {
            $thread['title'] = addslashes_js($thread['prefix_plain'] . $thread['title']);
            $thread['poster'] = addslashes_js($thread['postusername']);
            $output .= "\tthreads[$threadnum] = new thread($thread[threadid], '$thread[title]', '$thread[poster]', '" . addslashes_js(vbdate($vbulletin->options['dateformat'], $thread['dateline'])) . "', '" . addslashes_js(vbdate($vbulletin->options['timeformat'], $thread['dateline'])) . "');\r\n";
        }
    }
}
else if ($vbulletin->GPC['type'] == 'XML')
{ // XML output
 
    // set XML type and nocache headers
    $headers[] = 'Cache-control: max-age=' . $expires;
    $headers[] = 'Expires: ' . gmdate('D, d M Y H:i:s', $expires) . ' GMT';
    $headers[] = 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT';
    $headers[] = 'ETag: "' . $cachehash . '"';
    $headers[] = 'Content-Type: text/xml' . ($stylevar['charset'] != '' ? '; charset=' .  $stylevar['charset'] : '');
 
    // print out the page header
    $output = '<?xml version="1.0" encoding="' . $stylevar['charset'] . '"?>' . "\r\n";
    require_once(DIR . '/includes/class_xml.php');
    $xml = new vB_XML_Builder($vbulletin);
    $xml->add_group('source');
        $xml->add_tag('url', $vbulletin->options['bburl']);
 
    // list returned threads
    if (!empty($threadcache))
    {
        foreach ($threadcache AS $thread)
        {
            $xml->add_group('thread', array('id' => $thread['threadid']));
                $xml->add_tag('title', $thread['prefix_plain'] . unhtmlspecialchars($thread['title']));
                $xml->add_tag('author', unhtmlspecialchars($thread['postusername']));
                $xml->add_tag('date', vbdate($vbulletin->options['dateformat'], $thread['dateline']));
                $xml->add_tag('time', vbdate($vbulletin->options['timeformat'], $thread['dateline']));
            $xml->close_group('thread');
        }
    }
    $xml->close_group('source');
    $output .= $xml->output();
    unset($xml);
}
else if (in_array($vbulletin->GPC['type'], array('RSS', 'RSS1', 'RSS2')))
{ // RSS output
    // setup the board title
 
    if (empty($title))
    { // just show board title
        $rsstitle = $vbulletin->options['bbtitle'];
    }
    else
    { // show board title plus selection
        $rsstitle = $vbulletin->options['bbtitle'] . " - $title";
    }
    $rssicon = create_full_url($stylevar['imgdir_misc'] . '/rss.jpg');
 
    $headers[] = 'Cache-control: max-age=' . $expires;
    $headers[] = 'Expires: ' . gmdate("D, d M Y H:i:s", $expires) . ' GMT';
    $headers[] = 'Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT';
    $headers[] = 'ETag: "' . $cachehash . '"';
    $headers[] = 'Content-Type: text/xml' . ($stylevar['charset'] != '' ? '; charset=' .  $stylevar['charset'] : '');
 
    $output = '<?xml version="1.0" encoding="' . $stylevar['charset'] . '"?>' . "\r\n\r\n";
 
    # Each specs shared code is entered in full (duplicated) to make it easier to read
    switch($vbulletin->GPC['type'])
    {
        case 'RSS':
            require_once(DIR . '/includes/class_xml.php');
            $xml = new vB_XML_Builder($vbulletin);
            $xml->add_group('rss', array('version' => '0.91'));
                $xml->add_group('channel');
                    $xml->add_tag('title', $rsstitle);
                    $xml->add_tag('link', $vbulletin->options['bburl'], array(), false, true);
                    $xml->add_tag('description', $description);
                    $xml->add_tag('language', $stylevar['languagecode']);
                    $xml->add_group('image');
                        $xml->add_tag('url', $rssicon);
                        $xml->add_tag('title', $rsstitle);
                        $xml->add_tag('link', $vbulletin->options['bburl'], array(), false, true);
                    $xml->close_group('image');
        break;
        case 'RSS1':
            if ($externalcache <= 60)
            {
                $updateperiod = 'hourly';
                $updatefrequency = round(60 / $externalcache);
            }
            else
            {
                $updateperiod = 'daily';
                $updatefrequency = round(1440 / $externalcache);
            }
 
            require_once(DIR . '/includes/class_xml.php');
            $xml = new vB_XML_Builder($vbulletin);
            $xml->add_group('rdf:RDF', array(
                'xmlns:rdf'     => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
                'xmlns:dc'      => 'http://purl.org/dc/elements/1.1/',
                'xmlns:syn'     => 'http://purl.org/rss/1.0/modules/syndication/',
                'xmlns:content' => 'http://purl.org/rss/1.0/modules/content/',
                'xmlns'         => 'http://purl.org/rss/1.0/',
            ));
 
            $xml->add_group('channel', array(
                'rdf:about' => $vbulletin->options['bburl']
            ));
                $xml->add_tag('title', $rsstitle);
                $xml->add_tag('link', $vbulletin->options['bburl'], array(), false, true);;
                $xml->add_tag('description', $description);
                $xml->add_tag('syn:updatePeriod', $updateperiod);
                $xml->add_tag('syn:updateFrequency', $updatefrequency);
                $xml->add_tag('syn:updateBase', '1970-01-01T00:00Z');
                $xml->add_tag('dc:language', $stylevar['languagecode']);
                $xml->add_tag('dc:creator', 'vBulletin');
                $xml->add_tag('dc:date', gmdate('Y-m-d\TH:i:s') . 'Z');
                $xml->add_group('items');
                    $xml->add_group('rdf:Seq');
                        $xml->add_tag('rdf:li', '', array('rdf:resource' => $vbulletin->options['bburl']));
                    $xml->close_group('rdf:Seq');
                $xml->close_group('items');
                $xml->add_group('image');
                    $xml->add_tag('url', $rssicon);
                    $xml->add_tag('title', $rsstitle);
                    $xml->add_tag('link', $vbulletin->options['bburl'], array(), false, true);;
                $xml->close_group('image');
            $xml->close_group('channel');
 
            if (!$vbulletin->GPC['nohtml'])
            {
                require_once(DIR . '/includes/class_postbit.php');
                $postbit_factory =& new vB_Postbit_Factory();
                $postbit_factory->registry =& $vbulletin;
                $postbit_factory->bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
                $postbit_factory->bbcode_parser->printable = true;
            }
            require_once(DIR . '/includes/class_bbcode_alt.php');
 
        break;
        case 'RSS2':
            require_once(DIR . '/includes/class_xml.php');
            $xml = new vB_XML_Builder($vbulletin);
            $rsstag = array(
                'version'       => '2.0',
                'xmlns:dc'      => 'http://purl.org/dc/elements/1.1/',
                'xmlns:content' => 'http://purl.org/rss/1.0/modules/content/'
            );
            if ($podcastinfo)
            {
                $rsstag['xmlns:itunes'] = 'http://www.itunes.com/dtds/podcast-1.0.dtd';
            }
            $xml->add_group('rss', $rsstag);
                $xml->add_group('channel');
                    $xml->add_tag('title', $rsstitle);
                    $xml->add_tag('link', $vbulletin->options['bburl'], array(), false, true);
                    $xml->add_tag('description', $description);
                    $xml->add_tag('language', $stylevar['languagecode']);
                    $xml->add_tag('lastBuildDate', gmdate('D, d M Y H:i:s') . ' GMT');
                    #$xml->add_tag('pubDate', gmdate('D, d M Y H:i:s') . ' GMT');
                    $xml->add_tag('generator', 'vBulletin');
                    $xml->add_tag('ttl', $externalcache);
                    $xml->add_group('image');
                        $xml->add_tag('url', $rssicon);
                        $xml->add_tag('title', $rsstitle);
                        $xml->add_tag('link', $vbulletin->options['bburl'], array(), false, true);
                    $xml->close_group('image');
                    if ($podcastinfo['subtitle'])
                    {
                        $xml->add_tag('itunes:subtitle', $podcastinfo['subtitle']);
                    }
                    if ($podcastinfo['author'])
                    {
                        $xml->add_tag('itunes:author', $podcastinfo['author']);
                    }
                    if ($podcastinfo['summary'])
                    {
                        $xml->add_tag('itunes:summary', $podcastinfo['summary']);
                    }
                    if ($podcastinfo['owneremail'] OR $podcasinfo['ownername'])
                    {
                        $xml->add_group('itunes:owner');
                            if ($podcastinfo['ownername'])
                            {
                                $xml->add_tag('itunes:name', $podcastinfo['ownername']);
                            }
                            if ($podcastinfo['owneremail'])
                            {
                                $xml->add_tag('itunes:email', $podcastinfo['owneremail']);
                            }
                        $xml->close_group('itunes:owner');
                    }
                    if ($podcastinfo['image'])
                    {
                        $xml->add_tag('itunes:image', '', array('href' => $podcastinfo['image']));
                    }
                    if ($podcastinfo['keywords'])
                    {
                        $xml->add_tag('itunes:keywords', $podcastinfo['keywords']);
                    }
                    if ($podcastinfo['category'])
                    {
                        if ($category = unserialize($podcastinfo['category']))
                        {
                            if (count($category) == 1)
                            {
                                $xml->add_tag('itunes:category', '', array('text' => $category[0]));
                            }
                            else
                            {
                                $xml->add_group('itunes:category', array('text' => array_shift($category)));
                                foreach($category AS $cat)
                                {
                                    $xml->add_tag('itunes:category', '', array('text' => $cat));
                                }
                                $xml->close_group('itunes:category');
                            }
                        }
                    }
                    if ($podcastinfo)
                    {
                        $xml->add_tag('itunes:explicit', $podcastinfo['explicit'] == 1 ? 'yes' : 'no');
                    }
 
            if (!$vbulletin->GPC['nohtml'])
            {
                require_once(DIR . '/includes/class_postbit.php');
                $postbit_factory =& new vB_Postbit_Factory();
                $postbit_factory->registry =& $vbulletin;
                $postbit_factory->bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
                $postbit_factory->bbcode_parser->printable = true;
            }
            require_once(DIR . '/includes/class_bbcode_alt.php');
        break;
    }
 
    $i = 0;
    $viewattachedimages = $vbulletin->options['viewattachedimages'];
    $attachthumbs = $vbulletin->options['attachthumbs'];
 
    // list returned threads
    if (!empty($threadcache))
    {
        foreach ($threadcache AS $thread)
        {
            switch($vbulletin->GPC['type'])
            {
                case 'RSS':
                    $xml->add_group('item');
                        $xml->add_tag('title', $thread['prefix_plain'] . unhtmlspecialchars($thread['title']));
                        $xml->add_tag('link', $vbulletin->options['bburl'] . "/showthread.php?t=$thread[threadid]&goto=newpost", array(), false, true);
                        $xml->add_tag('description', "$vbphrase[forum]: " . unhtmlspecialchars($vbulletin->forumcache["$thread[forumid]"]['title_clean']) . "\r\n$vbphrase[posted_by]: " . unhtmlspecialchars($thread['postusername']) . "\r\n" .
                            construct_phrase($vbphrase['post_time_x_at_y'], vbdate($vbulletin->options['dateformat'], $thread['dateline']), vbdate($vbulletin->options['timeformat'], $thread['dateline'])));
                    $xml->close_group('item');
                    break;
                case 'RSS1':
                    $xml->add_group('item', array('rdf:about' => $vbulletin->options['bburl'] . "/showthread.php?t=$thread[threadid]"));
                        $xml->add_tag('title', $thread['prefix_plain'] . unhtmlspecialchars($thread['title']));
                        $xml->add_tag('link', $vbulletin->options['bburl'] . "/showthread.php?t=$thread[threadid]&goto=newpost", array(), false, true);
 
                    $plaintext_parser =& new vB_BbCodeParser_PlainText($vbulletin, fetch_tag_list());
                    $plainmessage = $plaintext_parser->parse($thread['message'], $thread['forumid']);
                    unset($plaintext_parser);
 
                    if ($vbulletin->GPC['fulldesc'])
                    {
                        $xml->add_tag('description', $plainmessage);
                    }
                    else
                    {
                        $xml->add_tag('description', fetch_trimmed_title($plainmessage, $vbulletin->options['threadpreview']));
                    }
 
                    if (!$vbulletin->GPC['nohtml'])
                    {
                        $thread['attachments'] =& $attachmentcache["$thread[threadid]"];
                        $forumperms = fetch_permissions($thread['forumid']);
                        $postbit_factory->thread =& $thread;
                        $postbit_factory->cache = array();
                        if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment']))
                        {
                            $vbulletin->options['viewattachedimages'] = 0;
                            $vbulletin->options['attachthumbs'] = 0;
                        }
                        else
                        {
                            $vbulletin->options['viewattachedimages'] = $viewattachedimages;
                            $vbulletin->options['attachthumbs'] = $attachthumbs;
                        }
                        $postbit_obj =& $postbit_factory->fetch_postbit('external');
                        $message = $postbit_obj->construct_postbit($thread);
                        $xml->add_tag('content:encoded', $message);
                    }
 
                        $xml->add_tag('dc:date', gmdate('Y-m-d\TH:i:s', $thread['dateline']) . 'Z');
                        $xml->add_tag('dc:creator', unhtmlspecialchars($thread['postusername']));
                        $xml->add_tag('dc:subject', unhtmlspecialchars($vbulletin->forumcache["$thread[forumid]"]['title_clean']));
                    $xml->close_group('item');
                    break;
                case 'RSS2':
                    $xml->add_group('item');
                        $xml->add_tag('title', $thread['prefix_plain'] . unhtmlspecialchars($thread['title']));
                        $xml->add_tag('link', $vbulletin->options['bburl'] . "/showthread.php?t=$thread[threadid]&goto=newpost", array(), false, true);
                        $xml->add_tag('pubDate', gmdate('D, d M Y H:i:s', $thread['dateline']) . ' GMT');
 
                    $plaintext_parser =& new vB_BbCodeParser_PlainText($vbulletin, fetch_tag_list());
                    $plainmessage = $plaintext_parser->parse($thread['message'], $thread['forumid']);
                    unset($plaintext_parser);
 
                    if ($vbulletin->GPC['fulldesc'])
                    {
                        $xml->add_tag('description', $plainmessage);
                    }
                    else
                    {
                        $xml->add_tag('description', fetch_trimmed_title($plainmessage, $vbulletin->options['threadpreview']));
                    }
 
                    if (!$vbulletin->GPC['nohtml'])
                    {
                        $thread['attachments'] =& $attachmentcache["$thread[threadid]"];
                        $forumperms = fetch_permissions($thread['forumid']);
                        $postbit_factory->thread =& $thread;
                        $postbit_factory->cache = array();
                        if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['cangetattachment']))
                        {
                            $vbulletin->options['viewattachedimages'] = 0;
                            $vbulletin->options['attachthumbs'] = 0;
                        }
                        else
                        {
                            $vbulletin->options['viewattachedimages'] = $viewattachedimages;
                            $vbulletin->options['attachthumbs'] = $attachthumbs;
                        }
                        $postbit_obj =& $postbit_factory->fetch_postbit('external');
                        $message = $postbit_obj->construct_postbit($thread);
                        $xml->add_tag('content:encoded', $message);
                        unset($message);
                    }
 
                    $xml->add_tag('category', unhtmlspecialchars($vbulletin->forumcache["$thread[forumid]"]['title_clean']), array('domain' => $vbulletin->options['bburl'] . "/forumdisplay.php?f=$thread[forumid]"));
                    $xml->add_tag('dc:creator', unhtmlspecialchars($thread['postusername']));
                    $xml->add_tag('guid', $vbulletin->options['bburl'] . "/showthread.php?t=$thread[threadid]", array('isPermaLink' => 'true'));
 
                    if ($vbulletin->options['rsspodcast'] AND $podcastinfo)
                    {
                        $xml->add_tag('itunes:explicit', $thread['explicit'] == 1 ? 'yes' : 'no');
                        if ($thread['keywords'])
                        {
                            $xml->add_tag('itunes:keywords', $thread['keywords']);
                        }
                        if ($thread['subtitle'])
                        {
                            $xml->add_tag('itunes:subtitle', $thread['subtitle']);
                        }
                        if ($thread['author'])
                        {
                            $xml->add_tag('itunes:author', $thread['author']);
                        }
                        if ($thread['url'])
                        {
                            switch(file_extension($thread['url']))
                            {
                                case 'mp3':
                                    $type = 'audio/mpg';
                                    break;
                                case 'm4a':
                                    $type = 'audio/x-m4a';
                                    break;
                                case 'mp4':
                                    $type = 'video/mp4';
                                    break;
                                case 'm4v':
                                    $type = 'video/x-m4v';
                                    break;
                                case 'mov':
                                    $type = 'video/quicktime';
                                    break;
                                case 'pdf':
                                    $type = 'application/pdf';
                                    break;
                                default:
                                    $type = 'unknown/unknown';
                            }
 
                            $xml->add_tag('enclosure', '', array(
                                'url'    => $thread['url'],
                                'length' => $thread['length'],
                                'type'   => $type
                            ));
                        }
                        else if ($attachmentcache["$thread[threadid]"])
                        {
                            $type = 'unknown/unknown';
                            $attach = array_shift($attachmentcache["$thread[threadid]"]);
                            $mimetype = unserialize($attach['mimetype']);
                            foreach ($mimetype AS $header)
                            {
                                if (preg_match('#Content-type:(.*)$#si', $header, $matches))
                                {
                                    $type = trim($matches[1]);
                                    break;
                                }
                            }
                            if ((strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' AND stristr($_SERVER['SERVER_SOFTWARE'], 'apache') === false) OR (strpos(SAPI_NAME, 'cgi') !== false AND @!ini_get('cgi.fix_pathinfo')))
                            {
                                $filename = $vbulletin->options['bburl'] . "/attachment.php?attachmentid=$attach[attachmentid]&dateline=$attach[dateline]&filename=" . urlencode($attach['filename']);
                            }
                            else
                            {
                                $filename = $vbulletin->options['bburl'] . "/attachment.php/$attach[attachmentid]/" . urlencode($attach['filename']);
                            }
                            $xml->add_tag('enclosure', '', array(
                                'url'    => $filename,
                                'length' => $attach['filesize'],
                                'type'   => $type
                            ));
                        }
                    }
 
                    $xml->close_group('item');
                    break;
            }
        }
    }
 
    switch($vbulletin->GPC['type'])
    {
        case 'XML':
        case 'JS':
            break;;
        case 'RSS1':
            $xml->close_group('rdf:RDF');
            $output .= $xml->output();
            unset($xml);
            break;
        case 'RSS':
            $output .= '<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\r\n";
                $xml->close_group('channel');
            $xml->close_group('rss');
            $output .= $xml->output();
            unset($xml);
            break;
        case 'RSS2':
                $xml->close_group('channel');
            $xml->close_group('rss');
            $output .= $xml->output();
            unset($xml);
    }
}
 
$insert_cache = true;
($hook = vBulletinHook::fetch_hook('external_complete')) ? eval($hook) : false;
 
if ($insert_cache)
{
    $db->query_write("
        REPLACE INTO " . TABLE_PREFIX . "externalcache
            (cachehash, dateline, text, headers, forumid)
        VALUES
            (
                '" . $db->escape_string($cachehash) . "',
                " . TIMENOW . ",
                '" . $db->escape_string($output) . "',
                '" . $db->escape_string(serialize($headers)) . "',
                " . intval($podcastforumid) . "
            )
    ");
}
$db->close();
 
foreach ($headers AS $header)
{
    header($header);
}
echo $output;
 
/*======================================================================*\
|| ####################################################################
|| #
|| # CVS: $RCSfile$ - $Revision: 24621 $
|| ####################################################################
\*======================================================================*/
?>
which code should i change here ? thanks...

Re: which code and where to change ?

Posted: Sat Jan 12, 2008 7:01 pm
by Kieran Huggins
what do you want to do?

Re: which code and where to change ?

Posted: Sat Jan 12, 2008 10:02 pm
by s.dot
If you want to show the full contents rather than a briefing, you'll have to change the part that is limiting either the selection of the data or the display of the data.

Re: which code and where to change ?

Posted: Sun Jan 13, 2008 6:14 am
by sakinolan
yes i want to show the full contents can you write which code and how can i change ? i'm a newbie so can you please write simply ? thank you...

Re: which code and where to change ?

Posted: Sun Jan 13, 2008 9:47 am
by sakinolan
any ideas ? i think i've asked a hard question...

Re: which code and where to change ?

Posted: Sun Jan 13, 2008 9:42 pm
by John Cartwright
sakinolan wrote:any ideas ? i think i've asked a hard question...
Not so much of a hard question necessarily, but you've asked us to look at a lot of code. Often people, admittedly myself sometimes, skip long posts since there are a lot of posts to cover overall.

and there is always http://www.vbulletin.com/forum/

Re: which code and where to change ?

Posted: Sun Jan 13, 2008 9:45 pm
by Ambush Commander
You should ask the vBulletin people; they'll be more familiar with the forum's internals.