Zaczynam pisać CMS'a na razie nazywa się w3cms, ale to może ulec zmianie.
Wszystko jest w fazie projektów:
Założenia
- System ma sie operać na zdażeniach
- Będzie opierał się na MVC i fabrykach objektów
- Ma być stosunkowo prosty w rozbudowie (jest modularny)
- Każdy element (nawet system uwierzytelniania) można podmienić. Pozostaje tylko baseSystem.
- Tylko PHP5 - inaczej się nie da.
- Przebieg działania (dosyć ogólny) - Tutaj
- Najprawdopodobniej udostępnię go na GPL'u
To tak w skrócie.
Układ katalogów
Kod
/ ---- katlog główny, tylko index'y i pliki apache (.htacces)
/lib -- pliki klas
/lib/dao/*/ -- wiadomo;)
/lib/control/*/ -- obiekty do obsługi zdarzeń
/etc/baseSystem -- konfiguracja podstawowa (można ew ustalić inne położenie, poza public_html
/etc/*/ -- jeżeli modół ma własny plik konfiguracji to tutaj, gdzie * nazwa modułu
/share -- pliki modułów, nie php
/share/locale/kod_języka/ -- tłumaczenia, zastanawiam się nad rozwiązaniem
/share/*/ -- jeżeli np galeria, to jej zdjęcia
/var/*/ -- pliki dodtakowe modułów, np logo, licencja, info o autorach, screen itd.
/dev/*/ -- widoki (np /dev/html, /dev/ajax/,/dev/pdf)
/proc -- base system
/home/ -- opcjonalnie, jeżeli użtkownicy mają możliwość przechowywania własnych danych
/lib -- pliki klas
/lib/dao/*/ -- wiadomo;)
/lib/control/*/ -- obiekty do obsługi zdarzeń
/etc/baseSystem -- konfiguracja podstawowa (można ew ustalić inne położenie, poza public_html
/etc/*/ -- jeżeli modół ma własny plik konfiguracji to tutaj, gdzie * nazwa modułu
/share -- pliki modułów, nie php
/share/locale/kod_języka/ -- tłumaczenia, zastanawiam się nad rozwiązaniem
/share/*/ -- jeżeli np galeria, to jej zdjęcia
/var/*/ -- pliki dodtakowe modułów, np logo, licencja, info o autorach, screen itd.
/dev/*/ -- widoki (np /dev/html, /dev/ajax/,/dev/pdf)
/proc -- base system
/home/ -- opcjonalnie, jeżeli użtkownicy mają możliwość przechowywania własnych danych
( kocham linux'a

Przykład działania
- Z zewnątrz dostaje jakieś żądanie (POST, GET, ssh).
- Dane żadania są zbierane, sprawdzane pod katem bezpieczeństwa aplikacji, tworzony jest obiekt zdarzenia z danymi(w nim będzie np jaki widok itd) i przekazywany do $obj=system::sendEvent($event);
- Jest sprawdzane w systemie kolejno, czy jest dostępny, czy może być obsłużony w danym widoku itd (jak w diagramie)
- Jeżeli sprawdzanie się powiedzie, zostaje zwrócony obiekt zgodny z interfejsem serviceEvent, konkretny dla danego modułu.
- Następnie jest wywoływana jawnie funkcja $obj->service();
Należy pamiętać że jedno zdarznie będzie wymagało kilku odświerzeń w przeglądarce (pobieranie konkretnych danych) - Jeżeli stan zdarzenie pozwala na zmianę danych, to tworzony jest niejawnie kontroler który validuje te dane, i mamy 2 scenariusze.:
- Powodzenie, wtedy informuje system że zakończył działanie i generuje kolejne zdarzenie (wyświetlenie komunikatu powodzenia), po czym następuje usunięcie z kolejki.
- Niepowodzenie -- równierz generuje zdarzenie, które w efekcie nakaże widokowi pokazanie błędu i ew pobranie ponownie danych, ale w tym wypadku nie dojdzie do usunięcia z kolejki.
To tylko zarys. Mam nadzieję że nie popełniłem jakiś straszliwych błędów.
Odrazu też zadam kilka pytań.
- Czy jest jakiś prosty sposób na odczytywanie plików .po albo .mo w php?
- Czy warto postawić np w warstwie abstrakcji baz danych na jeszcze jedną (adoDB-chyba jakos tak, nie pamiętam)
- Powinienem użyć np SVN, czy lepiej odrazu pisać i olać kontrolę wersji? - pewnie będe pisał sam
- Jakieś sugestie?