The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
||||
|
||||
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> 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') . '";'); } |
#2
|
|||
|
|||
You need to eval() the embed code or put the embed code in a template and eval() that template.
|
#3
|
||||
|
||||
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.
|
#4
|
|||
|
|||
You need to use eval() on the embed code that gets fetched from the database.
|
#5
|
||||
|
||||
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); Code:
Parse error: syntax error, unexpected '<' in /home/paulsonn/public_html/forum/psmedia.php(458) : eval()'d code on line 1 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> |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
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') . "';"); |
#8
|
||||
|
||||
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.
|
#9
|
|||
|
|||
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.
|
#10
|
||||
|
||||
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.
|
Thread Tools | |
Display Modes | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|