![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tworzę nowy instalator rozszerzeń do systemu CMS, który ma za zadanie instalować, usuwać i aktualizować je. Teraz pytanie, czy:
1. Wprowadzić plik ze strukturą Przykład: http://www.unit1.pl/pb-911 Plik zawiera informacje na temat tabel i pól, bloków menu, plików konfiguracyjnych... z uwzględnieniem zmian w kolejnych wersjach. Tylko czy w ten sposób nie ograniczę zakresu działań instalatora? Na podstawie tych informacji CMS instaluje, usuwa lub aktualizuje rozszerzenie z uwzględnieniem różnic w bazach danych. Zaletą jest to, że proces instalacji jest pod większą kontrolą. 2. Udostępnić uniwersalne API Rozszerzenia zawierają 3 funkcje: Install(), Uninstall() i Update(). W CMS-ie są zdefiniowane stałe: DB_TYPE (MySQL lub SQLite), PLUGIN_VERSION (aktualna wersja rozszerzenia)... CMS udostępnia też trochę funkcji, np. do dodawania elementów do menu albo tworzenia plików konfiguracji. PS. CMS obsługuje MySQL i SQLite Ten post edytował WebCM 2.11.2008, 22:11:48 |
|
|
![]() |
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 375 Pomógł: 20 Dołączył: 28.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przejrzałem rozwiązania w kilku skryptach. W większości rozszerzenia mają funkcje: instalującą i dezinstalującą. W PhpBB 3 wszystko oparte o XML i automatyczne podmianki kodu w plikach .php, ale chyba nie wykonuje zapytań do bazy. We wtyczce `blog` znalazłem informację: "Go to yoursite/blog/install.php (...)"
Sprawa skomplikowała się po dodaniu obsługi SQLite. Trzeba wykryć typ bazy i pisać oddzielne zapytania, gdyż np. w SQLite - zamiast auto_increment pisze się autoincrement. Jest też trochę innych drobnostek. Właściwie dla zaawansowanych to nie problem, ale czytelność takiego kodu nie będzie zbyt duża. Mogą też powstać dodatkowe komplikacje. Dochodzi jeszcze kwestia aktualizacji rozszerzeń, dodawania linków do menu, itd. A. Zostawić tak, jak jest. Niech wtyczkopisarze martwią się o wszystko. B. Opisać strukturę bazy danych, bloki menu, linki, itd. w pliku XML, jak w przykładzie: http://www.unit1.pl/pb-931 Znikają problemy z kompatybilnością baz danych, ale możliwości są ograniczone. CMS nadzoruje proces instalacji, co pozwala dostosować opcje (np. gdzie dodać link) przez użytkownika i bezpiecznie aktualizować rozszerzenia. C. Informacje na temat bloków menu, linków, itd. w pliku XML lub INI, natomiast zapytania do bazy w plikach .sql, np. mysql.sql, sqlite.sql. D. Plik .php z informacjami w zmiennych / stałych (podobnie jak w B). Zagrożenie wykonania dowolnego kodu. Ten post edytował WebCM 8.12.2008, 00:19:45 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 17:23 |