============================================================================================================================
Title: User Rank Icons v1.0

Author: John Briggs

Description:
This modification will provide a user rank icon image to display next to usernames within your forum.
This modification will provide a user rank icon image to display in Who's Online on index.
This modification will provide a user rank icon image to display in Who's Online today.
This modification will provide a user rank icon image to display in the Who's Doing What Online area.
This modification will provide a user rank icon image to display in threads.
This modification will provide a user rank icon image to display in member control panel.
This modification will provide a user rank icon image to display in in member list.
This modification will provide a user rank icon image to display in member profiles.

Copyright:  2009 John Briggs. All rights reserved.

Compatability: XMB 1.9.8 SP3

Install Note: Before adding this modification to your forum you should back up all files related to this modification.

License Note: This modification is released under the GPL License. A copy is provided with this software package.

Author Note:
You downloaded this modification from XMBGarage.com, the #1 source for XMB related downloads.
Please visit http://www.xmbgarage.com/ for support.

============================================================================================================================
=======
Step 1:
=======
================
Edit File: index.php
================
=================
Find Code (2 Times):
=================

            $pre = $suff = '';

=======================
Replace Code With (2 Times):
=======================

            $pre = $suff = $ricon = '';

========================
Find Code (First Instance Only):
========================

            $suff = '</span>';

===============
Add Code Below:
===============

            // User Rank Icons Mod Begin
            $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $online['status']).'.gif" border="0" alt="'.$online['status'].'" />';
            // User Rank Icons Mod End

==========
Find Code:
==========

            $memtally[] = '<a href="member.php?action=viewpro&amp;member='.recodeOut($online['username']).'">'.$pre.''.$online['username'].''.$suff.'</a>';

================
Replace Code With:
================

            $memtally[] = $ricon.'<a href="member.php?action=viewpro&amp;member='.recodeOut($online['username']).'">'.$pre.''.$online['username'].''.$suff.'</a>';

==========
Find Code:
==========

            if (X_ADMIN) {
                $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' ORDER BY lastvisit DESC");
            } else {
                $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' AND invisible!=1 ORDER BY lastvisit DESC");
            }

================
Replace Code With:
================

            if (X_ADMIN) {
                $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' ORDER BY username ASC LIMIT 0, 50");
            } else {
                $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' AND invisible != '1' ORDER BY username ASC LIMIT 0, 50");
            }

==========
Find Code:
==========

            $x = 0;
            while($memberstoday = $db->fetch_array($query)) {
                if ($x <= $onlinetodaycount) {
                    $pre = '<span class="status_'.str_replace(' ', '_', $memberstoday['status']).'">';
                    $suff = '</span>';
                    $todaymembers[] = '<a href="member.php?action=viewpro&amp;member='.recodeOut($memberstoday['username']).'">'.$pre.''.$memberstoday['username'].''.$suff.'</a>';
                    $x++;
                } else {
                    continue;
                }
            }

================
Replace Code With:
================

            $x = 0;
            while($memberstoday = $db->fetch_array($query)) {
                if ($x <= $onlinetodaycount) {
                    $pre = '<span class="status_'.str_replace(' ', '_', $memberstoday['status']).'">';
                    $suff = '</span>';
                    $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $memberstoday['status']).'.gif" border="0" alt="'.$memberstoday['status'].'" />';
                    $todaymembers[] = $ricon.'<a href="member.php?action=viewpro&amp;member='.recodeOut($memberstoday['username']).'">'.$pre.''.$memberstoday['username'].''.$suff.'</a>';
                    $x++;
                } else {
                    continue;
                }
            }

==========
Find Code:
==========

                $memontoday = $todaymembersnum.$lang['textmemberstoday'];
            }

