Seite 1 von 2

Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 06:27
von WileCoyote
Da auch ich diese Knowledge Base - mangels Alternativen - bei mir im Forum auch einsetzen möchte, hab ich sie mir etwas genauer angesehen. Dabei sind mir diverse Fehler aufgefallen, die ich gerne mit euch teilen möchte. Speziell der erste Fehler ist für alle Benutzer dieser Knowledge Base relevant und sollte umgehend behoben werden. Eventuell ist es mithilfe einiger versierter Coder hier möglich, diese Fehler zu beseitigen.
  • Falsch gesetzte Berechtigung für die Benutzer-Rolle "ROLE_USER_FULL"
    Das gemeine an dem Fehler ist, dass er erst auffällt, wenn man die Berechtigung für diese Rolle ändert. Fatal dabei ist, dass alle Benutzer mit dieser Berechtigung durch das hinzufügen von "acl_m_" zur Rolle volle Moderatoren Rechte bekommen. Beheben könnt ihr den Fehler mithilfe von phpmyadmin. Wie üblich, wenn ihr mit myphpadmin direkte Änderungen an der Datenbank vornehmt, legt zuvor ein Backup der Datenbank an.
    1. Wählt eure phpbb Datenbank und klickt auf phpbb_acl_options sucht nach dem Eintrag m_ und notiert euch die auth_option_id (z.B. 31)
    2. Danach klickt auf phpbb_acl_roles und notiert euch die role_id für ROLE_USER_FULL (bei einer phpBB Standard-Installation sollte es die ID 5 sein).
    3. Wenn ihr euch beide Werte notiert habt klickt abschließend auf phpbb_acl_roles_data und sucht nach einer Überstimmung für role_id 5 und auth_option_id 31 und löscht diesen Eintrag
    Um diesen Fehler gänzlich zu vermeiden, ist es notwendig das Installations-Script entsprechend anzupassen.
  • Template Inheritance funktioniert nicht mit den Knowledge Base Plugins
    Dieser Fehler ist recht einfach zu beheben, aber sicher nicht für alle Benutzer relevant. Er tritt nur auf, wenn mehrere Templates/Styles verwendet werden. Dieses Problem wurde hier bereits diskutiert. Einen möglichen Lösungsansatz findet ihr hier:

    Siehe Knowledge Base Funktion für Template Parsing ändern
  • Fehler im Berechtigungs-System, der es Knowledge Base Modeartoren nicht gestattet Anfragen zu löschen bzw. zu bearbeiten.
    Zur Behebung des Fehlers

    Öffne includes/kb.php

    Finde

    Code: Alles auswählen

    		// Permission to do the action asked?
    		$is_authed = false;
    		switch ($this->action)
    		{
    			case 'add':
    				if ($auth->acl_get('u_kb_request'))
    				{
    					$is_authed = true;
    				}
    			break;
    		
    			case 'edit':
    			case 'delete':
    				if ($user->data['is_registered'] && $auth->acl_gets('u_kb_request', 'm_kb_edit_req'))
    				{
    					$is_authed = true;
    				}
    			break;
    		}
    
    Eresetze mit:

    Code: Alles auswählen

    		// Permission to do the action asked?
    		$is_authed = false;
    		switch ($this->action)
    		{
    			case 'add':
    				if ($auth->acl_get('u_kb_request'))
    				{
    					$is_authed = true;
    				}
    			break;
    		
    			case 'edit':
                    if ($user->data['is_registered'] && $auth->acl_gets('u_kb_edit', 'm_kb_req_edit'))
                    {
                       $is_authed = true;
                    }
    
    			case 'delete':
    				if ($user->data['is_registered'] && $auth->acl_gets('u_kb_delete', 'm_kb_req_edit'))
    				{
    					$is_authed = true;
    				}
    			break;
    		}
    
    Damit diese Änderungen im Berechtigungs-System ersichtlich sind, sollte man auch die Sprachdateien entsprechend Anpassen.

    Öffne language/en/mods/permissions_kb.php

    Finde

    Code: Alles auswählen

    	'acl_u_kb_delete'		=> array(
    		'lang'				=> 'Can delete own articles',
    		'cat'				=> 'write',
    	),
    
    Ersetze mit

    Code: Alles auswählen

    	'acl_u_kb_delete'		=> array(
    		'lang'				=> 'Can delete own articles and requests',
    		'cat'				=> 'write',
    	),
    
    Finde

    Code: Alles auswählen

    	'acl_u_kb_edit'			=> array(
    		'lang'				=> 'Can edit own articles',
    		'cat'				=> 'write',
    	),
    
    Ersetze mit

    Code: Alles auswählen

    	'acl_u_kb_edit'			=> array(
    		'lang'				=> 'Can edit own articles and requests',
    		'cat'				=> 'write',
    	),
    
  • Fehler beim löschen von Artikeln
    Die Artikel werden zwar gelöscht, sind aber unter Umständen in der Kategorie-Ansicht weiterhin zu sehen. Der Fehler tritt auf, wenn es sich beim gelöschten Artikel um den letzten/neuesten bzw. einzigen Artikel einer Kategorie gehandelt hat. Nach erstem durchsehen des Codes, bin ich mir relativ sicher, dass der Fehler in der Funktion "handle_latest_articles" zu suchen ist. Genau genommen in diesem Teil der Funktion:

    Code: Alles auswählen

    		case 'delete':
    			// Call delete here only used it article id thats getting deleted is is recent articles for that cat
    			$sql = $db->sql_build_query('SELECT', array(
    				'SELECT'	=> 'c.latest_ids',
    				'FROM'		=> array(
    					KB_CATS_TABLE => 'c'),
    
    				'WHERE'		=> 'cat_id = ' . $cat_id,
    			));
    			$result = $db->sql_query($sql);
    			$row = $db->sql_fetchrow($result);
    			$db->sql_freeresult($result);
    			
    			$latest_articles = unserialize($row['latest_ids']);
    			for($i = 0; $i < count($latest_articles); $i++)
    			{
    				if(isset($latest_articles[$i]) && ($data['article_id'] == $latest_articles[$i]['article_id']))
    				{
    					unset($latest_articles[$i]);
    					continue;
    				}
    			}
    			
    			$sql_ary = array('latest_ids' => serialize($latest_articles));
    			$sql = 'UPDATE ' . KB_CATS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
    					WHERE cat_id = ' . $cat_id;
    			$db->sql_query($sql);
    
    Wie genau dieser Fehler behoben werden kann, ist mir nicht so ganz klar. Ein versierter Coder dürfte da eher den Durchblick haben.
  • Undefined Variable 'edit_data' in includes/kb.php Zeile 2214
    Auch beim diesem Fehler bin ich mir noch nicht so ganz sicher, wie er zu beheben ist.
  • Das Aktivieren der Option "Aktiviere die Suchmaschinen Optimierung" unter "Allgemeine Einstellungen" der MOD führt zu einem Fehler und ist nicht möglich
    Ein bekannter Fehler der von den MOD-Autoren nie behandelt wurde. Siehe auch [ABD] PhpBB3 Knowledge Base
