Seite 1 von 3

[BETA] Auswahl anzuzeigender Foren

Verfasst: 06.04.2007 22:04
von DanielHeinrich
nachdem ich keinen Mod gefunden habe (klick) der meinen Anforderungen genügt habe ich versucht das Problem selber zu lösen.

Nun, das Ergebnis meiner Bemühungen kann sich jeder der Interesse daran hat hier ansehen.

Eine kurze Beschreibung was der Mod kann:
Der Mod soll dem User die Möglichkeit geben sich die Foren in seinem Profil auszusuchen die ihn nicht interessieren damit diese in der Forenübersicht und bei Suchen nicht mehr auftauchen(der Übersicht wegen).
Dennoch lässt sich die Suchfunktion per Checkbox auch auf "ausgeblendete" Foren erweitern und der User hat auch noch Zugriff auf die einzelnen ausgeblendeten Foren damit er Links auf Beiträgen in diesen Foren auch weiterhin folgen kann.

EasyMOD-Kompatibilität
der Mod sollte eigentlich Kompatibel sein -- auf jeden Fall lässt er sich bei mit per EasyMOD ohne Probleme installieren.

Aktuelle Version: 1.3 BETA


so, ich denke des wärs erstmal

Daniel Heinrich

PS: So, nun dürft ihr meinen Mod in der Luft zerreissen und mich mit (hoffentlich konstruktiver) Kritik überhäufen ;-)

Verfasst: 12.04.2007 18:49
von Tanja63
habs eingebaut

1. Foren, für die man keine Berechtigung hat (auth admin, acl, mod), werden im Profil für den Useracc angezeigt.

Verfasst: 12.04.2007 19:33
von DanielHeinrich
Hi!

Danke für den Hinweis -- ist mir bisher nicht aufgefallen. Werde ich auch korrigieren sobald der Apache hier wieder läuft(darf gerade Windows neu installieren ;-))

cu

Daniel

Verfasst: 12.04.2007 19:36
von Tanja63
Büdde :)

Ich werds weiter verfolgen und intensiv testen, da ich selber Interesse an diesem MOD habe ;)

Verfasst: 12.04.2007 20:10
von S2B
Ein paar Kleinigkeiten:

Code: Alles auswählen

'.$table_prefix.'forums_ignore
Für sowas wird im phpBB immer eine neue Konstante in der constants.php erstellt, in deinem Fall könnte die Konstante z.B. FORUMS_IGNORE_TABLE heißen.

Code: Alles auswählen

(!$hidden_forums[$forum_data[$i]['forum_id']])
In solch einem Fall solltest du isset() oder empty() verwenden, um die Existenz des Wertes zu überprüfen.

Code: Alles auswählen

( $userdata['user_id'] != -1 )
Anstatt -1 solltest du hier die Konstante ANONYMOUS verwenden.

Außerdem wird vom PHP-Handbuch empfohlen, dass SQL-Queries, die an mysql_query() übergeben werden, nicht mit einem Semikolon enden sollten.

Ansonsten passt alles so, soweit ich das gesehen habe. Guter erster MOD. :wink:

Verfasst: 12.04.2007 23:14
von DanielHeinrich
Hi!
Tanja63 hat geschrieben:Ich werds weiter verfolgen und intensiv testen, da ich selber Interesse an diesem MOD habe ;)
Es tut gut zu wissen dass sich auch andere ausser mir für diesen Mod interessieren :grin:
Tanja63 hat geschrieben:1. Foren, für die man keine Berechtigung hat (auth admin, acl, mod), werden im Profil für den Useracc angezeigt.
gefixt
S2B hat geschrieben:Ein paar Kleinigkeiten:

Code: Alles auswählen

'.$table_prefix.'forums_ignore
Für sowas wird im phpBB immer eine neue Konstante in der constants.php erstellt, in deinem Fall könnte die Konstante z.B. FORUMS_IGNORE_TABLE heißen.
ok, getan

Code: Alles auswählen

(!$hidden_forums[$forum_data[$i]['forum_id']])
In solch einem Fall solltest du isset() oder empty() verwenden, um die Existenz des Wertes zu überprüfen.
mhh -- da

Code: Alles auswählen

$hidden_forums[$forum_data[$i]['forum_id']]
wenn es existiert immer true ist -- welchen Vorteil bringt

