class.tlen.php
dodano 07/09/2009
Simple usage Tlen.pl protocol in php.
class.tlen.php to zorientowana obiektowo biblioteka w PHP, rozprowadzana na licencji GPL, dostarczającą proste i łatwe, a zarazem funkcjonalne rozwiązanie dla aplikacji sieciowych korzystających z protokołu sieci komunikatora Tlen.pl.
CTP jest pomostem miedzy nasza aplikacją, a protokołem sieciowym, wprowadza pełną abstrakcje, przez co nie jest wymagana znajomość protokołu sieci Tlen.pl, aby korzystać z API biblioteki. Dzięki temu całą uwagę możemy poświęcić naszej aplikacji i skupić się na jej działaniu i implementacji, nie martwiąc się o szczegóły związane z protokołem Tlen.pl.
Klasa oddaje do dyspozycji znaczna cześć dostępnych funkcji protokołu Tlen.pl. Umożliwia zbudowanie prostych skryptów, czy wskaźników stanu prezentowanych na stronie, powiadamiaczy, jak również bardziej rozbudowane aplikacje sieciowe, boty, a kończąc na funkcjonalnym komunikatorze.
Główną motywacją i natchnieniem do implementacji protokołu Tlen.pl w php była class.jabber.php autorstwa Nathana 'Fritzy' Fritza.
To właśnie na tej klasie (jabberowej) się wzorowałem i zaczerpnąłem główną ideę działania, na której oparłem swoją implementacje.
Uwaga! Mimo, iż obie klasy posiadają w jakimś stopniu identyczne API nie są w żadnym stopniu ze sobą kompatybilne. Niektóre funkcje posiadają, co prawda takie same nazwy, być może spełniają także identyczną role, ale ich funkcjonalność nie musi już być taka sama.
Nie jest, więc możliwe łatwe dostosowanie projektów jabberowych opartych na class.jabber.php do działania w sieci Tlen.pl, bez zagłębienia się w dokumentacje i manuale obydwu klas i poprawieniu znacznych fragmentów kodu.
Łyk historii
Plany odnośnie projektu przejawiały się już jakiś czas przed rozpoczęciem pisania kodu. Prace implementacyjne rozpoczęto gdzieś w lutym 2006 roku.
Wraz z pracami nad klasą równolegle pracowano nad pierwszym projektem wykorzystującym powstającą bibliotekę. Był to projekt wikipedius, pierwszy zewnętrzny, samodzielny bot dostępny dla wszystkich użytkowników sieci Tlen.pl, dodający łatwy dostęp do zasobów wikipedii wprost ze swojego komunikatora.
Pierwsza wersja biblioteki - 1.0, została wydana w połowie marca 2006 roku. Niestety problemy związane z sprzętem i awarie opóźniły publiczną publikacje do połowy kwietnia 2006 roku.
Prawie w rok po rozpoczęciu prac nad projektem, 13 lutego 2007 roku, ukazała się nowa wersja 1.2, a wraz z nią powstała wreszcie długo oczekiwana strona projektu, niestety nadal bez dokumentacji (strona znikła po pojawieniu się niniejszego serwisu gromadzącego wszystkie projekty autora w jednym miejscu).
W wersji 1.2 biblioteka została w znacznym stopniu zmodyfikowana, przystosowana do php5 i korzystająca z dobrodziejstw wynikających z tego faktu, przeocz utracono możliwość uruchomienia na < PHP5.1.x. Zmiany zaowocowały także niekompatybilnością z poprzednią wersją.
Znaczącymi zmianami była wymiana parsera XML, zastępując go wbudowanym w php SimpleXML-em, zoptymalizowanie działania całej klasy, oraz wprowadzenie nowego systemu logowania błędów i zdarzeń w czasie pracy biblioteki.
Plany na przyszłość
Planowane jest wprowadzenie dodatkowym rozszerzeń w postaci klas potomnych dziedziczących po class.tlen.php, dodających obsługę nie zaimplementowanych jeszcze elementów protokołu. Mowa tutaj o konferencjach, czatach i katalogu publicznym, może nawet o p2p ;)
CTP została w znacznym stopniu już przygotowana do tego celu w wersji 1.2, teraz tylko kodzić.
Nieco prędzej próbowano już implentować szczątkową obsługę czatów, z czego narodził się projekt Tlen.Czat.Shell.
Example
Prosty przykład użycia ctp do wysyłania wiadomości:
<?php</p>
<p>include('class.tlen.php');</p>
<p>$TLEN = new Tlen;</p>
<p>// login ( bez @tlen.pl!) i haslo do konta tlenowego
$TLEN->username = 'login';
$TLEN->password = 'passw';</p>
<p>// logowanie wszystkiego do pliku
$TLEN->logging = TLEN<em>L</em>ALL;
$TLEN->log<em>filename = 'ctp</em>log.txt';</p>
<p>// nawiazanie polaczenia i autoryzacja do sieci
$TLEN->Connect();
$TLEN->SendAuth();</p>
<p>// ustawienie status na dostepny z opisem
$TLEN->SendStatus('available', 'opis...');</p>
<p>// wyslanie wiadomsoci typu rozmowa do test@tlen.pl
$TLEN->SendMessage('test@tlen.pl', 'chat', 'Hej, poklikasz? ;)');</p>
<p>$TLEN->Disconnect();</p>
<p>?>
Licencja
class.tlen.php jest dostępny na zasadach powszechnej licencji publicznej GNU GPL. Istnieje jednak możliwość zakupu biblioteki na licencji komercyjnej, w przypadku, gdyby znalazł się ktoś zainteresowany, chcący wykorzystać ją w celach komercyjnych.
Download
- ctp.zip
[7.51 KB]
pobrano 336 razy
dodano 07/09/2009 - źródła klasy z przykładem i lista kodów błędu
Linki
- class.tlen.php na forum ekipa.tlen.pl
- class.tlen.php na forum php.pl
- class.tlen.php na MalDevBlog
- Tlen przez php
- Nieoficjalna dokumentacja protokołu Tlen.pl
TODO
- model obiektowy dla obsługi handlerów
- wsparcie dla wyjątków
- obsługa Tlen.Czatów i pozostałych elementów protokołu
Changelog
Wersja 1.3 (09/11/2007):
- poprawiono błędy wynikłe z dodania wsparcia awatarów w protokole Tlen.pl, uniemożliwiające prawidłowe działanie klasy
Wersja 1.2 (13/02/2007) [release notes]:
- wsparcie do PHP5 (min. PHP 5.1.x) i dalszej rozbudowy
- nowy parser XML (SimpleXML)
- nowy mechanizm logowania błedów i zdarzeń
- poprawiono i uzupełniono obsługę rostera
- zmieniono
Handler_
naTlenHandler_
- dodano metodę
SendStatus()
; - dodano metodę
StripJID()
iCheckJID()
- optymalizacja kodu
- utrata kompatybilnością ze starszymi wersjami
Wersja 1.0 (24/03/2006) [release notes]:
- pierwsza wersja klasy
aktualizacja 08/09/2009