Einbau Frage zu Snippet...

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Elbenhexe24
Mitglied
Beiträge: 128
Registriert: 04.02.2006 12:50
Kontaktdaten:

Einbau Frage zu Snippet...

Beitrag von Elbenhexe24 »

Hallo :D


Ich muss jetzt noch einmal eine Frage los werden und hoffe ich bin
hier richtig...

Es geht um diese Spam Anmeldungen und ich überlege fieberhaft
wie ich dem ein Ende setze. Nun war ich hier gerade im Bord und
habe gelesen das es ein Snippet gibt

http://www.phpbb.de/viewtopic.php?t=50842

mit diesem man nicht aktivierte Konten im Forum einfach nicht
angezeigt wird. Klingt für mich prima im Kampf gegen diese ekelhaften
Spammer und Mitglieder die nicht wirklich ein Interesse an der Mitglied-
schaft haben.

Nun zu meiner Frage: Ich versuche gerade das ganze selbst bei mir
einzubauen aber da tauchen schon die erste Probleme einer Unerfahrenen
auf :oops:

Die includes/functions.php und die memberlist.php habe ich in meiner
Datenbank gefunden und das ganze zur vereinfachung in mein Frontpage
geladen damit ich nach den Zeilen gehen kann. Allerdings steht jeweils
in den angegebenen zeilen bei mir schon was. Soll ich das weglöschen,
nach unten verschieben oder wie muss ich

Code: Alles auswählen

AND user_active = 1
das hier einbauen? In alle 2 php. Dateien?

Die nächste Frage ist dann wie ich mit dem folgenden Code jeweils ver-
fahre. Wo kommt der denn hin? Unter den _active = 1 code oder ganz wo
anders?

Mein erster Versuch selbst hand anzulegen also schonmal tschuldigung
für die etwas doofe Fragerei :wink:

Vielen Dank schonmal!

LG Elbenhexe[/b]
Benutzeravatar
Maxxxx
Mitglied
Beiträge: 282
Registriert: 22.08.2005 02:38
Wohnort: Dresden

Beitrag von Maxxxx »

Müsste doch ganz klar dastehen was du machen musst. Unter dem allgemeinen Motto:

Öffen Datei xxx.yz

Suche folgenden Abschnitt

Code: Alles auswählen

Code-Abschnitt in die Suche eingeben im Frontpage
Dann ersetzen / darunter bzw. darüber ergänzen

Code: Alles auswählen

Neuer Code / Code zum ersetzen etc.
Die Angaben der Zeilen sind nur ungefähre Angaben, da man ja bereits darüber was geändert haben kann und sich auch die Zeilen mit zum Beispiel einem Update von phpBB verändern kann.

Hier noch etwas ausführlicher
Intelligenz ist die Fähigkeit zu hinterfragen, was Intelligenz sei.
Mein eigenes kleines Forum: http://forum.sw-rpg.de
Benutzeravatar
Elbenhexe24
Mitglied
Beiträge: 128
Registriert: 04.02.2006 12:50
Kontaktdaten:

Beitrag von Elbenhexe24 »

Hallo,

danke für die Antwort. Ich glaube jetzt sehe ich es etwas klarer.
Dachte es müsste exakt in die Zeilen eingetragen werden das hat
mich etwas irritiert.

Werde es gleich versuchen :)

LG Elbenhexe
Benutzeravatar
Maxxxx
Mitglied
Beiträge: 282
Registriert: 22.08.2005 02:38
Wohnort: Dresden

Beitrag von Maxxxx »

Klar, ist nicht schwer wenn man das System einmal verstanden hat. Selbst für absolut Unerfahrene. Nur die Suche ist halt wichtig. Wenn du nicht den Ausdruck findest, dann suche kleine Abschnitte drinne und vergleiche den Rest.
Intelligenz ist die Fähigkeit zu hinterfragen, was Intelligenz sei.
Mein eigenes kleines Forum: http://forum.sw-rpg.de
Benutzeravatar
Elbenhexe24
Mitglied
Beiträge: 128
Registriert: 04.02.2006 12:50
Kontaktdaten:

Beitrag von Elbenhexe24 »

Hallo,

ich hab mich jetzt dran gewagt und hatte die abgeänderten 2 Dateien
hochgeladen. Doch dann wurde mir ein Error Meldung angezeigt und seltsamerweiße nicht in den beiden Dateien wo ich die Änderungen vorgenommen habe sondern in der Datei

/includes/Session.php

Wie kann das sein? Habe in der sessions.php keinerlei Änderungen
vorgenommen! Jedenfalls habe ich zur Sicherheit wieder die alten
memberlist.php und includes/functions.php drauf überspielt aber noch
will ich nicht aufgeben!

Danke schonmal!

LG Elbenhexe
Benutzeravatar
Maxxxx
Mitglied
Beiträge: 282
Registriert: 22.08.2005 02:38
Wohnort: Dresden

Beitrag von Maxxxx »

Jedenfalls hast du einen Fehler mit deinem Umbau verursacht, welcher sich in der session.php ausgewirkt hat. Vielleicht solltest du mal deinen Mod-Einbau in der Jobbörse anbieten, muss ja nicht entgeldlich sein.
Intelligenz ist die Fähigkeit zu hinterfragen, was Intelligenz sei.
Mein eigenes kleines Forum: http://forum.sw-rpg.de
IPB_Flüchtling
Mitglied
Beiträge: 1862
Registriert: 23.12.2004 22:46

Beitrag von IPB_Flüchtling »

Ahoi Elbenhexe,

1. in itsts Snippet werden die zu verändernden Codeabschnitte ja angeführt - vergiss am besten die Zeilenangaben.

2. Nimm nicht Frontpage zum Editieren sondern einen guten Texteditor wie den kostenlosen Proton: http://www.meybohm.de/download.html Frontpage fügt manchmal von sich aus Code hinzu, den man gar nicht haben möchte.

3. Wenn es partout nicht klappen will, verlinke mal Deine includes/functions.php und memberlist.php als Textdateien. Bei dem kurzen Snippet wird Dir sicher rasch geholfen werden.

LG, IPB_Flüchtling
Benutzeravatar
Elbenhexe24
Mitglied
Beiträge: 128
Registriert: 04.02.2006 12:50
Kontaktdaten:

Beitrag von Elbenhexe24 »

So nun bin ich endlich gekommen weiter zu machen.

Erstmal danke für den Tipp mit diesem Proton Editor, ist tatsächlich
viel besser beim Arbeiten im Quelltext.

Nun habe ich es nochmal versucht und es war wieder nichts. Es gab
ein paar Probleme mit anderen Datenbank dateien nachdem ich alles
eingebaut habe. Vor allem die Dateien die für die Registrierung zuständig
sind. Naja, ich hab sie neu aufgespielt und das Problem schien dann
behoben.

