The postbit is nearly illegible because of how complex it's gotten with all the style modifications I've put into it through the years
You say that like it's a good thing,
. I'm gonna put my software developer hat on here and say that if a piece of software (or in this case a small section thereof) is so complex it would block all progress, then either the implementation was done poorly, or the feature itself needs to be rethought.
I'm gonna be harsh here. I know you (and probably a few others, IDK) get raging hard-ons for billions of postbit customizations and titles and colors and shit, but IMHO they're dumb and I wouldn't mind tossing them all.
Second, I took a glance at it and TBH it can probably be easily refactored; instead of all those 'or $post['usergroupid']==54' times 9000 you can probably do a 'if $post['usergroupid'] in [54, 62, x, y z]'. Instead of 'if usergroupid = x <b>', you can (read: should) assign CSS classes to the things that need customization and delegate the styling to CSS (you know, where it belongs).
If your solution to a problem is too complicated, it's probably wrong. I'm sure the customizations can be rebuilt with much simpler rules, without even needing to upgrade to vB 5 which I'm sure / I hope has a better template language (although IDK).
As for the style editor, as long as I can add a <link rel="stylesheet"> somewhere we can disregard it completely and work in a proper style editor, i.e. a text editor.
As for speed, I don't know, I'd have to benchmark it. Do note that since vB 4, technology hasn't stopped; the newer versions of PHP have much higher performance than the first 5.x versions, MySQL has become a significant percentage faster compared to older versions (see the upgrade thread), Facebook has released and is actively developing
HHVM, a VM for PHP that gives another speed boost (random benchmark
here, also look at the performance differences between php-fpm 5.4 and 5.5 - we're on 5.5 btw). Plus I'm sure there's a bunch more performance optimizations we can do; more aggressive caching, memory mapping (we're using <50% of available memory atm), etc.
TL;DR some of your arguments are invalid. I'd have to actually install and test vB 5 to confirm the speed issue though.
Here's the actual template code btw; the complicated bit you're talking about is probably at the '<tr valign="top">' bit.
HTML:
$template_hook[postbit_start]
<table id="post$post[postid]" class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="0" border="0" width="100%" align="center">
<tr>
<if condition="$show['announcement']">
<td class="thead" style="font-weight:normal; border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]" colspan="2">
<img class="inlineimg" src="$stylevar[imgdir_statusicon]/post_$post[statusicon].gif" alt="$post[statustitle]" border="0" />
<phrase 1="$post[startdate]" 2="$post[enddate]">$vbphrase[x_until_y]</phrase>
</td>
<else />
<td class="thead" style="font-weight:normal; border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-$stylevar[right]: 0px" $post[scrolltothis]>
<!-- status icon and date -->
<a name="post$post[postid]"><img class="inlineimg" src="$stylevar[imgdir_statusicon]/post_$post[statusicon].gif" alt="$post[statustitle]" border="0" /></a>
$post[postdate]<if condition="!$show['detailedtime']">, $post[posttime]</if>
$post[firstnewinsert]
<!-- / status icon and date -->
</td>
<td class="thead" style="font-weight:normal; border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-$stylevar[left]: 0px" align="$stylevar[right]">
<if condition="$show['postcount']">#<a href="showpost.php?$session[sessionurl]p=$post[postid]&postcount=$post[postcount]" target="new" rel="nofollow" id="postcount$post[postid]" name="$post[postcount]"><strong>$post[postcount]</strong></a></if>
<if condition="$show['inlinemod']">
<input type="checkbox" name="plist[$postid]" id="plist_$postid" style="vertical-align:middle; padding:0px; margin:0px 0px 0px 5px" value="$post[checkbox_value]" />
</if>
</td>
</if>
</tr>
<tr valign="top">
<td class="alt2" width="175" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-top: 0px; border-bottom: 0px">
<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field24']"><span class="$post[field24]"></if><if condition="$post['field22']"><span style="color: $post[field22]"></if></if>
<div style="text-align: center;">
<div id="postmenu_$post[postid]">
<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field20']"><span style="font-family: $post[field20];"></if></if>
<if condition="$show['profile']">
<a class="bigusername" href="member.php?$session[sessionurl]u=$post[userid]"<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"></if>><if condition="$post['field18']"><font color="$post[field18]"></if><if condition="($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0) and $post['field18']!='' and ($post['usergroupid']==23 or $post['usergroupid']==24 or $post['usergroupid']==5 or $post['usergroupid']==6 or $post['usergroupid']==18) or $post['usergroupid']==54 or $post['usergroupid']==62 or $post['usergroupid']==63 or $post['usergroupid']==55 or $post['usergroupid']==50 or $post['usergroupid']==48 or $post['usergroupid']==49 or $post['usergroupid']==47 or $post['usergroupid']==57 or $post['usergroupid']==40"><if condition="$post['usergroupid']==5 or $post['usergroupid']==6 or $post['usergroupid']==18 or $post['usergroupid']==54 or $post['usergroupid']==40"><b></if><if condition="$post['usergroupid']==6 or $post['usergroupid']==24 or $post['usergroupid']==40"><i></if>$post[username]<if condition="$post['usergroupid']==6 or $post['usergroupid']==24 or $post['usergroupid']==40"></i></if><if condition="$post['usergroupid']==5 or $post['usergroupid']==6 or $post['usergroupid']==18 or $post['usergroupid']==54 or $post['usergroupid']==40"></b></if><else />$post[musername]</if><if condition="$post['field18']"></font></if></a>
<script type="text/javascript"> vbmenu_register("postmenu_$post[postid]", true); </script>
<else />
$post[musername]
</if>
</div>
<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field20']"></span></if></if></div>
<div class="navbar"<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field29']"> style="font-size: $post[field29]px;"</if></if>>
<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field20']">
<span style="font-family: $post[field20];">
</if></if>
<if condition="$post['rank']"><div style="text-align: center;">$post[rank]</div></if>
<if condition="$post['usertitle']"><div style="text-align: center; font-weight: bold;">$post[usertitle]</div></if>
$template_hook[postbit_userinfo_left]
<if condition="$show['avatar']">
<div style="text-align: center;">
<a href="member.php?$session[sessionurl]u=$post[userid]">
<img src="$post[avatarurl]" $post[avwidth] $post[avheight] alt="<phrase 1="$post[username]">$vbphrase[xs_avatar]</phrase>" border="0" />
</a>
</div>
</if>
<if condition="$post['joindate']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>$vbphrase[join_date]:</strong> $post[joindate]</div></if>
<if condition="$post['age']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>$vbphrase[age]:</strong> $post[age]</div></if>
<if condition="$post['field7']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>Sex:</strong> $post[field7]</div></if>
<if condition="$post['field2']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>$vbphrase[location_perm]:</strong> $post[field2]</div></if>
<if condition="$post['field5']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>AKA:</strong> $post[field5]</div></if>
<!--<div>
<strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>$vbphrase[posts]:</strong> $post[posts]
</div>-->
$template_hook[postbit_userinfo_right_after_posts]
<if condition="$show['infraction']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>$vbphrase[infractions]:</strong> $post[warnings]/$post[infractions] ($post[ipoints])</div></if>
<if condition="$show['reputation']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>Rep/Power:</strong> $post[reputation]/$post[reppower] <!--$post[reputationdisplay]--></div></if>
<!--<if condition="$show['reppower']"><div><strong<if condition="$post['field21'] and ($bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0)"> style="color: $post[field21];"</if>>$vbphrase[reppower]:</strong> $post[reppower]</div></if>-->
$template_hook[postbit_userinfo_right]
<div>$post[icqicon] $post[aimicon] $post[msnicon] $post[yahooicon] $post[skypeicon]</div><if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field24']"></span></if><if condition="$post['field22']"></span></if></if>
</div></span>
</td>
<if condition="$show['moderated']">
<td class="alt2 postbit" id="td_post_$post[postid]" style="border-$stylevar[right]: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]">
<else />
<td class="alt1 postbit" id="td_post_$post[postid]" style="border-$stylevar[right]: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]">
</if>
$template_hook[postbit_messagearea_start]
<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field24']"><span class="$post[field24]"></if><if condition="$post['field20']"><span style="font-family: $post[field20];"></if><if condition="$post['field19']"><span style="color: $post[field19];"></if><if condition="$post['field27']"><span style="font-size: $post[field27]px;"></if></if>
<if condition="$show['messageicon'] OR $post['title']">
<!-- icon and title -->
<div class="smallfont">
<if condition="$show['messageicon']"><img class="inlineimg" src="$post[iconpath]" alt="$post[icontitle]" border="0" /></if>
<if condition="$post['title']"><strong>$post[title]</strong></if>
</div>
<hr size="1" style="color:$stylevar[tborder_bgcolor]; background-color:$stylevar[tborder_bgcolor]" />
<!-- / icon and title -->
</if>
<!-- message -->
<div id="post_message_$post[postid]">
$ad_location[ad_showthread_firstpost_start]
$post[message]
</div>
<!-- / message -->
<if condition="$show['attachments']">
<!-- attachments -->
<div style="padding:$stylevar[cellpadding]px">
<if condition="$show['thumbnailattachment']">
<fieldset class="fieldset">
<legend>$vbphrase[attached_thumbnails]</legend>
<div style="padding:$stylevar[formspacer]px">
$post[thumbnailattachments]
</div>
</fieldset>
</if>
<if condition="$show['imageattachment']">
<fieldset class="fieldset">
<legend>$vbphrase[attached_images]</legend>
<div style="padding:$stylevar[formspacer]px">
$post[imageattachments]
</div>
</fieldset>
</if>
<if condition="$show['imageattachmentlink']">
<fieldset class="fieldset">
<legend>$vbphrase[attached_images]</legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
$post[imageattachmentlinks]
</table>
</fieldset>
</if>
<if condition="$show['otherattachment']">
<fieldset class="fieldset">
<legend>$vbphrase[attached_files]</legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
$post[otherattachments]
</table>
</fieldset>
</if>
<if condition="$show['moderatedattachment']">
<fieldset class="fieldset">
<legend>$vbphrase[attachments_pending_approval]</legend>
<table cellpadding="0" cellspacing="$stylevar[formspacer]" border="0">
$post[moderatedattachments]
</table>
</fieldset>
</if>
</div>
<!-- / attachments -->
</if>
$template_hook[postbit_signature_start]
$ad_location[ad_showthread_firstpost_sig]
<if condition="$post['signature']">
<!-- sig -->
<div>
__________________<br />
$post[signature]
</div>
<!-- / sig -->
</if>
$template_hook[postbit_signature_end]
<if condition="$show['postedited']">
<!-- edit note -->
<div class="smallfont">
<hr size="1" style="color:$stylevar[tborder_bgcolor]; background-color:$stylevar[tborder_bgcolor]" />
<em>
<if condition="$show['postedithistory']">
<phrase 1="$post[edit_username]" 2="$post[edit_date]" 3="$post[edit_time]" 4="posthistory.php?$session[sessionurl]p=$post[postid]">$vbphrase[last_edited_link_by_x_on_y_at_z_postid]</phrase>
<else />
<phrase 1="$post[edit_username]" 2="$post[edit_date]" 3="$post[edit_time]">$vbphrase[last_edited_by_x_on_y_at_z]</phrase>
</if>
<if condition="$post['edit_reason']">
$vbphrase[reason]: $post[edit_reason]
</if>
</em>
</div>
<!-- / edit note -->
</if>
<if condition="$bbuserinfo['field25']=='No' or $bbuserinfo['userid']==0"><if condition="$post['field20']"></span></if><if condition="$post['field19']"></span></if><if condition="$post['field24']"></span></if><if condition="$post['field27']"></span></if></if></span>
</td>
</tr>
<tr>
<td class="alt2" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-top: 0px">
$post[onlinestatus]
<if condition="$show['reputationlink']">
<span id="reputationmenu_$post[postid]"><a href="reputation.php?$session[sessionurl]p=$post[postid]" rel="nofollow" id="reputation_$post[postid]"><img class="inlineimg" src="$stylevar[imgdir_button]/reputation.gif" alt="<phrase 1="$post[username]">$vbphrase[add_to_xs_reputation]</phrase>" border="0" /></a></span>
<if condition="$show['popups']"><script type="text/javascript"> vbrep_register("$post[postid]")</script></if>
</if>
<if condition="$show['infractionlink']"><a href="infraction.php?$session[sessionurl]do=report&p=$post[postid]" rel="nofollow"><img class="inlineimg" src="$stylevar[imgdir_button]/infraction.gif" alt="<phrase 1="$post[username]">$vbphrase[add_infraction_for_x]</phrase>" border="0" /></a></if>
<if condition="$show['reportlink']"><a href="report.php?$session[sessionurl]p=$post[postid]" rel="nofollow"><img class="inlineimg" src="$stylevar[imgdir_button]/report.gif" alt="$vbphrase[report_bad_post]" border="0" /></a></if>
$post[iplogged]
</td>
<if condition="$show['moderated']">
<td class="alt2" align="$stylevar[right]" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-$stylevar[left]: 0px; border-top: 0px">
<else />
<td class="alt1" align="$stylevar[right]" style="border: $stylevar[cellspacing]px solid $stylevar[tborder_bgcolor]; border-$stylevar[left]: 0px; border-top: 0px">
</if>
<!-- controls -->
<if condition="$post['editlink']">
<img style="display: none" id="progress_$postid" src="$stylevar[imgdir_misc]/progress.gif" alt="$vbphrase[loading_editor_please_wait]" />
<a href="$post[editlink]" name="vB::QuickEdit::$post[postid]"><img src="$stylevar[imgdir_button]/edit.gif" alt="$vbphrase[edit_delete_message]" border="0" /></a>
</if>
<if condition="$post['forwardlink']">
<a href="$post[forwardlink]"><img src="$stylevar[imgdir_button]/forward.gif" alt="$vbphrase[forward_message]" border="0" /></a>
</if>
<if condition="$post['replylink']">
<a href="$post[replylink]" rel="nofollow"><img src="$stylevar[imgdir_button]/<if condition="$post['forwardlink']">reply_small<else />quote</if>.gif" alt="$vbphrase[reply_with_quote]" border="0" /></a>
</if>
<if condition="$show['multiquote_post']">
<a href="$post[replylink]" rel="nofollow" onclick="return false"><img src="$stylevar[imgdir_button]/multiquote_<if condition="$show['multiquote_selected']">on<else />off</if>.gif" alt="$vbphrase[multi_quote_this_message]" border="0" id="mq_$post[postid]" /></a>
</if>
<if condition="$show['quickreply'] AND !$show['threadedmode']">
<a href="$post[replylink]" rel="nofollow" id="qr_$post[postid]" onclick="return false"><img src="$stylevar[imgdir_button]/quickreply.gif" alt="$vbphrase[quick_reply_to_this_message]" border="0" /></a>
</if>
<if condition="$show['moderated']">
<img src="$stylevar[imgdir_misc]/moderated.gif" alt="$vbphrase[moderated_post]" border="0" />
</if>
<if condition="$show['spam']">
<img src="$stylevar[imgdir_misc]/spam_detected.png" alt="$vbphrase[spam_post]" border="0" />
</if>
<if condition="$show['deletedpost']">
<if condition="$show['managepost']">
<a href="postings.php?$session[sessionurl]do=managepost&p=$post[postid]"><img src="$stylevar[imgdir_misc]/trashcan.gif" alt="$vbphrase[manage]" border="0" /></a>
<else />
<img src="$stylevar[imgdir_misc]/trashcan.gif" alt="$vbphrase[deleted_post]" border="0" />
</if>
</if>
<if condition="$show['redcard']">
<a href="infraction.php?$session[sessionurl]do=view&p=$post[postid]"><img src="$stylevar[imgdir_button]/redcard.gif" alt="$vbphrase[received_infraction]" border="0" /></a>
<else />
<if condition="$show['yellowcard']">
<a href="infraction.php?$session[sessionurl]do=view&p=$post[postid]"><img src="$stylevar[imgdir_button]/yellowcard.gif" alt="$vbphrase[received_warning]" border="0" /></a>
</if>
</if>
$template_hook[postbit_controls]
<!-- / controls -->
</td>
</tr>
</table>
$template_hook[postbit_end]
<!-- post $post[postid] popup menu -->
<div class="vbmenu_popup" id="postmenu_$post[postid]_menu" style="display:none">
<table cellpadding="4" cellspacing="1" border="0">
<tr>
<td class="thead">$post[username]</td>
</tr>
<if condition="$show['profile']">
<tr><td class="vbmenu_option"><a href="member.php?$session[sessionurl]u=$post[userid]">$vbphrase[view_public_profile]</a></td></tr>
</if>
<if condition="$show['pmlink']">
<tr><td class="vbmenu_option"><a href="private.php?$session[sessionurl]do=newpm&u=$post[userid]" rel="nofollow"><phrase 1="$post[username]">$vbphrase[send_private_message_to_x]</phrase></a></td></tr>
</if>
<if condition="$show['emaillink']">
<tr><td class="vbmenu_option"><a href="sendmessage.php?$session[sessionurl]do=mailmember&u=$post[userid]" rel="nofollow"><phrase 1="$post[username]">$vbphrase[send_email_to_x]</phrase></a></td></tr>
</if>
<if condition="$show['homepage']">
<tr><td class="vbmenu_option"><a href="$post[homepage]"><phrase 1="$post[username]">$vbphrase[visit_xs_homepage]</phrase></a></td></tr>
</if>
<if condition="$show['search']">
<tr><td class="vbmenu_option"><a href="search.php?$session[sessionurl]do=finduser&u=$post[userid]" rel="nofollow"><phrase 1="$post[username]">$vbphrase[find_more_posts_by_x]</phrase></a></td></tr>
</if>
<if condition="$post['userid'] AND $show['member']">
<tr><td class="vbmenu_option"><a href="profile.php?$session[sessionurl]do=addlist&userlist=buddy&u=$post[userid]"><phrase 1="$post[username]">$vbphrase[add_x_to_contacts]</phrase></a></td></tr>
</if>
<if condition="can_moderate($forum['forumid'])"><if condition="!isset($btu[$post[userid]])"><tr><td class="vbmenu_option"><a href="postings.php?$session[sessionurl]do=btu_ban&t=$post[threadid]&u=$post[userid]">$vbphrase[btu_ban]</a></td></tr><tr><td class="vbmenu_option"><a href="postings.php?$session[sessionurl]do=btu_ban&t=$post[threadid]&u=$post[userid]&days=$vboptions[btu_default]">$vbphrase[btu_ban] ($vboptions[btu_default] $vbphrase[days])</a></td></tr><else /><tr><td class="vbmenu_option"><a href="postings.php?$session[sessionurl]do=btu_ban&t=$post[threadid]&u=$post[userid]">$vbphrase[btu_unban]</a></td></tr></if></if>
$template_hook[postbit_user_popup]
</table>
</div>
<!-- / post $post[postid] popup menu -->