Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 04-15-2012, 03:26 AM
Popa Andrei's Avatar
Popa Andrei Popa Andrei is offline
 
Join Date: May 2008
Location: Romania/Petrosani
Posts: 367
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Modify RSS reader

I use this rss reader to get mi data from the forum
How do i modifie to show only the last 10 updates
Regards
PHP Code:
<?php
// ######################################################
// ## configuration
// ##
// ## $rss_file= 'http://www.vbulletin.com/forum/external.php?type=rss';
// ## Adjust this variable to point to your RSS feed
 
$rss_file 'http://forum.elitegamers.co/external.php?type=RSS2&forumids=18';
    
// ## configuration end
// ######################################################
// ## Do not touch code below!
    
    
$is_item false;
$tag '';
$title '';
$description '';
$link '';
    
function 
character_data($parser$data)
{
    global 
$is_item$tag$title$description$link;
    if (
$is_item)
    {
        switch (
$tag)
        {
            case 
"TITLE":
            
$title .= $data;
            break;
            case 
"DESCRIPTION":
            
$description .= $data;
    
            break;
            case 
"LINK":
            
$link .= $data;
            break;
        }
    }
}
    
function 
begin_element($parser$name)
{
    global 
$is_item$tag;
    if (
$is_item)
    {
        
$tag $name;
    }
    else if (
$name == "ITEM")
    {
        
$is_item true;
    }
}
    
function 
end_element($parser$name)
{
    global 
$is_item$title$description$link$rss_output;
    if (
$name == "ITEM")
    {
        
$rss_output .= "<table width='530' style='margin-left:auto; margin-right:auto; padding-bottom:10px;'>
                            <tr>
                                <td style='padding-left:15px;' align='left'><p style='font-weight:bold;'><a style='color:#FB7800;' href='" 
trim($link) . "'>" htmlspecialchars(trim($title)) . "</a></p></td>
                            </tr>
                            <tr>
                                <td><p style='color:#70CCA0'>" 
htmlspecialchars(trim($description)) . "</p></td>
                            </tr>
                        </table>"
;
        
$title "";
        
$description "";
        
$link "";
        
$is_item false;
    }
}
    
    
$parser xml_parser_create();
    
xml_set_element_handler($parser"begin_element""end_element");
xml_set_character_data_handler($parser"character_data");
$fp fopen($rss_file,"r");
    
while (
$data fread($fp4096))
{
    
xml_parse($parser$datafeof($fp));        
}
    
fclose($fp);
xml_parser_free($parser);
?>
Reply With Quote
  #2  
Old 04-18-2012, 08:46 AM
Popa Andrei's Avatar
Popa Andrei Popa Andrei is offline
 
Join Date: May 2008
Location: Romania/Petrosani
Posts: 367
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

bump
Reply With Quote
  #3  
Old 04-18-2012, 01:28 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Maybe add a couple lines (in red) near the top:

Code:
// ## configuration end
// ######################################################
// ## Do not touch code below!
    
$max_items = 10;
$item_count = 0;    
$is_item = false;
$tag = '';
$title = '';
$description = '';
$link = '';

then change function end_element like this:

Code:
function end_element($parser, $name)
{
    global $is_item, $title, $description, $link, $rss_output;
    if ($name == "ITEM")
    {
        global $item_count, $max_items;
        $item_count++;
        if ($item_count <= $max_items)
        {
            $rss_output .= "<table width='530' style='margin-left:auto; margin-right:auto; padding-bottom:10px;'>
                            <tr>
                                <td style='padding-left:15px;' align='left'><p style='font-weight:bold;'><a style='color:#FB7800;' href='" . trim($link) . "'>" . htmlspecialchars(trim($title)) . "</a></p></td>
                            </tr>
                            <tr>
                                <td><p style='color:#70CCA0'>" . htmlspecialchars(trim($description)) . "</p></td>
                            </tr>
                        </table>";
        }
        $title = "";
        $description = "";
        $link = "";
        $is_item = false;
    }
}

But this really only ignores everything after the first 10 items returned in the feed, which means that if there are more than 10 some are just going to be lost.
Reply With Quote
Благодарность от:
Popa Andrei
  #4  
Old 04-18-2012, 03:29 PM
Popa Andrei's Avatar
Popa Andrei Popa Andrei is offline
 
Join Date: May 2008
Location: Romania/Petrosani
Posts: 367
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thak you very much.
That worked perfect
You are mi saviour.
Reply With Quote
  #5  
Old 06-25-2012, 11:57 PM
Popa Andrei's Avatar
Popa Andrei Popa Andrei is offline
 
Join Date: May 2008
Location: Romania/Petrosani
Posts: 367
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