Aber ich hab mich zu früh gefreut, denn der gewünschte Effekt das man
nicht aktivierte Konten unten in der Neuanmeldung nicht sieht, is nicht!
Mein Testaccount wurde trotz nicht bestätigung trotzdem angezeigt :(

Da ich gerade nicht mehr weiter weiß kopiere ich euch mal die zwei
veränderten Dateien hier rein vielleicht hab ich ja dennoch was falsch
gemacht beim einbau

memberlist.php
<?php
//-- mod : categories hierarchy ------------------------------------------------
/***************************************************************************
* memberlist.php
* -------------------
* begin : Friday, May 11, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id: memberlist.php,v 1.36.2.11 2005/09/14 18:14:30 acydburn Exp $
*
***************************************************************************/

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

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_VIEWMEMBERS);
init_userprefs($userdata);
//
// End session management
//

//-- mod : categories hierarchy ------------------------------------------------
//-- add
$navigation = new navigation();
$navigation->add('Memberlist', '', 'memberlist', '', '');
$navigation->display();

// extra selection
$select_group = _read(POST_GROUPS_URL, TYPE_INT);
if ( $select_group == GROUP_REGISTERED )
{
$select_group = 0;
}
$select_level = _read('level', TYPE_INT);
$sql_join = '';
$sql_where = empty($select_level) ? '' : 'user_level = ' . intval($select_level) . ' AND ';
if ( !empty($select_group) )
{
$sql_join = ', ' . GROUPS_TABLE . ' g';
$sql_where = 'g.group_user_id = user_id AND g.group_user_list LIKE \'%,' . intval($select_group) . ',%\' AND ';
}
$selection = (empty($select_group) ? '' : '&' . POST_GROUPS_URL . '=' . intval($select_group)) . (empty($select_level) ? '' : '&level=' . intval($select_level));
//-- fin mod : categories hierarchy --------------------------------------------

$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;

if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
{
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? htmlspecialchars($HTTP_POST_VARS['mode']) : htmlspecialchars($HTTP_GET_VARS['mode']);
}
else
{
$mode = 'joined';
}

if(isset($HTTP_POST_VARS['order']))
{
$sort_order = ($HTTP_POST_VARS['order'] == 'ASC') ? 'ASC' : 'DESC';
}
else if(isset($HTTP_GET_VARS['order']))
{
$sort_order = ($HTTP_GET_VARS['order'] == 'ASC') ? 'ASC' : 'DESC';
}
else
{
$sort_order = 'ASC';
}

//
// Memberlist sorting
//
$mode_types_text = array($lang['Sort_Joined'], $lang['Sort_Username'], $lang['Sort_Location'], $lang['Sort_Posts'], $lang['Sort_Email'], $lang['Sort_Website'], $lang['Sort_Top_Ten']);
$mode_types = array('joined', 'username', 'location', 'posts', 'email', 'website', 'topten');

$select_sort_mode = '<select name="mode">';
for($i = 0; $i < count($mode_types_text); $i++)
{
$selected = ( $mode == $mode_types[$i] ) ? ' selected="selected"' : '';
$select_sort_mode .= '<option value="' . $mode_types[$i] . '"' . $selected . '>' . $mode_types_text[$i] . '</option>';
}
$select_sort_mode .= '</select>';

$select_sort_order = '<select name="order">';
if($sort_order == 'ASC')
{
$select_sort_order .= '<option value="ASC" selected="selected">' . $lang['Sort_Ascending'] . '</option><option value="DESC">' . $lang['Sort_Descending'] . '</option>';
}
else
{
$select_sort_order .= '<option value="ASC">' . $lang['Sort_Ascending'] . '</option><option value="DESC" selected="selected">' . $lang['Sort_Descending'] . '</option>';
}
$select_sort_order .= '</select>';

//
// Generate page
//
$page_title = $lang['Memberlist'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
'body' => 'memberlist_body.tpl')
);
make_jumpbox('viewforum.'.$phpEx);

$template->assign_vars(array(
'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
'L_EMAIL' => $lang['Email'],
'L_WEBSITE' => $lang['Website'],
'L_FROM' => $lang['Location'],
'L_ORDER' => $lang['Order'],
'L_SORT' => $lang['Sort'],
'L_SUBMIT' => $lang['Sort'],
'L_AIM' => $lang['AIM'],
'L_YIM' => $lang['YIM'],
'L_MSNM' => $lang['MSNM'],
'L_ICQ' => $lang['ICQ'],
'L_JOINED' => $lang['Joined'],
'L_POSTS' => $lang['Posts'],
'L_PM' => $lang['Private_Message'],

'S_MODE_SELECT' => $select_sort_mode,
'S_ORDER_SELECT' => $select_sort_order,
'S_MODE_ACTION' => append_sid("memberlist.$phpEx"))
);

switch( $mode )
{
case 'joined':
$order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
case 'username':
$order_by = "username $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
case 'location':
$order_by = "user_from $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
case 'posts':
$order_by = "user_posts $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
case 'email':
$order_by = "user_email $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
case 'website':
$order_by = "user_website $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
case 'topten':
$order_by = "user_posts $sort_order LIMIT 10";
break;
default:
$order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
break;
}

$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
ORDER BY $order_by";
//-- mod : categories hierarchy ------------------------------------------------
//-- add
if ( !empty($sql_join) )
{
$sql = str_replace('FROM ' . USERS_TABLE, 'FROM ' . USERS_TABLE . $sql_join, $sql);
}
if ( !empty($sql_where) )
{
$sql = str_replace('WHERE ', 'WHERE ' . $sql_where, $sql);
}
//-- fin mod : categories hierarchy --------------------------------------------
//-- mod : Advanced Group Color Management -------------------------------------
//-- add
$sql = str_replace('SELECT ', 'SELECT user_group_id, user_session_time, ', $sql);
//-- fin mod : Advanced Group Color Management ---------------------------------