===============
Add Code Below:
===============

            // User Rank Icons Mod Begin
            $supadminkey = $adminkey = $supmodkey = $modkey = $memkey = '';
            $supadminkey = '<img src="./images/ricons/onlineSuperAdministrator.gif" border="0px" alt="'.$lang['ranksupadmin'].'" title="'.$lang['ranksupadmin'].'" /><strong><u><em>'.$lang['superadmin'].'</em></u></strong> - ';
            $adminkey = '<img src="./images/ricons/onlineAdministrator.gif" border="0px" alt="'.$lang['rankadmin'].'" title="'.$lang['rankadmin'].'" /><strong><u>'.$lang['textsendadmin'].'</u></strong> - ';
            $supmodkey = '<img src="./images/ricons/onlineSuperModerator.gif" border="0px" alt="'.$lang['ranksupmod'].'" title="'.$lang['ranksupmod'].'" /><em><strong>'.$lang['textsendsupermod'].'</strong></em> - ';
            $modkey = '<img src="./images/ricons/onlineModerator.gif" border="0px" alt="'.$lang['rankmod'].'" title="'.$lang['rankmod'].'" /><strong>'.$lang['textsendmod'].'</strong> - ';
            $memkey = '<img src="./images/ricons/onlineMember.gif" border="0px" alt="'.$lang['rankmem'].'" title="'.$lang['rankmem'].'" />'.$lang['textsendall'];
            // User Rank Icons Mod End

============================================================================================================================
=======
Step 2:
=======
===============
Edit File: misc.php
===============
==========
Find Code:
==========

    case 'online':
        if ($SETTINGS['whosonlinestatus'] == 'off') {
            eval('echo "'.template('header').'";');
            eval('echo "'.template('misc_feature_notavailable').'";');
            end_time();
            eval('echo "'.template('footer').'";');
            exit();
        }

        $page = getInt('page');
        $count = $db->num_rows($db->query("SELECT * FROM ".X_PREFIX."whosonline"));
        $max_page = (int) ($count / $tpp) + 1;
        if ($page && $page >= 1 && $page <= $max_page) {
            $start_limit = ($page-1) * $tpp;
        } else {
            $start_limit = 0;
            $page = 1;
        }

        if (($multipage = multi($count, $tpp, $page, 'misc.php?action=online&amp;page='.$page)) !== false) {
            if (X_ADMIN) {
                eval('$multipage = "'.template('misc_online_multipage_admin').'";');
            } else {
                eval('$multipage = "'.template('misc_online_multipage').'";');
            }
        }

        if (X_ADMIN) {
            $query = $db->query("SELECT * FROM ".X_PREFIX."whosonline ORDER BY username ASC LIMIT $start_limit, $tpp");
        } else {
            $query = $db->query("SELECT * FROM ".X_PREFIX."whosonline WHERE invisible='0' OR (invisible='1' AND username='$xmbuser') ORDER BY username ASC LIMIT $start_limit, $tpp");
        }

        $onlineusers = '';
        while($online = $db->fetch_array($query)) {
            $array = url_to_text($online['location']);
            $onlinetime = gmdate ($timecode, $online['time'] + ($timeoffset * 3600) + ($addtime * 3600));
            $username = str_replace('xguest123', $lang['textguest1'], $online['username']);

            $online['location'] = shortenString($array['text'], 80, X_SHORTEN_SOFT|X_SHORTEN_HARD, '...');
            if (X_STAFF) {
                $online['location'] = '<a href="'.$array['url'].'">'.shortenString($array['text'], 80, X_SHORTEN_SOFT|X_SHORTEN_HARD, '...').'</a>';
                $online['location'] = stripslashes($online['location']);
            }

            if ($online['invisible'] == 1 && (X_ADMIN || $online['username'] == $xmbuser)) {
                $hidden = ' ('.$lang['hidden'].')';
            } else {
                $hidden = '';
            }

            if (X_SADMIN && $online['username'] != 'xguest123' && $online['username'] != $lang['textguest1']) {
                $online['username'] = '<a href="member.php?action=viewpro&amp;member='.recodeOut($online['username']).'">'.$username.'</a>'.$hidden;
            } else {
                $online['username'] = $username;
            }

            if (X_ADMIN) {
                eval('$onlineusers .= "'.template('misc_online_row_admin').'";');
            } else {
                eval('$onlineusers .= "'.template('misc_online_row').'";');
            }
        }
        $db->free_result($query);

        if (X_ADMIN) {
            eval('$misc = "'.template('misc_online_admin').'";');
        } else {
            eval('$misc = "'.template('misc_online').'";');
        }

        $misc = stripslashes($misc);
        break;

