Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 06-05-2007, 07:28 AM
succo succo is offline
 
Join Date: Sep 2003
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default scan for bbcodes within posts

ok, this is what i'd like to do:
i've got a nice 'media' forum, containing many [media][/media] bbcode tags for stuff i'd like to show in the homepage... at the moment i'm working on making the 'upcoming' module read all the posts in some forums, find the ones containing 'my' bbcode and strip it and put it in a variable... this is my code so far:

PHP Code:
<?php
require_once('./global.php'); // for now it's working alone :)
$mod_options['code'] = "media"// this is my media code
$mod_options['limit'] = "5"// i want only five records
$mod_options['forumid'] = "35"// the forum where the media stuff is
if (!$mod_options['replace']) {
    
$mod_options['replace'] = $mod_options['code'];
        }
$poststuffs $db->query_read_slave("
SELECT post.pagetext
FROM " 
TABLE_PREFIX "post AS post
INNER JOIN " 
TABLE_PREFIX "thread USING (threadid)
WHERE forumid = "
.$mod_options['forumid']."
AND pagetext LIKE '%["
.$mod_options['code']."]%[/".$mod_options['code']."]%'
AND pagetext NOT LIKE '%["
.$mod_options['code']."]%mp3[/".$mod_options['code']."]%'
AND pagetext NOT LIKE '%["
.$mod_options['code']."]mms%[/".$mod_options['code']."]%'
AND pagetext NOT LIKE '%[quote]%["
.$mod_options['code']."]%[/".$mod_options['code']."]%[/quote]%'
ORDER BY post.dateline DESC LIMIT "
.$mod_options['limit']."
"
);
while (
$poststuff $db->fetch_array($poststuffs)) {
    
$poststring[] = ereg_replace("\[/".$mod_options['code']."\].*$""[/".$mod_options['code']."]"ereg_replace("^.*\[".$mod_options['code']."\]""[".$mod_options['replace']."]"$poststuff[pagetext])); // remove everything before and after my tag
    
}
    
print_r($poststring); // i want to see what happened :)
?>
it's partially working, as it finds the correct posts, but (in one case) doesn't succeed in stripping some part of the post away, maybe (that's what i noticed) because it finds some " (quotes)

may anyone help in building this thing up?
Reply With Quote
  #2  
Old 06-05-2007, 07:49 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Use preg instead of ereg. It's faster.
Reply With Quote
  #3  
Old 06-05-2007, 08:20 AM
succo succo is offline
 
Join Date: Sep 2003
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

mmmmmmmh... trying with
PHP Code:
$seek = array("/^.*\[".$mod_options['code']."\]/""/\[\/".$mod_options['code']."\].*$/");
$destroy = array("[".$mod_options['replace']."]""[/".$mod_options['code']."]");
$poststring[] = preg_replace($seek$destroy$poststuff[pagetext]); 
but isn't substituting anything in the text... so, what's wrong?
thanks
Reply With Quote
  #4  
Old 06-05-2007, 09:05 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have you had a look at how vBulletin does it?
Reply With Quote
  #5  
Old 06-05-2007, 09:24 AM
succo succo is offline
 
Join Date: Sep 2003
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ok, will try later when back from work

thanks

ok, made it work like this

PHP Code:
<?php
require_once('./global.php');
$mod_options['code'] = "media";
$mod_options['limit'] = "5";
$mod_options['forumid'] = "35";
if (!
$mod_options['replace']) {
    
$mod_options['replace'] = $mod_options['code'];
}
$poststuffs $db->query_read_slave("
SELECT post.pagetext
FROM " 
TABLE_PREFIX "post AS post
INNER JOIN " 
TABLE_PREFIX "thread USING (threadid)
WHERE forumid = "
.$mod_options['forumid']."
AND pagetext LIKE '%["
.$mod_options['code']."]%[/".$mod_options['code']."]%'
AND pagetext NOT LIKE '%["
.$mod_options['code']."]%mp3[/".$mod_options['code']."]%'
AND pagetext NOT LIKE '%["
.$mod_options['code']."]mms%[/".$mod_options['code']."]%'
AND pagetext NOT LIKE '%[quote]%["
.$mod_options['code']."]%[/".$mod_options['code']."]%[/quote]%'
ORDER BY post.dateline DESC LIMIT "
.$mod_options['limit']."
"
);
while (
$poststuff $db->fetch_array($poststuffs)) {
    
$poststring[] = preg_replace("#^.*\[".$mod_options['code']."\](.*)\[/".$mod_options['code']."\].*$#si""[".$mod_options['replace']."]$1[/".$mod_options['code']."]"$poststuff[pagetext]);
}
print_r($poststring);
?>
thanks
Reply With Quote
Reply

Thread Tools
Display Modes

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 04:09 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05630 seconds
  • Memory Usage 2,224KB
  • Queries Executed 13 (?)
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
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)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
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete