Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 06-15-2008, 08:44 AM
Twilkey's Avatar
Twilkey Twilkey is offline
 
Join Date: Oct 2006
Posts: 314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Variable replacement

Here is the problem. I have asked many people and noone can figure out the problem.

I am storing embed code in a database table. I have a variable that is put in the src part and some variables in the width and height. Now this was working when I had the embed code just in the php file, but once I started storing the code in a database table and trying to pull the code from the table, it stopped working.

Here is what one embed code looks like when it goes into the database.
Code:
<OBJECT ID="MediaPlayer" width=600 height=500
classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"

codebase="http://activex.microsoft.com/activex/
    controls/mplayer/en/nsmp2inf.cab#Version=6,0,02,902"

standby="Loading Microsoft Windows Media Player components..."

type="application/x-oleobject">

<PARAM NAME="FileName"
VALUE="http://location.to.media/file.wmv">

<PARAM NAME="animationatStart" VALUE="true">

<PARAM NAME="transparentatStart" VALUE="true">

<PARAM NAME="autoStart" VALUE="true">

<PARAM NAME="showControls" VALUE="true">

<EMBED type="application/x-mplayer2"

pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/"

SRC="$movielink"

name="MediaPlayer"

width="$playerwidth";

height="... {$vbulletin->options['player_height']} ...";

AutoStart=true>

</EMBED>

</OBJECT>
Now the problem is that the variables arnt replaced with what they are supposed to when the embed code is pulled from the database.

Here is the code I use to display the embed code.
Code:
if ($_REQUEST['do'] == 'showmovie')
{
    $movieid = $vbulletin->input->clean_gpc('g', 'id', TYPE_UINT);
    $movie_query = $vbulletin->db->query_read("SELECT * FROM " . TABLE_PREFIX . "psmedia_movie WHERE movieid=$movieid");
    $movie = $vbulletin->db->fetch_array($movie_query);
    
    $formatid = htmlspecialchars_uni($movie['formatid']);
    $format_query = $vbulletin->db->query_read("SELECT * FROM " . TABLE_PREFIX . "psmedia_format WHERE id=$formatid");
    $format = $vbulletin->db->fetch_array($format_query);
    
    $formattitle = htmlspecialchars_uni($format['title']);
    $movietitle = htmlspecialchars_uni($movie['title']);
    $moviedescription = htmlspecialchars_uni($movie['description']);
    $movieotherinfo = htmlspecialchars_uni($movie['otherinfo']);
    $movieauthor = htmlspecialchars_uni($movie['author']);
    if ($movieauthor == '') {$movieauthor = "Unknown";}
    $moviestream = $format['code'];
    $movielink = htmlspecialchars_uni($movie['link']);
    
    ($hook = vBulletinHook::fetch_hook('psmedia_showmovie')) ? eval($hook) : false; 
    
    eval('$psmedia_showmovie_rightbar = "' . fetch_template('psmedia_showmovie_rightbar') . '";');
    eval('$psmedia_content = "' . fetch_template('psmedia_showmovie') . '";');
}
Reply With Quote
  #2  
Old 06-15-2008, 11:36 AM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to eval() the embed code or put the embed code in a template and eval() that template.
Reply With Quote
  #3  
Old 06-15-2008, 06:57 PM
Twilkey's Avatar
Twilkey Twilkey is offline
 
Join Date: Oct 2006
Posts: 314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Im kind of confused as to why I need to do that. I have this code $moviestream = $format['code']; pulling the embed code from the database. And the player gets embeded just fine, but the playerwidth, playerhieght, and movielink variables dont get replaced like they are supposed to.
Reply With Quote
  #4  
Old 06-15-2008, 07:44 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to use eval() on the embed code that gets fetched from the database.
Reply With Quote
  #5  
Old 06-16-2008, 04:13 AM
Twilkey's Avatar
Twilkey Twilkey is offline
 
Join Date: Oct 2006
Posts: 314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok I have tried something, but I am getting an error and its still not changing the variables.

Code Used:
Code:
    $moviestream = $format['code'];    
    eval($moviestream);
Error Code:
Code:
Parse error:  syntax error, unexpected '<' in /home/paulsonn/public_html/forum/psmedia.php(458) : eval()'d code on line 1
Embed Code Used:
Code:
<OBJECT ID="MediaPlayer" width=600 height=500
classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"

codebase="http://activex.microsoft.com/activex/
    controls/mplayer/en/nsmp2inf.cab#Version=6,0,02,902"

standby="Loading Microsoft Windows Media Player components..."

type="application/x-oleobject">

<PARAM NAME="FileName"
VALUE="http://location.to.media/file.wmv">

<PARAM NAME="animationatStart" VALUE="true">

<PARAM NAME="transparentatStart" VALUE="true">

<PARAM NAME="autoStart" VALUE="true">

<PARAM NAME="showControls" VALUE="true">

<EMBED type="application/x-mplayer2"

pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/"

SRC="<? $movielink ?>"

name="MediaPlayer"

width="<? $playerwidth ?>";

height="<? $playerheight ?>";

AutoStart=true>

</EMBED>

</OBJECT>
Reply With Quote
  #6  
Old 06-16-2008, 06:20 AM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is it not possible just to stick this code in a template?

You need to eval the embed code as a string, look at the way vBulletin does it to the templates.
Reply With Quote
  #7  
Old 06-16-2008, 02:18 PM
King Kovifor's Avatar
King Kovifor King Kovifor is offline
 
Join Date: Nov 2004
Location: PA
Posts: 3,872
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Do as Opserty has said and use a template and then use something along the lines of:

eval("$embedded_code = '" . fetch_template('my_embedded_code') . "';");
Reply With Quote
  #8  
Old 06-16-2008, 05:53 PM
Twilkey's Avatar
Twilkey Twilkey is offline
 
Join Date: Oct 2006
Posts: 314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I get where I should use a template if I was storing only one or two embed cods. But I am storing many embed cods and using the database makes it easier and gives me the ability to easily add more embed codes.
Reply With Quote
  #9  
Old 06-16-2008, 06:29 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well [minicode]eval()[/minicode] your embed code as though it was a template, so instead of [minicode]fetch_template(...)[/minicode], you have your embed code.
Reply With Quote
  #10  
Old 06-16-2008, 10:09 PM
Twilkey's Avatar
Twilkey Twilkey is offline
 
Join Date: Oct 2006
Posts: 314
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok I dont know if I am just not understanding you right or what. I have tried what you suggested, but yet it doesnt want to work for me. I dont know, maybe I am missing a period or something somewhere.
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 04:51 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.06656 seconds
  • Memory Usage 2,254KB
  • Queries Executed 11 (?)
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
  • (5)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (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_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