PDA

View Full Version : Conditionals in phrases alternative?


kpmedia
12-04-2011, 02:34 AM
I have some pay access sub-forums.
I want to replace the vbphrase "private" with something else.
But not just a single something else, but multiple messages depending on sub-forum.

Phrases cannot use conditionals, leaving template mods.
However, the vbphrase['private'] is not in the templates, but only in the functions_forumlist.php file.
So I'll have to edit the core files (and I'm fine with that).
In the PHP, what sort of conditional statement could be written to allow for multi messages?

Something like this:
if forum = 55 then display vbphrase private_1 on forumhome
if forum = 75 then display vbphrase private_2 on forumhome
if anything else then display default private vbphrase

I've tried a few PHP edits on my own, but nothing has worked so far.

Original:
else if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']))
{
$forum['lastpostinfo'] = $vbphrase['private'];
}


Failed attempt:
else if (!($forumperms & $vbulletin->bf_ugp_forumpermissions['canview']))
{
if ($post[forumid] == 55)
{
$forum['lastpostinfo'] = $vbphrase['private_1'];
}
else
{
$forum['lastpostinfo'] = $vbphrase['private'];
}
}


Help? :)

Lynne
12-04-2011, 02:40 AM
Since the variable being used in that part of the code is $forum, try using $forum[forumid] instead of $post[forumid]

kpmedia
12-04-2011, 03:14 AM
Thanks for replying, Lynne.

I've tried both of these:
if ($forumid == 55)
if ($forum[forumid] == 55)

Those both have the same result.

What I end up with is a blank thread title and date, but the "by user" is still there, along with the post icon and the arrow to see the latest post. (Of course, being private, it takes you to the vB error screen when clicked and not logged in.)

The "private_1" message is not shown.
If I change it back to "private", however, the private default vbphrase shows up fine.


--------- UPDATE:

Actually, I found another workaround.

<td class="alt2" width="%">

<if condition="is_member_of($vbulletin->userinfo, 5, 6, 7)">
$forum[lastpostinfo]
</if>

<if condition="is_member_of($vbulletin->userinfo, 1, 2, 3, 4)">

<if condition="$forum[forumid] == 55">
$vbphrase[private_1]
</td>
<else />
$forum[lastpostinfo]
</if>

</if>

</td>

This completely bypasses the membership login check, and hard codes a display predetermined by user group.
4,5,6 are admin/mod users.
1,2,3,4 are members

To show the forum content to a user group, move them to the first conditional.

(My own code is actually more complicated, more usergroups and workarounds, but no need to make this complex by over-sharing.)

If anybody finds this useful, click the heart. :)