TransAmDan
10-26-2018, 08:19 AM
I want to access a database value from a VB template. The template is shown below. I have a new field in the 'attachment' table, called 'external_source' by default this will be zero, but if it is a 1, I want to produce different HTML code.
<li> <vb:if condition="$picture['hasthumbnail']">
<vb:if condition="$picture['external_source'] == 0">
<a href="album.php?{vb:raw session.sessionurl}albumid={vb:raw albuminfo.albumid}&attachmentid={vb:raw picture.attachmentid}"><img src="http://www.solent-renegades.co.uk/attachment.php?{vb:raw session.sessionurl}attachmentid={vb:raw picture.attachmentid}&thumb=1" alt="{vb:raw picture.caption}" title="{vb:raw picture.caption} from {vb:raw albuminfo.title}" border="0" {vb:raw picture.dimensions}/></a>
<table width="120" height="60"><tr><td>{vb:raw picture.caption} from {vb:raw albuminfo.title}</td></tr></table>
<vb:else />
--action if we have an external source.
</vb:if>
<vb:else />
<a class="picture" href="album.php?{vb:raw session.sessionurl}albumid={vb:raw albuminfo.albumid}&attachmentid={vb:raw picture.attachmentid}"><vb:if condition="$picture['caption_preview']">{vb:raw picture.caption_preview}<vb:else />{vb:rawphrase picture}</vb:if></a>
</vb:if>
<vb:if condition="$show['moderation']"><span class="shade">{vb:rawphrase picture_moderated}</span></vb:if>
</li>
Looking inside album.php I have modified the call to the database to include this field too.
$pictures = $db->query_read("
SELECT
a.attachmentid, a.userid, a.caption, a.dateline, a.state, a.filename, a.external_source,
fd.filesize, IF(fd.thumbnail_filesize > 0, 1, 0) AS hasthumbnail, fd.thumbnail_dateline, fd.thumbnail_width, fd.thumbnail_height
$hook_query_fields
FROM " . TABLE_PREFIX . "attachment AS a
INNER JOIN " . TABLE_PREFIX . "filedata AS fd ON (fd.filedataid = a.filedataid)
$hook_query_joins
WHERE
a.contentid = $albuminfo[albumid]
AND
a.contenttypeid = " . intval($contenttypeid) . "
" . ((!can_moderate(0, 'canmoderatepictures') AND $albuminfo['userid'] != $vbulletin->userinfo['userid']) ? "AND a.state = 'visible'" : "") . "
$hook_query_where
ORDER BY a.dateline DESC
LIMIT $start, $perpage
");
So now $pictures contains the information from that database query.
Each individual pictures is fetched from
while ($picture = $db->fetch_array($pictures))
So in the template code I would expect pictures.external_source to contain the data from the database. Something isn't working right.
Is there some other process it goes through to pass data from album.php to the 'album_picturebit' template?
<li> <vb:if condition="$picture['hasthumbnail']">
<vb:if condition="$picture['external_source'] == 0">
<a href="album.php?{vb:raw session.sessionurl}albumid={vb:raw albuminfo.albumid}&attachmentid={vb:raw picture.attachmentid}"><img src="http://www.solent-renegades.co.uk/attachment.php?{vb:raw session.sessionurl}attachmentid={vb:raw picture.attachmentid}&thumb=1" alt="{vb:raw picture.caption}" title="{vb:raw picture.caption} from {vb:raw albuminfo.title}" border="0" {vb:raw picture.dimensions}/></a>
<table width="120" height="60"><tr><td>{vb:raw picture.caption} from {vb:raw albuminfo.title}</td></tr></table>
<vb:else />
--action if we have an external source.
</vb:if>
<vb:else />
<a class="picture" href="album.php?{vb:raw session.sessionurl}albumid={vb:raw albuminfo.albumid}&attachmentid={vb:raw picture.attachmentid}"><vb:if condition="$picture['caption_preview']">{vb:raw picture.caption_preview}<vb:else />{vb:rawphrase picture}</vb:if></a>
</vb:if>
<vb:if condition="$show['moderation']"><span class="shade">{vb:rawphrase picture_moderated}</span></vb:if>
</li>
Looking inside album.php I have modified the call to the database to include this field too.
$pictures = $db->query_read("
SELECT
a.attachmentid, a.userid, a.caption, a.dateline, a.state, a.filename, a.external_source,
fd.filesize, IF(fd.thumbnail_filesize > 0, 1, 0) AS hasthumbnail, fd.thumbnail_dateline, fd.thumbnail_width, fd.thumbnail_height
$hook_query_fields
FROM " . TABLE_PREFIX . "attachment AS a
INNER JOIN " . TABLE_PREFIX . "filedata AS fd ON (fd.filedataid = a.filedataid)
$hook_query_joins
WHERE
a.contentid = $albuminfo[albumid]
AND
a.contenttypeid = " . intval($contenttypeid) . "
" . ((!can_moderate(0, 'canmoderatepictures') AND $albuminfo['userid'] != $vbulletin->userinfo['userid']) ? "AND a.state = 'visible'" : "") . "
$hook_query_where
ORDER BY a.dateline DESC
LIMIT $start, $perpage
");
So now $pictures contains the information from that database query.
Each individual pictures is fetched from
while ($picture = $db->fetch_array($pictures))
So in the template code I would expect pictures.external_source to contain the data from the database. Something isn't working right.
Is there some other process it goes through to pass data from album.php to the 'album_picturebit' template?