Code: Alles auswählen

!isset($hidden_forums[$forum_data[$i]['forum_id']])
gegenüber

Code: Alles auswählen

!($hidden_forums[$forum_data[$i]['forum_id']])
?
So wie ich das sehe sollte da nicht 2) schneller sein als 1) da 1) mehr Aktionen durchführt als 2) (Meiner Meinung nach)
Habs zwar geändert würde es aber dennoch gerne wissen ;-)

Code: Alles auswählen

( $userdata['user_id'] != -1 )
Anstatt -1 solltest du hier die Konstante ANONYMOUS verwenden.
mhh -- ok macht Sinn -- getan.
Außerdem wird vom PHP-Handbuch empfohlen, dass SQL-Queries, die an mysql_query() übergeben werden, nicht mit einem Semikolon enden sollten.
ok, dass hätte ich wissen sollen :oops: -- gefixt
Ansonsten passt alles so, soweit ich das gesehen habe. Guter erster MOD. :wink:
Danke -- tut gut sowas zu höhren :-)


cu

Daniel

Verfasst: 13.04.2007 13:35
von S2B
DanielHeinrich hat geschrieben:So wie ich das sehe sollte da nicht 2) schneller sein als 1) da 1) mehr Aktionen durchführt als 2) (Meiner Meinung nach)
Habs zwar geändert würde es aber dennoch gerne wissen ;-)
Beim phpBB ist das in der Tag egal, da dort E_NOTICE-Fehlermeldungen unterdrückt werden. Dennoch sollte man versuchen, möglichst sauberen PHP-Code zu schreiben. Wenn du dir das einmal angewöhnt hast, hilft dir das später enorm, wenn du mal was außerhalb vom phpBB schreibst.

Zu dem speziellen Fall: isset() bzw. empty() überprüfen, ob eine Variable überhaupt definiert ist, wohingegen eine einfache Variable in einer If-Abfrage davon ausgeht, dass die Variable definiert ist und lediglich den Wert der Variable überprüft. Wenn du das Script jetzt mit eingeschalteten E_NOTICE-Fehlermeldungen laufen lassen würdest, würde PHP sowas ausgeben:
Notice: Undefined index 1 in <Datei> on line <Zeile>
(in diesem Beispiel wäre $i 1)

Das ganze steht auch in den Coding Guidelines für phpBB2, auch wenn die Entwickler es nur sehr begrenzt umgesetzt haben.
Don't use uninitialized variables. for phpBB 2, we intend to use a higher level of run-time error reporting. This will mean that the use of an uninitialized variable will be reported as an error. This will come up most often when checking which HTML form variables were passed. These errors can be avoided by using the built-in isset() function to check whether a variable has been set.

Verfasst: 13.04.2007 13:41
von Dr.Death
Hinweis für späteres phpBB3 Olympus Modding.....

Jede nicht definierte Variable schmeisst dann den von S2B genannten Notice "Hinweis" aus ;-)

Verfasst: 13.04.2007 13:47
von S2B
Dr.Death hat geschrieben:Jede nicht definierte Variable schmeisst dann den von S2B genannten Notice "Hinweis" aus ;-)
Endlich. :)

Edit: Bist du dir sicher? In Beta5 wurden Notices noch unterdrückt...

Code: Alles auswählen

// Report all errors, except notices
error_reporting(E_ALL ^ E_NOTICE);

Verfasst: 13.04.2007 14:37
von Dr.Death
Eigentlich schon.

Wenn ich im CVS eine Variable einschleuse und vorher nicht mit

$foo = ''; ( oder ähnlich )

defniere bekomme ich ne hübsche Notice Meldung beim aufrufen von:

$x = $foo;


Edit: Bestätigt ;-)

Schau mal: http://area51.lpi-clan.de/
Dort habe ich in die Index ein:

Code: Alles auswählen

$x = $foo;
eingebaut ;-) ( Ich lasse es bis morgen mal drin.... )

Siehe auch die functions.php:

Code: Alles auswählen

			// If DEBUG is defined the default level is E_ALL
			if (($errno & ((defined('DEBUG') && error_reporting()) ? E_ALL : error_reporting())) == 0)
Notices kommen also nur, wenn in der config.php

Code: Alles auswählen

@define('DEBUG', true);
gesetzt worden ist.