Entwicklung: Spezieller RSS-Feed

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Entwicklung: Spezieller RSS-Feed

Beitrag 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
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Seimon
Mitglied
Beiträge: 893
Registriert: 23.02.2005 18:10
Wohnort: Linz, Österreich

Beitrag 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";
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag 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
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag 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
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Ich kann Dir zwar nicht im Moment helfen, würde den angepassten rdf/rss MOD aber gerne testen ;-)
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag 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
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17476
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag 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
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag 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
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Antworten

Zurück zu „Coding & Technik“