Weitere Mängel bzw Eigenheiten, die nur auftreten, wenn man die MOD über das entsprechende Modul im ACP entfernt.
  • Deinstallieren der Knowledge Base MOD
    Bevor ihr die MOD deinstalliert, müßt ihr die Berechtigungen zurücksetzen. Macht ihr das nicht, sind nach erneuter Installation die "Knowledge Base Berechtigungs-Rollen" doppelt vorhanden bzw verbleiben in der Datenbank
  • Die erste Kategorie wird nach dem Entfernen und erneutem Installieren der MOD nicht angzeigt.

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 09:02
von modernist
WileCoyote hat geschrieben:Undefined Variable 'edit_data' in includes/kb.php Zeile 2214Auch beim diesem Fehler bin ich mir noch nicht so ganz sicher, wie er zu beheben ist.
Den Fehler habe ich nicht. Bei mir steht in Zeile 2224:

Code: Alles auswählen

					'edit_data'						=> $edit_data,
Weiter oben (1880 ff.) ist dann festgelegt:

Code: Alles auswählen

			// Create old data for edit type check
			if($this->mode == 'edit')
			{
				$edit_data = array(
					'article_title_clean'	=> $article_data['article_title_clean'],
					'article_desc'			=> $desc_parser->message,
					'article_tags'			=> $article_data['article_tags'],
					'article_type'			=> $article_data['article_type'],
					'cat_id'				=> $article_data['cat_id'],
					'article_status'		=> $article_data['article_status'],
				);
			}

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 11:50
von WileCoyote
modernist hat geschrieben:Den Fehler habe ich nicht. Bei mir steht in Zeile 2224:
Den Fehler siehst du auch nur mit aktivem Debug Mode und nur beim Editieren eines Artikels

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 12:34
von modernist
Lokal konnte ich eben mit aktiviertem Debug Mode keine Fehlermeldung beim Artikeländern bemerken.
Bei mir erscheint aber dafür, wie ich gerade bemerke, um das Löschproblem nachzuvollziehen, eine Fehlermeldung beim Artikelschreiben:

