Problem bei der Sache ist, das kein Mensch mehr durchblickt welcher Code nun gerade aktuell ist (php Anfänger schon gar nicht)!
Deswegen hier mal der Code den ich auf EmF verwende. Zusammen mit den Anpassungen für evtl. noch andere vorhandene Mods. Vorteil dieses Codes, gegenüber dem Cache von Niels, ist das der Cache auch aktualisiert wird wenn sich ein neuer User registriert und sein Konto aktiviert hat und somit die Daten immer aktuell sind.

Außerdem werden inaktive User nicht mit angezeigt.
Erstelle im cache order einen Ordner namens bday mit CHMOD 777.
Und dann:
- Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#
index.php
#
#----------[ FIND ]-------------------------------------
#
// Birthday Mod, Show users with birthday
$sql = ($board_config['birthday_check_day']) ? "SELECT user_id, username, user_birthday,user_level FROM " . USERS_TABLE. " WHERE user_birthday!=999999 ORDER BY username" :"";
if($result = $db->sql_query($sql))
{
if (!empty($result))
{
$time_now = time();
$this_year = create_date('Y', $time_now, $board_config['board_timezone']);
$date_today = create_date('Ymd', $time_now, $board_config['board_timezone']);
$date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']);
while ($birthdayrow = $db->sql_fetchrow($result))
{
$user_birthday2 = $this_year.($user_birthday = realdate("md",$birthdayrow['user_birthday'] ));
if ( $user_birthday2 < $date_today ) $user_birthday2 += 10000;
if ( $user_birthday2 > $date_today && $user_birthday2 <= $date_forward )
{
// user are having birthday within the next days
$user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']);
switch ($birthdayrow['user_level'])
{
case ADMIN :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
break;
case MOD :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
break;
default: $style_color = '';
}
$birthday_week_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
} else if ( $user_birthday2 == $date_today )
{
//user have birthday today
$user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] );
switch ($birthdayrow['user_level'])
{
case ADMIN :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"';
break;
case MOD :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"';
break;
default: $style_color = '';
}
$birthday_today_list .= ' <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $birthdayrow['user_id']) . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
}
}
if ($birthday_today_list) $birthday_today_list[ strlen( $birthday_today_list)-1] = ' ';
if ($birthday_week_list) $birthday_week_list[ strlen( $birthday_week_list)-1] = ' ';
}
$db->sql_freeresult($result);
}
#
#----------[ REPLACE WITH ]-----------------------------
#
// Cache - Birthday Mod, Show users with birthday
$cache_bday_file = $phpbb_root_path . "cache/bday/bday_" . $board_config['board_timezone'] . ".php";
if (@file_exists($cache_bday_file))
{
$sql = "SELECT user_regdate
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
ORDER BY user_id DESC
LIMIT 0,1";
$result = $db->sql_query($sql);
while ($row = mysql_fetch_array($result))
{
$newest_regdate = $row['user_regdate'];
}
$db->sql_freeresult($result);
$last_update_time = @filemtime($cache_bday_file);
$valid = (((date('Yz',time()) - date('Yz',$last_update_time))<1) && ((time() - $newest_regdate) > (time() - $last_update_time) )) ? true : false;
}
else
{
$valid = false;
}
if ($valid )
{
include ($cache_bday_file);
$birthday_today_list = stripslashes($birthday_today_list);
$birthday_week_list = stripslashes($birthday_week_list);
}
else
{
$sql = ($board_config['birthday_check_day']) ? "SELECT user_id, username, user_birthday,user_level FROM " . USERS_TABLE. " WHERE user_birthday!=999999 AND user_active=1 ORDER BY username" :"";
if($result = $db->sql_query($sql))
{
if (!empty($result))
{
$time_now = time();
$this_year = create_date('Y', $time_now, $board_config['board_timezone']);
$date_today = create_date('Ymd', $time_now, $board_config['board_timezone']);
$date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']);
while ($birthdayrow = $db->sql_fetchrow($result))
{
$user_birthday2 = $this_year.($user_birthday = realdate("md",$birthdayrow['user_birthday'] ));
if ( $user_birthday2 < $date_today )
{
$user_birthday2 += 10000;
}
if ( $user_birthday2 > $date_today && $user_birthday2 <= $date_forward )
{
// user are having birthday within the next days
$user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']);
switch ($birthdayrow['user_level'])
{
case ADMIN :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"'
;break;
case MOD :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"'
;break;
default: $style_color = '';
}
$birthday_week_list .= ' <a href="profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $birthdayrow['user_id'] . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
}
else if ( $user_birthday2 == $date_today )
{
//user have birthday today
$user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] );
switch ($birthdayrow['user_level'])
{
case ADMIN :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"'
;break;
case MOD :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"'
;break;
default: $style_color = '';
}
$birthday_today_list .= ' <a href="profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $birthdayrow['user_id'] . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
}
}
if ($birthday_today_list)
{
$birthday_today_list[ strlen( $birthday_today_list)-1] = ' ';
}
if ($birthday_week_list)
{
$birthday_week_list[ strlen( $birthday_week_list)-1] = ' ';
}
}
$db->sql_freeresult($result);
if($fp = fopen( $cache_bday_file, "w" ))
{
// stores the data set in a cache file
$bday = "<?php\n";
$bday .='$birthday_today_list = \'' . addslashes($birthday_today_list) . "';\n";
$bday .='$birthday_week_list = \'' . addslashes($birthday_week_list) . "';\n?>";
fwrite($fp, $bday);
fclose($fp);
@chmod($cache_bday_file, 0777);
}
}
}
#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM
__
Admins die keinen Categories Hierarchy installiert haben können im obigem Code
- Code: Alles auswählen
$sql = "SELECT user_regdate
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
ORDER BY user_id DESC
LIMIT 0,1";
$result = $db->sql_query($sql);
while ($row = mysql_fetch_array($result))
{
$newest_regdate = $row['user_regdate'];
}
$db->sql_freeresult($result);
- Code: Alles auswählen
$newest_regdate = $newest_userdata['user_regdate'];
- Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------------
#
includes/functions.php
#
#-----[ FIND ]------------------------------------------------
#
case 'newestuser':
$sql = "SELECT user_id, username
#
#----------[ INLINE FIND ]------------------------------
#
, username
#
#----------[ INLINE AFTER, ADD ]------------------------
#
, user_regdate
#
#-----[ SAVE/CLOSE FILE ]--------------------------------
#
# EoM

