anpera.net
https://anpera.dyndns.org/phpbb3/

suche Hack für eine Verbindung zu einem gtchat 0.95 (perl)
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=2382
Seite 1 von 1

Autor:  Rikkarda [ Di 21 Mär, 2006 11:25 ]
Betreff des Beitrags:  suche Hack für eine Verbindung zu einem gtchat 0.95 (perl)

Ich suche einen Hack, keine Ahnung, ob hier wer so etwas schreiben kann, oder ob es so etwas schon gibt. Bei meiner Suche durchs Inet bin ich nicht fündig geworden..

und zwar geht es um folgendes.. Ich betreibe auf meine Homepage einen gtchat 0.95 Chat, welcher in Perl geschrieben ist. In Logd, habe ich den Chat zwar als OOC-Chat verlinkt, doch ist es leider so, dass viele Bewohner nicht hingehen, weil sie oft lange da allein sitzen, oder eben nicht wissen, dass einer da on ist..

ich habe in vielen logds (die einen anderen OOC-Chat nutzen) schon gesehen, dass sie in der Anzeige in Logd bei Chat einen Zusatz haben (1) online oder (0) online..


ich hätte diese Anzeige nun auch sehr gern in meinem Dorf, damit der OOC-Chat ein wenig mehr genutzt werden würde.


kann mir da vielleicht wer aushelfen oder besteht diese Möglichkeit der Verbindung von Perl/PhP gar nicht??


lg Rikka

Autor:  Talion [ Mi 22 Mär, 2006 17:00 ]
Betreff des Beitrags: 

Kommt wohl drauf an, wo und wie deine Chat-Applikation die eingeloggten User abspeichert. Auf den 1. Blick sieht es so aus, als würden die Userdaten in einem von dir bestimmten Verzeichnis in Form mehrerer Dateien abgelegt - für jeden User eine.
Wo dieses Verzeichnis ist, weiß ich nicht; so lange PHP die nötigen Berechtigungen hat, um drauf zuzugreifen, sollte die Ermittlung des Online-Status allerdings kein Problem darstellen ; )
Verzeichnis öffnen, Dateien zählen, Ergebnis am besten cachen, damit nicht bei jedem Seitenabruf Diskoperationen nötig sind und dann entsprechend ausgeben.

Autor:  Rikkarda [ Sa 25 Mär, 2006 06:33 ]
Betreff des Beitrags: 

hm ich hab leider von Perl 0 Ahnung ;/