Code: Alles auswählen

/includes/kb.php on line 2224: Undefined variable: edit_data
::::::::::::Nachtrag: Als Lösung kann man in der kb.php was ergänzen, damit beim Erstellen eines Artikels keine Fehlermeldung mehr erscheint.

Suche

Code: Alles auswählen

			// Create old data for edit type check
			if($this->mode == 'edit')
			{
				$edit_data = array(
					'article_title_clean'	=> $article_data['article_title_clean'],
					'article_desc'			=> $desc_parser->message,
					'article_tags'			=> $article_data['article_tags'],
					'article_type'			=> $article_data['article_type'],
					'cat_id'				=> $article_data['cat_id'],
					'article_status'		=> $article_data['article_status'],
				);
			}


Danach ergänze in einer neuen Zeile

Code: Alles auswählen

			else
			{
				$edit_data = true;
			}
Nachtrag Ende::::::::::::::
WileCoyote hat geschrieben:Das gemeine an dem Fehler ist, dass er erst auffällt, wenn man die Berechtigung für diese Rolle ändert. Fatal dabei ist, dass alle Benutzer mit dieser Berechtigung durch das hinzufügen von "acl_m_" zur Rolle volle Moderatoren Rechte bekommen.
Das habe ich jetzt ebenfalls mal versucht, lokal nachzuvollziehen. Das klappte nicht.
Meine Vorgehensweise: im ACP weise ich unter einem User die Rolle "Volle Funktionalität" zu, dann ändere ich was an der Rolle z.B. für Wissensdatenbank "Kann Artikel anfragen" -> von Ja auf Nein. Aber ich sehe den User nicht als Moderator und an den Rechten in der KB oder im Forum hat sich auch nichts geändert, Artikel lassen sich erst mit Nie nicht mehr anfragen.
Kannst du dein Vorgehen bitte mal detailiert beschreiben?
WileCoyote hat geschrieben:Fehler im Berechtigungs-System, der es Knowledge Base Modeartoren nicht gestattet Anfragen zu löschen bzw. zu bearbeiten.
Bei mir können allgemeine Moderatoren des Forums Anfragen löschen. Spezielle KB-Moderatoren gibt es nicht. Ich habe aber den Moderatoren keine feste Rolle zugewiesen. Und "Kann Anfragen bearbeiten und löschen" steht auf Ja für Moderatoren.
WileCoyote hat geschrieben:Fehler beim löschen von Artikeln
Stimmt, in der Spalte "Neueste Artikel" der Übersicht taucht der frisch gelöschte Artikel noch auf sowie ggf. davor gelöschte Artikel, je nachdem, was im ACP unter "Zeige die letzten Artikel" als Anzahl steht.
Da müsste man derweil wohl in der Tabelle _article_cats die entsprechenden Verweise erstmal manuell löschen.

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 14:16
von WileCoyote
modernist hat geschrieben:Lokal konnte ich eben mit aktiviertem Debug Mode keine Fehlermeldung beim Artikeländern bemerken.
Bei mir erscheint aber dafür, wie ich gerade bemerke, um das Löschproblem nachzuvollziehen, eine Fehlermeldung beim Artikelschreiben:

Code: Alles auswählen

    /includes/kb.php on line 2224: Undefined variable: edit_data
Möglicherweise ist es bei mir auch beim Erstellen und nicht beim Bearbeiten aufgetreten. Indem Fall würde ich dann aber eine andere Lösung in Betracht ziehen und

