Show Avatar in Friends list 1.0.1

Here my mods and history gets moved when validated and released to the phpbb.com MODDB

Show Avatar in Friends list 1.0.1

Postby lefty » Tue Jul 24, 2007 10:48 pm

MOD Title: Show Avatar in Friends list
MOD Description: Shows the avatar of your friends in the UCP.
MOD Version: 1.0.1

MOD Download: Show Avatar in Friends list 1.0.1
phpbb3 version: 3.0.2

Demo Board: Demoboard
Demo Username: test
Demo Password: testtest
Image
Last edited by lefty on Thu Oct 25, 2007 8:09 pm, edited 3 times in total.
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Postby lefty » Thu Jul 26, 2007 8:29 pm

found the bug  :oops:

first post and download link updated.

to upgrade

open ucp.php

FIND
Code: Select all
      if ( empty($row['user_avatar']) )
      {
         $avatar_img = '';
         $user_avatar = '';
      }
      else
      {
   switch ($row['user_avatar_type'])
   {
      case AVATAR_UPLOAD:
         $avatar_img = $phpbb_root_path . "download.$phpEx?avatar=";
      break;

      case AVATAR_GALLERY:
         $avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
      break;
   }

   $avatar_img .= $row['user_avatar'];
   $user_avatar = '<img src="' . $avatar_img . '" width="40" alt="' . $user->lang['USER_AVATAR'] . '" />';
   }   


REPLACE WITH

Code: Select all
      if ( empty($row['user_avatar']) || !$row['user_avatar_type'] )
      {
      }
      
   $avatar_img = '';
   $user_avatar = '';
   
   switch ($row['user_avatar_type'])
   {
      case AVATAR_UPLOAD:
         $avatar_img = $phpbb_root_path . "download.$phpEx?avatar=";
      break;

      case AVATAR_GALLERY:
         $avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
      break;
   }

   $avatar_img .= $row['user_avatar'];
   $user_avatar = '<img src="' . $avatar_img . '" width="40" alt="' . $user->lang['USER_AVATAR'] . '" />';
   
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Postby lefty » Thu Oct 25, 2007 8:10 pm

updated to v 0.0.2
works now with RC7

to upgrade:
#
#-----[ OPEN ]------------------------------------------
#
ucp.php
#
#-----[ FIND ]------------------------------------------
#
'SELECT' => 'u.user_id, u.username, u.username_clean, u.user_colour, u.user_avatar, u.user_avatar_type,
#
#-----[ IN-LINE FIND ]------------------------------------------
#
 u.user_avatar_type,
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
u.user_avatar_width, u.user_avatar_height,
#
#-----[ FIND ]------------------------------------------
#
if ( empty($row['user_avatar']) || !$row['user_avatar_type'] )
{
}

$avatar_img = '';
$user_avatar = '';

switch ($row['user_avatar_type'])
{
case AVATAR_UPLOAD:
$avatar_img = $phpbb_root_path . "download.$phpEx?avatar=";
break;

case AVATAR_GALLERY:
$avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
break;
}

$avatar_img .= $row['user_avatar'];
$user_avatar = '<img src="' . $avatar_img . '" width="40" alt="' . $user->lang['USER_AVATAR'] . '" />';


#
#-----[ REPLACE WITH ]------------------------------------------
#
if ( empty($row['user_avatar']) || !$row['user_avatar_type'] )
{
}

$avatar_img = $avatar_max_dimensions ='';
$avatar_width = '';
$avatar_height = '';
$user_avatar = '';

switch ($row['user_avatar_type'])
{
case AVATAR_UPLOAD:
$avatar_img = $phpbb_root_path . "download/file.$phpEx?avatar=";
break;

case AVATAR_GALLERY:
$avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
break;
}

$avatar_img .= $row['user_avatar'];

if ( !empty($row['user_avatar']) )
{
$avatar_max_dimensions = 40; // here you can change the max-width you would like to have the avatars displayed

if ( $row['user_avatar_width'] >= $row['user_avatar_height'] )
{
$avatar_width = ( $row['user_avatar_width'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['user_avatar_width'] ;
$avatar_height = ( $avatar_width == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['user_avatar_width'] * $row['user_avatar_height']) : $row['user_avatar_height'] ;
}
else
{
$avatar_height = ( $row['user_avatar_height'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['user_avatar_height'] ;
$avatar_width = ( $avatar_height == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['user_avatar_height'] * $row['user_avatar_width']) : $row['user_avatar_width'] ;
}
}

$user_avatar = '<img src="' . $avatar_img . '" width="' . $avatar_width . '" height="' . $avatar_height . '" alt="' . $user->lang['USER_AVATAR'] . '" />';



#
#-----[ FIND ]------------------------------------------
#
'USER_AVATAR' => $user_avatar,

#
#-----[ REPLACE WITH ]------------------------------------------
#
'USER_AVATAR' => (!empty($row['user_avatar'])) ? $user_avatar :'',
'AVATAR_DIMENSIONS'  => $avatar_max_dimensions + 2,

#
#-----[ OPEN ]------------------------------------------
#
styles/prosilver/template/ucp_header.html
#
#-----[ FIND ]------------------------------------------
#
<dd class="friend-online" title="{L_FRIENDS_ONLINE}"><table><tr><td>{friends_online.USER_AVATAR}</td><td> {friends_online.USERNAME_FULL}<!-- IF S_SHOW_PM_BOX --> <input type="submit" name="add_to[{friends_online.USER_ID}]" value="{L_ADD}" class="button2" /><!-- ENDIF --></td></tr></table><!-- IF friends_online.S_LAST_ROW and .friends_offline --><hr /><!-- ENDIF --></dd>

#
#-----[ REPLACE WITH ]------------------------------------------
#
<dd class="friend-online" title="{L_FRIENDS_ONLINE}"><table width="{friends_online.AVATAR_DIMENSIONS}" height="{friends_online.AVATAR_DIMENSIONS}"><tr><td>{friends_online.USER_AVATAR}</td><td> {friends_online.USERNAME_FULL}<!-- IF S_SHOW_PM_BOX --> <input type="submit" name="add_to[{friends_online.USER_ID}]" value="{L_ADD}" class="button2" /><!-- ENDIF --></td></tr></table><!-- IF friends_online.S_LAST_ROW and .friends_offline --><hr /><!-- ENDIF --></dd>

#
#-----[ FIND ]------------------------------------------
#
<dd class="friend-offline" title="{L_FRIENDS_OFFLINE}"><table><tr><td>{friends_offline.USER_AVATAR}</td><td>{friends_offline.USERNAME_FULL} <!-- IF S_SHOW_PM_BOX --><input type="submit" name="add_to[{friends_offline.USER_ID}]" value="{L_ADD}" class="button2" /><!-- ENDIF --></td></tr></table></dd>

#
#-----[ REPLACE WITH ]------------------------------------------
#
<dd class="friend-offline" title="{L_FRIENDS_OFFLINE}"><table ><tr><td width="{friends_offline.AVATAR_DIMENSIONS}" height="{friends_offline.AVATAR_DIMENSIONS}">{friends_offline.USER_AVATAR}</td><td>{friends_offline.USERNAME_FULL} <!-- IF S_SHOW_PM_BOX --><input type="submit" name="add_to[{friends_offline.USER_ID}]" value="{L_ADD}" class="button2" /><!-- ENDIF --></td></tr></table></dd>

#
#-----[ OPEN ]------------------------------------------
#
styles/subsilver2/template/ucp_header.html
#
#-----[ FIND ]------------------------------------------
#
<li><table><tr><td>{friends_online.USER_AVATAR}</td><td>{friends_online.USERNAME_FULL}

#
#-----[ REPLACE WITH ]------------------------------------------
#
<li><table><tr><td width="{friends_online.AVATAR_DIMENSIONS}" height="{friends_online.AVATAR_DIMENSIONS}">{friends_online.USER_AVATAR}</td><td>{friends_online.USERNAME_FULL}

#
#-----[ FIND ]------------------------------------------
#
<li><table><tr><td>{friends_offline.USER_AVATAR}</td><td>{friends_offline.USERNAME_FULL}
#
#-----[ REPLACE WITH ]------------------------------------------
#
<li><table><tr><td width="{friends_offline.AVATAR_DIMENSIONS}" height="{friends_offline.AVATAR_DIMENSIONS}">{friends_offline.USER_AVATAR}</td><td>{friends_offline.USERNAME_FULL}

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: [BETA] Show Avatar in Friends list 0.0.2

Postby absolutex » Sun Aug 31, 2008 3:15 am

Hi thank you ,nice mod ^^' :kuhsmilie:
absolutex
Newbie/Neuling
 
Posts: 5
Joined: Sun Aug 31, 2008 3:13 am

Re: [BETA] Show Avatar in Friends list 0.0.2

Postby lefty » Sun Aug 31, 2008 9:42 am

thanks :)
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.0

Postby lefty » Tue Sep 09, 2008 7:18 pm

2008-09-02 - Version1.0.0
making use of the already existing get_user_avatar function


also submitted to MODDB.
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Tue Sep 23, 2008 8:27 pm

MOD got denied (quite rightly)
2008-09-23 - Version1.0.1
fixing the install file and adding a few more function_exist checks ...
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Sun Sep 28, 2008 10:04 pm

MOD got approved and validated :)
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby rappelkiste_src » Fri Dec 18, 2009 9:44 am

Hallo lefty,

deine MODs sehen sehr vielversprechend aus. Ich würde diese gerne nach und nach bei mir im Forum installieren.
Leider habe ich beim ersten "Show Avatar in Friends list" bereits eine Fehlermeldung bekommen.

Ich nutze phpBB 3.0.6 und habe die MOD über AutoMOD ohne weitere nötige manuelle Änderungen installiert.
Soweit läuft sie auch, nur wenn ich im Persönlichen Bereich unter "Benutzergruppen" auf "Gruppen verwalten" klicke, dann steigt phpBB aus. Es wird die folgende Meldung angezeigt.

Code: Select all
Fatal error: Cannot redeclare display_forums() (previously declared in C:\xampp\xampp\htdocs\meine-domain\includes\functions_display.php:22) in C:\xampp\xampp\htdocs\meine-domain\includes\functions_display.php on line 519


In deinem Demo-Board erscheint die Fehlermeldung auch.

Code: Select all
Fatal error: Cannot redeclare display_forums() (previously declared in /home/kpzjcva/public_html/thebritishshorthaircom/includes/functions_display.php:22) in /home/kpzjcva/public_html/thebritishshorthaircom/includes/functions_display.php on line 538


Kennst du diese Fehlermeldung und/oder kannst du weiterhelfen?

Vielen Dank
Micha
rappelkiste_src
 

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Fri Dec 18, 2009 8:01 pm

hmm, da muss ich wohl nen edit vergessen haben.

mach mal bitte folgendes,
in includes/ucp/ucp_groups.php
finde
Code: Select all
            include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

ersetze mit
Code: Select all
   if (!function_exists('display_forums'))
   {
            include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
   }
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby rappelkiste_src » Fri Dec 18, 2009 9:09 pm

Hallo lefty,

das war's. Alles läuft bestens.

Recht herzlichen Dank für diese tolle Modifikation.

Gruß Micha
rappelkiste_src
 

Re: Show Avatar in Friends list 1.0.1

Postby Jeeea » Mon Feb 15, 2010 7:55 pm

Hi,

I'd have use for this mod. Would the mod work with 3.0.6 if I installed it?
Jeeea
Newbie/Neuling
 
Posts: 3
Joined: Mon Feb 15, 2010 7:52 pm
Location: Finland

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Fri Feb 19, 2010 4:42 pm

hi, this should work fine with 3.0.6.

my testboard is on 3.0.6 and it works fine there
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby rappelkiste_src » Sat Feb 20, 2010 8:04 am

I'm on 3.0.6, too.
Everything works fine.

Micha
rappelkiste_src
 

Blank Page

Postby NowTech » Sat Oct 09, 2010 7:16 am

After installing the mod I goto:
User Control Panel -> Usergroups --> Manage groups

I get a blank page.
How do I fix this.
NowTech
Newbie/Neuling
 
Posts: 1
Joined: Sat Oct 09, 2010 7:13 am

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Sat Oct 09, 2010 3:43 pm

doublecheck all your edits.

white pages normally indicate suppressed errors. you shoudl ahve an error log on your server where you can see which line is not correct.
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby mangy1983 » Fri Aug 12, 2011 3:20 pm

Hi Lefty and another great mod :pray: ,
I have installed your mod on phpbb3 v3.09 and it is working perfectly. I am inquiring if it is possible to incorporate the default no avatar mod into this mod like in the avatars on index mod?

thanks Callum
mangy1983
Newbie/Neuling
 
Posts: 7
Joined: Thu Aug 11, 2011 11:29 am

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Fri Aug 12, 2011 3:45 pm

hi callum, thanks for confirming this works on 3.0.9, i have not had a chance to check this yet.

I will have to have a look into your question. can you just refresh my memory which default no avatar mod you are referring to as there are a few of them. thanks
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby mangy1983 » Sat Aug 13, 2011 1:10 pm

lefty wrote:hi callum, thanks for confirming this works on 3.0.9, i have not had a chance to check this yet.

I will have to have a look into your question. can you just refresh my memory which default no avatar mod you are referring to as there are a few of them. thanks


Hi Lefty it is the Universal No Avatar by BlkJack-21 mod I am talking about

thanks Callum
mangy1983
Newbie/Neuling
 
Posts: 7
Joined: Thu Aug 11, 2011 11:29 am

Re: Show Avatar in Friends list 1.0.1

Postby lefty » Sun Aug 14, 2011 9:47 pm

mangy1983 wrote:
lefty wrote:hi callum, thanks for confirming this works on 3.0.9, i have not had a chance to check this yet.

I will have to have a look into your question. can you just refresh my memory which default no avatar mod you are referring to as there are a few of them. thanks


Hi Lefty it is the Universal No Avatar by BlkJack-21 mod I am talking about

thanks Callum
Hi Callum,
This should work:

in ucp.php

FIND
Code: Select all
         'USER_AVATAR'      => (!empty($row['user_avatar'])) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $avatar_width, $avatar_height) :'',

REPLACE WITH
Code: Select all
         'USER_AVATAR'      => (!empty($row['user_avatar'])) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $avatar_width, $avatar_height) : '<img src="images/avatars/no_avatar.gif" height="' . $avatar_max_dimensions . '" width="' . $avatar_max_dimensions . '" />',
lefty aka The Heikze! :eyebrowe:

Heiko Carstens
http://www.lefty74.com

Would you like me to install one of my mods for you? Read here for details
lefty
Abschlussklasse R10c
 
Posts: 1357
Joined: Mon Feb 06, 2006 1:20 am
Location: Den Haag - NL

Re: Show Avatar in Friends list 1.0.1

Postby mangy1983 » Mon Aug 15, 2011 9:45 am

Thank you ever so much for the script changes Lefty, it worked perfectly and l hope that l did not trouble you too much :cheer:

thanks again Callum
mangy1983
Newbie/Neuling
 
Posts: 7
Joined: Thu Aug 11, 2011 11:29 am

Re: Show Avatar in Friends list 1.0.1

Postby mangy1983 » Tue Sep 27, 2011 9:06 pm

Hi Lefty
l found a hiccup after all with this mod with phpbb3 v3.09. It is to do with the below line of code in the ucp.php file.

Code: Select all
$avatar_max_dimensions = 40; // here you can change the max-width you would like to have the avatars displayed

   if (!function_exists('display_forums'))
   {
       include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
   }


I get this error when trying to load up the Manage Groups page in the UCP

Fatal error: Cannot redeclare display_forums() (previously declared in /home4/syaacouk/public_html/Forum/includes/functions_display.php:22) in /home4/syaacouk/public_html/Forum/includes/functions_display.php on line 672

Below is the functions_display.php file from v3.09. Any idea how to fix this?

cheers Callum

Code: Select all
<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
   exit;
}