any ideea how to fecth and display in the html output the thread creation date and time?
Reply With Quote
  #6  
Old 06-26-2012, 11:08 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You can edit the feed and put {feed:date} in the body template.

ETA: oops - I forgot we're talking about your custom reader script. Let me look at that...

OK, try this: Change function character_data() to:

Code:
function character_data($parser, $data)
{
    global $is_item, $tag, $title, $description, $link, $date;
    if ($is_item)
    {
        switch ($tag)
        {
            case "TITLE":
            $title .= $data;
            break;
            case "DESCRIPTION":
            $description .= $data;
    
            break;
            case "LINK":
            $link .= $data;
            break;
            case "PUBDATE":
            $date .= $data;
            break;
        }
    }
}

Then at the beginning of the end_element function:

Code:
function end_element($parser, $name)
{
    global $is_item, $title, $description, $link, $rss_output, $date;

then use $date in the html output. (I haven't tested this at all).
Reply With Quote
Благодарность от:
Popa Andrei
  #7  
Old 06-26-2012, 01:02 PM
Popa Andrei's Avatar
Popa Andrei Popa Andrei is offline
 
Join Date: May 2008
Location: Romania/Petrosani
Posts: 367
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I changed the page to this but ain`t working.

PHP Code:
<?php
// ######################################################
// ## configuration
// ##
// ## $rss_file= 'http://www.vbulletin.com/forum/external.php?type=rss';
// ## Adjust this variable to point to your RSS feed
 
$rss_file 'http://forum.elitegamers.co/external.php?type=RSS2&forumids=18';
    
// ## configuration end
// ######################################################
// ## Do not touch code below!
    
$max_items 12;
$item_count 0;    
$is_item false;
$tag '';
$title '';
$description '';
$link '';
    
function 
character_data($parser$data)
{
    global 
$is_item$tag$title$description$link;
    if (
$is_item)
    {
        switch (
$tag)
        {
            case 
"TITLE":
            
$title .= $data;
            break;
            case 
"DESCRIPTION":
            
$description .= $data;
    
            break;
            case 
"LINK":
            
$link .= $data;
            break;
            
            case 
"PUBDATE":
            
$date .= $data;
            break;
        }
    }
}
    
function 
begin_element($parser$name)
{
    global 
$is_item$tag;
    if (
$is_item)
    {
        
$tag $name;
    }
    else if (
$name == "ITEM")
    {
        
$is_item true;
    }
}
    
function 
end_element($parser$name)
{
    global 
$is_item$title$description$link$rss_output$date;
    if (
$name == "ITEM")
    {
        global 
$item_count$max_items;
        
$item_count++;
        if (
$item_count <= $max_items)
        {
        
$rss_output .= "<table width='530' style='margin-left:auto; margin-right:auto; padding-bottom:10px;'>
                            <tr>
                                <td style='padding-left:15px;' align='left'><p style='font-weight:bold;'><a style='color:#FB7800;' href='"
.trim($link)."'>".htmlspecialchars(trim($title))."".$date."</a></p></td>
                            </tr>
                            <tr>
                                <td><p style='color:#70CCA0'>" 
htmlspecialchars(trim($description)) . "</p></td>
                            </tr>
                        </table>"
;
        
$title "";
        
$description "";
        
$link "";
        
$is_item false;
        }
    }
}
    
    
$parser xml_parser_create();
    
xml_set_element_handler($parser"begin_element""end_element");
xml_set_character_data_handler($parser"character_data");
$fp fopen($rss_file,"r");
    
while (
$data fread($fp4096))
{
    
xml_parse($parser$datafeof($fp));        
}
    
fclose($fp);
xml_parser_free($parser);
?>
Reply With Quote
  #8  
Old 06-26-2012, 01:48 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There's one more part that I missed highlighting in red - at the beginning of character_data(), you need to add $date to the global statement.
Reply With Quote
  #9  
Old 06-26-2012, 01:55 PM
Popa Andrei's Avatar
Popa Andrei Popa Andrei is offline
 
Join Date: May 2008
Location: Romania/Petrosani
Posts: 367
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ty its working but i think it needs a little adjustements.
Look
Attached Images
File Type: jpg Untitled.jpg (150.9 KB, 0 views)
Reply With Quote
  #10  
Old 06-26-2012, 02:01 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Oh, right. At the bottom of the end_element() function, where there's $title = "", $description = "", etc, add $date = "";
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:46 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06209 seconds
  • Memory Usage 2,345KB
  • Queries Executed 14 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (4)bbcode_code
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (2)post_thanks_box_bit
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (1)postbit_attachment
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_attachment
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete