Elgg ist das einzige mir bekannte gute Social Network auf OpenSource-Basis. Sobald man die Struktur und die Logik dieser Software verstanden hat, ist es nicht allzu schwer, selbst Module zu schreiben. Dieser Artikel beschäftigt sich mit der Integration des PhpFreeChats in die Elgg-Software als Modul, da auf der Homepage von Elgg kein Chat-Modul zum Download bereit steht.
Als gegeben wird ein vollständig installiertes und funktionierendes Elgg-System angenommen. Ich empfehle, vorher ein Backup aller Elgg-Dateien zu machen.
var $language = "de_DE-formal";pfcI18N::Init(isset($params['language']) ? $params['language'] : '');pfcI18N::Init(isset($params['language']) ? $params['language'] : 'de_DE-formal');# Chat (PhpFreeChat)
RewriteRule ^([A-Za-z0-9]+)/chat/?(.+)$ _chat/$2
function chat_pagesetup() {
// register links --
global $profile_id,$PAGE,$CFG,$metatags,$function,$USER;
if (defined("context") && context == "chat") {
$PAGE->menu[]= array (
'name' => 'chat',
'html' => '<li><a href="' . $CFG->wwwroot . $_SESSION['username'] . '/chat/" class="selected">Chat ' .
" (0)".'</a></li>');
} else {
$PAGE->menu[]= array (
'name' => 'chat',
'html' => '<li><a href="' . $CFG->wwwroot . $_SESSION['username'] . '/chat/">Chat' .
" (0)". '</a></li>');
}
}
/*
* Elgg-Bereich
*/
// Run includes
require_once(dirname(dirname(__FILE__))."/includes.php");
run("profile:init");
define('context','chat');
templates_page_setup();
$title = 'Chat :: '.run("profile:display:name");
protect(1);
// define what profile to show
if (empty($profile_id)) {
$profile_id = optional_param('profile_id', -1, PARAM_INT);
}
/*
* PhpFreeChat-Bereich
*/
require_once dirname(__FILE__)."/src/phpfreechat.class.php";
$params = array();
$params["title"] = "Elgg - Chat";
$params["nick"] = user_info('username',$profile_id); // setup the intitial nickname
$params["isadmin"] = true; // just for debug
$params["serverid"] = 'phpfreechat'; // calculate a unique id for this chat
$params["debug"] = false;
$chat = new phpFreeChat( $params );
/*
* Und beide Zusammenwerfen
*/
//Bei $chat->printChat(true) steht true für return, sodass der Chat nicht an die stdout ausgegeben wird
$body = templates_draw(array(
'context' => 'contentholder',
'title' => $title,
'body' => $chat->printChat(true)
)
);
echo templates_page_draw( array(
$title, $body
)
);
Solltest du Probleme bei der Implementierung haben, schreibe einen Kommentar oder wende dich direkt an mich.