if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )
{
$i = 0;
do
{
$username = $row['username'];
$user_id = $row['user_id'];

$from = ( !empty($row['user_from']) ) ? $row['user_from'] : '&nbsp;';
$joined = create_date($lang['DATE_FORMAT'], $row['user_regdate'], $board_config['board_timezone']);
$posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;

$poster_avatar = '';
if ( $row['user_avatar_type'] && $user_id != ANONYMOUS && $row['user_allowavatar'] )
{
switch( $row['user_avatar_type'] )
{
case USER_AVATAR_UPLOAD:
$poster_avatar = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
break;
case USER_AVATAR_REMOTE:
$poster_avatar = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : '';
break;
case USER_AVATAR_GALLERY:
$poster_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
break;
}
}

if ( !empty($row['user_viewemail']) || $userdata['user_level'] == ADMIN )
{
$email_uri = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&" . POST_USERS_URL .'=' . $user_id) : 'mailto:' . $row['user_email'];

$email_img = '<a href="' . $email_uri . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>';
$email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>';
}
else
{
$email_img = '&nbsp;';
$email = '&nbsp;';
}

$temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
$profile_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_profile'] . '" alt="' . $lang['Read_profile'] . '" title="' . $lang['Read_profile'] . '" border="0" /></a>';
$profile = '<a href="' . $temp_url . '">' . $lang['Read_profile'] . '</a>';

$temp_url = append_sid("privmsg.$phpEx?mode=post&" . POST_USERS_URL . "=$user_id");
$pm_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . '" border="0" /></a>';
$pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>';

$www_img = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
$www = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';

if ( !empty($row['user_icq']) )
{
$icq_status_img = '<a href="http://wwp.icq.com/' . $row['user_icq'] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&img=5" width="18" height="18" border="0" /></a>';
$icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '"><img src="' . $images['icon_icq'] . '" alt="' . $lang['ICQ'] . '" title="' . $lang['ICQ'] . '" border="0" /></a>';
$icq = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $lang['ICQ'] . '</a>';
}
else
{
$icq_status_img = '';
$icq_img = '';
$icq = '';
}

$aim_img = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?"><img src="' . $images['icon_aim'] . '" alt="' . $lang['AIM'] . '" title="' . $lang['AIM'] . '" border="0" /></a>' : '';
$aim = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $lang['AIM'] . '</a>' : '';

$temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id");
$msn_img = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '"><img src="' . $images['icon_msnm'] . '" alt="' . $lang['MSNM'] . '" title="' . $lang['MSNM'] . '" border="0" /></a>' : '';
$msn = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '">' . $lang['MSNM'] . '</a>' : '';

$yim_img = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg"><img src="' . $images['icon_yim'] . '" alt="' . $lang['YIM'] . '" title="' . $lang['YIM'] . '" border="0" /></a>' : '';
$yim = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $lang['YIM'] . '</a>' : '';

$temp_url = append_sid("search.$phpEx?search_author=" . urlencode($username) . "&showresults=posts");
$search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . $lang['Search_user_posts'] . '" title="' . $lang['Search_user_posts'] . '" border="0" /></a>';
$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';

$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

$template->assign_block_vars('memberrow', array(
'ROW_NUMBER' => $i + ( $start + 1 ),
'ROW_COLOR' => '#' . $row_color,
'ROW_CLASS' => $row_class,
//-- mod : Advanced Group Color Management -------------------------------------
//-- delete
// 'USERNAME' => $username,
//-- add
'USERNAME' => $colors->get_user_color($row['user_group_id'], $row['user_session_time'], $username),
//-- fin mod : Advanced Group Color Management ---------------------------------

'FROM' => $from,
'JOINED' => $joined,
'POSTS' => $posts,
'AVATAR_IMG' => $poster_avatar,
'PROFILE_IMG' => $profile_img,
'PROFILE' => $profile,
'SEARCH_IMG' => $search_img,
'SEARCH' => $search,
'PM_IMG' => $pm_img,
'PM' => $pm,
'EMAIL_IMG' => $email_img,
'EMAIL' => $email,
'WWW_IMG' => $www_img,
'WWW' => $www,
'ICQ_STATUS_IMG' => $icq_status_img,
'ICQ_IMG' => $icq_img,
'ICQ' => $icq,
'AIM_IMG' => $aim_img,
'AIM' => $aim,
'MSN_IMG' => $msn_img,
'MSN' => $msn,
'YIM_IMG' => $yim_img,
'YIM' => $yim,

'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"))
);
//-- mod : categories hierarchy ------------------------------------------------
//-- add
$template->set_switch('memberrow.light', !($i % 2));
//-- fin mod : categories hierarchy --------------------------------------------

$i++;
}
while ( $row = $db->sql_fetchrow($result) );
$db->sql_freeresult($result);
}
//-- mod : categories hierarchy ------------------------------------------------
//-- add
else
{
message_return('No_match');
}
//-- fin mod : categories hierarchy --------------------------------------------

if ( $mode != 'topten' || $board_config['topics_per_page'] < 10 )
{
$sql = "SELECT count(*) AS total
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS ."
AND user_active = 1";
//-- mod : categories hierarchy ------------------------------------------------
//-- add
if ( !empty($sql_join) )
{
$sql = str_replace('FROM ' . USERS_TABLE, 'FROM ' . USERS_TABLE . $sql_join, $sql);
}
if ( !empty($sql_where) )
{
$sql = str_replace('WHERE ', 'WHERE ' . $sql_where, $sql);
}
//-- fin mod : categories hierarchy --------------------------------------------

if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Error getting total users', '', __LINE__, __FILE__, $sql);
}

if ( $total = $db->sql_fetchrow($result) )
{
$total_members = $total['total'];

//-- mod : categories hierarchy ------------------------------------------------
// here we added
// " . $selection . "
//-- modify
$pagination = generate_pagination("memberlist.$phpEx?mode=$mode" . $selection . "&order=$sort_order", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';
//-- fin mod : categories hierarchy --------------------------------------------
}
$db->sql_freeresult($result);
}
else
{
$pagination = '&nbsp;';
$total_members = 10;
}

$template->assign_vars(array(
'PAGINATION' => $pagination,
'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $total_members / $board_config['topics_per_page'] )),

'L_GOTO_PAGE' => $lang['Goto_page'])
);

$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>



includes/functions.php
<?php
//-- mod : Fix message_die for multiple errors ---------------------------------
//-- mod : categories hierarchy ------------------------------------------------
/***************************************************************************
* functions.php
* -------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id: functions.php,v 1.133.2.38 2005/12/19 18:01:36 acydburn Exp $
*
*
***************************************************************************/

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

function get_db_stat($mode)
{
global $db;

switch( $mode )
{
case 'usercount':
$sql = "SELECT COUNT(user_id) AS total
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS;
break;

case 'newestuser':
$sql = "SELECT user_id, username
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
ORDER BY user_id DESC
LIMIT 1";
//-- mod : Advanced Group Color Management -------------------------------------
//-- add
$sql = str_replace('SELECT ', 'SELECT user_group_id, user_session_time, ', $sql);
//-- fin mod : Advanced Group Color Management ---------------------------------

break;

case 'postcount':
case 'topiccount':
$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
FROM " . FORUMS_TABLE;
break;
}

if ( !($result = $db->sql_query($sql)) )
{
return false;
}

$row = $db->sql_fetchrow($result);

switch ( $mode )
{
case 'usercount':
return $row['total'];
break;
case 'newestuser':
return $row;
break;
case 'postcount':
return $row['post_total'];
break;
case 'topiccount':
return $row['topic_total'];
break;
}

return false;
}

// added at phpBB 2.0.11 to properly format the username
function phpbb_clean_username($username)
{
$username = substr(htmlspecialchars(str_replace("\'", "'", trim($username))), 0, 25);
$username = phpbb_rtrim($username, "\\");
$username = str_replace("'", "\'", $username);

return $username;
}

/**
* This function is a wrapper for ltrim, as charlist is only supported in php >= 4.1.0
* Added in phpBB 2.0.18
*/
function phpbb_ltrim($str, $charlist = false)
{
if ($charlist === false)
{
return ltrim($str);
}

$php_version = explode('.', PHP_VERSION);

// php version < 4.1.0
if ((int) $php_version[0] < 4 || ((int) $php_version[0] == 4 && (int) $php_version[1] < 1))
{
while ($str{0} == $charlist)
{
$str = substr($str, 1);
}
}
else
{
$str = ltrim($str, $charlist);
}

return $str;
}

// added at phpBB 2.0.12 to fix a bug in PHP 4.3.10 (only supporting charlist in php >= 4.1.0)
function phpbb_rtrim($str, $charlist = false)
{
if ($charlist === false)
{
return rtrim($str);
}

$php_version = explode('.', PHP_VERSION);

// php version < 4.1.0
if ((int) $php_version[0] < 4 || ((int) $php_version[0] == 4 && (int) $php_version[1] < 1))
{
while ($str{strlen($str)-1} == $charlist)
{
$str = substr($str, 0, strlen($str)-1);
}
}
else
{
$str = rtrim($str, $charlist);
}

return $str;
}

//
// Get Userdata, $user can be username or user_id. If force_str is true, the username will be forced.
//
function get_userdata($user, $force_str = false)
{
global $db;

if (!is_numeric($user) || $force_str)
{
$user = phpbb_clean_username($user);
}
else
{
$user = intval($user);
}

$sql = "SELECT *
FROM " . USERS_TABLE . "
WHERE ";
$sql .= ( ( is_integer($user) ) ? "user_id = $user" : "username = '" . str_replace("\'", "''", $user) . "'" ) . " AND user_id <> " . ANONYMOUS;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Tried obtaining data for a non-existent user', '', __LINE__, __FILE__, $sql);
}

return ( $row = $db->sql_fetchrow($result) ) ? $row : false;
}

