W ostatnich dwóch wpisach (Joomla! 2.5 i IP.Board – kolejna odsłona prac oraz Joomla! 2.5 oraz IP.Board 3.1.4) opisywałem swoje prace nad zagadnieniem połączenia CMS’a jakim jest Joomla oraz forum dyskusyjnego IP.Board. Połączenie to udało się wykonać w oparciu o IP.Converge jedyne co pozostawało do zrobienia to możliwość autologowania na portalu. I tego właśnie będzie dotyczyć ten wpis.

Sama sprawa autologowania nie jest jakoś bardzo skomplikowana, największym problemem tutaj było odczytanie czy użytkownik jest zalogowany na forum a jeśli tak to trzeba pobrać kilka jego danych takich jak nazwa wyświetlana czy adres e-mail. Dane te są potrzebne do zalogowania użytkownika, lub jeśli nie posiada on konta na portalu – do założenia konta i zalogowania.

Jest kilka sposobów na sprawdzenie, czy użytkownik jest zalogowany:

  1. Pobieramy sesje z bazy danych pasujące do ip danego użytkownika i jego przeglądarki
  2. Pobieramy ręcznie ciasteczko i na jego podstawie sprawdzamy czy użytkownik jest zalogowany
  3. Tworzymy instancję ipsRegistry i sprawdzamy dane

Pierwsze 2 rozwiązania nie są jakby się zdawało idealne, ponieważ ręczne pobieranie sesji z bazy wymaga przetrzymywania w kolejnym miejscu danych do połączenia z bazą. Drugie rozwiązanie za to wymaga od nas trzymania konfiguracji cookie z IP.Board w dodatkowym pliku.

Biorąc wszystkie za i przeciw postanowiłem wybrać rozwiązanie trzecie i utworzyć instancję klasy ipsRegistry i dzięki temu to ona będzie decydować o zalogowaniu bądź nie użytkownika.

Sam kod tworzenia takiego obiektu nie jest skomplikowany, ponieważ wymaga od nas kilku linijek napisanych w php:

[php]
define( ‚DOC_FORUM_ROOT_PATH’, str_replace( "\\", "/", dirname( __FILE__ ) ) . ‚/forum’ );
define(‚IPS_ENFORCE_ACCESS’, true );
require_once( DOC_FORUM_ROOT_PATH.’initdata.php’ );
require_once( IPS_ROOT_PATH . ‚sources/base/ipsRegistry.php’ );
require_once( IPS_ROOT_PATH . ‚sources/base/ipsController.php’ );

try
{
$registry = ipsRegistry::instance();
$registry->init();

$memberData = $registry->member()->fetchMemberData();
}
catch( Excepton $e) {}
[/php]

I teraz w zmiennej $memberData mamy wszystkie informacje o użytkowniku, czy jest zalogowany, do jakiej grupy należy, jego avatar i wiele więcej, w związku z czym możemy dowolnie te dane przetwarzać. Ja osobiście jak wspominałem potrzebowałem kilku informacji i z nich korzystam.

W związku z tym, że prace nad integracją zostały ukończone firma SolutionDEVs rozpoczyna sprzedaż integracji joomli z IP.Board zarówno w wersji z autologowaniem jak i w wersji bez autologowania. Wszystkich zainteresowanych zapraszam do kontaktu w celu uzyskania informacji na temat tego połączenia.

Write A Comment

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.