================
Replace Code With:
================

    case 'online':
        if ($SETTINGS['whosonlinestatus'] == 'off') {
            eval('echo "'.template('header').'";');
            eval('echo "'.template('misc_feature_notavailable').'";');
            end_time();
            eval('echo "'.template('footer').'";');
            exit();
        }

        $page = getInt('page');
        $count = $db->num_rows($db->query("SELECT * FROM ".X_PREFIX."whosonline"));
        $max_page = (int) ($count / $tpp) + 1;
        if ($page && $page >= 1 && $page <= $max_page) {
            $start_limit = ($page-1) * $tpp;
        } else {
            $start_limit = 0;
            $page = 1;
        }

        if (($multipage = multi($count, $tpp, $page, 'misc.php?action=online&amp;page='.$page)) !== false) {
            if (X_ADMIN) {
                eval('$multipage = "'.template('misc_online_multipage_admin').'";');
            } else {
                eval('$multipage = "'.template('misc_online_multipage').'";');
            }
        }

        if (X_ADMIN) {
            $query = $db->query("SELECT m.status, m.username, w.* FROM ".X_PREFIX."whosonline w LEFT JOIN ".X_PREFIX."members m ON m.username = w.username ORDER BY w.username ASC");
        } else {
            $query = $db->query("SELECT m.status, m.username, w.* FROM ".X_PREFIX."whosonline w LEFT JOIN ".X_PREFIX."members m ON m.username = w.username WHERE w.invisible = '0' OR (w.invisible = '1' AND w.username = '$xmbuser') ORDER BY w.username ASC");
        }

        $onlineusers = '';
        while($online = $db->fetch_array($query)) {
            $array = url_to_text($online['location']);
            $onlinetime = gmdate ($timecode, $online['time'] + ($timeoffset * 3600) + ($addtime * 3600));
            $username = str_replace('xguest123', '<span class="status_Member">'.$lang['textguest1'].'</span>', $online['username']);

            $online['location'] = shortenString($array['text'], 80, X_SHORTEN_SOFT|X_SHORTEN_HARD, '...');
            if (X_STAFF) {
                $online['location'] = '<a href="'.$array['url'].'">'.shortenString($array['text'], 80, X_SHORTEN_SOFT|X_SHORTEN_HARD, '...').'</a>';
                $online['location'] = stripslashes($online['location']);
            }

            if ($online['invisible'] == 1 && (X_ADMIN || $online['username'] == $xmbuser)) {
                $hidden = ' ('.$lang['hidden'].')';
            } else {
                $hidden = '';
            }

            $pre = $suff = $ricon = '';
            $pre = '<span class="status_'.str_replace(' ', '_', $online['status']).'">';
            $suff = '</span>';

            if ($online['username'] != 'xguest123' && $online['username'] != $lang['textguest1']) {
                $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $online['status']).'.gif" border="0" alt="'.$online['status'].'" />';
            } else {
                $ricon = '<img src="./images/ricons/onlineGuest.gif" alt="'.$lang['textguest1'].'" border="0" />';
            }

            if (X_SADMIN && $online['username'] != 'xguest123' && $online['username'] != $lang['textguest1']) {
                $online['username'] = $ricon.'<a href="member.php?action=viewpro&amp;member='.recodeOut($online['username']).'">'.$pre.''.$username.''.$suff.'</a>'.$hidden;
            } else {
                $online['username'] = $ricon.''.$pre.''.$username.''.$suff;
            }

            if (X_ADMIN) {
                eval('$onlineusers .= "'.template('misc_online_row_admin').'";');
            } else {
                $online['invisible'] = '';
                $online['ip'] = '';
                eval('$onlineusers .= "'.template('misc_online_row').'";');
            }
        }
        $db->free_result($query);

        if (X_ADMIN) {
            eval('$misc = "'.template('misc_online_admin').'";');
        } else {
            eval('$misc = "'.template('misc_online').'";');
        }

        $misc = stripslashes($misc);
        break;

