Detta är ett långt och ambivalent dokument. Jag har helt enkelt sammanställt all dokumentation jag skrivit under projektets gång. Vissa delar riktar sig till programmerare som vill förstå och kanske arbeta med systemet. Andra delar riktar sig till styrgrupp och beställare. Ytterligare andra delar riktar sig till användare av systemet. Läs det som intresserar er.
Projektet är organiserat i följande filsystem:
I systemets rot finns
- build.xml: se Tester och kodanalys
- composer.json: se Serverkonfiguration
- php.ini: de PHP inställningar systemet behöver. Se Serverkonfiguration
- mreg.local: den apache virtual host som använts under utvecklingen.
Kompilerade binärer.
- wkhtmltopdf används för att generera pdf från html.
Genererad metadata, dokumentation mm. Se Tester och kodanalys.
Cli-skript skript systemet använder sig av. Körs som cron-jobb.
Databasen.
-
DB.sql En tillfällig kopia av databasen till versionshantering. När systemet går i drift ska denna såklart inte användas längre.
-
EMPTY.sql Den tomma databasen, vilken såklart inte är en helt tom, utan innehåller en hel del grundläggande data. Använd denna för att sätta upp ett nytt lokalt system.
-
events.sql De MySQL-events systemet använder sig av (cron-jobb som körs internt i databasen. Finns laddade i EMPTY.sql.
-
triggers.py Python-skript som skapar de MySQL-triggers systemet använder sig av. Finns laddade i EMPTY.sql.
Handskriven dokumentation av systemet formaterat med markdown. Bland annat filen du läser nu.
De externa PHP-bibliotek systemet använder sig av. Hanteras av Composer. Se Serverkonfiguration.
Källkoden till systemet.
Unit-tester för koden i /src/mreg. Se Tester och kodanalys.
Data systemet genererar eller använder sig av. Här finns exempelvis logg- och cachefiler, översättningar och standardfiler.
Den del av systemet som är synlig via http. Webbservern ska konfigureras att använda denna katalog som rot. Här finns bland annat:
-
bootstrap.php Grundläggande steg som behöver tas för att köra systemet. Returnerar en Pimple dependecy injection container med de objekt systemet kräver. (Används av både http och cli.)
-
gateway.php Accesspunkt för all HTTP-åtkomst. Systemet använder apache med mod_rewrite för att skicka alla url:er till gateway. Se mreg.local.
-
routes.php Returnerar en Aura route-map med definierade vägar för alla url:er systemet använder sig av.
-
jsclient JavaScript-klienten. Servern ska ej använda mod_rewrite för denna katalog.
-
static Statiska filer klienten kan hämta över HTTP. Servern ska ej använda mod_rewrite för denna katalog.
-
Webbservern Apache 2 med mod_rewrite
-
MySQL >= 5.1.6 med följande inställningar:
sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO" event_scheduler="ON"
-
PHP >= 5.3.3 som apache-modul
- PDO samt PDO_MYSQL för databaskopplingar
- HASH med stöd för MD5, sha512 samt crc32
- bcmath för flyttalsaritmetik
-
Önskade PHP-inställningar finns i php.ini i rot-katalogen.
-
Svensk lokalisering sv_SE.utf8 eller motsvarande. Används bland annat för att formatera ekonomiska summor. Med en felaktig lokalisering finns risken att ekonomiska beräkningar avrundas felaktigt.
Registret använder composer för att hantera PHP-bibliotek. För att installera beroenden använd Phing (se Tester och kodanalys) eller composer direkt.
curl -s http://getcomposer.org/installer | php
php composer.phar install
Följande beroenden installeras:
- itbz/httpio
- itbz/Cache
- itbz/Utils
- itbz/DataMapper
- itbz/libmergepdf
- itbz/phplibphone
- itbz/phplibaddress
- itbz/stb
- itbz/Mobilizr
- monolog/monolog
- emberlabs/gravatarlib
- twig/twig
- swiftmailer/swiftmailer
- Aura/Cli
- Aura/Router
- AddedBytes/EmailAddressValidator
- pimple/pimple
- rych/phpass
Systemets unit-tester finns i /tests.
PHPUnit används för testerna. Ställ dig i /tests och skriv phpunit.
OBS! För att köra testerna krävs att de bibliotek registret använder finns installerade. Se Serverkonfiguration.
Testerna kan även köras via Phing för att automatiskt generera fina rapporter. Då installeras även beroenden automatiskt.
Under utvecklingen har Phing använts för att köra unit-tester, generera dokumentation med mera. Phing installeras enklast med PEAR.
pear config-set preferred_state alpha
pear install --alldeps phing/phing
pear config-set preferred_state stable
Ställ dig i rot-katalogen och skriv phing för att köra alla tester. En ny katalog build skapas med test-resultat, dokumentation och resultatet från en del andra analysverktyg. De flesta rapporter är html-formaterade, så peka din webbläsare mot build för att granska resultatet.
Phing används även för deploy till testserver. Se build.xml. Deploy-rutinen är lite rörig på grund av att testservern inte är dedikerad till projektet.
Systemet använder Monolog för att logga händelser.
- Intressanta händelser (loggnivå info) loggas till databastabellen sys__Log. Det kan exempelvis vara att en användare loggar ut eller att ett felaktigt personnummer försökte sparas.
- Fel (loggnivå error) loggas även till fil med diverse extra information. /var/log/mreg.log
- Allvarliga fel (loggnivå alert) skickas även med mail.
Dessa loggar ska ses som komplement till PHPs vanliga errorlog och webbserverns loggar.