diese Datei hier beinhaltet die onlineuser..
$this->bbcode_second_pass_code('', '###################################################################
# GTChat 0.95 Alpha Plugin #
# Written for release 20021225 #
# Author: Wladimir Palant #
# #
# This plugin provides the template variables that are necessary #
# to show the rooms, online users or both. #
###################################################################

package GTChat::Plugins::Roomlist::095_02;
use strict;

@GTChat::Plugins::Rooms_enum::095_01::ISA = ('GTChat::Enum');
@GTChat::Plugins::Onlineusers_enum::095_01::ISA = ('GTChat::Enum');
@GTChat::Plugins::Rooms_Onlineusers_enum::095_01::ISA = ('GTChat::Enum');

bless({
template_var_handlers => {
'roomlist' => \&handler,
'roomlist_count' => \&handler,
'onlineusers' => \&handler,
'onlineusers_count' => \&handler,
'roomlist&onlineusers' => \&handler,
},
});

sub handler
{
my($self,$main,$var) = @_;

if ($var =~ /roomlist/)
{
my $rooms = $main->getAllRooms || [];

$main->{template_vars}{roomlist} = GTChat::Plugins::Rooms_enum::095_01::new($main,$rooms);
$main->{template_vars}{roomlist_count} = $#$rooms+1;
}

if ($var =~ /onlineusers/)
{
my @users = sort {
my @a1 = split(/\|/,$a);
my @a2 = split(/\|/,$b);
$main->lowercase($a1[3]) cmp $main->lowercase($a2[3]) or $main->lowercase($a1[2]) cmp $main->lowercase($a2[2]);
} @{$main->getOnlineUsers || []};

$main->{template_vars}{onlineusers} = GTChat::Plugins::Onlineusers_enum::095_01::new($main,\@users);
$main->{template_vars}{onlineusers_count} = $#users+1;
}

if ($var =~ /onlineusers/ && $var =~ /roomlist/)
{
$main->{template_vars}{'roomlist&onlineusers'} = GTChat::Plugins::Rooms_Onlineusers_enum::095_01::new($main);
}
}

package GTChat::Plugins::Rooms_enum::095_01;

sub new
{
my($main,$list) = @_;

my $enum=$main->{modules}{'sourcedir::Enum.pm'};

return bless({
list => $list,
opened => 0,
main => $main,
index => -1,
});
}

sub open
{
my $self=shift;

$self->close if $self->{opened};

$self->{index} = -1;
$self->{room} = undef;
while ($self->{index} < $#{$self->{list}})
{
$self->{index}++;
my $room = $self->{main}->loadRoom($self->{list}[$self->{index}]);
if ($self->{main}->isRoomPermitted($room))
{
$self->{room} = $room;
last;
}
}

$self->{opened} = 1;
}

sub hasNext
{
my $self=shift;
return $self->{opened} && defined($self->{room});
}

sub next
{
my $self=shift;

return undef unless $self->{opened};

my $ret = $self->{room};
$self->{room} = undef;
while ($self->{index} < $#{$self->{list}})
{
$self->{index}++;
my $room = $self->{main}->loadRoom($self->{list}[$self->{index}]);
if ($self->{main}->isRoomPermitted($room))
{
$self->{room} = $room;
last;
}
}

return $ret;
}

sub close
{
my $self=shift;

$self->{opened}=0;
}

package GTChat::Plugins::Onlineusers_enum::095_01;

sub new
{
my($main,$list) = @_;

my $enum=$main->{modules}{'sourcedir::Enum.pm'};

return bless({
list => $list,
opened => 0,
main => $main,
index => -1,
});
}

sub open
{
my $self=shift;

$self->close if $self->{opened};

$self->{index} = -1 unless exists($self->{stopindex});
$self->{opened} = 1;
}

sub hasNext
{
my $self=shift;
return ($self->{opened} && $self->{index} < $#{$self->{list}} && (!exists($self->{stopindex}) || $self->{index} < $self->{stopindex}));
}

sub next
{
my $self=shift;

return undef unless $self->{opened};

$self->{index}++;
my $ret = $self->{main}->translateOnlineString($self->{list}[$self->{index}]);
$ret->{vip} = 1 if defined($self->{vips}) && grep {$_ eq $ret->{name}} split(/\s/,$self->{vips});
return $ret;
}

sub close
{
my $self=shift;

$self->{opened}=0;
}

sub setRoom
{
my($self,$room,$vips) = @_;

if (defined($room))
{
$self->{vips} = $vips;

while ($self->{index}<$#{$self->{list}} && ((split(/\|/,$self->{list}[$self->{index}+1]))[3] cmp $room) < 0)
{
$self->{index}++;
}

$self->{stopindex} = $self->{index};
while ($self->{stopindex}<$#{$self->{list}} && (split(/\|/,$self->{list}[$self->{stopindex}+1]))[3] eq $room)
{
$self->{stopindex}++;
}
return ($self->{stopindex}-$self->{index});
}
else
{
delete $self->{stopindex};
delete $self->{vips};
$self->{index}=-1;
}
}

package GTChat::Plugins::Rooms_Onlineusers_enum::095_01;
use strict;
use vars qw(@ISA);

sub new
{
my($main) = @_;

my $enum=$main->{modules}{'sourcedir::Enum.pm'};

my $rooms = $main->{template_vars}{roomlist};
my $users = $main->{template_vars}{onlineusers};
return undef if (!defined($rooms) || !defined($users));

return bless({
rooms => $rooms,
users => $users,
opened => 0,
});
}

sub open
{
my $self=shift;

$self->close if $self->{opened};

$self->{rooms}->open;
$self->{opened}=1;
}

sub hasNext
{
my $self=shift;
if ($self->{opened} && $self->{rooms}->hasNext)
{
return 1;
}
else
{
$self->{users}->setRoom;
return 0;
}
}

sub next
{
my $self=shift;

my $ret = $self->{rooms}->next;
if (defined($ret))
{
$ret->{onlineusers} = $self->{users};
$ret->{onlineusers_count} = $self->{users}->setRoom($ret->{name_lc}, $ret->{moderated} ? $ret->{vips} : undef);
}
return $ret;
}

sub close
{
my $self=shift;

$self->{users}->setRoom;
$self->{rooms}->close;
$self->{opened}=0;
}')


nur wie ich hieraus jetzt ne Function bauen soll, die mir in php den Wert auswirft, das übersteigt mein Können um einiges ;) aber vielleicht hat einer von Euch ne Idee? *hoff*

lg

Autor:  Rikkarda [ Mo 03 Apr, 2006 06:07 ]
Betreff des Beitrags: 

so ich nochmal *schmunzel* dies lässt mir ja nun keine Ruhe, und ich such täglich stundenlang das Netz ab ;)

ich habe folgendes gefunden:

$this->bbcode_second_pass_code('', 'Text-Anzeige für die Zahl der Online-Benutzer, GTChat ab Version 0.93

Dieses Programm gibt die Zahl der Benuter im Chat aus. Der Text
kann per JavaScript in eine beliebige Seite eingebunden werden,
auch auf einem anderen Server.

Benutzung:
=============
Kopieren Sie counter.pl in das Verzeichnis, wo Sie das Programm
chat.pl haben. Setzen Sie mit Ihrem FTP-Programm die Zugriffsrechte
von counter.pl auf ausführbar für alle (CHMOD 755).

Folgender Code wird dann auf der Seite durch die Zahl der
Benutzer ersetzt, die gerade im Chat sind (die richtige
URL von counter.pl muß natürlich eingesetzt werden):

<script language="JavaScript" src="http://dai-clan.de/cgi-bin/daichat/counter.pl" type="text/javascript"></script>

Zu beachten: Das funktioniert nur, wenn der Benutzer JavaScript
in seinem Browser aktiviert hat! Ansonsten wird der Code einfach
ignoriert.


')

natürlich hoffe ich das dies etwas ist, was zu meiner Problemlösung beitragen kann.. nur wie bekomme ich das jetzt in meine common.php xD

ich hätte ja halt gern unter dem Auswurf OOC Chat, der in der common.php ist die Zahl, die das o.g. auswirft und java überfordert nunmal meine sämtlichen Kenntnisse *gg*

:

$this->bbcode_second_pass_code('', 'if ($session[user][acctid]>0) {
$header=str_replace("{mail}",maillink(),$header);
$footer=str_replace("{mail}",maillink(),$footer);
$header=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$header);
$footer=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$footer);
}else{
$header=str_replace("{mail}","",$header);
$footer=str_replace("{mail}","",$footer);
$header=str_replace("{chat}","",$header);
$footer=str_replace("{chat}","",$footer);
}')


Aber ich hoffe ja auf Euch^^


lg Rikka

Autor:  Sharielle [ Mo 03 Apr, 2006 07:31 ]
Betreff des Beitrags: 

so pauschal würde ich mal sagen die counter.pl nach anleitung einfügen und rechte setzen und den scriptteil einfach so einfügen:

[php]
//suche in der common
$header=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$header);
$footer=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a>",$footer)

//ersetzen mit
$header=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a><script language=\"JavaScript\" src=\"http://dai-clan.de/cgi-bin/daichat/counter.pl\" type=\"text/javascript\"></script>",$header);
$footer=str_replace("{chat}","<a href='chat.php' target='_blank' class='motd' onClick=\"".popup("chat.php").";return false;\">OOC Chat</a><script language=\"JavaScript\" src=\"http://dai-clan.de/cgi-bin/daichat/counter.pl\" type=\"text/javascript"></script>\",$footer)

//ist ungetestet und pauschal[/php]

so müßte die zahl eigentlich hinter dem chat stehen

Autor:  Rikkarda [ Mo 03 Apr, 2006 08:32 ]
Betreff des Beitrags: 

hm danke.. das war ziemlich auch meine erste idee, aber er zeigt nix an dann

-.-

lg

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/