Seite 1 von 1

[DEV] ET-Chat who is online

Verfasst: 24.02.2009 00:37
von Trash-Master
Salü,

Aufgrund dessen, das ich in meinem Board den ET-Chat einsetze und dort eine Online-User Anzeige, wie beim AJAX Chat, fehlt, habe ich eine MOD auf Basis der im Chat-Paket enthaltenden Datei "Zusatztool_ExterneAnzeige_Interface.php" geschrieben.

Das ist meine allererste Modifikation für phpBB3. Also seit bitte nicht so hart zu mir. :roll:
Feedback ist natürlich erwünscht, besonders Tipps wie ich was noch besser machen kann. :)

Ich werde mich bald auch ins ModX Format einarbeiten, aber fürs Erste poste ich die Installationsanleitung hier einfach mal so rein. Ist ja auchnoch alles DEV und desshalb nicht zum Einsatz in produktiven Foren empfohlen. ;)
Natürlich setzt die Mod einen vorhandenen in phpBB intigrierten ET-Chat vorraus.
Getestet mit phpBB 3.0.4

Also, fangen wir an:

Öffne: includes/functions.php

Finde:

Code: Alles auswählen

	// Which timezone?
Füge davor ein:

Code: Alles auswählen

	// Begin ET-Chat who is online by Trash-Master
	// Ausgabepufferung aktivieren
	ob_start();
	// Alle relevanten Dateien includen
	include($phpbb_root_path . 'et_chat_v305/dbcon/config.inc.' . $phpEx);
	include($phpbb_root_path . 'et_chat_v305/dbcon/'.$database_class);
	include($phpbb_root_path . 'et_chat_v305/dbcon/init_chat_db.class.' . $phpEx);

	// DB Grundwerte in Varaiable übergeben
	$confObj = new InitChatDB($prefix,$sqlhost,$sqluser,$sqlpass,$database,false);
	// Anzahl der Online-User aus DB auslesen
	$erg = $confObj->dbObj->sql("SELECT count(etchat_onlineid) FROM {$prefix}etchat_useronline WHERE 
	etchat_onlinetimestamp > ".(date('U')-30)."
	and (etchat_user_online_user_status_img is null or etchat_user_online_user_status_img <> 'status_invisible')", false);
	
	// Anzahl der User im Chat ausgeben
	echo $erg[0][0]." User im Chat";
	// Bei mehr als 0 Usern noch einen Doppelpunkt dahinter
	if ($erg[0][0] > 0) echo ": ";
	
	// Online-Username(n) aus DB auslesen
	$erg_user = $confObj->dbObj->sql("SELECT etchat_user_online_user_name, etchat_user_online_user_priv FROM {$prefix}etchat_useronline 
	WHERE etchat_onlinetimestamp > ".(date('U')-30)." 
	and (etchat_user_online_user_status_img is null or etchat_user_online_user_status_img <> 'status_invisible')
	order by etchat_user_online_user_name", true);
	
	// Jeweils Online-Username mit Leerzeichen dahinter ausgeben
	if(is_array($erg_user)) foreach($erg_user as $us) echo "$us[0] ";
	// Inhalt des Ausgabe-Puffers an Variable zurückgeben
	$chatol = ob_get_contents();
	// Ausgabe-Puffer löschen und deaktivieren
	ob_end_clean();

	// Jetzt noch die Variablen ans Template übergeben
	$template->assign_vars(array(
	// Die Variable für Anzahl + Name
    'S_CHATOL'    	=> $chatol,
    // Und die Variable nur für Anzahl
	'CHAT_NR'		=> sprintf($user->lang['CHAT_NR'], $erg[0][0]),	    
	)); 
	// End ET-Chat who is online by Trash-Master
Anmerkung: Die Kommentare können natürlich gelöscht werden. :roll:
Anmerkung 2: Möglicherweise muss der Pfad zum ET-Chat geändert werden.

Öffne: language/de/common.php

Finde:

Code: Alles auswählen

	'CLICK_VIEW_PRIVMSG'	=> '%sZu deinem Posteingang%s',
Füge davor ein:

Code: Alles auswählen

	'CHAT'					=> 'Chat',
	'CHAT_NR'				=> ' (%s)',	
Öffne: styles/prosilver/template/overall_header.html

Finde:

Code: Alles auswählen

					<li class="icon-members"><a href="#" onclick="window.open('et_chat_v305/','Chat','width=750,height=520');" title="Chat">Chat</a></li>
Ersetze durch:

Code: Alles auswählen

		        <li class="icon-members"><a href="#" onclick="window.open('et_chat_v305/','Chat','width=750,height=520');" title="{S_CHATOL}">{L_CHAT}{CHAT_NR}</a></li>
Cache leeren, EOM

Eine Frage direkt:
Wie kann ich anstatt der deutschen Sprache in der functions.php Sprachvariablen einsetzen?

lg,
Trash-Master

Re: [DEV] ET-Chat who is online

Verfasst: 26.02.2009 19:07
von Trash-Master
Mmh...ich sehe ein par Aufrufe, aber keine Kommentare.
Das ist meine erste Mod, hat denn niemand etwas dazu zu sagen? :roll:

lg,
TrashMaster

Re: [DEV] ET-Chat who is online

Verfasst: 26.02.2009 19:12
von aurora876
mußt eine variable definieren und die dann auch in der sprachdatei dann definieren :)