1 (edited by Tubby 2007-11-17 16:34)

Topic: Coloured Groups ( By Group Title )

The good thing about this modification is that nothing has to be added/installed in to the database. Not only that, but you are able to modify the classification via css, and it is alot easier to customize. Also, you have the ability to customize it for each seperate style sheet. Let me know how it turns out smile.

Let's start by opening up your index.php
Begin this step by finding the following line:

$result = $db->query('SELECT user_id, ident FROM '.$db->prefix.'online WHERE idle=0 ORDER BY ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());

Replace this line with the following:

$result = $db->query('SELECT o.user_id, o.ident, g.g_id, g.g_title FROM '.$db->prefix.'online AS o INNER JOIN '.$db->prefix.'users AS u ON o.user_id=u.id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE o.idle=0 ORDER BY o.ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());

Now, find this line:

$users[] = "\n\t\t\t\t".'<dd><a href="profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a>';

Replace it with:

$users[] = "\n\t\t\t\t".'<dd><span class="'.$pun_user_online['g_title'].'"><a href="profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a></span>';

Okay, now open up viewtopic.php.

Find:

$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());

Replace with:

$result = $db->query('SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, g.g_title, o.user_id AS is_online FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'users AS u ON u.id=p.poster_id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id LEFT JOIN '.$db->prefix.'online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id='.$id.' ORDER BY p.id LIMIT '.$start_from.','.$pun_user['disp_posts'], true) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());

Next find:

$username = '<a href="profile.php?id='.$cur_post['poster_id'].'">'.pun_htmlspecialchars($cur_post['username']).'</a>';

Replace that with:

$username = '<span class="'.$cur_post['g_title'].'"><a href="profile.php?id='.$cur_post['poster_id'].'">'.pun_htmlspecialchars($cur_post['username']).'</a></span>';

Now we move on to userlist.php

First find:

$result = $db->query('SELECT u.id, u.username, u.title, u.num_posts, u.registered, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1'.(!empty($where_sql) ? ' AND '.implode(' AND ', $where_sql) : '').' ORDER BY '.$sort_by.' '.$sort_dir.' LIMIT '.$start_from.', 50') or error('Unable to fetch user list', __FILE__, __LINE__, $db->error());

Replace with:

$result = $db->query('SELECT u.id, u.username, u.title, u.num_posts, u.registered, g.g_id, g.g_user_title, g.g_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id>1'.(!empty($where_sql) ? ' AND '.implode(' AND ', $where_sql) : '').' ORDER BY '.$sort_by.' '.$sort_dir.' LIMIT '.$start_from.', 50') or error('Unable to fetch user list', __FILE__, __LINE__, $db->error());

Next find:

<td class="tcl"><?php echo '<a href="profile.php?id='.$user_data['id'].'">'.pun_htmlspecialchars($user_data['username']).'</a>' ?></td>

Replace that with:

<td class="tcl"><?php echo '<span class="'.$user_data['g_title'].'"><a href="profile.php?id='.$user_data['id'].'">'.pun_htmlspecialchars($user_data['username']).'</a></span>' ?></td>

Open profile.php.

Find:

$result = $db->query('SELECT u.username, u.email, u.title, u.realname, u.url, u.jabber, u.icq, u.msn, u.aim, u.yahoo, u.location, u.use_avatar, u.signature, u.disp_topics, u.disp_posts, u.email_setting, u.save_pass, u.notify_with_post, u.show_smilies, u.show_img, u.show_img_sig, u.show_avatars, u.show_sig, u.timezone, u.language, u.style, u.num_posts, u.last_post, u.registered, u.registration_ip, u.admin_note, g.g_id, g.g_user_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id='.$id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());

Replace with:

$result = $db->query('SELECT u.username, u.email, u.title, u.realname, u.url, u.jabber, u.icq, u.msn, u.aim, u.yahoo, u.location, u.use_avatar, u.signature, u.disp_topics, u.disp_posts, u.email_setting, u.save_pass, u.notify_with_post, u.show_smilies, u.show_img, u.show_img_sig, u.show_avatars, u.show_sig, u.timezone, u.language, u.style, u.num_posts, u.last_post, u.registered, u.registration_ip, u.admin_note, g.g_id, g.g_user_title, g.g_title FROM '.$db->prefix.'users AS u LEFT JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE u.id='.$id) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());

Now find:

<dd><?php echo pun_htmlspecialchars($user['username']) ?></dd>

Replace that with:

<dd><?php echo '<span class="'.$user['g_title'].'"><a href="profile.php?id='.$id.'">'.pun_htmlspecialchars($user['username']).'</a></span>' ?></dd>

Now, this is where we style the links for each of the groups smile.

Open up either your main.tpl, or a specific style sheet ( your_style.css ).

For main.tpl

Add this in between the <head> tag:

<style type="text/css">
span.Administrators a:link, span.Administrators a:visited {
    color: #ff9900;
    font-size: 12px;
}    
span.Administrators a:hover {
    color: #ff9966;
    font-size: 12px;
    text-decoration: underline;
}
span.Moderators a:link, span.Moderators a:visited {
    color: #009900;
    font-size: 12px;
}
span.Moderators a:hover {
    color: #00bb00;
    font-size: 12px;
    text-decoration: underline;
}
</style>

For the style sheet
Add this at the end of it:

span.Administrators a:link, span.Administrators a:visited {
    color: #ff9900;
    font-size: 12px;
}    
span.Administrators a:hover {
    color: #ff9966;
    font-size: 12px;
    text-decoration: underline;
}
span.Moderators a:link, span.Moderators a:visited {
    color: #009900;
    font-size: 12px;
}
span.Moderators a:hover {
    color: #00bb00;
    font-size: 12px;
    text-decoration: underline;
}

That should be all! Let me know how it works.

Re: Coloured Groups ( By Group Title )

It is a great mod. Although I don't see the reason for adding the style to the main.tpl. Isn't it a bit redundant?

Anyway, I tried it and it works great. You should have also included Members in the css classes. I also tried that and it does work as well. I myself can't use this mod because for one, my index.php file uses sub-forums with the username link to profile on the index page and that's unfortunate. It does make the site look more structured to some small degree.

Bingiman

Re: Coloured Groups ( By Group Title )

Seems nice going to try it later on.

[img]http://img90.imageshack.us/img90/746/scripter8ko.png[/img]
http://openwings.co.cc

4

Re: Coloured Groups ( By Group Title )

bingiman wrote:

I myself can't use this mod because for one, my index.php file uses sub-forums with the username link to profile on the index page and that's unfortunate. It does make the site look more structured to some small degree.

Modify it to suit. big_smile

Re: Coloured Groups ( By Group Title )

I am not a code. There is an area in there I have no clue what to do with. I can post the code here if you want to look at it. I am sure you can figure it out.

This is the line, notice the $l_pr

    $last_post = 'Re: <a href="viewtopic.php?pid='.$l_pid.'#p'.$l_pid.'"'.$idmT.'>'.$idm.'</a><br />'.format_time($l_post).'<br /><span class="byuser">'.$lang_common['by'].' <a href="profile.php?id='.$l_pr_id.'">'.pun_htmlspecialchars($l_pr).'</a></span>';

and this is my complete index.php

<?php
/***********************************************************************

  Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)

  This file is part of PunBB.

  PunBB is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 2 of the License,
  or (at your option) any later version.

  PunBB is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  MA  02111-1307  USA

************************************************************************/


define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';


if ($pun_user['g_read_board'] == '0')
    message($lang_common['No view']);


// Load the index.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php';

$page_title = pun_htmlspecialchars($pun_config['o_board_title']);
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';

################################################################################
########################### Sub Forum MOD (start) ##############################
################################################################################
$sfcount=0;
$sfdb = array($_parent_id_, $_topics_, $_posts_, $_last_post_id_, $_last_poster_, $_last_post_);
//$forums_info = $db->query('SELECT num_topics, num_posts, parent_forum_id, last_post_id, last_poster, last_post, id, forum_name FROM '.$db->prefix.'forums ORDER BY disp_position') or error(implode($db->error(),''),__FILE__,__LINE__,$db->error());

$forums_info = $db->query('SELECT f.num_topics, f.num_posts, f.parent_forum_id, f.last_post_id, f.last_poster, f.last_post, f.id, f.forum_name, p.poster_id as last_poster_id, t.subject FROM '.$db->prefix.'forums AS f LEFT JOIN '.$db->prefix.'posts AS p ON (p.id=f.last_post_id) LEFT JOIN '.$db->prefix.'topics AS t ON t.last_post_id=f.last_post_id ORDER BY disp_position') or error(implode($db->error(),''),__FILE__,__LINE__,$db->error());
while($current = $db->fetch_assoc($forums_info)) {
 if ($current['parent_forum_id'] != 0)
  {
   $sfdb[$sfcount][0] = $current['parent_forum_id'];
   $sfdb[$sfcount][1] = $current['num_topics'];
   $sfdb[$sfcount][2] = $current['num_posts'];
   $sfdb[$sfcount][3] = $current['last_post_id'];
   $sfdb[$sfcount][4] = $current['last_poster'];
   $sfdb[$sfcount][5] = $current['last_post'];
   $sfdb[$sfcount][6] = $current['id'];
   $sfdb[$sfcount][7] = $current['forum_name'];
   $sfdb[$sfcount][8] = $current['last_poster_id'];
   $sfdb[$sfcount][9] = $current['subject'];

   $sfcount++;
  }
}
################################################################################
########################### Sub Forum MOD ( end ) ##############################
################################################################################

// MOD: MARK TOPICS AS READ - 1 LINE NEW CODE FOLLOWS
$new_topics = get_all_new_topics();

// Print the categories and forums
$result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.forum_desc, f.redirect_url, f.moderators, f.num_topics, f.num_posts, f.last_post, f.last_post_id, f.last_poster, f.parent_forum_id, p.poster_id as last_poster_id, t.subject FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN '.$db->prefix.'topics AS t ON t.last_post_id=f.last_post_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') LEFT JOIN '.$db->prefix.'posts AS p ON (p.id=f.last_post_id) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND (f.parent_forum_id IS NULL OR f.parent_forum_id=0) ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error());

$cur_category = 0;
$cat_count = 0;

// stuff for toggling categories
$cat_ids = (isset($_COOKIE['collapseprefs']))? $_COOKIE['collapseprefs'].',': FALSE;

while ($cur_forum = $db->fetch_assoc($result))
{
    $moderators = '';

    if ($cur_forum['cid'] != $cur_category)    // A new category since last iteration?
    {
        if ($cur_category != 0)
            echo "\t\t\t".'</tbody>'."\n\t\t\t".'</table>'."\n\t\t".'</div>'."\n\t".'</div>'."\n".'</div>'."\n\n";

        ++$cat_count;

        // Setting varibles for toggling categories
        $div_box = strstr($cat_ids, $cat_count.',')? ' style="display:none"' : '';
        $exp_img = (is_file('img/blank.gif')? 'img/': 'img/') . (strpos($div_box,'none') ? 'blank.gif' : 'blank.gif');
?>
<div id="idx<?php echo $cat_count ?>" class="blocktable">
    <h2>
        <span><a class="forum-cat" href="javascript:togglecategory(<?php echo $cat_count?>);" title="Collapse/Expand Category"><img style="vertical-align: middle;" src="<?php echo $exp_img?>" alt="Collapse" id="img_<?php echo $cat_count?>" /><?php echo pun_htmlspecialchars($cur_forum['cat_name']) ?></a></span>
    </h2>
    <div class="box" id="box_<?php echo $cat_count ?>"<?php echo $div_box?>>
        <div class="inbox">
            <table cellspacing="0">
            <thead>
                <tr>
                    <th style="border-top: 0px;" class="tcl" scope="col"><?php echo $lang_common['Forum'] ?></th>
                    <th style="border-top: 0px;" class="tc2" scope="col"><?php echo $lang_index['Topics'] ?></th>
                    <th style="border-top: 0px;" class="tc3" scope="col"><?php echo $lang_common['Posts'] ?></th>
                    <th style="border-top: 0px;" class="tcr" scope="col"><?php echo $lang_common['Last post'] ?></th>
                </tr>
            </thead>
            <tbody>
<?php

        $cur_category = $cur_forum['cid'];
    }

    $item_status = '';
    $icon_text = $lang_common['Normal icon'];
    $icon_type = 'icon';

    // Are there new posts?
        // MOD: MARK TOPICS AS READ - 1 LINE MODIFIED CODE FOLLOWS
    if (!$pun_user['is_guest'] && forum_is_new($cur_forum['fid'], $cur_forum['last_post']))

    {
        $item_status = 'inew';
        $icon_text = $lang_common['New icon'];
        $icon_type = 'icon inew';
    }

    // Is this a redirect forum?
    if ($cur_forum['redirect_url'] != '')
    {
        $forum_field = '<h3><a onclick="window.open(this.href); return false;" href="'.pun_htmlspecialchars($cur_forum['redirect_url']).'" title="'.$lang_index['Link to'].' '.pun_htmlspecialchars($cur_forum['redirect_url']).'">'.pun_htmlspecialchars($cur_forum['forum_name']).'</a></h3>';
        $num_topics = $num_posts = ' ';
        $item_status = 'iredirect';
        $icon_text = $lang_common['Redirect icon'];
        $icon_type = 'icon';
    }
    else
    {
        $forum_field = '<h3><a href="viewforum.php?id='.$cur_forum['fid'].'">'.pun_htmlspecialchars($cur_forum['forum_name']).'</a></h3>';
################################################################################
########################### Sub Forum MOD (start) ##############################
################################################################################
  $n_t = 0;
  $n_p = 0;
  $l_pid = $cur_forum['last_post_id'];
  $l_pr = $cur_forum['last_poster'];
  $l_pr_id = $cur_forum['last_poster_id'];
  $l_pr_su = $cur_forum['subject'];
  $l_post = $cur_forum['last_post'];
  for ($i = 0; $i < $sfcount; $i++)
  {
   if ($sfdb[$i][0] == $cur_forum['fid'])
    {
     $n_t = $n_t + $sfdb[$i][1];
     $n_p = $n_p + $sfdb[$i][2];
     if ($l_pid < $sfdb[$i][3])
      {
       $l_pid = $sfdb[$i][3];
       $l_pr = $sfdb[$i][4];
     $l_pr_id = $sfdb[$i][8];
       $l_post = $sfdb[$i][5];
       $l_pr_su = $sfdb[$i][9];
      }
    }
  }
  $num_topics = $n_t + $cur_forum['num_topics'];
  $num_posts = $n_p + $cur_forum['num_posts'];
################################################################################
########################### Sub Forum MOD ( end ) ##############################
################################################################################
    }

    if ($cur_forum['forum_desc'] != '')
        $forum_field .= "\n\t\t\t\t\t\t\t\t".$cur_forum['forum_desc'];


    // Display the last topic
    $idm = $l_pr_su;
    if(strlen($idm) > 25) {
        $idmComp = str_replace('"', "''", $idm);
        $idm = substr($idm, 0, 25).'...';
    } else
        $idmComp = '';
 
    // If there is a last_post/last_poster.
    if ($l_post != '') {
        $idmT = (isset($idmComp)) ? ' title="'.$idmComp.'"' : '';
    $last_post = 'Re: <a href="viewtopic.php?pid='.$l_pid.'#p'.$l_pid.'"'.$idmT.'>'.$idm.'</a><br />'.format_time($l_post).'<br /><span class="byuser">'.$lang_common['by'].' <a href="profile.php?id='.$l_pr_id.'">'.pun_htmlspecialchars($l_pr).'</a></span>';
    } else
        $last_post = ' ';

    if ($cur_forum['moderators'] != '')
    {
        $mods_array = unserialize($cur_forum['moderators']);
        $moderators = array();

        while (list($mod_username, $mod_id) = @each($mods_array))
            $moderators[] = '<a href="profile.php?id='.$mod_id.'"><span class="byuser">'.pun_htmlspecialchars($mod_username).'</span></a>';

        $moderators = "\t\t\t\t\t\t\t\t".'<br /><span class="moderator">[<span class="mod_by">'.$lang_common['Moderated by'].':</span> '.implode(', ', $moderators).']</span>'."\n";
    }

    if (!empty($sfdb)) {
        foreach ($sfdb as $sub_forums) {

            if (!$pun_user['is_guest']) {
                if ($cur_forum['fid'] == $sub_forums[0]) {
                    if (forum_is_new($cur_forum['fid'], $cur_forum['last_post']) || forum_is_new($sub_forums[6], $sub_forums[5])) {
                        $item_status = 'inew';
                        $icon_text = $lang_common['New icon'];
                        $icon_type = 'icon inew';
                    }
                }
    }
        }
    }

?>
                 <tr<?php if ($item_status != '') echo ' class="'.$item_status.'"'; ?>>
                    <td class="tcl">
                        <div class="intd">
                            <div class="<?php echo $icon_type ?>"><div class="nosize"><?php echo $icon_text ?></div></div>
                            <div class="tclcon">
                                <?php echo $forum_field."\n".$moderators ?>
<?php
                        $sub_forums_list = array();
                        if(!empty($sfdb)) {
                           foreach ($sfdb as $sub_forums) {
                                 if($cur_forum['fid'] == $sub_forums[0]) {
                                    $sub_forums_list[] = '<a class="subforum_name" href="viewforum.php?id='.$sub_forums[6].'">'.pun_htmlspecialchars($sub_forums[7]).'</a>';
                                 }
                             }
                           // EDIT THIS FOR THE DISPLAY STYLE OF THE SUBFORUMS ON MAIN PAGE
                           if(!empty($sub_forums_list)) {
                                 // Leave one $sub_forums_list commented out to use the other (between the ###..)
                                 ################################
                                 // This is Single Line Wrap Style
                                 $sub_forums_list = "\t\t\t\t\t\t\t\t".'<span class="subforum">'.$lang_common['Sub Forums'].':</span> '.implode(', ', $sub_forums_list)."\n";
                                 // This is List Style
                                 //$sub_forums_list = "\n".'<b><em>Sub Forums:</em></b><br />  --  '.implode('<br />  --  ', $sub_forums_list)."\n";
                                 ################################
                                 if ($cur_forum['forum_desc'] != NULL) {
                                    echo "<br />";
                                 }
                                 // TO TURN OFF DISPLAY OF SUBFORUMS ON INDEX PAGE, COMMENT OUT THE FOLLOWING LINE
                                 echo "$sub_forums_list";
                           }
                        }
?>
                            </div>
                        </div>
                    </td>
                    <td class="tc2"><?php echo $num_topics ?></td>
                    <td class="tc3"><?php echo $num_posts ?></td>
                    <td style="text-align: right;" class="tcr"><?php echo $last_post ?></td>
                </tr>
<?php

}

// Did we output any categories and forums?
if ($cur_category > 0)
    echo "\t\t\t".'</tbody>'."\n\t\t\t".'</table>'."\n\t\t".'</div>'."\n\t".'</div>'."\n".'</div>'."\n\n";
else
    echo '<div id="idx0" class="block"><div class="box"><div class="inbox"><p>'.$lang_index['Empty board'].'</p></div></div></div>';

//include('active-topics.php');

// Collect some statistics from the database
$result = $db->query('SELECT COUNT(id)-1 FROM '.$db->prefix.'users') or error('Unable to fetch total user count', __FILE__, __LINE__, $db->error());
$stats['total_users'] = $db->result($result);

$result = $db->query('SELECT id, username FROM '.$db->prefix.'users ORDER BY registered DESC LIMIT 1') or error('Unable to fetch newest registered user', __FILE__, __LINE__, $db->error());
$stats['last_user'] = $db->fetch_assoc($result);

$result = $db->query('SELECT SUM(num_topics), SUM(num_posts) FROM '.$db->prefix.'forums') or error('Unable to fetch topic/post count', __FILE__, __LINE__, $db->error());
list($stats['total_topics'], $stats['total_posts']) = $db->fetch_row($result);

?>
<div id="brdstats" class="block no-base-border">
    <h2><span><?php echo $lang_index['Board info'] ?></span></h2>
    <div class="box">
        <div class="inbox">
            <dl class="conr">
                <dt><strong><?php echo $lang_index['Board stats'] ?></strong></dt>
                <dd><?php echo $lang_index['No of users'].': <strong>'. $stats['total_users'] ?></strong></dd>
                <dd><?php echo $lang_index['No of topics'].': <strong>'.$stats['total_topics'] ?></strong></dd>
                <dd><?php echo $lang_index['No of posts'].': <strong>'.$stats['total_posts'] ?></strong></dd>
            </dl>
            <dl class="conl">
                <dt><strong><?php echo $lang_index['User info'] ?></strong></dt>
                <dd><?php echo $lang_index['Newest user'] ?>: <a href="profile.php?id=<?php echo $stats['last_user']['id'] ?>"><?php echo pun_htmlspecialchars($stats['last_user']['username']) ?></a></dd>
<?php

if ($pun_config['o_users_online'] == '1')
{
    // Fetch users online info and generate strings for output
    $num_guests = 0;
    $users = array();
    $result = $db->query('SELECT user_id, ident FROM '.$db->prefix.'online WHERE idle=0 ORDER BY ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());

    while ($pun_user_online = $db->fetch_assoc($result))
    {
        if ($pun_user_online['user_id'] > 1)
            $users[] = "\n\t\t\t\t".'<dd><a href="profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a>';
        else
            ++$num_guests;
    }

    $num_users = count($users);
    echo "\t\t\t\t".'<dd>'. $lang_index['Users online'].': <strong>'.$num_users.'</strong></dd>'."\n\t\t\t\t".'<dd>'.$lang_index['Guests online'].': <strong>'.$num_guests.'</strong></dd>'."\n\t\t\t".'</dl>'."\n";


    if ($num_users > 0)
        echo "\t\t\t".'<dl id="onlinelist" class= "clearb">'."\n\t\t\t\t".'<dt><strong>'.$lang_index['Online'].': </strong></dt>'."\t\t\t\t".implode(',</dd> ', $users).'</dd>'."\n\t\t\t".'</dl>'."\n";
    else
        echo "\t\t\t".'<div class="clearer"></div>'."\n";

}
else
    echo "\t\t".'</dl>'."\n\t\t\t".'<div class="clearer"></div>'."\n";


?>
        </div>
    </div>
</div>
<?php
$footer_style = 'index';
require PUN_ROOT.'footer.php';

If you can show me what I need to change or add, that would be awesome.

Bingiman

6

Re: Coloured Groups ( By Group Title )

Alright. take this query in your index.php:

Find:

$result = $db->query('SELECT user_id, ident FROM '.$db->prefix.'online WHERE idle=0 ORDER BY ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());

Replace with:

$result = $db->query('SELECT o.user_id, o.ident, g.g_id, g.g_title FROM '.$db->prefix.'online AS o INNER JOIN '.$db->prefix.'users AS u ON o.user_id=u.id INNER JOIN '.$db->prefix.'groups AS g ON g.g_id=u.group_id WHERE o.idle=0 ORDER BY o.ident', true) or error('Unable to fetch online list', __FILE__, __LINE__, $db->error());

Afterwards, find this line:

$users[] = "\n\t\t\t\t".'<dd><a href="profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a>';

Replace that line with:

$users[] = "\n\t\t\t\t".'<dd><span class="'.$pun_user_online['g_title'].'"><a href="profile.php?id='.$pun_user_online['user_id'].'">'.pun_htmlspecialchars($pun_user_online['ident']).'</a></span>';

That's all that is needed for index.php. It seems to be the same exact procedure for both the default version, and your version of index.php. The modification only affects the online query, and changes the line that outputs the online users. So, it should be safe to use just as long as you modify it correctly smile.

7 (edited by bingiman 2007-11-21 20:44)

Re: Coloured Groups ( By Group Title )

That does not work for mine at all. You do also realize that my index is modded? The username on my index is an actual URL to the user profile and that's the area I need to add the code to. Your solution only changes the color of the Online users. I need to find out how to change the color of the actual username which is a link.

8 (edited by Tubby 2007-11-21 23:12)

Re: Coloured Groups ( By Group Title )

I'm looking at your posted index.php file, and I've found the lines myself. I do not know what you mean exactly. All this modification is supposed to do is add a span classification to the user links in the online list itself. Going by what you have posted, the modification seems like it would work just fine.

9 (edited by bingiman 2007-11-21 23:16)

Re: Coloured Groups ( By Group Title )

Let me show you a pic.

http://img104.imageshack.us/img104/3413/sample10ms2.th.gif

The image I am showing you is the line of code below:

    $last_post = 'Re: <a href="viewtopic.php?pid='.$l_pid.'#p'.$l_pid.'"'.$idmT.'>'.$idm.'</a><br />'.format_time($l_post).'<br /><span class="byuser">'.$lang_common['by'].' <a href="profile.php?id='.$l_pr_id.'">'.pun_htmlspecialchars($l_pr).'</a></span>';

10

Re: Coloured Groups ( By Group Title )

So, you wish to apply this modification to a different part of your index.php?

Re: Coloured Groups ( By Group Title )

Very nice mod Tubby, modified it a little but can't remember what I did tongue Wasn't important.

[img]http://img90.imageshack.us/img90/746/scripter8ko.png[/img]
http://openwings.co.cc

12

Re: Coloured Groups ( By Group Title )

Well, the modification itself is nothing special, but it can be highy effective if you think about it wink. It has it's advantages.

I'm thinking about making this modification a little more official, and releasing it over at PunRes. I'm going to have to get it a little more ogranized though. I'll start with a "Read Me", and go from there smile.

Re: Coloured Groups ( By Group Title )

Yes, I am trying to add it to that line I provided above but I can't figure it out.

14 (edited by Tubby 2007-11-22 03:08)

Re: Coloured Groups ( By Group Title )

Well, after taking a look at that portion of the index.php file, I have noticed that another query would need to be added. Not only that, but it already has a span classification. I think that you are better off leaving it as it is. 

Again, it is possible, but it would take some more modifying.

Re: Coloured Groups ( By Group Title )

I am not worried about the span becuase I can always alter that area to add another one. My goal was to get it to work in that area. Well, if it is too much to modify then I guess I will have to live without it.

Bingiman