Programista pragnący umieścić na swojej stronie forum dyskusyjne ma coraz bardziej ograniczony wybór. Autorzy konkurencyjnych skryptów po odniesieniu sukcesu zmieniają zasady ich dystrybucji, każąc sobie za nie płacić, a poziom tych, które zostały darmowe pozostawia wiele do życzenia. Dodatkowo rozwiązania te są do siebie łudząco podobne, nie ma czegoś oryginalnego i postępowego. My również jesteśmy programistami stron WWW i nam ta sytuacja także się nie podoba. Dlatego postanowiliśmy połączyć swoje siły i stworzyć Open Power Board. Założenia są jasne i klarowne. Nasz system jest:
* Dostępny na zasadach Open-Source
* Wygodny w rozszerzaniu: możliwa jest klasyczna instalacja dodatków poprzez ręczną edycje plików lub poprzez ich automatyczne wgranie i zainstalowanie na serwerze użytkownika, bez potrzeby edycji plików przez niego.
* Bezpieczny zarówno w klasycznym tego słowa znaczeniu, jak też dbający o w pełni konfigurowalne filtrowanie uprawnień i aktywności botów wyszukiwarek, dbających o odmowę dostępu do forum spambotów, zbieraczy adresów email użytkowników, etc.
* W pełni konfigurowalny zarówno z poziomu administratora jak i samego użytkownika. Stawiamy na możliwość personalizacji wyglądu i opcji forum pod kątem wymagań danego użytkownika.
* Posiadający wszystkie podstawowe opcje obecne w systemach Bulletin Boards, lecz rozszerzone o możliwości, pozwalające w pełni nad tymi opcjami zapanować, oraz wiele naszych pomysłów nie spotykanych do tej pory w projektach tego typu.
* Dbający o prywatność użytkowników. Skrypt będzie posiadał wiele zabezpieczeń mających na celu nie wydostania się poza obręb forum informacji, które użytkownik uzna za utajnione, jak profil, adresy email, komunikatory, i wiele innych.
OPB jest odpowiedzią na zmianę dotychczasowej licencji systemu Invision Power Board, oraz próbą podniesienia bezpieczeństwa na rynku darmowych systemów for dyskusyjnych.
Cała idea została podjęta na forum IBPlanet, przez grupkę zapaleńców, w początkowym zarysie jako żart.
Główne założenia:
Open Power Board tworzony jest jako system, który pozwoli każdemu na założenie na swojej stronie WWW własnego forum dyskusyjnego. Jest pisany w php 5 z wykorzystaniem bazy danych MySQL, choć nic nie będzie stało na przeszkodzie, aby uruchomić go na dowolnej innej. Na uwagę zasługuje fakt, iż OPB dostępny będzie całkowicie za darmo, gdyż powstaje na zasadach Open-Source.
OPB to nie tylko forum dyskusyjne. Dla jego potrzeb powstają także dwie biblioteki, tworzone jednak jako niemal zupełnie osobne projekty, dzięki czemu będzie istnieć możliwość ich bezbolesnego wykorzystania we własnych skryptach. Są one również dostępne na zasadach Open Source.
* Open Power Driver: abstrakcyjny interfejs obsługi baz danych. Obecnie obsługuje MySQL oraz SQLite, w planach natomiast są sterowniki dla innych baz.
* Open Power Template: system szablonów o dużych możliwościach i wydajności. Jego głównym założeniem jest łatwość integracji z mechanizmami strony WWW.
Mamy również kilka innych pomysłów, lecz w chwili obecnej nie jesteśmy pewni, czy uda je się usamodzielnić w równie dużym stopniu.
Przy tworzeniu skryptu kładziemy duży nacisk na kompatybilność z najnowszymi technologiami ( CSS, AJAX, XML, etc), oraz przeglądarkami internetowymi.
Postaramy się tak napisać forum, aby wymagania systemowe nie były wygórowane ( osiągnąć to chcemy poprzez stworzenie driverów dla różnych baz danych: Oracle, Postgre, MySQL, MSSQL, Access i inne oraz takie stosowanie technologii aby zadziałały one niezależnie od ich interpretacji przez serwer czy przeglądarkę użytkownika.
Wersje demo tego co mamy można zobaczyć:
http://bora.netburg.pl/projekty/OpenPowerB...pb_with_actions
Paczka do pobrania wyłącznie w celach testowych:
http://bora.netburg.pl/projekty/OpenPowerB...ith_actions.rar
Całość dotychczasowej naszej pracy dostępna jest na CVS pod adresem:
http://cvs.sf.net/viewcvs.py/openpb
Uwaga. Cvs nie jest zawsze aktualny!!
Całość dotychczasowej naszej pracy dostępna jest na CVS pod adresem:
Poszczególne moduły i ich oznaczenie:
* OPB - Główny pakiet zawierający forum
* OPD - Zawiera wszystkie pliki wykorzystywane przez abstrakcje bazy Open Power Database.
* OPT - To zbiór plików wchodzących w skład pakietu Open Power Templates.
Poniżej zawieramy opis tego co juz zostało wykonane i pokrótki opis planowanych na najbliższy czas:
Do tej pory wykonano, przetestowano i zintegrowano w całość następujące "elementy":
1.) Core
Obecna wersja core, czyli jądra system jest już drugą. Pierwsza, Milki, została gruntownie zmieniona. Core ma za zadanie obsłużyć żądanie użytkownik i wysłać odpowiedź do niego. Jest podzielone na kilka podsystemów, które obsługują takie rzeczy jak: i18n ( obsługa języków), sesję, konfigurację, wywoływanie akcji, autoryzację, parsowanie URLa, sprawdzanie poprawności danych przesłanych od użytkownika.
Przebieg wykonywanie działań przez core:
Core wywołuję:
a).Timer
cool.gif.Parser konfiguracji
c).I18n (języki)
d).OPD
e).OPT
f).Sesje
g).Autoryzację połączoną z akcjami
Następnie wywołuję metodę start w której wszystko jest konfigurowane i zostają wywołane akcje.
Na tym kończy się praca core.
Opis ten nie jest oczywiście dogłębny i całkowity.
2.) Akcje
W openPowerBoard do zarządzania treścią strony służą akcje. Jest to mechanizm pozwalający w zależności od wywołania i uprawnień uruchomić odpowiedni łańcuch zdarzeń.
Łańcuchem zdarzeń można zarządzać poprzez:
1. addAction(name) dodawanie akcji do łańcucha która ma zostać odpalona po obecnym elemencie
2. runAction(name) natychmiastowe odpalenie akcji.
3. Set(name, value) dodanie zmiennej do rejestru
4. Get(name) pobranie wartości zmiennej z rejestru
5. SetRef(name, value) dodanie zmiennej do rejestru (wymuszenie referencji , należy pamiętać że w php5 referencje są automatycznie tylko w przypadku obiektu)
6. Get(name) pobranie wartości zmiennej z rejestru (uwaga jw.)
Plik konfiguracyjny:
[subaction]
topic = forum;
forum = forum;
newtopic = forum;
post = forum;
Tutaj definiujemy które akcje dziedziczą uprawniania po jakiej akcji. Należy pamiętać e oprócz dziedziczenia następuje tu rozbici na fora. Dzięki czemu tematy, posty itp. Dziedziczą uprawnienia po odpowiednim forum.
[post]
auth = OPB_AUTH_READ|OPB_AUTH_POST;;
require_action = readForum;
fallback = error;
fallbackProceed = CONTINUE_ACTION_CHAIN;
auth – wymagane uprawnienia (działają operatory binarne |)
require_action – wymagane akcje (zostaną sprawdzone czy użytkownik ma do nich uprawnienia)
fallback – akcja wywoływana w przypadku gdy nie ma wystarczających uprawnień do odpalenia akcji
fallbackProceed – czy w przypadku braku uprawnień należy przerwać wykonywanie łańcucha zdareń (możliwe parametry :CONTINUE_ACTION_CHAIN lub BREAK_ACTION_CHAIN
W akcji można wyrzucić wyjątek, który spowoduje dodanie akcji do łańcucha.
Pierwszy parametr do akcja jaka ma zostać wywołana, a drugi to czy po niej ma zostać przerwane wykonywanie dalszych akcji z łańcucha.
Np.: throw new OpbActionException ('fallback', BREAK _ACTION_CHAIN);
Zostanie wywołana akcja fallback, po której zostanie przerwany łańcuch.
Obecnie trwają prace nad zaimplementowaniem i integracją API z resztą forum. Prace te są już bardzo zaawansowane, podstawowe api jest już niemal skończone, jednak trwają prace nad kilkoma unikatowymi rozwiązaniami których nie chcielibyśmy jeszcze zdradzać.
Niedługo zostanie uporządkowane api do najnowszych plików.
Po integracji API i dokonaniu porządków na cvs zostaną podjęte prace, nad pisaniem właściwego już kodu dla forum.
Choć ekipa jest już skompletowana, pamiętaj, że również ty możesz nam pomóc, jeśli tylko tego chcesz. Bardzo nam zależy na każdej, chętnej do pomocy osobie, szczególnie poszukujemy grafików, koderów oraz osoby chętne do przeanalizowania kodu, celem określenia lepszych metod lub zwrócenia uwagi na błędy. Każdy nowy członek ekipy to nowy duch, nowe spojrzenie na problem, nowe pomysły, które sprawią, że skrypt stanie się jeszcze lepszy. Czekamy także na opinie zwykłych użytkowników. Jesteśmy otwarci na wszystkie propozycje, jakie pragniecie ujrzeć w gotowej wersji. W końcu to dla Was ten projekt realizujemy.
Przypisy:
Forum strony Open Power Bard : http://www.openpb.net/forum
CVS: http://cvs.sf.net/viewcvs.py/openpb
Strona Open Power Template: http://www.opt.openpb.net
Bug Tracker: http://www.openpb.net/bugs