/**
* Display Forums
*/
function display_forums($root_data = '', $display_moderators = true, $return_moderators = false)
{
   global $db, $auth, $user, $template;
   global $phpbb_root_path, $phpEx, $config;

   $forum_rows = $subforums = $forum_ids = $forum_ids_moderator = $forum_moderators = $active_forum_ary = array();
   $parent_id = $visible_forums = 0;
   $sql_from = '';

   // Mark forums read?
   $mark_read = request_var('mark', '');

   if ($mark_read == 'all')
   {
      $mark_read = '';
   }

   if (!$root_data)
   {
      if ($mark_read == 'forums')
      {
         $mark_read = 'all';
      }

      $root_data = array('forum_id' => 0);
      $sql_where = '';
   }
   else
   {
      $sql_where = 'left_id > ' . $root_data['left_id'] . ' AND left_id < ' . $root_data['right_id'];
   }

   // Display list of active topics for this category?
   $show_active = (isset($root_data['forum_flags']) && ($root_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS)) ? true : false;

   $sql_array = array(
      'SELECT'   => 'f.*',
      'FROM'      => array(
         FORUMS_TABLE      => 'f'
      ),
      'LEFT_JOIN'   => array(),
   );

   if ($config['load_db_lastread'] && $user->data['is_registered'])
   {
      $sql_array['LEFT_JOIN'][] = array('FROM' => array(FORUMS_TRACK_TABLE => 'ft'), 'ON' => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id');
      $sql_array['SELECT'] .= ', ft.mark_time';
   }
   else if ($config['load_anon_lastread'] || $user->data['is_registered'])
   {
      $tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
      $tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();

      if (!$user->data['is_registered'])
      {
         $user->data['user_lastmark'] = (isset($tracking_topics['l'])) ? (int) (base_convert($tracking_topics['l'], 36, 10) + $config['board_startdate']) : 0;
      }
   }

   if ($show_active)
   {
      $sql_array['LEFT_JOIN'][] = array(
         'FROM'   => array(FORUMS_ACCESS_TABLE => 'fa'),
         'ON'   => "fa.forum_id = f.forum_id AND fa.session_id = '" . $db->sql_escape($user->session_id) . "'"
      );

      $sql_array['SELECT'] .= ', fa.user_id';
   }



   if (!class_exists('phpbb_mods_advanced_last_topic_titles'))
   {
      include($phpbb_root_path . 'includes/mods/advanced_last_topic_titles.' . $phpEx);
   }
   phpbb_mods_advanced_last_topic_titles::initialise();
   $sql_array = phpbb_mods_advanced_last_topic_titles::inject_sql($sql_array);



   $sql = $db->sql_build_query('SELECT', array(
      'SELECT'   => $sql_array['SELECT'],
      'FROM'      => $sql_array['FROM'],
      'LEFT_JOIN'   => $sql_array['LEFT_JOIN'],

      'WHERE'      => $sql_where,

      'ORDER_BY'   => 'f.left_id',
   ));

   $result = $db->sql_query($sql);

   $forum_tracking_info = array();
   $branch_root_id = $root_data['forum_id'];

   // Check for unread global announcements (index page only)
   $ga_unread = false;
   if ($root_data['forum_id'] == 0)
   {
      $unread_ga_list = get_unread_topics($user->data['user_id'], 'AND t.forum_id = 0', '', 1);

      if (!empty($unread_ga_list))
      {
         $ga_unread = true;
      }
   }

   while ($row = $db->sql_fetchrow($result))
   {
      $forum_id = $row['forum_id'];



      $row = phpbb_mods_advanced_last_topic_titles::inject_forum_row($row);



      // Mark forums read?
      if ($mark_read == 'forums' || $mark_read == 'all')
      {
         if ($auth->acl_get('f_list', $forum_id))
         {
            $forum_ids[] = $forum_id;
            continue;
         }
      }

      // Category with no members
      if ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id']))
      {
         continue;
      }

      // Skip branch
      if (isset($right_id))
      {
         if ($row['left_id'] < $right_id)
         {
            continue;
         }
         unset($right_id);
      }

      if (!$auth->acl_get('f_list', $forum_id))
      {
         // if the user does not have permissions to list this forum, skip everything until next branch
         $right_id = $row['right_id'];
         continue;
      }

      $forum_ids[] = $forum_id;

      if ($config['load_db_lastread'] && $user->data['is_registered'])
      {
         $forum_tracking_info[$forum_id] = (!empty($row['mark_time'])) ? $row['mark_time'] : $user->data['user_lastmark'];
      }
      else if ($config['load_anon_lastread'] || $user->data['is_registered'])
      {
         if (!$user->data['is_registered'])
         {
            $user->data['user_lastmark'] = (isset($tracking_topics['l'])) ? (int) (base_convert($tracking_topics['l'], 36, 10) + $config['board_startdate']) : 0;
         }
         $forum_tracking_info[$forum_id] = (isset($tracking_topics['f'][$forum_id])) ? (int) (base_convert($tracking_topics['f'][$forum_id], 36, 10) + $config['board_startdate']) : $user->data['user_lastmark'];
      }

      // Count the difference of real to public topics, so we can display an information to moderators
      $row['forum_id_unapproved_topics'] = ($auth->acl_get('m_approve', $forum_id) && ($row['forum_topics_real'] != $row['forum_topics'])) ? $forum_id : 0;
      $row['forum_topics'] = ($auth->acl_get('m_approve', $forum_id)) ? $row['forum_topics_real'] : $row['forum_topics'];

      // Display active topics from this forum?
      if ($show_active && $row['forum_type'] == FORUM_POST && $auth->acl_get('f_read', $forum_id) && ($row['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS))
      {
         if (!isset($active_forum_ary['forum_topics']))
         {
            $active_forum_ary['forum_topics'] = 0;
         }

         if (!isset($active_forum_ary['forum_posts']))
         {
            $active_forum_ary['forum_posts'] = 0;
         }

         $active_forum_ary['forum_id'][]      = $forum_id;
         $active_forum_ary['enable_icons'][]   = $row['enable_icons'];
         $active_forum_ary['forum_topics']   += $row['forum_topics'];
         $active_forum_ary['forum_posts']   += $row['forum_posts'];

         // If this is a passworded forum we do not show active topics from it if the user is not authorised to view it...
         if ($row['forum_password'] && $row['user_id'] != $user->data['user_id'])
         {
            $active_forum_ary['exclude_forum_id'][] = $forum_id;
         }
      }

      //
      if ($row['parent_id'] == $root_data['forum_id'] || $row['parent_id'] == $branch_root_id)
      {
         if ($row['forum_type'] != FORUM_CAT)
         {
            $forum_ids_moderator[] = (int) $forum_id;
         }

         // Direct child of current branch
         $parent_id = $forum_id;
         $forum_rows[$forum_id] = $row;

         if ($row['forum_type'] == FORUM_CAT && $row['parent_id'] == $root_data['forum_id'])
         {
            $branch_root_id = $forum_id;
         }
         $forum_rows[$parent_id]['forum_id_last_post'] = $row['forum_id'];
         $forum_rows[$parent_id]['orig_forum_last_post_time'] = $row['forum_last_post_time'];
      }
      else if ($row['forum_type'] != FORUM_CAT)
      {
         $subforums[$parent_id][$forum_id]['display'] = ($row['display_on_index']) ? true : false;
         $subforums[$parent_id][$forum_id]['name'] = $row['forum_name'];
         $subforums[$parent_id][$forum_id]['orig_forum_last_post_time'] = $row['forum_last_post_time'];
         $subforums[$parent_id][$forum_id]['children'] = array();

         if (isset($subforums[$parent_id][$row['parent_id']]) && !$row['display_on_index'])
         {
            $subforums[$parent_id][$row['parent_id']]['children'][] = $forum_id;
         }

         if (!$forum_rows[$parent_id]['forum_id_unapproved_topics'] && $row['forum_id_unapproved_topics'])
         {
            $forum_rows[$parent_id]['forum_id_unapproved_topics'] = $forum_id;
         }

         $forum_rows[$parent_id]['forum_topics'] += $row['forum_topics'];

         // Do not list redirects in LINK Forums as Posts.
         if ($row['forum_type'] != FORUM_LINK)
         {
            $forum_rows[$parent_id]['forum_posts'] += $row['forum_posts'];
         }

         if ($row['forum_last_post_time'] > $forum_rows[$parent_id]['forum_last_post_time'])
         {
            $forum_rows[$parent_id]['forum_last_post_id'] = $row['forum_last_post_id'];
            $forum_rows[$parent_id]['forum_last_post_subject'] = $row['forum_last_post_subject'];
            $forum_rows[$parent_id]['forum_last_post_time'] = $row['forum_last_post_time'];
            $forum_rows[$parent_id]['forum_last_poster_id'] = $row['forum_last_poster_id'];
            $forum_rows[$parent_id]['forum_last_poster_name'] = $row['forum_last_poster_name'];
            $forum_rows[$parent_id]['forum_last_poster_colour'] = $row['forum_last_poster_colour'];



            $forum_rows[$parent_id]['forum_last_poster_avatar'] = $row['forum_last_poster_avatar'];
            $forum_rows[$parent_id]['forum_last_poster_avatar_type'] = $row['forum_last_poster_avatar_type'];
            $forum_rows[$parent_id]['forum_last_poster_avatar_width'] = $row['forum_last_poster_avatar_width'];
            $forum_rows[$parent_id]['forum_last_poster_avatar_height'] = $row['forum_last_poster_avatar_height'];



            $forum_rows[$parent_id]['forum_id_last_post'] = $forum_id;
         

            $forum_rows = phpbb_mods_advanced_last_topic_titles::inject_forum_row_values($forum_rows, $parent_id, $row);

}
      }
   }
   $db->sql_freeresult($result);

   // Handle marking posts
   if ($mark_read == 'forums' || $mark_read == 'all')
   {
      $redirect = build_url(array('mark', 'hash'));
      $token = request_var('hash', '');
      if (check_link_hash($token, 'global'))
      {
         if ($mark_read == 'all')
         {
            markread('all');
            $message = sprintf($user->lang['RETURN_INDEX'], '<a href="' . $redirect . '">', '</a>');
         }
         else
         {
            // Add 0 to forums array to mark global announcements correctly
            $forum_ids[] = 0;
            markread('topics', $forum_ids);
            $message = sprintf($user->lang['RETURN_FORUM'], '<a href="' . $redirect . '">', '</a>');
         }
         meta_refresh(3, $redirect);
         trigger_error($user->lang['FORUMS_MARKED'] . '<br /><br />' . $message);
      }
      else
      {
         $message = sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>');
         meta_refresh(3, $redirect);
         trigger_error($message);
      }

   }




   //MOD: inklappen categorie
   if ($mark_read == 'collapse' && $user->data['user_id'] != ANONYMOUS)
   {
      $forum_id = request_var('f', 0);
      if (!$forum_id)
      {
         trigger_error('NO_FORUM');
      }
      $sql_from = FORUMS_TABLE . ' f';
      $sql = "SELECT f.forum_id FROM $sql_from WHERE f.forum_id = $forum_id";
      $result = $db->sql_query($sql);
      $forum_data = $db->sql_fetchrow($result);
      $db->sql_freeresult($result);
      if (!$forum_data)
      {
         trigger_error('NO_FORUM');
      }
      $forums_collapse = explode("-", $user->data['user_category_collapse']);
      $forums_collapse_key = array_search($forum_id, $forums_collapse);
      if($forums_collapse_key === false)
      {
         $forums_collapse[] = $forum_id;
      }
      else
      {
         unset($forums_collapse[$forums_collapse_key]);
      }
      $collapsed = implode("-", $forums_collapse);
      $sql_from = USERS_TABLE . ' u';
      $sql = "UPDATE $sql_from SET u.user_category_collapse = '$collapsed' WHERE u.user_id = ".$user->data['user_id'];
      $result = $db->sql_query($sql);
      $forum_data = $db->sql_fetchrow($result);
      $db->sql_freeresult($result);
      redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
   }



   // Grab moderators ... if necessary
   if ($display_moderators)
   {
      if ($return_moderators)
      {
         $forum_ids_moderator[] = $root_data['forum_id'];
      }
      get_moderators($forum_moderators, $forum_ids_moderator);
   }

   // Used to tell whatever we have to create a dummy category or not.
   $last_catless = true;



   // start mod view or mark unread post
   // initialize the flag $exists_unread to signal that we have already checked unreads in functions_display()
   // so that when check_unread_posts() is called in the future it can skip the sql query and give the
   // answer that there are none (this gets reset to '1' later on in functions_display() if there are unreads),
   // but do NOT initialize if the user is on viewforum since the test for unreads may give false negatives in that context
   if (!$sql_where)
   {
      global $exists_unreads;
      $exists_unreads = -1;
   }
   // end mod view or mark unread posts



   foreach ($forum_rows as $row)
   {
      // Empty category
      if ($row['parent_id'] == $root_data['forum_id'] && $row['forum_type'] == FORUM_CAT)
      {
         $template->assign_block_vars('forumrow', array(
            'S_IS_CAT'            => true,

                  'S_IS_CAT_HIDDEN'      => in_array($row['forum_id'], explode("-", $user->data['user_category_collapse'])),   //MOD: categorie samenklappen
            'U_COLLAPSEFORUM'      => append_sid("{$phpbb_root_path}index.$phpEx", 'mark=collapse&amp;f=' . $row['forum_id']),



            'FORUM_ID'            => $row['forum_id'],
            'FORUM_NAME'         => $row['forum_name'],
            'FORUM_DESC'         => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
            'FORUM_FOLDER_IMG'      => '',
            'FORUM_FOLDER_IMG_SRC'   => '',
            'FORUM_IMAGE'         => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang['FORUM_CAT'] . '" />' : '',
            'FORUM_IMAGE_SRC'      => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
            'U_VIEWFORUM'         => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']))
         );

         continue;
      }

      $visible_forums++;
      $forum_id = $row['forum_id'];

      $forum_unread = (isset($forum_tracking_info[$forum_id]) && $row['orig_forum_last_post_time'] > $forum_tracking_info[$forum_id]) ? true : false;

      // Mark the first visible forum on index as unread if there's any unread global announcement
      if ($ga_unread && !empty($forum_ids_moderator) && $forum_id == $forum_ids_moderator[0])
      {
         $forum_unread = true;
      }

      $folder_image = $folder_alt = $l_subforums = '';
      $subforums_list = array();

      // Generate list of subforums if we need to
      if (isset($subforums[$forum_id]))
      {
         foreach ($subforums[$forum_id] as $subforum_id => $subforum_row)
         {
            $subforum_unread = (isset($forum_tracking_info[$subforum_id]) && $subforum_row['orig_forum_last_post_time'] > $forum_tracking_info[$subforum_id]) ? true : false;

            if (!$subforum_unread && !empty($subforum_row['children']))
            {
               foreach ($subforum_row['children'] as $child_id)
               {
                  if (isset($forum_tracking_info[$child_id]) && $subforums[$forum_id][$child_id]['orig_forum_last_post_time'] > $forum_tracking_info[$child_id])
                  {
                     // Once we found an unread child forum, we can drop out of this loop
                     $subforum_unread = true;
                     break;
                  }
               }
            }

            if ($subforum_row['display'] && $subforum_row['name'])
            {
               $subforums_list[] = array(
                  'link'      => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $subforum_id),
                  'name'      => $subforum_row['name'],
                  'unread'   => $subforum_unread,
               );
            }
            else
            {
               unset($subforums[$forum_id][$subforum_id]);
            }

            // If one subforum is unread the forum gets unread too...
            if ($subforum_unread)
            {
               $forum_unread = true;
            }
         }

         $l_subforums = (sizeof($subforums[$forum_id]) == 1) ? $user->lang['SUBFORUM'] . ': ' : $user->lang['SUBFORUMS'] . ': ';
         $folder_image = ($forum_unread) ? 'forum_unread_subforum' : 'forum_read_subforum';
      }
      else
      {
         switch ($row['forum_type'])
         {
            case FORUM_POST:
               $folder_image = ($forum_unread) ? 'forum_unread' : 'forum_read';
            break;

            case FORUM_LINK:
               $folder_image = 'forum_link';
            break;
         }
      }



      // start mod view or mark unread posts
      if ($forum_unread)
      {
         // if there are any unread topics, set $exists_unreads flag to 1 so that
         // when check_unreads_flag() is called in the future it can skip the sql query
         // and give the answer that there are unread posts'
         $exists_unreads = 1;
      }
      // end mod view or mark unread posts



      // Which folder should we display?
      if ($row['forum_status'] == ITEM_LOCKED)
      {
         $folder_image = ($forum_unread) ? 'forum_unread_locked' : 'forum_read_locked';
         $folder_alt = 'FORUM_LOCKED';
      }
      else
      {
         $folder_alt = ($forum_unread) ? 'UNREAD_POSTS' : 'NO_UNREAD_POSTS';
      }

      // Create last post link information, if appropriate
      if ($row['forum_last_post_id'])
      {
         $last_post_subject = $row['forum_last_post_subject'];
         $last_post_time = $user->format_date($row['forum_last_post_time']);
         $last_post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id_last_post'] . '&amp;p=' . $row['forum_last_post_id']) . '#p' . $row['forum_last_post_id'];
      }
      else
      {
         $last_post_subject = $last_post_time = $last_post_url = '';
      }

      // Output moderator listing ... if applicable
      $l_moderator = $moderators_list = '';
      if ($display_moderators && !empty($forum_moderators[$forum_id]))
      {
         $l_moderator = (sizeof($forum_moderators[$forum_id]) == 1) ? $user->lang['MODERATOR'] : $user->lang['MODERATORS'];
         $moderators_list = implode(', ', $forum_moderators[$forum_id]);
      }

      $l_post_click_count = ($row['forum_type'] == FORUM_LINK) ? 'CLICKS' : 'POSTS';
      $post_click_count = ($row['forum_type'] != FORUM_LINK || $row['forum_flags'] & FORUM_FLAG_LINK_TRACK) ? $row['forum_posts'] : '';

      $s_subforums_list = array();
      foreach ($subforums_list as $subforum)
      {
         $s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['UNREAD_POSTS'] : $user->lang['NO_UNREAD_POSTS']) . '">' . $subforum['name'] . '</a>';
      }
      $s_subforums_list = (string) implode(', ', $s_subforums_list);
      $catless = ($row['parent_id'] == $root_data['forum_id']) ? true : false;

      if ($row['forum_type'] != FORUM_LINK)
      {
         $u_viewforum = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']);
      }
      else
      {
         // If the forum is a link and we count redirects we need to visit it
         // If the forum is having a password or no read access we do not expose the link, but instead handle it in viewforum
         if (($row['forum_flags'] & FORUM_FLAG_LINK_TRACK) || $row['forum_password'] || !$auth->acl_get('f_read', $forum_id))
         {
            $u_viewforum = append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']);
         }
         else
         {
            $u_viewforum = $row['forum_link'];
         }
      }



      $online_users = obtain_users_online($row['forum_id']);




      $avatar_max_dimensions = $avatar_width = $avatar_height = 40;
      if ( !empty($row['forum_last_poster_avatar']) )
      {
         $avatar_max_dimensions = 40; // here you can change the max-width you would like to have the avatars displayed
      
         if ( $row['forum_last_poster_avatar_width'] >= $row['forum_last_poster_avatar_height'] )
         {
            $avatar_width = ( $row['forum_last_poster_avatar_width'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['forum_last_poster_avatar_width'] ;
            $avatar_height = ( $avatar_width == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['forum_last_poster_avatar_width'] * $row['forum_last_poster_avatar_height']) : $row['forum_last_poster_avatar_height'] ;
         }
         else
         {
            $avatar_height = ( $row['forum_last_poster_avatar_height'] > $avatar_max_dimensions ) ? $avatar_max_dimensions : $row['forum_last_poster_avatar_height'] ;
            $avatar_width = ( $avatar_height == $avatar_max_dimensions ) ? round($avatar_max_dimensions / $row['forum_last_poster_avatar_height'] * $row['forum_last_poster_avatar_width']) : $row['forum_last_poster_avatar_width'] ;
         }
      }




      $template->assign_block_vars('forumrow', array(
         'S_IS_CAT'         => false,
         'S_NO_CAT'         => $catless && !$last_catless,
         'S_IS_LINK'         => ($row['forum_type'] == FORUM_LINK) ? true : false,
         'S_UNREAD_FORUM'   => $forum_unread,
         'S_LOCKED_FORUM'   => ($row['forum_status'] == ITEM_LOCKED) ? true : false,
         'S_LIST_SUBFORUMS'   => ($row['display_subforum_list']) ? true : false,
         'S_SUBFORUMS'      => (sizeof($subforums_list)) ? true : false,
         'S_FEED_ENABLED'   => ($config['feed_forum'] && !phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $row['forum_options']) && $row['forum_type'] == FORUM_POST) ? true : false,

         'FORUM_ID'            => $row['forum_id'],
         'FORUM_NAME'         => $row['forum_name'],
         'FORUM_DESC'         => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
         'TOPICS'            => $row['forum_topics'],
         $l_post_click_count      => $post_click_count,
         'FORUM_FOLDER_IMG'      => $user->img($folder_image, $folder_alt),
         'FORUM_FOLDER_IMG_SRC'   => $user->img($folder_image, $folder_alt, false, '', 'src'),
         'FORUM_FOLDER_IMG_ALT'   => isset($user->lang[$folder_alt]) ? $user->lang[$folder_alt] : '',
         'FORUM_IMAGE'         => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang[$folder_alt] . '" />' : '',
         'FORUM_IMAGE_SRC'      => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
         'LAST_POST_SUBJECT'      => censor_text($last_post_subject),
         'LAST_POST_TIME'      => $last_post_time,
         'LAST_POSTER'         => get_username_string('username', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
         'LAST_POSTER_COLOUR'   => get_username_string('colour', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
         'LAST_POSTER_FULL'      => get_username_string('full', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),



         'LAST_POSTER_AVATAR'   => ($config['enable_avatar_index']) ? '<a href="' . get_username_string('profile', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']) . '">' . get_user_avatar($row['forum_last_poster_avatar'], $row['forum_last_poster_avatar_type'], $avatar_width, $avatar_height) . '</a>' : false,



         'LAST_POSTER_AVATAR_MARGIN'   => ( $avatar_width == $avatar_max_dimensions ) ? 5 : ( $avatar_max_dimensions - $avatar_width + 5 ),
         'AVATAR_WIDTH'         => $avatar_max_dimensions,



         'MODERATORS'         => $moderators_list,
         'SUBFORUMS'            => $s_subforums_list,

         'L_SUBFORUM_STR'      => $l_subforums,
         'L_MODERATOR_STR'      => $l_moderator,


         'L_FORUM_VISIT'         => $user->lang(($online_users['total_online'] > 1) ? 'FORUM_VISITS' : 'FORUM_VISIT', $online_users['total_online']),


         'U_UNAPPROVED_TOPICS'   => ($row['forum_id_unapproved_topics']) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=unapproved_topics&amp;f=' . $row['forum_id_unapproved_topics']) : '',
         'U_VIEWFORUM'      => $u_viewforum,
         'U_LAST_POSTER'      => get_username_string('profile', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
         'U_LAST_POST'      => $last_post_url)
      );



      phpbb_mods_advanced_last_topic_titles::display_information($row);


      // Assign subforums loop for style authors
      foreach ($subforums_list as $subforum)
      {
         $template->assign_block_vars('forumrow.subforum', array(
            'U_SUBFORUM'   => $subforum['link'],
            'SUBFORUM_NAME'   => $subforum['name'],
            'S_UNREAD'      => $subforum['unread'])
         );
      }

      $last_catless = $catless;
   }

   $template->assign_vars(array(
      'U_MARK_FORUMS'      => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'hash=' . generate_link_hash('global') . '&amp;f=' . $root_data['forum_id'] . '&amp;mark=forums') : '',
      'S_HAS_SUBFORUM'   => ($visible_forums) ? true : false,
      'L_SUBFORUM'      => ($visible_forums == 1) ? $user->lang['SUBFORUM'] : $user->lang['SUBFORUMS'],
      'LAST_POST_IMG'      => $user->img('icon_topic_latest', 'VIEW_LATEST_POST'),
      'UNAPPROVED_IMG'   => $user->img('icon_topic_unapproved', 'TOPICS_UNAPPROVED'),
   ));

   if ($return_moderators)
   {
      return array($active_forum_ary, $forum_moderators);
   }

   return array($active_forum_ary, array());
}

/**
* Create forum rules for given forum
*/
function generate_forum_rules(&$forum_data)
{
   if (!$forum_data['forum_rules'] && !$forum_data['forum_rules_link'])
   {
      return;
   }

   global $template, $phpbb_root_path, $phpEx;

   if ($forum_data['forum_rules'])
   {
      $forum_data['forum_rules'] = generate_text_for_display($forum_data['forum_rules'], $forum_data['forum_rules_uid'], $forum_data['forum_rules_bitfield'], $forum_data['forum_rules_options']);
   }

   $template->assign_vars(array(
      'S_FORUM_RULES'   => true,
      'U_FORUM_RULES'   => $forum_data['forum_rules_link'],
      'FORUM_RULES'   => $forum_data['forum_rules'])
   );
}

/**
* Create forum navigation links for given forum, create parent
* list if currently null, assign basic forum info to template
*/
function generate_forum_nav(&$forum_data)
{
   global $db, $user, $template, $auth, $config;
   global $phpEx, $phpbb_root_path;

   if (!$auth->acl_get('f_list', $forum_data['forum_id']))
   {
      return;
   }

   // Get forum parents
   $forum_parents = get_forum_parents($forum_data);

   // Build navigation links
   if (!empty($forum_parents))
   {
      foreach ($forum_parents as $parent_forum_id => $parent_data)
      {
         list($parent_name, $parent_type) = array_values($parent_data);

         // Skip this parent if the user does not have the permission to view it
         if (!$auth->acl_get('f_list', $parent_forum_id))
         {
            continue;
         }

         $template->assign_block_vars('navlinks', array(
            'S_IS_CAT'      => ($parent_type == FORUM_CAT) ? true : false,
            'S_IS_LINK'      => ($parent_type == FORUM_LINK) ? true : false,
            'S_IS_POST'      => ($parent_type == FORUM_POST) ? true : false,
            'FORUM_NAME'   => $parent_name,
            'FORUM_ID'      => $parent_forum_id,
            'U_VIEW_FORUM'   => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $parent_forum_id))
         );
      }
   }

   $template->assign_block_vars('navlinks', array(
      'S_IS_CAT'      => ($forum_data['forum_type'] == FORUM_CAT) ? true : false,
      'S_IS_LINK'      => ($forum_data['forum_type'] == FORUM_LINK) ? true : false,
      'S_IS_POST'      => ($forum_data['forum_type'] == FORUM_POST) ? true : false,
      'FORUM_NAME'   => $forum_data['forum_name'],
      'FORUM_ID'      => $forum_data['forum_id'],
      'U_VIEW_FORUM'   => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_data['forum_id']))
   );

   $template->assign_vars(array(
      'FORUM_ID'       => $forum_data['forum_id'],
      'FORUM_NAME'   => $forum_data['forum_name'],
      'FORUM_DESC'   => generate_text_for_display($forum_data['forum_desc'], $forum_data['forum_desc_uid'], $forum_data['forum_desc_bitfield'], $forum_data['forum_desc_options']),

      'S_ENABLE_FEEDS_FORUM'   => ($config['feed_forum'] && $forum_data['forum_type'] == FORUM_POST && !phpbb_optionget(FORUM_OPTION_FEED_EXCLUDE, $forum_data['forum_options'])) ? true : false,
   ));

   return;
}

/**
* Returns forum parents as an array. Get them from forum_data if available, or update the database otherwise
*/
function get_forum_parents(&$forum_data)
{
   global $db;

   $forum_parents = array();

   if ($forum_data['parent_id'] > 0)
   {
      if ($forum_data['forum_parents'] == '')
      {
         $sql = 'SELECT forum_id, forum_name, forum_type
            FROM ' . FORUMS_TABLE . '
            WHERE left_id < ' . $forum_data['left_id'] . '
               AND right_id > ' . $forum_data['right_id'] . '
            ORDER BY left_id ASC';
         $result = $db->sql_query($sql);

         while ($row = $db->sql_fetchrow($result))
         {
            $forum_parents[$row['forum_id']] = array($row['forum_name'], (int) $row['forum_type']);
         }
         $db->sql_freeresult($result);

         $forum_data['forum_parents'] = serialize($forum_parents);

         $sql = 'UPDATE ' . FORUMS_TABLE . "
            SET forum_parents = '" . $db->sql_escape($forum_data['forum_parents']) . "'
            WHERE parent_id = " . $forum_data['parent_id'];
         $db->sql_query($sql);
      }
      else
      {
         $forum_parents = unserialize($forum_data['forum_parents']);
      }
   }

   return $forum_parents;
}

/**
* Generate topic pagination
*/
function topic_generate_pagination($replies, $url)
{
   global $config, $user;

   // Make sure $per_page is a valid value
   $per_page = ($config['posts_per_page'] <= 0) ? 1 : $config['posts_per_page'];

   if (($replies + 1) > $per_page)
   {
      $total_pages = ceil(($replies + 1) / $per_page);
      $pagination = '';

      $times = 1;
      for ($j = 0; $j < $replies + 1; $j += $per_page)
      {
         $pagination .= '<a href="' . $url . ($j == 0 ? '' : '&amp;start=' . $j) . '">' . $times . '</a>';
         if ($times == 1 && $total_pages > 5)
         {
            $pagination .= ' ... ';

            // Display the last three pages
            $times = $total_pages - 3;
            $j += ($total_pages - 4) * $per_page;
         }
         else if ($times < $total_pages)
         {
            $pagination .= '<span class="page-sep">' . $user->lang['COMMA_SEPARATOR'] . '</span>';
         }
         $times++;
      }
   }
   else
   {
      $pagination = '';
   }

   return $pagination;
}

/**
* Obtain list of moderators of each forum
*/
function get_moderators(&$forum_moderators, $forum_id = false)
{
   global $config, $template, $db, $phpbb_root_path, $phpEx, $user, $auth;

   $forum_id_ary = array();

   if ($forum_id !== false)
   {
      if (!is_array($forum_id))
      {
         $forum_id = array($forum_id);
      }

      // Exchange key/value pair to be able to faster check for the forum id existence
      $forum_id_ary = array_flip($forum_id);
   }

   $sql_array = array(
      'SELECT'   => 'm.*, u.user_colour, g.group_colour, g.group_type',

      'FROM'      => array(
         MODERATOR_CACHE_TABLE   => 'm',
      ),

      'LEFT_JOIN'   => array(
         array(
            'FROM'   => array(USERS_TABLE => 'u'),
            'ON'   => 'm.user_id = u.user_id',
         ),
         array(
            'FROM'   => array(GROUPS_TABLE => 'g'),
            'ON'   => 'm.group_id = g.group_id',
         ),
      ),

      'WHERE'      => 'm.display_on_index = 1',
   );

   // We query every forum here because for caching we should not have any parameter.
   $sql = $db->sql_build_query('SELECT', $sql_array);
   $result = $db->sql_query($sql, 3600);

   while ($row = $db->sql_fetchrow($result))
   {
      $f_id = (int) $row['forum_id'];

      if (!isset($forum_id_ary[$f_id]))
      {
         continue;
      }

      if (!empty($row['user_id']))
      {
         $forum_moderators[$f_id][] = get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
      }
      else
      {
         $group_name = (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']);

         if ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile'))
         {
            $forum_moderators[$f_id][] = '<span' . (($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . ';"' : '') . '>' . $group_name . '</span>';
         }
         else
         {
            $forum_moderators[$f_id][] = '<a' . (($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . ';"' : '') . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']) . '">' . $group_name . '</a>';
         }
      }
   }
   $db->sql_freeresult($result);

   return;
}

/**
* User authorisation levels output
*
* @param   string   $mode         Can be forum or topic. Not in use at the moment.
* @param   int      $forum_id      The current forum the user is in.
* @param   int      $forum_status   The forums status bit.
*/
function gen_forum_auth_level($mode, $forum_id, $forum_status)
{
   global $template, $auth, $user, $config;

   $locked = ($forum_status == ITEM_LOCKED && !$auth->acl_get('m_edit', $forum_id)) ? true : false;

   $rules = array(
      ($auth->acl_get('f_post', $forum_id) && !$locked) ? $user->lang['RULES_POST_CAN'] : $user->lang['RULES_POST_CANNOT'],
      ($auth->acl_get('f_reply', $forum_id) && !$locked) ? $user->lang['RULES_REPLY_CAN'] : $user->lang['RULES_REPLY_CANNOT'],
      ($user->data['is_registered'] && $auth->acl_gets('f_edit', 'm_edit', $forum_id) && !$locked) ? $user->lang['RULES_EDIT_CAN'] : $user->lang['RULES_EDIT_CANNOT'],
      ($user->data['is_registered'] && $auth->acl_gets('f_delete', 'm_delete', $forum_id) && !$locked) ? $user->lang['RULES_DELETE_CAN'] : $user->lang['RULES_DELETE_CANNOT'],
   );

   if ($config['allow_attachments'])
   {
      $rules[] = ($auth->acl_get('f_attach', $forum_id) && $auth->acl_get('u_attach') && !$locked) ? $user->lang['RULES_ATTACH_CAN'] : $user->lang['RULES_ATTACH_CANNOT'];
   }

   foreach ($rules as $rule)
   {
      $template->assign_block_vars('rules', array('RULE' => $rule));
   }

   return;
}

/**
* Generate topic status
*/
function topic_status(&$topic_row, $replies, $unread_topic, &$folder_img, &$folder_alt, &$topic_type)
{
   global $user, $config;

   $folder = $folder_new = '';

   if ($topic_row['topic_status'] == ITEM_MOVED)
   {
      $topic_type = $user->lang['VIEW_TOPIC_MOVED'];
      $folder_img = 'topic_moved';
      $folder_alt = 'TOPIC_MOVED';
   }
   else
   {
      switch ($topic_row['topic_type'])
      {
         case POST_GLOBAL:
            $topic_type = $user->lang['VIEW_TOPIC_GLOBAL'];
            $folder = 'global_read';
            $folder_new = 'global_unread';
         break;

         case POST_ANNOUNCE:
            $topic_type = $user->lang['VIEW_TOPIC_ANNOUNCEMENT'];
            $folder = 'announce_read';
            $folder_new = 'announce_unread';
         break;

         case POST_STICKY:
            $topic_type = $user->lang['VIEW_TOPIC_STICKY'];
            $folder = 'sticky_read';
            $folder_new = 'sticky_unread';
         break;

         default:
            $topic_type = '';
            $folder = 'topic_read';
            $folder_new = 'topic_unread';

            // Hot topic threshold is for posts in a topic, which is replies + the first post. ;)
            if ($config['hot_threshold'] && ($replies + 1) >= $config['hot_threshold'] && $topic_row['topic_status'] != ITEM_LOCKED)
            {
               $folder .= '_hot';
               $folder_new .= '_hot';
            }
         break;
      }

      if ($topic_row['topic_status'] == ITEM_LOCKED)
      {
         $topic_type = $user->lang['VIEW_TOPIC_LOCKED'];
         $folder .= '_locked';
         $folder_new .= '_locked';
      }


      $folder_img = ($unread_topic) ? $folder_new : $folder;
      $folder_alt = ($unread_topic) ? 'UNREAD_POSTS' : (($topic_row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_UNREAD_POSTS');

      // Posted image?
      if (!empty($topic_row['topic_posted']) && $topic_row['topic_posted'])
      {
         $folder_img .= '_mine';
      }
   }

   if ($topic_row['poll_start'] && $topic_row['topic_status'] != ITEM_MOVED)
   {
      $topic_type = $user->lang['VIEW_TOPIC_POLL'];
   }
}

/**
* Assign/Build custom bbcodes for display in screens supporting using of bbcodes
* The custom bbcodes buttons will be placed within the template block 'custom_codes'
*/
function display_custom_bbcodes()
{
   global $db, $template, $user;

   // Start counting from 22 for the bbcode ids (every bbcode takes two ids - opening/closing)
   $num_predefined_bbcodes = 22;

   $sql = 'SELECT bbcode_id, bbcode_tag, bbcode_helpline
      FROM ' . BBCODES_TABLE . '
      WHERE display_on_posting = 1
      ORDER BY bbcode_tag';
   $result = $db->sql_query($sql);

   $i = 0;
   while ($row = $db->sql_fetchrow($result))
   {
      // If the helpline is defined within the language file, we will use the localised version, else just use the database entry...
      if (isset($user->lang[strtoupper($row['bbcode_helpline'])]))
      {
         $row['bbcode_helpline'] = $user->lang[strtoupper($row['bbcode_helpline'])];
      }

      $template->assign_block_vars('custom_tags', array(
         'BBCODE_NAME'      => "'[{$row['bbcode_tag']}]', '[/" . str_replace('=', '', $row['bbcode_tag']) . "]'",
         'BBCODE_ID'         => $num_predefined_bbcodes + ($i * 2),
         'BBCODE_TAG'      => $row['bbcode_tag'],
         'BBCODE_HELPLINE'   => $row['bbcode_helpline'],
         'A_BBCODE_HELPLINE'   => str_replace(array('&amp;', '&quot;', "'", '&lt;', '&gt;'), array('&', '"', "\'", '<', '>'), $row['bbcode_helpline']),
      ));

      $i++;
   }
   $db->sql_freeresult($result);
}

/**
* Display reasons
*/
function display_reasons($reason_id = 0)
{
   global $db, $user, $template;

   $sql = 'SELECT *
      FROM ' . REPORTS_REASONS_TABLE . '
      ORDER BY reason_order ASC';
   $result = $db->sql_query($sql);

   while ($row = $db->sql_fetchrow($result))
   {
      // If the reason is defined within the language file, we will use the localized version, else just use the database entry...
      if (isset($user->lang['report_reasons']['TITLE'][strtoupper($row['reason_title'])]) && isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])]))
      {
         $row['reason_description'] = $user->lang['report_reasons']['DESCRIPTION'][strtoupper($row['reason_title'])];
         $row['reason_title'] = $user->lang['report_reasons']['TITLE'][strtoupper($row['reason_title'])];
      }

      $template->assign_block_vars('reason', array(
         'ID'         => $row['reason_id'],
         'TITLE'         => $row['reason_title'],
         'DESCRIPTION'   => $row['reason_description'],
         'S_SELECTED'   => ($row['reason_id'] == $reason_id) ? true : false)
      );
   }
   $db->sql_freeresult($result);
}

/**
* Display user activity (action forum/topic)
*/
function display_user_activity(&$userdata)
{
   global $auth, $template, $db, $user;
   global $phpbb_root_path, $phpEx;

   // Do not display user activity for users having more than 5000 posts...
   if ($userdata['user_posts'] > 5000)
   {
      return;
   }

   $forum_ary = array();

   // Do not include those forums the user is not having read access to...
   $forum_read_ary = $auth->acl_getf('!f_read');

   foreach ($forum_read_ary as $forum_id => $not_allowed)
   {
      if ($not_allowed['f_read'])
      {
         $forum_ary[] = (int) $forum_id;
      }
   }

   $forum_ary = array_unique($forum_ary);
   $forum_sql = (sizeof($forum_ary)) ? 'AND ' . $db->sql_in_set('forum_id', $forum_ary, true) : '';

   $fid_m_approve = $auth->acl_getf('m_approve', true);
   $sql_m_approve = (!empty($fid_m_approve)) ? 'OR ' . $db->sql_in_set('forum_id', array_keys($fid_m_approve)) : '';

   // Obtain active forum
   $sql = 'SELECT forum_id, COUNT(post_id) AS num_posts
      FROM ' . POSTS_TABLE . '
      WHERE poster_id = ' . $userdata['user_id'] . "
         AND post_postcount = 1
         AND (post_approved = 1
            $sql_m_approve)
         $forum_sql
      GROUP BY forum_id
      ORDER BY num_posts DESC";
   $result = $db->sql_query_limit($sql, 1);
   $active_f_row = $db->sql_fetchrow($result);
   $db->sql_freeresult($result);

   if (!empty($active_f_row))
   {
      $sql = 'SELECT forum_name
         FROM ' . FORUMS_TABLE . '
         WHERE forum_id = ' . $active_f_row['forum_id'];
      $result = $db->sql_query($sql, 3600);
      $active_f_row['forum_name'] = (string) $db->sql_fetchfield('forum_name');
      $db->sql_freeresult($result);
   }

   // Obtain active topic
   $sql = 'SELECT topic_id, COUNT(post_id) AS num_posts
      FROM ' . POSTS_TABLE . '
      WHERE poster_id = ' . $userdata['user_id'] . "
         AND post_postcount = 1
         AND (post_approved = 1
            $sql_m_approve)
         $forum_sql
      GROUP BY topic_id
      ORDER BY num_posts DESC";
   $result = $db->sql_query_limit($sql, 1);
   $active_t_row = $db->sql_fetchrow($result);
   $db->sql_freeresult($result);

   if (!empty($active_t_row))
   {
      $sql = 'SELECT topic_title
         FROM ' . TOPICS_TABLE . '
         WHERE topic_id = ' . $active_t_row['topic_id'];
      $result = $db->sql_query($sql);
      $active_t_row['topic_title'] = (string) $db->sql_fetchfield('topic_title');
      $db->sql_freeresult($result);
   }

   $userdata['active_t_row'] = $active_t_row;
   $userdata['active_f_row'] = $active_f_row;

   $active_f_name = $active_f_id = $active_f_count = $active_f_pct = '';
   if (!empty($active_f_row['num_posts']))
   {
      $active_f_name = $active_f_row['forum_name'];
      $active_f_id = $active_f_row['forum_id'];
      $active_f_count = $active_f_row['num_posts'];
      $active_f_pct = ($userdata['user_posts']) ? ($active_f_count / $userdata['user_posts']) * 100 : 0;
   }

   $active_t_name = $active_t_id = $active_t_count = $active_t_pct = '';
   if (!empty($active_t_row['num_posts']))
   {
      $active_t_name = $active_t_row['topic_title'];
      $active_t_id = $active_t_row['topic_id'];
      $active_t_count = $active_t_row['num_posts'];
      $active_t_pct = ($userdata['user_posts']) ? ($active_t_count / $userdata['user_posts']) * 100 : 0;
   }

   $l_active_pct = ($userdata['user_id'] != ANONYMOUS && $userdata['user_id'] == $user->data['user_id']) ? $user->lang['POST_PCT_ACTIVE_OWN'] : $user->lang['POST_PCT_ACTIVE'];

   $template->assign_vars(array(
      'ACTIVE_FORUM'         => $active_f_name,
      'ACTIVE_FORUM_POSTS'   => ($active_f_count == 1) ? sprintf($user->lang['USER_POST'], 1) : sprintf($user->lang['USER_POSTS'], $active_f_count),
      'ACTIVE_FORUM_PCT'      => sprintf($l_active_pct, $active_f_pct),
      'ACTIVE_TOPIC'         => censor_text($active_t_name),
      'ACTIVE_TOPIC_POSTS'   => ($active_t_count == 1) ? sprintf($user->lang['USER_POST'], 1) : sprintf($user->lang['USER_POSTS'], $active_t_count),
      'ACTIVE_TOPIC_PCT'      => sprintf($l_active_pct, $active_t_pct),
      'U_ACTIVE_FORUM'      => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $active_f_id),
      'U_ACTIVE_TOPIC'      => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $active_t_id),
      'S_SHOW_ACTIVITY'      => true)
   );
}

/**
* Topic and forum watching common code
*/
function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id, $notify_status = 'unset', $start = 0)
{
   global $template, $db, $user, $phpEx, $start, $phpbb_root_path;

   $table_sql = ($mode == 'forum') ? FORUMS_WATCH_TABLE : TOPICS_WATCH_TABLE;
   $where_sql = ($mode == 'forum') ? 'forum_id' : 'topic_id';
   $match_id = ($mode == 'forum') ? $forum_id : $topic_id;
   $u_url = "uid={$user->data['user_id']}";
   $u_url .= ($mode == 'forum') ? '&amp;f' : '&amp;f=' . $forum_id . '&amp;t';

   // Is user watching this thread?
   if ($user_id != ANONYMOUS)
   {
      $can_watch = true;

      if ($notify_status == 'unset')
      {
         $sql = "SELECT notify_status
            FROM $table_sql
            WHERE $where_sql = $match_id
               AND user_id = $user_id";
         $result = $db->sql_query($sql);

         $notify_status = ($row = $db->sql_fetchrow($result)) ? $row['notify_status'] : NULL;
         $db->sql_freeresult($result);
      }

      if (!is_null($notify_status) && $notify_status !== '')
      {

         if (isset($_GET['unwatch']))
         {
            $uid = request_var('uid', 0);
            if ($uid != $user_id)
            {
               $redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&amp;start=$start");
               $message = $user->lang['ERR_UNWATCHING'] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>');
               trigger_error($message);
            }
            if ($_GET['unwatch'] == $mode)
            {
               $is_watching = 0;

               $sql = 'DELETE FROM ' . $table_sql . "
                  WHERE $where_sql = $match_id
                     AND user_id = $user_id";
               $db->sql_query($sql);
            }

            $redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&amp;start=$start");

            meta_refresh(3, $redirect_url);

            $message = $user->lang['NOT_WATCHING_' . strtoupper($mode)] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>');
            trigger_error($message);
         }
         else
         {
            $is_watching = true;

            if ($notify_status != NOTIFY_YES)
            {
               $sql = 'UPDATE ' . $table_sql . "
                  SET notify_status = " . NOTIFY_YES . "
                  WHERE $where_sql = $match_id
                     AND user_id = $user_id";
               $db->sql_query($sql);
            }
         }
      }
      else
      {
         if (isset($_GET['watch']))
         {
            $token = request_var('hash', '');
            $redirect_url = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&amp;start=$start");

            if ($_GET['watch'] == $mode && check_link_hash($token, "{$mode}_$match_id"))
            {
               $is_watching = true;

               $sql = 'INSERT INTO ' . $table_sql . " (user_id, $where_sql, notify_status)
                  VALUES ($user_id, $match_id, " . NOTIFY_YES . ')';
               $db->sql_query($sql);
               $message = $user->lang['ARE_WATCHING_' . strtoupper($mode)] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>');
            }
            else
            {
               $message = $user->lang['ERR_WATCHING'] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>');
            }

            meta_refresh(3, $redirect_url);

            trigger_error($message);
         }
         else
         {
            $is_watching = 0;
         }
      }
   }
   else
   {
      if (isset($_GET['unwatch']) && $_GET['unwatch'] == $mode)
      {
         login_box();
      }
      else
      {
         $can_watch = 0;
         $is_watching = 0;
      }
   }

   if ($can_watch)
   {
      $s_watching['link'] = append_sid("{$phpbb_root_path}view$mode.$phpEx", "$u_url=$match_id&amp;" . (($is_watching) ? 'unwatch' : 'watch') . "=$mode&amp;start=$start&amp;hash=" . generate_link_hash("{$mode}_$match_id"));
      $s_watching['title'] = $user->lang[(($is_watching) ? 'STOP' : 'START') . '_WATCHING_' . strtoupper($mode)];
      $s_watching['is_watching'] = $is_watching;
   }

   return;
}

/**
* Get user rank title and image
*
* @param int $user_rank the current stored users rank id
* @param int $user_posts the users number of posts
* @param string &$rank_title the rank title will be stored here after execution
* @param string &$rank_img the rank image as full img tag is stored here after execution
* @param string &$rank_img_src the rank image source is stored here after execution
*
* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false
*/
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)
{
   global $ranks, $config, $phpbb_root_path;

   if (empty($ranks))
   {
      global $cache;
      $ranks = $cache->obtain_ranks();
   }

   if (!empty($user_rank))
   {
      $rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : '';
      $rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : '';
      $rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image'] : '';
   }
   else if ($user_posts !== false)
   {
      if (!empty($ranks['normal']))
      {
         foreach ($ranks['normal'] as $rank)
         {
            if ($user_posts >= $rank['rank_min'])
            {
               $rank_title = $rank['rank_title'];
               $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';
               $rank_img_src = (!empty($rank['rank_image'])) ? $phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image'] : '';
               break;
            }
         }
      }
   }
}

/**
* Get user avatar
*
* @param string $avatar Users assigned avatar name
* @param int $avatar_type Type of avatar
* @param string $avatar_width Width of users avatar
* @param string $avatar_height Height of users avatar
* @param string $alt Optional language string for alt tag within image, can be a language key or text
* @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP
*
* @return string Avatar image
*/
function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $alt = 'USER_AVATAR', $ignore_config = false)
{
   global $user, $config, $phpbb_root_path, $phpEx;

   if (empty($avatar) || !$avatar_type || (!$config['allow_avatar'] && !$ignore_config))
   {

   return '<img src="images/avatars/no_avatar.gif" ' . (($avatar_width) ? ' width="' . $avatar_width . '" height="' . $avatar_height . '"' : '' ) . ' alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';

   }

   $avatar_img = '';

   switch ($avatar_type)
   {
      case AVATAR_UPLOAD:
         if (!$config['allow_avatar_upload'] && !$ignore_config)
         {
            return '';
         }
         $avatar_img = $phpbb_root_path . "download/file.$phpEx?avatar=";
      break;

      case AVATAR_GALLERY:
         if (!$config['allow_avatar_local'] && !$ignore_config)
         {
            return '';
         }
         $avatar_img = $phpbb_root_path . $config['avatar_gallery_path'] . '/';
      break;

      case AVATAR_REMOTE:
         if (!$config['allow_avatar_remote'] && !$ignore_config)
         {
            return '';
         }
      break;
   }

   $avatar_img .= $avatar;
   return '<img src="' . (str_replace(' ', '%20', $avatar_img)) . '" width="' . $avatar_width . '" height="' . $avatar_height . '" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
}

?>
mangy1983
Newbie/Neuling
 
Posts: 7
Joined: Thu Aug 11, 2011 11:29 am

Re: Show Avatar in Friends list 1.0.1

Postby mangy1983 » Tue Sep 27, 2011 11:26 pm

Problem sorted by using this approach.

cheers Callum

[url]
http://www.phpbb.com/community/viewtopi ... &t=2134733
[/url]
mangy1983
Newbie/Neuling
 
Posts: 7
Joined: Thu Aug 11, 2011 11:29 am


Return to [3.0.x] MOD Database Releases

Who is online

Users browsing this forum: No registered users and 3 guests

cron