The Arcive of vBulletin Modifications Site. |
|
|
#1
|
||||
|
||||
|
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.
|
![]() |
|
|
| X vBulletin 3.8.12 by vBS Debug Information | |
|---|---|
|
|
More Information |
|
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|