Skip to content
This repository has been archived by the owner on Dec 15, 2019. It is now read-only.

mreg-archive/mreg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Om det här dokumentet

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.

Filsystemet

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.

bin

Kompilerade binärer.

  • wkhtmltopdf används för att generera pdf från html.

build

Genererad metadata, dokumentation mm. Se Tester och kodanalys.

cli

Cli-skript skript systemet använder sig av. Körs som cron-jobb.

db

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.

docs

Handskriven dokumentation av systemet formaterat med markdown. Bland annat filen du läser nu.

libs

De externa PHP-bibliotek systemet använder sig av. Hanteras av Composer. Se Serverkonfiguration.

src

Källkoden till systemet.

tests

Unit-tester för koden i /src/mreg. Se Tester och kodanalys.

var

Data systemet genererar eller använder sig av. Här finns exempelvis logg- och cachefiler, översättningar och standardfiler.

www

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.

Serverkonfiguration

Grundläggande krav

  1. Webbservern Apache 2 med mod_rewrite

  2. MySQL >= 5.1.6 med följande inställningar:

    sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO" event_scheduler="ON"

  3. 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
  4. Önskade PHP-inställningar finns i php.ini i rot-katalogen.

  5. 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.

Beroenden

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:

  1. itbz/httpio
  2. itbz/Cache
  3. itbz/Utils
  4. itbz/DataMapper
  5. itbz/libmergepdf
  6. itbz/phplibphone
  7. itbz/phplibaddress
  8. itbz/stb
  9. itbz/Mobilizr
  10. monolog/monolog
  11. emberlabs/gravatarlib
  12. twig/twig
  13. swiftmailer/swiftmailer
  14. Aura/Cli
  15. Aura/Router
  16. AddedBytes/EmailAddressValidator
  17. pimple/pimple
  18. rych/phpass

Tester och kodanalys

Unit-tester

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.

Installera Phing

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

Kör tester

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.

Deploy

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.

Loggar

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.

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published