which code and where to change ?

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
sakinolan
Forum Newbie
Posts: 3
Joined: Sat Jan 12, 2008 6:07 pm

which code and where to change ?

Post 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...
Last edited by sakinolan on Sun Jan 13, 2008 9:51 am, edited 1 time in total.
User avatar
Kieran Huggins
DevNet Master
Posts: 3635
Joined: Wed Dec 06, 2006 4:14 pm
Location: Toronto, Canada
Contact:

Re: which code and where to change ?

Post by Kieran Huggins »

what do you want to do?
User avatar
s.dot
Tranquility In Moderation
Posts: 5001
Joined: Sun Feb 06, 2005 7:18 pm
Location: Indiana

Re: which code and where to change ?

Post 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.
Set Search Time - A google chrome extension. When you search only results from the past year (or set time period) are displayed. Helps tremendously when using new technologies to avoid outdated results.
sakinolan
Forum Newbie
Posts: 3
Joined: Sat Jan 12, 2008 6:07 pm

Re: which code and where to change ?

Post 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...
sakinolan
Forum Newbie
Posts: 3
Joined: Sat Jan 12, 2008 6:07 pm

Re: which code and where to change ?

Post by sakinolan »

any ideas ? i think i've asked a hard question...
User avatar
John Cartwright
Site Admin
Posts: 11470
Joined: Tue Dec 23, 2003 2:10 am
Location: Toronto
Contact:

Re: which code and where to change ?

Post 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/
User avatar
Ambush Commander
DevNet Master
Posts: 3698
Joined: Mon Oct 25, 2004 9:29 pm
Location: New Jersey, US

Re: which code and where to change ?

Post by Ambush Commander »

You should ask the vBulletin people; they'll be more familiar with the forum's internals.
Post Reply