PDA

View Full Version : Template variable refusing to work


Skyrider
02-19-2016, 08:42 AM
Oke, so.. I am using the steam plugin, with the following targeting postbit_display_start:

global $vbulletin;

include_once(DIR . '/includes/functions_steamconnect.php');

if (THIS_SCRIPT == 'private') {
global $pm;
$stc_user_info = fetch_userinfo($pm['fromuserid']);
$steam_info = fetch_steam_info(get_user_steamid($stc_user_info), $vbulletin->options['stc_apikey']);

if (!empty($steam_info)) {
$this->post['steamavatarfull'] = $steam_info['avatarfull'];
$this->post['steamavatar'] = $steam_info['avatar'];
$this->post['steamavatarmedium'] = $steam_info['avatarmedium'];
}
} else {
$stc_user_info = fetch_userinfo($post['userid']);
$steam_info = fetch_steam_info(get_user_steamid($stc_user_info), $vbulletin->options['stc_apikey']);

if (!empty($steam_info)) {
$this->post['steamavatarfull'] = $steam_info['avatarfull'];
$this->post['steamavatar'] = $steam_info['avatar'];
$this->post['steamavatarmedium'] = $steam_info['avatarmedium'];
}
}

At the end, I added:

var_dump($steam_info['avatarfull']);

Results in a thread were:
string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/7e/7e35511d79a0734bc975ddefbf84f76fe05a8800_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/64/64a693386d3647d74f48f6da659e19ffdefc9f71_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/e2/e22f276e1de68aeaff357d1a40792e1aaefa350c_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/e9/e9d4b42fd3734cb71fb2475019d6e8fafb5a78a4_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/a8/a8387bdd76aa295bb3056c9f902ab5c07ecac138_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/ea/eaf8dd354ce9418ec1da2488715110158f395209_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/ea/eaf8dd354ce9418ec1da2488715110158f395209_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/e0/e00ec9e849be38667112ecd5f0d524077e08dd48_medium.jp g" string(123) "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/1c/1c5e36c2e186e3b726748a9c17dbf57cea502663_medium.jp g"
Yay, it works! It shows all the steam images of the users who have posted in the thread. Now.. for some reason, when I use the following template code in postbit_legacy:

<vb:if condition="$show['avatar']">
<a class="postuseravatar" href="{vb:link member, {vb:raw post}}">
<vb:if condition="$post.avatarurl">
<img src="/{vb:raw post.avatarurl}" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />

</vb:if>
</a>
<vb:elseif condition="is_member_of($bbuserinfo, 13)" />
<img class="postuseravatar" src="{vb:raw steam_info.avatarfull}" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />

<vb:else />
<img class="postuseravatar" src="/{vb:stylevar imgdir_misc}/avatar.png" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />
</vb:if>

The avatar url is not being implemented.. While the var_dump worked just fine. (see bold code above that I added) I cannot figure out why. I've been trying to figure out for quite some time why it doesn't work, already tried adding a src with the img target being {vb:raw steam_info.avatarfull} outside the avatar area.. still not working. Any idea anyone?

Dave
02-19-2016, 10:48 AM
If $show['avatar'] contains something, it will always go into the first if statement first and ignore the rest. So you'll have to unset that variable for it to make it to the elseif.

Edit: it doesn't work because you use the wrong variable in the template.
post.steamavatarfull, post.steamavatar and post.steamavatarmedium is what you should use. The other variable is never assigned to the post array.

Skyrider
02-19-2016, 11:29 AM
<3, thank you! Wish I could like your post, but it says I have to like someone else first :(. It works perfectly now, I'll remember the variable the next time, really appreciate it.

EDIT:
How can I make it so it'll affact guest views as well? For members (most likely because I'm in usergroup 13) it works just fine. However, people outside the usergroup 13 (in this case, guests) still shows a default vB avatar. I assumed that:


<vb:elseif condition="is_member_of($bbuserinfo, 13)" />
or
<vb:elseif condition="$post[usergroupid] == 13">

Would have worked, because the user of the post is in usergroup 13. Guess it doesn't. The idea is to only show the steam avatar for everyone if the user is part of usergroup 13; if the user has vBulletin uploaded avatar to show for everyone.

Double edit..
Now I tried a different approach, seeing some users do have information in their steam table, but are not part of usergroup 13.
<vb:elseif condition="!empty($steam_info)" />
But so far, doesn't work.

<vb:elseif condition="!empty($steam_info)" />
<img class="postuseravatar" src="{vb:raw steam_info.avatarfull}" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />

BUT:
<vb:elseif condition="empty($steam_info)"/>
Works? Its showing the steam avatars now.. I'm confused, ! should be the opposite of empty.. Seeing if the steam table is empty, no avatar can be grabbed.

To keep you guys up-to-date, the system I had in mind is as follows:

1), Use vBulletin avatar (custom, that the user uploaded) as priority
2), If user has no custom avatar, fall back to users steam avatar IF the user has steam linked (hence: !empty($steam_info)
3), If user has no custom avatar nor has his/her profile steam linked, use /{vb:stylevar imgdir_misc}/avatar.png instead.

--------------- Added 1455922883 at 1455922883 ---------------

Sorry for the duplicate post (if this post isn't being merged)... But, I got the solution which is working perfectly.

<vb:if condition="$show['avatar']">
<a class="postuseravatar" href="{vb:link member, {vb:raw post}}">
<vb:if condition="$post.avatarurl">
<img src="/{vb:raw post.avatarurl}" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />
</vb:if>
</a>
<vb:elseif condition="$post[steamavatarfull] == !NULL"/>
<img class="postuseravatar" src="{vb:raw post.steamavatarfull}" width="120" height="120" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />

<vb:elseif condition="$post[steamavatarfull] == NULL"/>
<img class="postuseravatar" src="/{vb:stylevar imgdir_misc}/avatar.png" alt="{vb:rawphrase xs_avatar, {vb:raw post.username}}" />
</vb:if>
While it works just fine. I'm curious if this is the best way to do it. See the bold text above of what I added.