W tej lekcji zapoznamy się z klasą IPB SDK służącą do integracji forum IPB z innymi skryptami PHP. Skąd i co pobrać zostało opisane w ostatnim warsztacie. Teraz zajmiemy się zebraniem tego wszystkiego do kupy.
- W konfiguracji Code Ignitera w autoload.php dodaj do ładowania klasę "validation" oraz pomocniki "url" i "form"
-
Zainstaluj forum IPB (najlepiej 2.1.* lub 2.0.*) w katalogu
ipb w głównym katalogu Code Ignitera (taki katalog będzie stosowany w tekście). Do celów edukacyjnych localhostowych IPB można pobrać ze stron warezowych. Nie wolno używać nielegalnych kopii na prawdziwych stronach. Dodatkowo kopie z takich stron zawierają bardzo często
tyle furtki i celowo dodane luki zabezpieczeń
- Do katalu
system/application/scripts rozpakuj paczkę z IPB SDK (1.6 dla IPB 2.1.* lub 1.5 dla IPB 2.0.*) Potrzebny jest katalog
lib oraz
ipbsdk_class.inc.php i
ipbsdk_conf.inc.php
- Edytuj plik
ipbsdk_conf.inc.php i zastąp go kodem:
$root_path = 'ipb/';
$board_url = base_url().'/ipb';
$sdklang = "en";
$allow_caching = '1';
Gdzie
$root_path to ścieżka do katalogu z forum IPB. Przy instalacji w katalogu ipb ścieżka będzie taka jak podana.
$board_url - adres URL do forum.
- utwórz kontroler
Main i ustaw go jako domyślny (autoload.php)
- Jako kod kontrolera wstaw:
error_reporting(E_ALL ^ E_NOTICE);
class Main extends Controller
{
function Main()
{
parent::Controller();
$this->response = array();
$this->load->script('ipbsdk_class.inc');
$this->sdk = new IPBSDK();
}
function index()
{
$text = 'prosty [b]gruby[/b] [u]podkreślony[/u] tekst';
echo $text;
echo '<HR>';
echo $this->sdk->bbcode2html($text);
}
}
Otwierając główną stronę powinieneś zobaczyć dwa wiersze tekstu, drugi z pogrubionym i podkreślonym tekstem - BBcode zamienionym na HTML.
Jeżeli dostajesz komunikaty o braku pliku do załadowania to albo masz złe ścieżki w konfiguracji SDK (co bardziej prawdopodobne) albo niewłaściwą wersję SDK do twojego forum. Pomocy szukaj... na forum kursu :)
Gdy nam wszystko chodzi czas na omówienie kodu. Na początek:
error_reporting(E_ALL ^ E_NOTICE);
CI raportuje wszystkie błędy nawet "uwagi" że coś ładnie nie jest zrobione. IPB jak i SDK nie są "zgodne" z takim raportowaniem błędów. Trzeba wyłączyć raportowanie "uwag" co powyższa linijka czyni. Trzeba ją dodawać do każdego pliku korzystające z SDK (lub ew. dodać do pliku klasy)
Następnie:
$this->sdk = new IPBSDK();
Tworzy nam nowy obiekt klasy, który możemy wykorzystać... Korzystamy z metody
bbcode2html (
Strona dokumentacji), która przyjmuje jako parametr łańuch i zwraca również łańcuch, z tym że tagi BBcode zostaną zmienione na kod HTML.
I to jest cała filozofia korzystania z IPB SDK. W kolejnych warsztatach poznamy część metod klasy i wykorzystamy je do stworzenia kilku komponentów na naszej stronie. Na zakończenie inny przykład:
error_reporting(E_ALL ^ E_NOTICE);
class Main extends Controller
{
function Main()
{
parent::Controller();
$this->response = array();
$this->load->script('ipbsdk_class.inc');
$this->sdk = new IPBSDK();
}
function index()
{
echo $this->sdk->get_avatar();
echo '<pre>';
print_r($this->sdk->get_info());
}
}
Zgodnie z dokumentacją
get_avatar() wyświetli awatara zalogowanego użytkownika (dla naszego komputera oczywiście) a
get_info() zwróci tablicę zawierającą dane o użytkowniku... jakież to proste, czyż nie? Jedna linijka i wszystko mamy dostępne :)
- Radzę przygotować jakiś szablonik-widok, bo zaraz ruszy seria warsztatów, w której będziemy tworzyć stronę z kilkoma komponentami takimi jak artykuły z komentarzami - wszystko oparte o IPB.