function make_jumpbox($action, $match_forum_id = 0)
{
global $template, $userdata, $lang, $db, $nav_links, $phpEx, $SID;

//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
// $is_auth = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata);

$sql = "SELECT c.cat_id, c.cat_title, c.cat_order
FROM " . CATEGORIES_TABLE . " c, " . FORUMS_TABLE . " f
WHERE f.cat_id = c.cat_id
GROUP BY c.cat_id, c.cat_title, c.cat_order
ORDER BY c.cat_order";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't obtain category list.", "", __LINE__, __FILE__, $sql);
}

$category_rows = array();
while ( $row = $db->sql_fetchrow($result) )
{
$category_rows[] = $row;
}

if ( $total_categories = count($category_rows) )
{
$sql = "SELECT *
FROM " . FORUMS_TABLE . "
ORDER BY cat_id, forum_order";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql);
}

$boxstring = '<select name="' . POST_FORUM_URL . '" onchange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }"><option value="-1">' . $lang['Select_forum'] . '</option>';

$forum_rows = array();
while ( $row = $db->sql_fetchrow($result) )
{
$forum_rows[] = $row;
}

if ( $total_forums = count($forum_rows) )
{
for($i = 0; $i < $total_categories; $i++)
{
$boxstring_forums = '';
for($j = 0; $j < $total_forums; $j++)
{
if ( $forum_rows[$j]['cat_id'] == $category_rows[$i]['cat_id'] && $forum_rows[$j]['auth_view'] <= AUTH_REG )
{

// if ( $forum_rows[$j]['cat_id'] == $category_rows[$i]['cat_id'] && $is_auth[$forum_rows[$j]['forum_id']]['auth_view'] )
// {
$selected = ( $forum_rows[$j]['forum_id'] == $match_forum_id ) ? 'selected="selected"' : '';
$boxstring_forums .= '<option value="' . $forum_rows[$j]['forum_id'] . '"' . $selected . '>' . $forum_rows[$j]['forum_name'] . '</option>';

//
// Add an array to $nav_links for the Mozilla navigation bar.
// 'chapter' and 'forum' can create multiple items, therefore we are using a nested array.
//
$nav_links['chapter forum'][$forum_rows[$j]['forum_id']] = array (
'url' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=" . $forum_rows[$j]['forum_id']),
'title' => $forum_rows[$j]['forum_name']
);

}
}

if ( $boxstring_forums != '' )
{
$boxstring .= '<option value="-1">&nbsp;</option>';
$boxstring .= '<option value="-1">' . $category_rows[$i]['cat_title'] . '</option>';
$boxstring .= '<option value="-1">----------------</option>';
$boxstring .= $boxstring_forums;
}
}
}

$boxstring .= '</select>';
}
else
{
$boxstring .= '<select name="' . POST_FORUM_URL . '" onchange="if(this.options[this.selectedIndex].value != -1){ forms[\'jumpbox\'].submit() }"></select>';
}

// Let the jumpbox work again in sites having additional session id checks.
// if ( !empty($SID) )
// {
$boxstring .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
// }
*/
//-- add
global $config, $forums, $user;

if ( eregi('^viewforum', $action) )
{
$action = 'index';
}
else if ( eregi('^modcp', $action) )
{
$action = 'modcp';
}
$action = $config->url($action, '', true);
if ( empty($forums) )
{
include_once($config->url('includes/class_forums'));
$forums = new forums();
$forums->read();
}
$boxstring = '<select name="' . POST_FORUM_URL . '" onchange="if(this.options[this.selectedIndex].value >= 0){ forms[\'jumpbox\'].submit() }"><option value="-2" selected="selected">' . $lang['Select_forum'] . '</option><option value="-1">-------------------</option>';
$boxstring .= $forums->get_jumpbox();
$boxstring .= '</select><input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
$template->assign_vars(array(
'I_GO' => $user->img('cmd_mini_submit'),
));
//-- fin mod : categories hierarchy --------------------------------------------

$template->set_filenames(array(
'jumpbox' => 'jumpbox.tpl')
);
$template->assign_vars(array(
'L_GO' => $lang['Go'],
'L_JUMP_TO' => $lang['Jump_to'],
'L_SELECT_FORUM' => $lang['Select_forum'],

'S_JUMPBOX_SELECT' => $boxstring,
'S_JUMPBOX_ACTION' => append_sid($action))
);
$template->assign_var_from_handle('JUMPBOX', 'jumpbox');

return;
}

//
// Initialise user settings on page load
function init_userprefs($userdata)
{
global $board_config, $theme, $images;
global $template, $lang, $phpEx, $phpbb_root_path;
global $nav_links;

//-- mod : Advanced Group Color Management -------------------------------------
//-- add
global $colors;

$colors->default_lang = $board_config['default_lang'];
//-- fin mod : Advanced Group Color Management ---------------------------------

if ( $userdata['user_id'] != ANONYMOUS )
{
if ( !empty($userdata['user_lang']))
{
$board_config['default_lang'] = $userdata['user_lang'];
}

if ( !empty($userdata['user_dateformat']) )
{
$board_config['default_dateformat'] = $userdata['user_dateformat'];
}

if ( isset($userdata['user_timezone']) )
{
$board_config['board_timezone'] = $userdata['user_timezone'];
}
}

if ( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx)) )
{
$board_config['default_lang'] = 'english';
}

include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.' . $phpEx);

if ( defined('IN_ADMIN') )
{
if( !file_exists(@phpbb_realpath($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.'.$phpEx)) )
{
$board_config['default_lang'] = 'english';
}

include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_admin.' . $phpEx);
}
//-- mod : Advanced Group Color Management -------------------------------------
//-- add
$colors->lang();
//-- fin mod : Advanced Group Color Management ---------------------------------


//
// Set up style
//
//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
if ( !$board_config['override_user_style'] )
{
if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
{
if ( $theme = setup_style($userdata['user_style']) )
{
return;
}
}
}

$theme = setup_style($board_config['default_style']);
*/
//-- add
// init user object
global $user;

if ( !empty($user) || is_object($user) )
{
$user->set();
}
//-- fin mod : categories hierarchy --------------------------------------------

//
// Mozilla navigation bar
// Default items that should be valid on all pages.
// Defined here to correctly assign the Language Variables
// and be able to change the variables within code.
//
$nav_links['top'] = array (
'url' => append_sid($phpbb_root_path . 'index.' . $phpEx),
'title' => sprintf($lang['Forum_Index'], $board_config['sitename'])
);
$nav_links['search'] = array (
'url' => append_sid($phpbb_root_path . 'search.' . $phpEx),
'title' => $lang['Search']
);
$nav_links['help'] = array (
'url' => append_sid($phpbb_root_path . 'faq.' . $phpEx),
'title' => $lang['FAQ']
);
$nav_links['author'] = array (
'url' => append_sid($phpbb_root_path . 'memberlist.' . $phpEx),
'title' => $lang['Memberlist']
);

return;
}

function setup_style($style)
{
global $db, $board_config, $template, $images, $phpbb_root_path;

//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
$sql = "SELECT *
FROM " . THEMES_TABLE . "
WHERE themes_id = $style";
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not query database for theme info');
}

if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(CRITICAL_ERROR, "Could not get theme data for themes_id [$style]");
}

$template_path = 'templates/' ;
$template_name = $row['template_name'] ;

$template = new Template($phpbb_root_path . $template_path . $template_name);
*/
//-- add
global $config, $user, $themes;

$themes_exists = true;
if ( empty($themes) )
{
$themes = new themes();
$themes->read();
$themes_exists = false;
}
$row = $themes->data[$style];

// force the main css when in admin
$head_stylesheet = $row['template_name'] . '.css';
if ( defined('IN_ADMIN') && ($row['head_stylesheet'] != $head_stylesheet) )
{
foreach ( $themes->data as $style_id => $style_data )
{
if ( $style_data['head_stylesheet'] == $head_stylesheet )
{
$row = $style_data;
break;
}
}
}

// clean up if themes didn't exists
if ( !$themes_exists )
{
unset($themes);
}

// get main parameters
$template_path = 'templates/';
$template_name = $row['template_name'];

// intantiate the template
$template = new template_class($config->root . $template_path . $template_name, $row['custom_tpls']);
//-- fin mod : categories hierarchy --------------------------------------------

if ( $template )
{
$current_template_path = $template_path . $template_name;
@include($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.cfg');
//-- mod : bbcode box reloaded -------------------------------------------------
//-- add
$style = $config->data['bbc_style_path'];
@include($phpbb_root_path . $template_path . $template_name . '/bbc_box.cfg');
//-- fin mod : bbcode box reloaded ---------------------------------------------

if ( !defined('TEMPLATE_CONFIG') )
{
message_die(CRITICAL_ERROR, "Could not open $template_name template config file", '', __LINE__, __FILE__);
}

$img_lang = ( file_exists(@phpbb_realpath($phpbb_root_path . $current_template_path . '/images/lang_' . $board_config['default_lang'])) ) ? $board_config['default_lang'] : 'english';

while( list($key, $value) = @each($images) )
{
if ( !is_array($value) )
{
$images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value);
}
}
//-- mod : categories hierarchy ------------------------------------------------
//-- add
// read additional images
$images_pack = empty($row['images_pack']) || ($row['images_pack'] == $template_name . '.cfg') ? '' : $config->root . $template_path . $template_name . '/' . $row['images_pack'];
if ( !empty($images_pack) )
{
$sav_images = $images;
$images = array();
$current_template_path = substr($images_pack, 0, strrpos($images_pack, '/'));
@include($images_pack);
$img_lang = ( file_exists(@phpbb_realpath($current_template_path . '/images/lang_' . $config->data['default_lang'])) ) ? $config->data['default_lang'] : 'english';
if ( empty($images) )
{
$images = $sav_images;
}
else
{
foreach ( $images as $key => $value )
{
if ( !is_array($value) )
{
$images[$key] = str_replace('{LANG}', 'lang_' . $img_lang, $value);
}
}
$images += $sav_images;
}
}

// .ini file
@include($phpbb_root_path . $template_path . $template_name . '/' . $template_name . '.ini');
//-- fin mod : categories hierarchy --------------------------------------------
}

return $row;
}

function encode_ip($dotquad_ip)
{
$ip_sep = explode('.', $dotquad_ip);
return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}

function decode_ip($int_ip)
{
$hexipbang = explode('.', chunk_split($int_ip, 2, '.'));
return hexdec($hexipbang[0]). '.' . hexdec($hexipbang[1]) . '.' . hexdec($hexipbang[2]) . '.' . hexdec($hexipbang[3]);
}

//
// Create date/time from format and timezone
//
function create_date($format, $gmepoch, $tz)
{
//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
global $board_config, $lang;
static $translate;

if ( empty($translate) && $board_config['default_lang'] != 'english' )
{
@reset($lang['datetime']);
while ( list($match, $replace) = @each($lang['datetime']) )
{
$translate[$match] = $replace;
}
}

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));
*/
//-- add
global $user;
return $user->date($gmepoch, $format);
//-- fin mod : categories hierarchy --------------------------------------------
}

//
// Pagination routine, generates
// page number sequence
//
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE)
{
global $lang;

$total_pages = ceil($num_items/$per_page);

if ( $total_pages == 1 )
{
return '';
}

$on_page = floor($start_item / $per_page) + 1;

$page_string = '';
if ( $total_pages > 10 )
{
$init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages;

for($i = 1; $i < $init_page_max + 1; $i++)
{
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . $i . '</a>';
if ( $i < $init_page_max )
{
$page_string .= ", ";
}
}

if ( $total_pages > 3 )
{
if ( $on_page > 1 && $on_page < $total_pages )
{
$page_string .= ( $on_page > 5 ) ? ' ... ' : ', ';

$init_page_min = ( $on_page > 4 ) ? $on_page : 5;
$init_page_max = ( $on_page < $total_pages - 4 ) ? $on_page : $total_pages - 4;

for($i = $init_page_min - 1; $i < $init_page_max + 2; $i++)
{
$page_string .= ($i == $on_page) ? '<b>' . $i . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . $i . '</a>';
if ( $i < $init_page_max + 1 )
{
$page_string .= ', ';
}
}

$page_string .= ( $on_page < $total_pages - 4 ) ? ' ... ' : ', ';
}
else
{
$page_string .= ' ... ';
}

for($i = $total_pages - 2; $i < $total_pages + 1; $i++)
{
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . $i . '</a>';
if( $i < $total_pages )
{
$page_string .= ", ";
}
}
}
}
else
{
for($i = 1; $i < $total_pages + 1; $i++)
{
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . $i . '</a>';
if ( $i < $total_pages )
{
$page_string .= ', ';
}
}
}

if ( $add_prevnext_text )
{
if ( $on_page > 1 )
{
$page_string = ' <a href="' . append_sid($base_url . "&start=" . ( ( $on_page - 2 ) * $per_page ) ) . '">' . $lang['Previous'] . '</a>&nbsp;&nbsp;' . $page_string;
}

if ( $on_page < $total_pages )
{
$page_string .= '&nbsp;&nbsp;<a href="' . append_sid($base_url . "&start=" . ( $on_page * $per_page ) ) . '">' . $lang['Next'] . '</a>';
}

}

$page_string = $lang['Goto_page'] . ' ' . $page_string;

return $page_string;
}

//
// This does exactly what preg_quote() does in PHP 4-ish
// If you just need the 1-parameter preg_quote call, then don't bother using this.
//
function phpbb_preg_quote($str, $delimiter)
{
$text = preg_quote($str);
$text = str_replace($delimiter, '\\' . $delimiter, $text);

return $text;
}

//
// Obtain list of naughty words and build preg style replacement arrays for use by the
// calling script, note that the vars are passed as references this just makes it easier
// to return both sets of arrays
//
function obtain_word_list(&$orig_word, &$replacement_word)
{
global $db;

//
// Define censored word matches
//
//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
$sql = "SELECT word, replacement
FROM " . WORDS_TABLE;
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get censored words from database', '', __LINE__, __FILE__, $sql);
}

if ( $row = $db->sql_fetchrow($result) )
{
do
{
$orig_word[] = '#\b(' . str_replace('\*', '\w*?', preg_quote($row['word'], '#')) . ')\b#i';
$replacement_word[] = $row['replacement'];
}
while ( $row = $db->sql_fetchrow($result) );
}
*/
//-- add
global $censored_words;

// read if not done
$data = $censored_words->read();
$orig_word = array_keys($data);
$replacement_word = array_values($data);
//-- fin mod : categories hierarchy --------------------------------------------

return true;
}

//
// This is general replacement for die(), allows templated
// output in users (or default) language, etc.
//
// $msg_code can be one of these constants:
//
// GENERAL_MESSAGE : Use for any simple text message, eg. results
// of an operation, authorisation failures, etc.
//
// GENERAL ERROR : Use for any error which occurs _AFTER_ the
// common.php include and session code, ie. most errors in
// pages/functions
//
// CRITICAL_MESSAGE : Used when basic config data is available but
// a session may not exist, eg. banned users
//
// CRITICAL_ERROR : Used when config data cannot be obtained, eg
// no database connection. Should _not_ be used in 99.5% of cases
//
function message_die($msg_code, $msg_text = '', $msg_title = '', $err_line = '', $err_file = '', $sql = '')
{
global $db, $template, $board_config, $theme, $lang, $phpEx, $phpbb_root_path, $nav_links, $gen_simple_header, $images;
global $userdata, $user_ip, $session_length;
global $starttime;
//-- mod : Advanced Group Color Management -------------------------------------
//-- add
global $colors;
//-- fin mod : Advanced Group Color Management ---------------------------------

//-- mod : categories hierarchy ------------------------------------------------
//-- add
global $config, $user, $censored_words, $icons, $navigation, $themes, $smilies;
//-- fin mod : categories hierarchy --------------------------------------------

//-- mod : Fix message_die for multiple errors ---------------------------------
// note : this one is Markus Petrux's "Fix message_die for multiple errors" mod
//-- delete
/*
if(defined('HAS_DIED'))
{
die("message_die() was called multiple times. This isn't supposed to happen. Was message_die() used in page_tail.php?");
}

define('HAS_DIED', 1);
*/
//-- add
static $msg_history;
if( !isset($msg_history) )
{
$msg_history = array();
}
$msg_history[] = array(
'msg_code' => $msg_code,
'msg_text' => $msg_text,
'msg_title' => $msg_title,
'err_line' => $err_line,
'err_file' => $err_file,
'sql' => $sql,
);

// already died
if ( defined('HAS_DIED') )
{
//
// This message is printed at the end of the report.
// Of course, you can change it to suit your own needs. ;-)
//
$custom_error_message = 'Please, contact the %swebmaster%s. Thank you.';
if ( !empty($config) && !empty($config->data['board_email']) )
{
$custom_error_message = sprintf($custom_error_message, '<a href="mailto:' . $config->data['board_email'] . '">', '</a>');
}
else
{
$custom_error_message = sprintf($custom_error_message, '', '');
}

echo "<html>\n<body>\n<b>Critical Error!</b><br />\nmessage_die() was called multiple times.<br />&nbsp;<hr />";
for( $i = 0; $i < count($msg_history); $i++ )
{
echo '<b>Error #' . ($i+1) . "</b>\n<br />\n";
if( !empty($msg_history[$i]['msg_title']) )
{
echo '<b>' . $msg_history[$i]['msg_title'] . "</b>\n<br />\n";
}
echo $msg_history[$i]['msg_text'] . "\n<br /><br />\n";
if( !empty($msg_history[$i]['err_line']) )
{
echo '<b>Line :</b> ' . $msg_history[$i]['err_line'] . '<br /><b>File :</b> ' . $msg_history[$i]['err_file'] . "</b>\n<br />\n";
}
if( !empty($msg_history[$i]['sql']) )
{
echo '<b>SQL :</b> ' . $msg_history[$i]['sql'] . "\n<br />\n";
}
echo "&nbsp;<hr />\n<br />";
}
echo "&nbsp;<br /><hr />\n" . $custom_error_message . '<hr /><br clear="all">';
die("</body>\n</html>");
}

// let's notice an error occured
define('HAS_DIED', true);
//-- fin mod : Fix message_die for multiple errors -----------------------------


$sql_store = $sql;

//
// Get SQL error if we are debugging. Do this as soon as possible to prevent
// subsequent queries from overwriting the status of sql_error()
//
if ( DEBUG && ( $msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR ) )
{
$sql_error = $db->sql_error();

$debug_text = '';

if ( $sql_error['message'] != '' )
{
$debug_text .= '<br /><br />SQL Error : ' . $sql_error['code'] . ' ' . $sql_error['message'];
}

if ( $sql_store != '' )
{
$debug_text .= "<br /><br />$sql_store";
}

if ( $err_line != '' && $err_file != '' )
{
$debug_text .= '</br /><br />Line : ' . $err_line . '<br />File : ' . basename($err_file);
}
}

if( empty($userdata) && ( $msg_code == GENERAL_MESSAGE || $msg_code == GENERAL_ERROR ) )
{
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
}

//
// If the header hasn't been output then do it
//
if ( !defined('HEADER_INC') && $msg_code != CRITICAL_ERROR )
{
if ( empty($lang) )
{
if ( !empty($board_config['default_lang']) )
{
include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx);
}
else
{
include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx);
}
}

if ( empty($template) )
{
//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
$template = new Template($phpbb_root_path . 'templates/' . $board_config['board_template']);
*/
//-- add
$template = new template_class($phpbb_root_path . 'templates/' . $board_config['board_template']);
//-- fin mod : categories hierarchy --------------------------------------------
}
if ( empty($theme) )
{
$theme = setup_style($board_config['default_style']);
}

//
// Load the Page Header
//
if ( !defined('IN_ADMIN') )
{
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
}
else
{
include($phpbb_root_path . 'admin/page_header_admin.'.$phpEx);
}
}

switch($msg_code)
{
case GENERAL_MESSAGE:
if ( $msg_title == '' )
{
$msg_title = $lang['Information'];
}
break;

case CRITICAL_MESSAGE:
if ( $msg_title == '' )
{
$msg_title = $lang['Critical_Information'];
}
break;

case GENERAL_ERROR:
if ( $msg_text == '' )
{
$msg_text = $lang['An_error_occured'];
}

if ( $msg_title == '' )
{
$msg_title = $lang['General_Error'];
}
break;

case CRITICAL_ERROR:
//
// Critical errors mean we cannot rely on _ANY_ DB information being
// available so we're going to dump out a simple echo'd statement
//
include($phpbb_root_path . 'language/lang_english/lang_main.'.$phpEx);

if ( $msg_text == '' )
{
$msg_text = $lang['A_critical_error'];
}

if ( $msg_title == '' )
{
$msg_title = 'phpBB : <b>' . $lang['Critical_Error'] . '</b>';
}
break;
}

//
// Add on DEBUG info if we've enabled debug mode and this is an error. This
// prevents debug info being output for general messages should DEBUG be
// set TRUE by accident (preventing confusion for the end user!)
//
if ( DEBUG && ( $msg_code == GENERAL_ERROR || $msg_code == CRITICAL_ERROR ) )
{
if ( $debug_text != '' )
{
$msg_text = $msg_text . '<br /><br /><b><u>DEBUG MODE</u></b>' . $debug_text;
}
}

if ( $msg_code != CRITICAL_ERROR )
{
if ( !empty($lang[$msg_text]) )
{
$msg_text = $lang[$msg_text];
}

if ( !defined('IN_ADMIN') )
{
$template->set_filenames(array(
'message_body' => 'message_body.tpl')
);
}
else
{
$template->set_filenames(array(
'message_body' => 'admin/admin_message_body.tpl')
);
}
//-- mod : categories hierarchy ------------------------------------------------
//-- add
if ( defined('DEBUG_MESSAGES') && !defined('IN_MESSAGE_RETURN') )
{
if ( empty($lang) )
{
$lang = array(
'dbg_backtrace' => 'Back trace',
'dbg_requester' => 'Requester',
);
}
$msg_text .= '<br /><br /></span></td></tr><tr><td class="cat" align="center"><span class="cattitle">' . $lang['dbg_backtrace'] . '</span></td></tr><tr><td class="row1"><span class="gen">';
if ( function_exists('debug_backtrace') )
{
$dbg = debug_backtrace();
$count_dbg = count($dbg);
for ( $i = 0; $i < $count_dbg; $i++ )
{
$msg_text .= '<br /><b>' . $lang['dbg_requester'] . ':</b> ' . basename($dbg[$i]['file']) . '[ ' . $dbg[$i]['line'] . ' ].' . $dbg[$i]['function'] . '(' . (empty($dbg[$i]['args']) ? '' : stripslashes(_format($dbg[$i]['args']))) . ')';
}
}
}
if ( !defined('IN_ADMIN') && !empty($config->data) )
{
global $navigation;

if ( !isset($navigation) || !is_object($navigation) )
{
$navigation = new navigation();
}
if ( !$navigation->displayed )
{
$navigation->display();
}
}
else
{
$template->assign_vars(array(
'NAVIGATION_BOX' => '<a href="' . append_sid('index.' . $phpEx) . '" class="nav">' . sprintf($lang['Forum_Index'], $board_config['sitename']) . '</a>',
));
}
//-- fin mod : categories hierarchy --------------------------------------------

$template->assign_vars(array(
'MESSAGE_TITLE' => $msg_title,
'MESSAGE_TEXT' => $msg_text)
);
$template->pparse('message_body');

if ( !defined('IN_ADMIN') )
{
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}
else
{
include($phpbb_root_path . 'admin/page_footer_admin.'.$phpEx);
}
}
else
{
echo "<html>\n<body>\n" . $msg_title . "\n<br /><br />\n" . $msg_text . "</body>\n</html>";
}

exit;
}

//
// This function is for compatibility with PHP 4.x's realpath()
// function. In later versions of PHP, it needs to be called
// to do checks with some functions. Older versions of PHP don't
// seem to need this, so we'll just return the original value.
// dougk_ff7 <October 5, 2002>
function phpbb_realpath($path)
{
global $phpbb_root_path, $phpEx;

return (!@function_exists('realpath') || !@realpath($phpbb_root_path . 'includes/functions.'.$phpEx)) ? $path : @realpath($path);
}

function redirect($url)
{
global $db, $board_config;

if (!empty($db))
{
$db->sql_close();
}

if (strstr(urldecode($url), "\n") || strstr(urldecode($url), "\r"))
{
message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
}

//-- mod : categories hierarchy ------------------------------------------------
//-- add
if ( !eregi('^(ht|f)tp(s?)\:\/\/', $url) )
{
//-- fin mod : categories hierarchy --------------------------------------------
$server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
$server_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['server_name']));
$server_port = ($board_config['server_port'] <> 80) ? ':' . trim($board_config['server_port']) : '';
$script_name = preg_replace('#^\/?(.*?)\/?$#', '\1', trim($board_config['script_path']));
$script_name = ($script_name == '') ? $script_name : '/' . $script_name;
//-- mod : categories hierarchy ------------------------------------------------
//-- delete
/*
$url = preg_replace('#^\/?(.*?)\/?$#', '/\1', trim($url));
*/
//-- add
$url = preg_replace('#^\/?(.*?)\/?$#', '/\1', trim(preg_replace('#^(\.\/)(.*)$#', '\2', $url)));
}
else
{
$server_protocol = $server_name = $server_port = $script_name = '';
}
$url_ampersand = $url;
$url = str_replace('&', '&', $url);
//-- fin mod : categories hierarchy --------------------------------------------

// Redirect via an HTML form for PITA webservers
if (@preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')))
{
header('Refresh: 0; URL=' . $server_protocol . $server_name . $server_port . $script_name . $url);
//-- mod : categories hierarchy ------------------------------------------------
// here we replaced :
// $url . '">HERE
// with
// $url_ampersand . '">HERE
//-- modified
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><meta http-equiv="refresh" content="0; url=' . $server_protocol . $server_name . $server_port . $script_name . $url . '"><title>Redirect</title></head><body><div align="center">If your browser does not support meta redirection please click <a href="' . $server_protocol . $server_name . $server_port . $script_name . $url_ampersand . '">HERE</a> to be redirected</div></body></html>';
//-- fin mod : categories hierarchy --------------------------------------------
exit;
}

// Behave as per HTTP/1.1 spec for others
header('Location: ' . $server_protocol . $server_name . $server_port . $script_name . $url);
exit;
}

// Add function mkrealdate for Birthday MOD
// the originate php "mktime()", does not work proberly on all OS, especially when going back in time
// before year 1970 (year 0), this function "mkrealtime()", has a mutch larger valid date range,
// from 1901 - 2099. it returns a "like" UNIX timestamp divided by 86400, so
// calculation from the originate php date and mktime is easy.
// mkrealdate, returns the number of day (with sign) from 1.1.1970.

function mkrealdate($day,$month,$birth_year)
{
// range check months
if ($month<1 || $month>12) return "error";
// range check days
switch ($month)
{
case 1: if ($day>31) return "error";break;
case 2: if ($day>29) return "error";
$epoch=$epoch+31;break;
case 3: if ($day>31) return "error";
$epoch=$epoch+59;break;
case 4: if ($day>30) return "error" ;
$epoch=$epoch+90;break;
case 5: if ($day>31) return "error";
$epoch=$epoch+120;break;
case 6: if ($day>30) return "error";
$epoch=$epoch+151;break;
case 7: if ($day>31) return "error";
$epoch=$epoch+181;break;
case 8: if ($day>31) return "error";
$epoch=$epoch+212;break;
case 9: if ($day>30) return "error";
$epoch=$epoch+243;break;
case 10: if ($day>31) return "error";
$epoch=$epoch+273;break;
case 11: if ($day>30) return "error";
$epoch=$epoch+304;break;
case 12: if ($day>31) return "error";
$epoch=$epoch+334;break;
}
$epoch=$epoch+$day;
$epoch_Y=sqrt(($birth_year-1970)*($birth_year-1970));
$leapyear=round((($epoch_Y+2) / 4)-.5);
if (($epoch_Y+2)%4==0)
{// curent year is leapyear
$leapyear--;
if ($birth_year >1970 && $month>=3) $epoch=$epoch+1;
if ($birth_year <1970 && $month<3) $epoch=$epoch-1;
} else if ($month==2 && $day>28) return "error";//only 28 days in feb.
//year
if ($birth_year>1970)
$epoch=$epoch+$epoch_Y*365-1+$leapyear;
else
$epoch=$epoch-$epoch_Y*365-1-$leapyear;
return $epoch;
}

// Add function realdate for Birthday MOD
// the originate php "date()", does not work proberly on all OS, especially when going back in time
// before year 1970 (year 0), this function "realdate()", has a mutch larger valid date range,
// from 1901 - 2099. it returns a "like" UNIX date format (only date, related letters may be used, due to the fact that
// the given date value should already be divided by 86400 - leaving no time information left)
// a input like a UNIX timestamp divided by 86400 is expected, so
// calculation from the originate php date and mktime is easy.
// e.g. realdate ("m d Y", 3) returns the string "1 3 1970"

// UNIX users should replace this function with the below code, since this should be faster
//
//function realdate($date_syntax="Ymd",$date=0)
//{ return create_date($date_syntax,$date*86400+1,0); }

function realdate($date_syntax="Ymd",$date=0)
{
global $lang;
$i=2;
if ($date>=0)
{
return create_date($date_syntax,$date*86400+1,0);
} else
{
$year= -(date%1461);
$days = $date + $year*1461;
while ($days<0)
{
$year--;
$days+=365;
if ($i++==3)
{
$i=0;
$days++;
}
}
}
$leap_year = ($i==0) ? TRUE : FALSE;
$months_array = ($i==0) ?
array (0,31,60,91,121,152,182,213,244,274,305,335,366) :
array (0,31,59,90,120,151,181,212,243,273,304,334,365);
for ($month=1;$month<12;$month++)
{
if ($days<$months_array[$month]) break;
}

$day=$days-$months_array[$month-1]+1;
//you may gain speed performance by remove som of the below entry's if they are not needed/used
return strtr ($date_syntax, array(
'a' => '',
'A' => '',
'\\d' => 'd',
'd' => ($day>9) ? $day : '0'.$day,
'\\D' => 'D',
'D' => $lang['day_short'][($date-3)%7],
'\\F' => 'F',
'F' => $lang['month_long'][$month-1],
'g' => '',
'G' => '',
'H' => '',
'h' => '',
'i' => '',
'I' => '',
'\\j' => 'j',
'j' => $day,
'\\l' => 'l',
'l' => $lang['day_long'][($date-3)%7],
'\\L' => 'L',
'L' => $leap_year,
'\\m' => 'm',
'm' => ($month>9) ? $month : '0'.$month,
'\\M' => 'M',
'M' => $lang['month_short'][$month-1],
'\\n' => 'n',
'n' => $month,
'O' => '',
's' => '',
'S' => '',
'\\t' => 't',
't' => $months_array[$month]-$months_array[$month-1],
'w' => '',
'\\y' => 'y',
'y' => ($year>29) ? $year-30 : $year+70,
'\\Y' => 'Y',
'Y' => $year+1970,
'\\z' => 'z',
'z' => $days,
'\\W' => '',
'W' => '') );
}
// End add - Birthday MOD
?>

Ich komme einfach nicht dahinter was ich falsch gemacht haben könnte :roll:

LG Elbenhexe [/b]
Antworten

Zurück zu „phpBB 2.0: Mod Support“