__
Wer den Color Groups installiert hat kann im obigem Code noch
- Code: Alles auswählen
#
#-----[ FIND ]----------------------------------------------------------------
#
if ( $user_birthday2 > $date_today && $user_birthday2 <= $date_forward )
{
// user are having birthday within the next days
$user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']);
switch ($birthdayrow['user_level'])
{
case ADMIN :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"'
;break;
case MOD :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"'
;break;
default: $style_color = '';
}
$birthday_week_list .= ' <a href="profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $birthdayrow['user_id'] . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
}
else if ( $user_birthday2 == $date_today )
{
//user have birthday today
$user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] );
switch ($birthdayrow['user_level'])
{
case ADMIN :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor3'] . '"'
;break;
case MOD :
$birthdayrow['username'] = '<b>' . $birthdayrow['username'] . '</b>';
$style_color = 'style="color:#' . $theme['fontcolor2'] . '"'
;break;
default: $style_color = '';
}
$birthday_today_list .= ' <a href="profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $birthdayrow['user_id'] . '"' . $style_color .'>' . $birthdayrow['username'] . ' ('.$user_age.')</a>,';
}
#
#-----[ REPLACE WITH ]--------------------------------------------------------
#
if ( $user_birthday2 > $date_today && $user_birthday2 <= $date_forward )
{
// user are having birthday within the next days
$user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']);
$birthday_today_list .= ' <a href="profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $birthdayrow['user_id'] . '">' . color_group_colorize_name($birthdayrow['user_id'], true) . ' ('.$user_age.')</a>,';
}
else if ( $user_birthday2 == $date_today )
{
//user have birthday today
$user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] );
$birthday_week_list .= ' <a href="profile.'.$phpEx.'?mode=viewprofile&' . POST_USERS_URL . '=' . $birthdayrow['user_id'] . '">' . color_group_colorize_name($birthdayrow['user_id'], true) . ' ('.$user_age.')</a>,';
}

Das ganze Basiert auf dem Cache von Niels und einem Cache von easygo.