I've seen several posts here complaining that custom user titles are deleted/overwritten frequently, making this item pointless. I've debugged it and would like to show how this can be replicated and fixed:
When changing a user title, vbshop sets vbulletin to recognize this as "yes, user set" which you can see on the user page in the admincp.
If that person does not belong to a usergroup that has "Can Use Custom Title" set to YES, vBulletin will erase the custom title the next time it updates user titles / ranks. If they do belong to a usergroup with "Can Use Custom Title" the vbshop title will stay with no problems.
However if "Can Use Custom Title" is set to "YES", there's no real reason to buy it in the vbshop
I considered editing the code to switch "yes, user set" to "yes, admin set (html allowed)" - as this is NEVER overwritten on updates, but this could open up exploits due to the html.
The easiest fix is cosmetic: allow all usergroups to set custom titles, and then hide the option to change user titles in the usercp.
Example for vb 4.2:
template: modifyprofile
change
To
When changing a user title, vbshop sets vbulletin to recognize this as "yes, user set" which you can see on the user page in the admincp.
If that person does not belong to a usergroup that has "Can Use Custom Title" set to YES, vBulletin will erase the custom title the next time it updates user titles / ranks. If they do belong to a usergroup with "Can Use Custom Title" the vbshop title will stay with no problems.
However if "Can Use Custom Title" is set to "YES", there's no real reason to buy it in the vbshop

I considered editing the code to switch "yes, user set" to "yes, admin set (html allowed)" - as this is NEVER overwritten on updates, but this could open up exploits due to the html.
The easiest fix is cosmetic: allow all usergroups to set custom titles, and then hide the option to change user titles in the usercp.
Example for vb 4.2:
template: modifyprofile
change
Code:
<vb:if condition="$show['customtitleoption']">
<div class="blockrow">
<label for="tb_customtext">{vb:rawphrase custom_user_title}:</label>
<div class="rightcol">
<p class="label">{vb:rawphrase your_current_user_title_is}</p>
<div id="customtitle">
<span id="currentcustomtitle">{vb:raw bbuserinfo.usertitle}</span>
<label for="cb_resettitle" id="resetcustomtitle">
<input type="checkbox" name="resettitle" value="yes" id="cb_resettitle" tabindex="1" /> {vb:rawphrase reset}
</label>
</div>
</div>
<p class="description">{vb:rawphrase title_appears_beneath_your_name}</p>
<input type="text" class="primary textbox rightcol" name="customtext" id="tb_customtext" value="" maxlength="{vb:raw vboptions.ctMaxChars}" tabindex="1" />
</div>
</vb:if>
To
Code:
<vb:comment><vb:if condition="$show['customtitleoption']">
<div class="blockrow">
<label for="tb_customtext">{vb:rawphrase custom_user_title}:</label>
<div class="rightcol">
<p class="label">{vb:rawphrase your_current_user_title_is}</p>
<div id="customtitle">
<span id="currentcustomtitle">{vb:raw bbuserinfo.usertitle}</span>
<label for="cb_resettitle" id="resetcustomtitle">
<input type="checkbox" name="resettitle" value="yes" id="cb_resettitle" tabindex="1" /> {vb:rawphrase reset}
</label>
</div>
</div>
<p class="description">{vb:rawphrase title_appears_beneath_your_name}</p>
<input type="text" class="primary textbox rightcol" name="customtext" id="tb_customtext" value="" maxlength="{vb:raw vboptions.ctMaxChars}" tabindex="1" />
</div>
</vb:if> </vb:comment>
Last edited: