Seite 2 von 2
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 03.03.2012 03:03
von WileCoyote
Weder noch. Das Log wird bei aktivem Debug-Mode von dieser MOD
Debug Errors and Notices generiert. Sehr hilfreich zum Debuggen

Der Fehler tritt auch nur auf, wenn man beim Vergleichen von verschiedenen Artikel-Versionen das entsprechende Formular ohne 2 Artikel-Stände gewählt zu haben, absendet.
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 03.03.2012 10:13
von modernist
WileCoyote hat geschrieben:Das Log wird bei aktivem Debug-Mode von dieser MOD Debug Errors and Notices generiert.
Danke für den Hinweis, das werde ich doch glatt mal einbauen. Mal schauen, was da alles bei mir falsch läuft...
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 03.03.2012 13:41
von WileCoyote
Bedenke aber, dass der laufende Debug-Mode zu Perfomance-Verlusten führen kann. Speziell deswegen, weil es mit ein paar Stunden debuggen meistens nicht getan ist. Erfahrungsgemäß, sollte man den Debug-Mode ein paar Tagen laufen haben.
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 03.03.2012 21:34
von modernist
WileCoyote hat geschrieben:ch habe eben im Debug Log gesehen, dass auch die History Funktion Probleme macht.Und zwar in der includes/kb.php in den Zeilen:
4205, 4206 & 4220: Undefined offset: -1
4225: Undefined index: no_diff
Lokal habe ich mir die Debug-MOD mal installiert und prompt tauchen bei mir auch zwei Fehler an drei Stellen in der Versionsgeschichte der KB auf:
- Datei: [ROOT]/includes/kb.php
Zeile: 4209 Undefined offset: -1
- Datei: [ROOT]/includes/kb.php
Zeile: 4203 in_array() expects parameter 2 to be array, null given
- Datei: [ROOT]/includes/kb.php
Zeile: 4203 Undefined offset: -1
Die Zeilen 4203 bzw. 4209 meiner kb.php:
'S_CAN_DIFF_T' => (in_array(EDIT_TYPE_CONTENT, $rowset[count($rowset) - 1]['edit_type'])) ? true : false,
'U_VIEW_REV' => append_sid("{$phpbb_root_path}kb.$phpEx", 'i=history&e=' . $rowset[count($rowset) - 1]['edit_id']),
Wenn ich's mir so anschaue, könnte es daran liegen, daß es keine echte Historie des Artikels gab, sondern nur eine Version.
Sind mehrere Versionen vorhanden, erscheinen diese Fehlermeldungen:
- Datei: [ROOT]/includes/kb.php
Zeile: 4252 Undefined offset: -1
- Datei: [ROOT]/includes/kb.php
Zeile: 4238 Undefined offset: -1
- Datei: [ROOT]/includes/kb.php
Zeile: 4237 Undefined offset: -1
Meine Zeile 4237:
'S_CAN_DIFF_F' => ($can_diff_from && (!$rowset[$parent_id - 1]['nodiff'] || ($diff_from_old && $num == $total_edits))) ? true : false,
4238:
'S_CAN_DIFF_T' => ($rowset[$parent_id - 1]['nodiff'] || $num == $total_edits) ? false : true,
4252:
if($rowset[$parent_id - 1]['nodiff'] && $can_diff_from)
Wenn ich die
- 1
hinter
parent_id
entferne, gibt es diese Fehlermeldungen nicht mehr. Fehlfunktionen konnte ich da jetzt auch nicht auf die Schnelle feststellen. Was passiert bei dir, wenn du die
- 1
entfernst?
WileCoyote hat geschrieben:4225: Undefined index: no_diff
Hier sollte es statt
so heißen:
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 03.03.2012 21:58
von WileCoyote
modernist hat geschrieben:Wenn ich die - 1 hinter parent_id entferne, gibt es diese Fehlermeldungen nicht mehr. Fehlfunktionen konnte ich da jetzt auch nicht auf die Schnelle feststellen. Was passiert bei dir, wenn du die - 1 entfernst?
Das ist klar, dass der Fehler dann weg ist. Das Problem in dem Fall ist, dass wenn nichts zum Vergleichen da ist bzw nichts gewählt wird der Wert 0 ist und 0-1 geht halt nicht ^^
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 21.03.2012 21:44
von WileCoyote
Ich habe weitere Fehler in der Datei functions_kb.php
in der Funktion function feed_output($feed, $feed_type, $feed_data = false)
entdeckt.
Zeile 2421: undefined variable: sql_where
Zeile 2422: undefined variable: sql_order
Zeile 2442: undefined variable: title
Wenn ich mich nicht irre, liegt es an einem falsch gesetztem "}" in Zeile 2415. Das "}" sollte ans Ende der "function".
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 21.03.2012 22:00
von modernist
In der praktischen Anwendung habe ich den ganzen Feed auskommentiert, deshalb macht sich da auch kein Fehler bei mir bemerkbar...
In der Originaldatei ist die
function feed_output aber doch durch eine abschliessende Klammer in Zeile 2465 geschlossen. Bei mir sieht die Funktion im Original so aus:
Code: Alles auswählen
function feed_output($feed, $feed_type, $feed_data = false)
{
global $template, $phpbb_root_path, $phpEx, $config, $db, $user;
switch ($feed_type)
{
case 'latest':
$title = $user->lang['KB_LATEST'];
$sql_where = 'a.article_status = ' . STATUS_APPROVED;
$sql_order = 'a.article_time DESC';
break;
case 'user':
$title = $feed_data['USERNAME'] . ' ' . $user->lang['ARTICLE'];
$sql_where = 'a.article_user_id = ' . $feed_data['USER_ID'] . ' AND a.article_status = ' . STATUS_APPROVED;
$sql_order = 'a.article_time DESC';
break;
case 'cat':
$title = $user->lang['KB_SORT_CAT'] . ' - ' . $feed_data['CAT_NAME'] . ' ' . $user->lang['ARTICLE'];
$sql_where = 'a.cat_id = ' . $feed_data['CAT_ID'] . ' AND a.article_status = ' . STATUS_APPROVED;
$sql_order = 'a.article_time DESC';
break;
case 'popular':
$title = $user->lang['POPULAR_ART'];
$sql_where = 'a.article_status = ' . STATUS_APPROVED;
$sql_order = 'a.article_views DESC';
break;
}
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'a.article_id, a.article_title, a.article_desc, a.article_desc_uid, a.article_user_name, a.article_time',
'FROM' => array(
KB_TABLE => 'a'),
'WHERE' => "$sql_where",
'ORDER_BY' => "$sql_order",
));
$result = $db->sql_query_limit($sql, 10);
while ($row = $db->sql_fetchrow($result))
{
strip_bbcode($row['article_desc'], $row['article_desc_uid']);
$template->assign_block_vars('item', array(
'TITLE' => $row['article_title'],
'URL' => generate_board_url() . '/kb.' . $phpEx . '?a=' . $row['article_id'],
'USERNAME' => $row['article_user_name'],
'MESSAGE' => str_replace("'", ''', $row['article_desc']),
'PUB_DATE' => date('r', $row['article_time']),
'DATE_3339' => ($feed_type == 'ATOM') ? date3339($row['article_time']) : '',
));
}
$db->sql_freeresult($result);
$template->assign_vars(array(
'FEED' => $feed,
'SELF_FULL_URL' => generate_board_url() . '/kb.' . $phpEx . '?i=feed&feed=' . $feed . '&feed_type=' . $feed_type,
'TITLE' => $config['sitename'] . ' ' . $title . ' ' . $user->lang['FEED'],
'SITE_URL' => generate_board_url() . '/kb.' . $phpEx,
'SITE_DESC' => $config['site_desc'],
'SITE_LANG' => $config['default_lang'],
'CURRENT_TIME' => ($feed_type == 'ATOM') ? date3339() : date('r'),
));
// Output time
header('Content-type: application/xml; charset=UTF-8');
header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: 0');
header('Pragma: no-cache');
$template->set_template();
$template->set_filenames(array(
'body' => 'kb/kb_feed.xml'
));
$template->display('body');
garbage_collection();
exit_handler();
}
In Zeile 2415 wird die { von switch ($feed_type) geschlossen.
$sql_where, $sql_order und $title werden im Switch definiert. Ist dann nur die Frage, ob es Abfragen geben kann, die nicht vom Switch abgedeckt sind.
Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2
Verfasst: 22.03.2012 02:06
von WileCoyote
Wenn ich das richtige verstehe greift
Code: Alles auswählen
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'a.article_id, a.article_title, a.article_desc, a.article_desc_uid, a.article_user_name, a.article_time',
'FROM' => array(
KB_TABLE => 'a'),
'WHERE' => "$sql_where",
'ORDER_BY' => "$sql_order",
));
$result = $db->sql_query_limit($sql, 10);
while ($row = $db->sql_fetchrow($result))
{
strip_bbcode($row['article_desc'], $row['article_desc_uid']);
$template->assign_block_vars('item', array(
'TITLE' => $row['article_title'],
'URL' => generate_board_url() . '/kb.' . $phpEx . '?a=' . $row['article_id'],
'USERNAME' => $row['article_user_name'],
'MESSAGE' => str_replace("'", ''', $row['article_desc']),
'PUB_DATE' => date('r', $row['article_time']),
'DATE_3339' => ($feed_type == 'ATOM') ? date3339($row['article_time']) : '',
));
}
auf die variablen aus dem switch zurück, also sollte das auch innerhalb des switches sein.