Seite 1 von 1

Entwicklung: Spezieller RSS-Feed

Verfasst: 01.11.2006 11:49
von killerbees19
Ich entwickle gerade einen speziellen RSS-Feed für mein Forum.
Mit diesem können die Benutzer wirklich die Foren empfangen, für die sie Zugang haben.

Die User-ID des Benutzers ist nach erfolgreicher Überprüfung eines zweiten Passwortes in der Variable $userid gespeichert.

Ich möchte nun die Befugnisse der Gruppen / Benutzer auslesen und dadurch die ID's der Foren bekommen, zu denen der Benutzer Zugang hat (Lese-Rechte). Ich habe mich mit den Befugnissen von phpBB noch nie beschäftigt und habe auch nicht die geringste Ahnung wie ich das anstellen soll.

Als Vorlage für mein Script habe ich den MOD von phpBB.

Vielleicht kann mir jemand helfen. :grin:

Der Rest des Scriptes ist ansonsten fertig, inklusive meiner Passwortüberprüfung.


MfG Christian

Verfasst: 01.11.2006 12:10
von Seimon
guck dir mal das an:

(vom recent-mod)

Code: Alles auswählen

$sql_auth = "SELECT * FROM ". FORUMS_TABLE;
if( !$result_auth = $db->sql_query($sql_auth) )
{
	message_die(GENERAL_ERROR, 'could not query forums information.', '', __LINE__, __FILE__, $sql_auth);
}
$forums = array();
while( $row_auth = $db->sql_fetchrow($result_auth) )
{
	$forums[] = $row_auth;
}
$db->sql_freeresult($result_auth);

$is_auth_ary = array();
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata);

$except_forums = '\'start\'';
for( $f = 0; $f < count($forums); $f++ )
{
	if( (!$is_auth_ary[$forums[$f]['forum_id']]['auth_read']) || (!$is_auth_ary[$forums[$f]['forum_id']]['auth_view']) )
	{
		if( $except_forums == '\'start\'' )
		{
			$except_forums = $forums[$f]['forum_id'];
		}
		else
		{
			$except_forums .= ','. $forums[$f]['forum_id'];
		}
	}
}

$where_forums = ( $special_forums == '0' ) ? 't.forum_id NOT IN ('. $except_forums .')' : 't.forum_id NOT IN ('. $except_forums .') AND t.forum_id IN ('. $forum_ids .')';
$sql_start = "SELECT t.*, p.poster_id, p.post_username AS last_poster_name, p.post_id, p.post_time, f.forum_name, f.forum_id, u.username AS last_poster, u.user_id AS last_poster_id, u2.username AS first_poster, u2.user_id AS first_poster_id, p2.post_username AS first_poster_name
	        FROM (". TOPICS_TABLE ." t, ". POSTS_TABLE ." p)
		LEFT OUTER JOIN ". POSTS_TABLE ." p2 ON p2.post_id = t.topic_first_post_id
		LEFT OUTER JOIN ". FORUMS_TABLE ." f ON p.forum_id = f.forum_id
		LEFT OUTER JOIN ". USERS_TABLE ." u ON p.poster_id = u.user_id
		LEFT OUTER JOIN ". USERS_TABLE ." u2 ON u2.user_id = t.topic_poster
	        WHERE $where_forums AND p.post_id = t.topic_last_post_id AND ";
$sql_end = "  ORDER BY t.topic_last_post_id DESC LIMIT $start, $topic_limit";

Verfasst: 01.11.2006 15:32
von killerbees19
Vielen Dank einmal für den Codeauschnitt.
Leider werde ich daraus auch nicht wirklich schlau.

Ich habe mir jetzt einmal die viewforum.php angesehen, denn diese beinhaltet die Zeilen Code die für mich wichtig sind. Da ich in diesem Fall nur einen RSS-Feed haben will, der für registrierte Mitglieder ist, eigentlich nur für Moderatoren muss ich nicht auf so viel achten.

Ich verwende ja trotzdem ein Login, per GET-Methode. Das Unterscheidet mein Script vom anderen RSS-Feed.

So scheint es jetzt mal zu funktionieren:

Code: Alles auswählen

$is_auth = auth(AUTH_ALL, $id, $userdata, $forum_row);
Da ich bei diesem Script ein zusätzliches Passwort verwenden, damit man sich anmelden kann, muss ich die Stanard-phpBB-Session umgehen und die Variable $userdata['session_logged_in'] noch mit TRUE überschreiben.

