Musiałem zapoznać się i przetestować CMS modx. Zaciagnąłem więc najnowszą wersję 1.0.3 rozpakowałem, skopiowałem do katalogu z projektami, dodałem VirtualHost z dyrektywą AllowOverride All, ponieważ w katalogu głównym w .htaccess znajduje się RewriteEngine On i kilka warunków przekierowania (min. na index.php w katalogu głównym), wykluczające pliki. Od razu zastanowiłem się dlaczego ustawienie php_flag register_globals ustawione jest na Off. Po restarcie apache i wpisaniu ustalonego adresu zdefiniowanego w ServerName można ujrzeć proces instalacyjny tego CMS. Wystarczy tylko stworzyć odpowiedniego użytkownika w bazie danych, poczym zautoryzować go przez formularz instalacyjny i można od razu przeprowadzić test połączenia z bazą – udało się. Następnie należy stworzyć pusty plik konfiguracyjny /modx/manager/includes/config.inc.php (do którego później zapisywana jest konfiguracja systemu – ustawienia dla połączenia z DB, ziarno dla sesji, zdefiniowanie scieżek). Należy także ustawić odpowiedniego właściciela oraz prawa zapisu dla niektórych katalogów w /modx/assets/ (np. cache, images). W między czasie można było zdefiniować lokale systemowe, kodowanie dla DB, dane webmastera oraz wybrać sobie domyślny template dla naszej webaplikacji. Następnie wystarczy jedynie zaakceptować regulamin i można instalować. Chwilę poźniej widzimy już stronę główną. Cała instalacja to zaledwie kilka kliknięć i jakieś 2 minuty.
Po zalogowaniu sie do CMS (/manager) widać dashboard i główne menu, gdzie między innymi można sobie zarządzać użytkownikami, modułami (chyba chodzi o pluginy?), w narzędziach można dokonać backupu całej aplikacji/export/import. Ciekawie prezentuje się także system logowania zdarzeń, gdzie można podejrzeć logowane z góry akcje wywołane przez użytkownika. Można dodawać sobie nowe role systemowe (domyślnie są to administrator, editor, publisher) oraz zdefiniować im ACL – bardzo fajnie. CMS przypomina troszkę WordPressa.
Troszkę inaczej wygląda sprawa kodu. Od początku. Bootstrap niby wporządku, ale na sztywno wpisany jest tam kod html ! (to chyba troszkę za nisko). Dalej odpalana jest sesja, tworzony jest obiekt:
$modx = new DocumentParser;
i odpalany parsser. Parser min. dokonuje połączenia z DB (domyślnie używa klasy DBAPI, w której także zdefiniowane są podstawowe metody tj update, insert, oferuje metodę query, w której dodatkowo jest prosty profiler, itd. troszke to niebezpieczne, zapytanie nie są filtrowane, brak quote escape, ciekawy czy ciezko jest wstrzyknać SQL ), ale to tak na pierwszy rzut oka.
Metoda executeParser(), to tak jakby dispatcher, chociaż troszkę przesadziłem teraz.
W katalogu /manager/actions są wywoływane akcje, ale cięzko tu mówić o MVC, ponieważ nie ma kontrolerów. Same pliki actions to mieszanka php, js oraz html. Dlaczego te pliki maja w takim razie rozszerzenie php? czemu nie np. phtml to i edytor ładnie by kolorował składnie – na pierwszy rzut oka nie wiem. Nie wiem jeszcze z jakiego systemu szablonów korzysta, ale później do tego na pewno jeszcze wrócę.
Całość przypomina mieszankę obiektowego php4 z proceduralnym php. Wydaje się być ciężko rozwijalnym projektem. Do tej pory nie zawuażyłem w kodzie żadnego wzorca projektowego, no poza użytym praktycznie wszędzie global, co chyba niegdyś było rejestrem ?
Tyle jeśli chodzi wstępne 10 minut spędzonych nad MODX. Zobaczymy jak się będzie pracowało korzystając z niego.
Na pierwszy rzut oka przyciąga swoim usability, natomiast kod ODSTRASZA I ZNIECHĘCA. Ale prawdopodobnie się mylę. Ciekawe jaki będzie kolejny wpis na ten temat