==========
Find Code:
==========

    case 'onlinetoday':
        if ($SETTINGS['whosonlinestatus'] == 'off' || $SETTINGS['onlinetoday_status'] == 'off') {
            eval('echo "'.template('header').'";');
            eval('echo "'.template('misc_feature_notavailable').'";');
            end_time();
            eval('echo "'.template('footer').'";');
            exit();
        }

        $datecut = $onlinetime - (3600 * 24);
        if (X_ADMIN) {
            $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' ORDER BY username ASC");
        } else {
            $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' AND invisible != '1' ORDER BY username ASC");
        }

        $todaymembersnum = 0;
        $todaymembers = array();
        $pre = $suff = '';
        while($memberstoday = $db->fetch_array($query)) {
            $pre = '<span class="status_'.str_replace(' ', '_', $memberstoday['status']).'">';
            $suff = '</span>';
            $todaymembers[] = '<a href="member.php?action=viewpro&amp;member='.recodeOut($memberstoday['username']).'">'.$pre.''.$memberstoday['username'].''.$suff. '</a>';
            ++$todaymembersnum;
        }
        $todaymembers = implode(', ', $todaymembers);
        $db->free_result($query);

        if ($todaymembersnum == 1) {
            $memontoday = $todaymembersnum.$lang['textmembertoday'];
        } else {
            $memontoday = $todaymembersnum.$lang['textmemberstoday'];
        }
        eval('$misc = "'.template('misc_online_today').'";');
        $misc = stripslashes($misc);
        break;

================
Replace Code With:
================

    case 'onlinetoday':
        if ($SETTINGS['whosonlinestatus'] == 'off' || $SETTINGS['onlinetoday_status'] == 'off') {
            header('HTTP/1.0 403 Forbidden');
            eval('echo "'.template('header').'";');
            eval('echo "'.template('misc_feature_notavailable').'";');
            end_time();
            eval('echo "'.template('footer').'";');
            exit();
        }

        $datecut = $onlinetime - (3600 * 24);
        if (X_ADMIN) {
            $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' ORDER BY username ASC");
        } else {
            $query = $db->query("SELECT username, status FROM ".X_PREFIX."members WHERE lastvisit >= '$datecut' AND invisible != '1' ORDER BY username ASC");
        }

        $todaymembersnum = 0;
        $todaymembers = array();
        $pre = $suff = $ricon = '';
        while($memberstoday = $db->fetch_array($query)) {
            $pre = '<span class="status_'.str_replace(' ', '_', $memberstoday['status']).'">';
            $suff = '</span>';
            $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $memberstoday['status']).'.gif" border="0" alt="'.$memberstoday['status'].'" />';
            $todaymembers[] = $ricon.'<a href="member.php?action=viewpro&amp;member='.recodeOut($memberstoday['username']).'">'.$pre.''.$memberstoday['username'].''.$suff. '</a>';
            ++$todaymembersnum;
        }
        $todaymembers = implode(', ', $todaymembers);
        $db->free_result($query);

        if ($todaymembersnum == 1) {
            $memontoday = $todaymembersnum.$lang['textmembertoday'];
        } else {
            $memontoday = $todaymembersnum.$lang['textmemberstoday'];
        }
        eval('$misc = "'.template('misc_online_today').'";');
        break;

==========
Find Code:
==========

                $memurl = recodeOut($member['username']);
                if ($order == 'status') {
                    if ($oldst != $member['status']) {
                        $oldst = $member['status'];
                        $seperator_text = (trim($member['status']) == '' ? $lang['onlineother'] : $member['status']);
                        eval('$members .= "'.template('misc_mlist_separator').'";');
                    }
                }

===============
Add Code Below:
===============

                $pre = $suff = $ricon = '';
                $pre = '<span class="status_'.str_replace(' ', '_', $member['status']).'">';
                $suff = '</span>';
                $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $member['status']).'.gif" border="0" alt="'.$member['status'].'" />';

                $member["username"] = $ricon.'<a href="member.php?action=viewpro&amp;member='.recodeOut($member['username']).'">'.$pre.''.$member['username'].''.$suff.'</a>';