Vorerst scheint es zu gehen, bei weiteren Problemen melde ich mich.
Danke jedenfalls für die Hilfe :wink:


MfG Christian

Verfasst: 01.11.2006 20:17
von killerbees19
[EDIT]:
Ich habe einen kleinen Fehler gemacht und gefunden:
Durch einen Tippfehler in einem Variablennamen wurden die Userdaten gar nciht aus der DB geholt....

Der Feed funktioniert nun.

Ich werde ihn nun testen und vielleicht als MOD veröffentlichen.


Ich weiß nicht warum es jetzt schon wieder nicht geht.....
Ich hätte jetzt alles fertig, nur irgendwie will das mit dem Befugnissen plötzlich nicht mehr klappen. Was mache ich falsch?

Code: Alles auswählen

$sql = "SELECT *
      		FROM " . FORUMS_TABLE . "
      		WHERE forum_id = ".$topics[$i]['forum_id'];
      	if ( !($result = $db->sql_query($sql)) )
      	{
      		die('Could not obtain forums information');
      	}
        $forum_row = array();
        while ( $row = $db->sql_fetchrow($result) )
        {
          $forum_row[] = $row;
        }
      $is_auth = array();
      $is_auth = auth(AUTH_ALL, $topics[$i]['forum_id'], $userdata, $forum_row['0']);
......
$topics[$i]['forum_id'] = Foren-ID, z.B 10...
$userdata sind alle Daten des Users aus der Tabelle phpbb_users, zusätzlich mit der Variable "$userdata['session_logged_in'] = true" um dem System einen Loggin vorzutäuschen....
$forum_row sieht man sowieso...

Ich glaube ich habe hierbei eine KLeinigkeit vergessen, denn bei allen Foren, die nur für Registrierte Mitglieder, oder für Moderatoren sind, bekomme ich FALSE von der Funktion zurückgeliefert....

Simuliere ich es phpBB nicht richtig, dass der User eingeloggt ist oder was?

Bitte um Hilfe, ich komme einfach nicht weiter :cry:


MfG Christian

Verfasst: 03.11.2006 10:31
von Dr.Death
Ich kann Dir zwar nicht im Moment helfen, würde den angepassten rdf/rss MOD aber gerne testen ;-)

Verfasst: 03.11.2006 10:45
von killerbees19
Derzeit wird der MOD im Forum von HAPPYTEC getestet.
Leider bin ich mir erst zu 50% sicher, dass er einwandfrei funktioniert.

Derzeit kann ich ihnnoch nicht öffentlich zum Download anbieten.

Über eines würde ich mich aber sehr freuen: Du kannst dich auf www.forum.happytec.at registrieren, dann bekommst du Zugriff auf den Feed und kannst ihn testen. Ich habe nun auch ein Thema auf HAPPYTEC eingerichtet: http://www.forum.happytec.at/viewtopic.php?p=6988 - Dort können auch Gäste schreiben...

Sofern alle Tests prositiv verlaufen, werde ich die erste öffentliche BETA Online stellen. Nur derzeit ist er nicht komplett fertig :wink:


MfG Christian

Verfasst: 03.11.2006 12:01
von Dr.Death

Verfasst: 03.11.2006 13:57
von Dr.Death
Ich möchte nun doch, freundlicherweise, absagen.

Auf phpbb.com habe ich bereits ein fertiges RSS MOD gefunden.

http://www.phpbb.com/phpBB/viewtopic.ph ... hlight=rss

Verfasst: 04.11.2006 19:51
von killerbees19
Ich ahbe es jetzt korrekt erweitert: http://www.forum.happytec.at/rss_mod_extra_test.php

Es funktioniert überall, außer im IE7.
Und da es im IE7 BETA3 noch funktioniert hat: Ich kann es nicht ändern, ich habe alle sgetan was nur geht und ich schätze mal Microsoft ist schuld. Denn wie schon gesagt: In der BETA3 ging es.......

ich werde den Feed jetzt einmal im Livebetrieb testen, vielelicht noch einige Funktionen integrieren. Ich daraus aber sicher keinen Feed machen, der die BB-Codes alle anzeigt. es soll wirklich nur ein simpler Feed mit reiner Textanzeige werden, wo man sich über die URL identifizieren kann.

Ich werde dann in einigen Tagen einmal den Quellcode online stellen :wink:


MfG Christian