Ergänzungen für phpBB einfügen! Wie?
Verfasst: 26.10.2006 22:44
Hallo zusammen,
ich habe mir einige Ergänzungen für phpBB geschrieben, die das Board in Hinsicht auf Features verbessert. Es handelt sich dabei um eine Anzeige der "Top Poster", der "Neusten User", der User mit den meisten Profilaufrufen. Außerdem noch ein Modul mit dem ich die letzten LogIns anzeige lassen will. Diese Module sollen in allen Templates als Platzhalter verfügbar sein. Bedeutet: Der Platzhalter {TOPPOSTER} soll also den Inhalt der Variable des Moduls im Template darstellen.
Ich habe mir nun ein entsprechendes Script für diese Funktionen geschrieben und dieses Testhalber mal in einige Dateien eingefügt, damit ich eben die Platzhalter im Template angezeigt bekommen. Allerdings wird durch dieses Script der komplette Server ausgelastet und die CPU macht nichts mehr, außer den Server runterfahren.
Meine Frage nun: Was an meinem Script ist falsch gecodet und wo muss ich dieses Script genau einfügen, damit ich entsprechende Platzhalter in den Templates mit den Variablen ersetzen kann? Muss ich das in jede PHP-Datei von phpBB einfügen, oder gibt es da eine globale, wo die Platzhalter dann überall Funktionieren?
Bin dankbar für Hilfe und Tipps.
Gruß
Christoph
ich habe mir einige Ergänzungen für phpBB geschrieben, die das Board in Hinsicht auf Features verbessert. Es handelt sich dabei um eine Anzeige der "Top Poster", der "Neusten User", der User mit den meisten Profilaufrufen. Außerdem noch ein Modul mit dem ich die letzten LogIns anzeige lassen will. Diese Module sollen in allen Templates als Platzhalter verfügbar sein. Bedeutet: Der Platzhalter {TOPPOSTER} soll also den Inhalt der Variable des Moduls im Template darstellen.
Ich habe mir nun ein entsprechendes Script für diese Funktionen geschrieben und dieses Testhalber mal in einige Dateien eingefügt, damit ich eben die Platzhalter im Template angezeigt bekommen. Allerdings wird durch dieses Script der komplette Server ausgelastet und die CPU macht nichts mehr, außer den Server runterfahren.
Meine Frage nun: Was an meinem Script ist falsch gecodet und wo muss ich dieses Script genau einfügen, damit ich entsprechende Platzhalter in den Templates mit den Variablen ersetzen kann? Muss ich das in jede PHP-Datei von phpBB einfügen, oder gibt es da eine globale, wo die Platzhalter dann überall Funktionieren?
Bin dankbar für Hilfe und Tipps.
Gruß
Christoph
Code: Alles auswählen
// Begin Top Posters on Index
if ($board_config['top_posters'])
{
$top_posters = $board_config['top_posters'];
$sql = "SELECT username, user_id, user_level, user_posts, user_photo, user_from, user_gender, user_birthday
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
ORDER BY user_posts DESC LIMIT 3";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not Query Top Posting Users', '', __LINE__, __FILE__, $sql);
}
$user_count = $db->sql_numrows($result);
$user_data = $db->sql_fetchrowset($result);
$firstcount = $user_data[0]['user_posts'];
$total_posts = get_db_stat('postcount');
$total_top_posters = 0;
$top_posters_userlist = '';
$seperator = '<br>';
for ($i = 0; $i < $user_count; $i++)
{
if (empty($user_data[$i]['user_photo'])){
$user_photo = 'images/photos/keinbild.jpg';
} else
{
$user_photo = 'images/photos/'.$user_data[$i]['user_photo'];
}
if ($user_data[$i]['user_birthday'] == '999999')
{
$user_birthday = "";
} else
{
$this_year = create_date('Y', time(), $board_config['board_timezone']);
$this_date = create_date('md', time(), $board_config['board_timezone']);
$poster_birthdate=realdate('md', $user_data[$i]['user_birthday']);
$poster_age = $this_year - realdate ('Y',$user_data[$i]['user_birthday']);
if ($this_date < $poster_birthdate) $poster_age--;
$poster_age = $poster_age;
$user_birthday = $poster_age.' Jahre';
}
if( $user_data[$i]['user_gender'] == 1) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_male.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 2) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_female.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 0) {
$usergender = "";
}
$top_posters_userlist .= (( ($top_posters_userlist) && ($user_data[$i]['user_id']) ) ? $seperator : '') .'<div class="Layer" id="tp_'.$i.'"><table width="110" border="0" cellspacing="1" cellpadding="5" bgcolor="#CC0000"><tr><td bgcolor="#EEEEEE"><img src="'.$user_photo.'" width="100" height="120" border="0"><br><br><span class="gensmall"><b>Alter:</b> '.$user_birthday.'<br><b>Geschlecht:</b> '.$usergender.'<br><b>Aus:</b> '.$user_data[$i]['user_from'].'</span></td></tr></table></div><b>» <a href="profile.'. $phpEx .'?mode=viewprofile&u='. $user_data[$i]['user_id'] .'" onMouseOver="showLAYER(\'tp_'.$i.'\')" onMouseOut="hideLAYER()" class="mainmenu">'. $user_data[$i]['username'] .'</a></b><br><span class="gensmall">'. $user_data[$i]['user_posts'] .' Posts</span>';
$total_top_posters++;
}
}
// End Top Posters on Index
// Most Wanted
$sql = "SELECT user_id, username, user_profile_views, user_photo, user_from, user_gender, user_birthday
FROM " . USERS_TABLE . "
WHERE user_active = '1'
ORDER BY user_profile_views DESC LIMIT 3";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not Query Top Posting Users', '', __LINE__, __FILE__, $sql);
}
$user_count = $db->sql_numrows($result);
$user_data = $db->sql_fetchrowset($result);
$firstcount = $user_data[0]['user_profile_views'];
$total_top_posters = 0;
$top_posters_userlist_mostwanted = '';
$seperator = '<br>';
for ($i = 0; $i < $user_count; $i++)
{
if (empty($user_data[$i]['user_photo'])){
$user_photo = 'images/photos/keinbild.jpg';
} else
{
$user_photo = 'images/photos/'.$user_data[$i]['user_photo'];
}
if ($user_data[$i]['user_birthday'] == '999999')
{
$user_birthday = "";
} else
{
$this_year = create_date('Y', time(), $board_config['board_timezone']);
$this_date = create_date('md', time(), $board_config['board_timezone']);
$poster_birthdate=realdate('md', $user_data[$i]['user_birthday']);
$poster_age = $this_year - realdate ('Y',$user_data[$i]['user_birthday']);
if ($this_date < $poster_birthdate) $poster_age--;
$poster_age = $poster_age;
$user_birthday = $poster_age.' Jahre';
}
if( $user_data[$i]['user_gender'] == 1) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_male.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 2) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_female.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 0) {
$usergender = "";
}
$top_posters_userlist_mostwanted .= (( ($top_posters_userlist_mostwanted) && ($user_data[$i]['user_id']) ) ? $seperator : '') .'<div class="Layer" id="mw_'.$i.'"><table width="110" border="0" cellspacing="1" cellpadding="5" bgcolor="#CC0000"><tr><td bgcolor="#EEEEEE"><img src="'.$user_photo.'" width="100" height="120" border="0"><br><br><span class="gensmall"><b>Alter:</b> '.$user_birthday.'<br><b>Geschlecht:</b> '.$usergender.'<br><b>Aus:</b> '.$user_data[$i]['user_from'].'</span></td></tr></table></div><b>» <a href="profile.'. $phpEx .'?mode=viewprofile&u='. $user_data[$i]['user_id'] .'" onMouseOver="showLAYER(\'mw_'.$i.'\')" onMouseOut="hideLAYER()" class="mainmenu">'. $user_data[$i]['username'] .'</a></b><br><span class="gensmall">'. $user_data[$i]['user_profile_views'] .' Views</span>';
$total_top_posters++;
}
// Most Wanted
// Die Neuen
$sql = "SELECT user_id, username, user_regdate, user_photo, user_from, user_gender, user_birthday
FROM " . USERS_TABLE . "
WHERE user_active = '1'
ORDER BY user_id DESC LIMIT 3";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not Query Top Posting Users', '', __LINE__, __FILE__, $sql);
}
$user_count = $db->sql_numrows($result);
$user_data = $db->sql_fetchrowset($result);
$firstcount = $user_data[0]['user_profile_views'];
$total_top_posters = 0;
$top_posters_userlist_dieneuen = '';
$seperator = '<br>';
for ($i = 0; $i < $user_count; $i++)
{
if (empty($user_data[$i]['user_photo'])){
$user_photo = 'images/photos/keinbild.jpg';
} else
{
$user_photo = 'images/photos/'.$user_data[$i]['user_photo'];
}
if ($user_data[$i]['user_birthday'] == '999999')
{
$user_birthday = " ";
} else
{
$this_year = create_date('Y', time(), $board_config['board_timezone']);
$this_date = create_date('md', time(), $board_config['board_timezone']);
$poster_birthdate=realdate('md', $user_data[$i]['user_birthday']);
$poster_age = $this_year - realdate ('Y',$user_data[$i]['user_birthday']);
if ($this_date < $poster_birthdate) $poster_age--;
$poster_age = $poster_age;
$user_birthday = $poster_age.' Jahre';
}
if( $user_data[$i]['user_gender'] == 1) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_male.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 2) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_female.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 0) {
$usergender = " ";
}
$top_posters_userlist_dieneuen .= (( ($top_posters_userlist_dieneuen) && ($user_data[$i]['user_id']) ) ? $seperator : '') .'<div class="Layer" id="dn_'.$i.'"><table width="110" border="0" cellspacing="1" cellpadding="5" bgcolor="#CC0000"><tr><td bgcolor="#EEEEEE"><img src="'.$user_photo.'" width="100" height="120" border="0"><br><br><span class="gensmall"><b>Alter:</b> '.$user_birthday.'<br><b>Geschlecht:</b> '.$usergender.'<br><b>Aus:</b> '.$user_data[$i]['user_from'].'</span></td></tr></table></div><b>» <a href="profile.'. $phpEx .'?mode=viewprofile&u='. $user_data[$i]['user_id'] .'" onMouseOver="showLAYER(\'dn_'.$i.'\')" onMouseOut="hideLAYER()" class="mainmenu">'. $user_data[$i]['username'] .'</a></b><br><span class="gensmall">Seit '.create_date($lang['DATE_FORMAT'], $user_data[$i]['user_regdate'], $board_config['board_timezone']).'</span>';
$total_top_posters++;
}
// Die Neuen
// Random User
function random_user()
{
global $db;
$sql = "SELECT user_id, username, user_photo, user_from
FROM " . USERS_TABLE . "
WHERE user_active = '1'
AND user_id <> " . ANONYMOUS . "
ORDER BY RAND() LIMIT 1";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query random user data.', '', __LINE__, __FILE__, $sql);
}
return ( $row = $db->sql_fetchrow($result) ) ? $row : false;
}
$profiledata = random_user();
$kuerzen = 9;
$usernamerandom = substr_replace($profiledata['username'],"",$kuerzen);
if (empty($profiledata['user_from'])){
$aus = '';
}else
{
$aus = '<br><span style="background-color:#EEEEEE;" class="gensmall"> '.$profiledata['user_from'].' </span>';
}
if (empty($profiledata['user_photo'])){
$random_link = '<table width="110" height="130" border="0" cellspacing="1" cellpadding="5" bgcolor="#000000"><tr><td background="images/photos/keinbild.jpg" align="right" valign="bottom"><span style="background-color:#EEEEEE;"> <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=".$profiledata['user_id']."") . '"><b>'.$usernamerandom.'</b></a> </span>'.$aus.'</a></td></tr></table>';
} else
{
$random_link = '<table width="110" height="130" border="0" cellspacing="1" cellpadding="5" bgcolor="#000000"><tr><td background="images/photos/'.$profiledata['user_photo'].'" align="right" valign="bottom"><span style="background-color:#EEEEEE;"> <a href="' . append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=".$profiledata['user_id']."") . '"><b>'.$usernamerandom.'</b></a> </span>'.$aus.'</a></td></tr></table>';
}
// Random User Ende
// Last Login
$sql = "SELECT user_id, username, user_profile_views, user_photo, user_from, user_gender, user_birthday, user_session_time
FROM " . USERS_TABLE . "
WHERE user_active = '1'
ORDER BY user_session_time DESC LIMIT 3";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not Query Top Posting Users', '', __LINE__, __FILE__, $sql);
}
$user_count = $db->sql_numrows($result);
$user_data = $db->sql_fetchrowset($result);
$firstcount = $user_data[0]['user_profile_views'];
$total_top_posters = 0;
$top_posters_userlist_lastlogins = '<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>';
$seperator = '';
for ($i = 0; $i < $user_count; $i++)
{
if (empty($user_data[$i]['user_photo'])){
$user_photo = 'images/photos/keinbild.jpg';
} else
{
$user_photo = 'images/photos/'.$user_data[$i]['user_photo'];
}
if ($user_data[$i]['user_birthday'] == '999999')
{
$user_birthday = "";
} else
{
$this_year = create_date('Y', time(), $board_config['board_timezone']);
$this_date = create_date('md', time(), $board_config['board_timezone']);
$poster_birthdate=realdate('md', $user_data[$i]['user_birthday']);
$poster_age = $this_year - realdate ('Y',$user_data[$i]['user_birthday']);
if ($this_date < $poster_birthdate) $poster_age--;
$poster_age = $poster_age;
$user_birthday = $poster_age.' Jahre';
}
if( $user_data[$i]['user_gender'] == 1) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_male.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 2) {
$usergender = "<img src='templates/subSilver/images/icon_minigender_female.gif' width='11' height='11' border='0'>";
}
if( $user_data[$i]['user_gender'] == 0) {
$usergender = "";
}
$lastlogon = create_date($lang['DATE_FORMAT'], $user_data[$i]['user_session_time'], $board_config['board_timezone']);
$top_posters_userlist_lastlogins .= (( ($top_posters_userlist_lastlogins) && ($user_data[$i]['user_id']) ) ? $seperator : '') .'<td><table width="100%" border="0" cellspacing="0" cellpadding="3"><tr><td width="10%" valign="top"><a href="profile.'. $phpEx .'?mode=viewprofile&u='. $user_data[$i]['user_id'] .'"><img src="'.$user_photo.'" width="55" height="65" border="1" class="Border"></a></td><td width="90%" valign="top"><span class="gensmall"><a href="profile.'. $phpEx .'?mode=viewprofile&u='. $user_data[$i]['user_id'] .'"><b>'.$user_data[$i]['username'].'</b></a><br><b>Alter:</b> '.$user_birthday.'<br><b>Geschlecht:</b> '.$usergender.'<br><b>Aus:</b> '.$user_data[$i]['user_from'].'<br><b>Login:</b> '.$lastlogon.'</span></td></tr></table></td>';
$total_top_posters++;
}
$top_posters_userlist_lastlogins .= '</tr></table>';
// Last Logins