Joomla! oraz IP.Board – Finalne połączenie

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:

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) {}

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

HTML tags are not allowed.