Code: Alles auswählen

			// Create old data for edit type check
			if($this->mode == 'edit')
			{
				$edit_data = array(
mit

Code: Alles auswählen

			if($this->mode == 'edit' || $this->mode == 'add')
			{
				$edit_data = array(
ersetzen.
modernist hat geschrieben:Kannst du dein Vorgehen bitte mal detailiert beschreiben?
Das Problem genau zu beschreiben ist relativ schwierig. Es entspricht aber dem hier geschilderten (siehe auch den Verweis auf den Bugtracker) und wird durch UMIL verursacht. Entgegen den Angaben im Beitrag, tritt das Problem auch mit einer aktuellen UMIL Version auf. Das Problem ist bei mir mit jeder Installation nachvollziehbar (mittlerweile 4 verschiedene phpBB Installationen).
modernist hat geschrieben:Stimmt, in der Spalte "Neueste Artikel" der Übersicht taucht der frisch gelöschte Artikel noch auf sowie ggf. davor gelöschte Artikel, je nachdem, was im ACP unter "Zeige die letzten Artikel" als Anzahl steht.
Da müsste man derweil wohl in der Tabelle _article_cats die entsprechenden Verweise erstmal manuell löschen.
Ich bin mir relativ sicher, dass am Code nicht viel geändert werden muss, damit das richtig funktioniert. Allerdings bin ich noch nicht soweit, dass ich den ganzen Löschvorgang auch verstehe und nachvollziehen kann. Daher wäre es nett, wenn uns ein geschulter Coder hierbei helfen würde ;-)

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 14:42
von modernist

Code: Alles auswählen

         if($this->mode == 'edit' || $this->mode == 'add')
         {
            $edit_data = array(
Das führt bei mir beim Artikelerstellen zu einer neuen Fehlermeldung:

Code: Alles auswählen

kb.php on line 1884: Undefined index: article_title_clean
Die ELSE-Variante klappt bei mir besser, sprich ohne Fehlermeldung.
WileCoyote hat geschrieben:Es entspricht aber dem hier geschilderten (siehe auch den Verweis auf den Bugtracker) und wird durch UMIL verursacht. Entgegen den Angaben im Beitrag, tritt das Problem auch mit einer aktuellen UMIL Version auf.
Ach so, da hatten wir schon mal per PN drüber geschrieben. Ich hatte da auch so komische unbenannte Einträge bei den Rollen, die ich aber vor längerer Zeit gelöscht hatte, so daß ich erstens nicht mehr weiß, was genau und woher das war, und zweitens das Löschen auch der Grund sein kann, warum bei mir kein User Moderatorenrechte durch Rollenvergabe/-änderung erlangt.

Und beim Löschen steige ich auch noch nicht so recht durch. Mir ist aber - ergänzend zu deiner Auflistung - auch aufgefallen, daß Kommentare von Nutzern, die ihren Account löschen/deren Account gelöscht wird, aus der KB automatisch mitgelöscht werden, auch wenn Forumsbeiträge erhalten bleiben.

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 01.03.2012 15:20
von WileCoyote
modernist hat geschrieben:Die ELSE-Variante klappt bei mir besser, sprich ohne Fehlermeldung.
Gut das war nur eine Idee, die ich nicht getestet hatte. Ich habe aber noch eine andere Möglichkeit gefunden wie sich der Fehler beheben läßt. Die Frage ist, ob das der richtige Ansatz ist.

Zeile 1653

Code: Alles auswählen

		$error = $article_data = array();
ändern auf

Code: Alles auswählen

		$error = $article_data = $edit_data = array();
modernist hat geschrieben:Und beim Löschen steige ich auch noch nicht so recht durch. Mir ist aber - ergänzend zu deiner Auflistung - auch aufgefallen, daß Kommentare von Nutzern, die ihren Account löschen/deren Account gelöscht wird, aus der KB automatisch mitgelöscht werden, auch wenn Forumsbeiträge erhalten bleiben.
Dafür gibt es eine eigene Funktion in der Knowledge Base.

Öffne includes/functions_kb.php

Finde (Zeile 1402)

Code: Alles auswählen

/*
* KB handling of user deletion
* This function is called when a user is deleted and will take care of deleting all KB related user stuff
*/

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 02.03.2012 16:41
von modernist
Mir fiel heute auf, daß der Quote-BBCode in der KB beim Artikelverfassen und Kommentieren nicht angezeigt wurde.
Wenn in der kb/posting_buttons.html was mit <!-- IF S_BBCODE_QUOTE --> steht, dann ist in der include/kb.php an 3 Stellen nach

Code: Alles auswählen

			'S_BBCODE_FLASH'		=> (...),
Folgendes zu ergänzen:

Code: Alles auswählen

			'S_BBCODE_QUOTE'		=> true,

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 02.03.2012 18:11
von WileCoyote
Ich 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

Re: Diverse Fehler in der phpBB Knowledge Base MOD v1.0.2

Verfasst: 03.03.2012 00:28
von modernist
WileCoyote hat geschrieben:Ich habe eben im Debug Log gesehen
Meinst du damit das "Fehler-Protokoll" im ACP? Da ist mir kein derartiger Eintrag aufgefallen, wenn ich mir die History eines Artikels anschaue. Im Error-Log meines Webaccounts findet sich dazu auch kein Fehler.