============================================================================================================================
=======
Step 3:
=======
=================
Edit File: member.php
=================
==========
Find Code:
==========

                $daysreg = ($onlinetime - $memberinfo['regdate']) / (24*3600);
                if ($daysreg > 1 ) {
                    $ppd = $memberinfo['postnum'] / $daysreg;
                    $ppd = round($ppd, 2);
                } else {
                    $ppd = $memberinfo['postnum'];
                }

===============
Add Code Below:
===============

                // User Rank Icons Mod Begin
                $pre = $suff = $ricon = '';
                $pre = '<span class="status_'.str_replace(' ', '_', $memberinfo['status']).'">';
                $suff = '</span>';
                $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $memberinfo['status']).'.gif" border="0" alt="'.$memberinfo['status'].'" />';

                $memberinfousername = $ricon.''.$pre.''.$memberinfo['username'].''.$suff;
                // User Rank Icons Mod End

============================================================================================================================
=======
Step 4:
=======
=================
Edit File: memcp.php
=================
==========
Find Code:
==========

    if ($member['mood'] != '') {
        $member['mood'] = censor($member['mood']);
        $member['mood'] = postify($member['mood'], 'no', 'no', 'yes', 'no', 'yes', 'no', true, 'yes');
    } else {
        $member['mood'] = '';
    }

===============
Add Code Above:
===============

    // User Rank Icons Mod Begin
    $pre = $suff = $ricon = '';
    $pre = '<span class="status_'.str_replace(' ', '_', $member['status']).'">';
    $suff = '</span>';
    $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $member['status']).'.gif" border="0" alt="'.$member['status'].'" />';

    $member['username'] = $ricon.''.$pre.''.$member['username'].''.$suff;
    // User Rank Icons Mod End

============================================================================================================================
=======
Step 5:
=======
===================
Edit File: viewthread.php
===================
==========
Find Code:
==========

            $encodename = recodeOut($post['author']);

===============
Add Code Above:
===============

            // User Rank Icons Mod Begin
            $pre = $suff = $ricon = '';
            $pre = '<span class="status_'.str_replace(' ', '_', $post['status']).'">';
            $suff = '</span>';
            $ricon = '<img src="./images/ricons/online'.str_replace(' ', '', $post['status']).'.gif" border="0" alt="'.$post['status'].'" />';
            // User Rank Icons Mod End

============================================================================================================================
=======
Step 6:
=======
=======================
Edit File: lang/English.lang.php
=======================
============================
Add Code To End Of File Above ?>
============================

// User Rank Icons Mod Begin
$lang['ranksupadmin'] = "Super Administrator";
$lang['rankadmin'] = "Administrator";
$lang['ranksupmod'] = "Super Moderator";
$lang['rankmod'] = "Moderator";
$lang['rankmem'] = "Member";
// User Rank Icons Mod End

============================================================================================================================
=======
Step 7:
=======
==========================
Go to Admin Panel --> Templates
==========================
========================
Edit Template: viewthread_post
========================
==========
Find Code:
==========

<strong>$post[author]</strong>

================
Replace Code With:
================

$ricon<strong>$post[author]</strong>

============================================================================================================================
=======
Step 8:
=======
==========================
Go To Admin Panel --> Templates
==========================
=========================
Edit Template: index_whosonline
=========================
==========
Find Code:
==========

<td bgcolor="$altbg1" colspan="2" class="mediumtxt">$lang[key]<strong><u><i>$lang[superadmin]</i></u></strong> - <strong><u>$lang[textsendadmin]</u></strong> - <em><strong>$lang[textsendsupermod]</strong></em> - <strong>$lang[textsendmod]</strong> - $lang[textsendall]$hidden</td>

================
Replace Code With:
================

<td bgcolor="$THEME[altbg1]" colspan="6" class="mediumtxt">$lang[key]$supadminkey$adminkey$supmodkey$modkey$memkey$hidden</td>

============================================================================================================================
=======
Step 9:
=======
==========================
Go To Admin Panel --> Templates
==========================
=======================
Edit Template: member_profile
=======================
==========
Find Code:
==========

$memberinfo[username]

================
Replace Code With:
================

$memberinfousername

============================================================================================================================
========
Step 10:
========

Now upload the provided folder "ricons" to your images folder.

============================================================================================================================
Enjoy!