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. :oops:

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

Code: Alles auswählen

				if(!$edit['no_diff'])
				{
					$can_diff_from = true;
				}
so heißen:

Code: Alles auswählen

				if(!$edit['nodiff'])
				{
					$can_diff_from = true;
				}

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... :grin:

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.