Een drupalmodule voor het registreren van treinvertragingen

Maat: px
Weergave met pagina beginnen:

Download "Een drupalmodule voor het registreren van treinvertragingen"

Transcriptie

1 FACULTEIT INGENIEURSWETENSCHAPPEN Vakgroep Elektronica en informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen Een drupalmodule voor het registreren van treinvertragingen Klaas Millet, Niels Hulstaert Promotor : prof. dr. ir. Koen De Bosschere Begeleiders : Andy Georges, Kenneth Hoste Scriptie ingediend tot het behalen van de academische graad van Master in de Toegepaste Informatica Academiejaar

2

3 TOELATING TOT BRUIKLEEN De auteurs geven de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van het werk te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de bepaling van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit dit werk. 2 juni 2008 Klaas Millet, Niels Hulstaert

4 iii Universiteit Gent Faculteit Ingenieurswetenschappen Vakgroep Elektronica en informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Een drupalmodule voor het registreren van treinvertragingen Klaas MILLET, Niels HULSTAERT Promotor : prof. dr. ir. Koen De Bosschere Begeleiders : Andy Georges, Kenneth Hoste Scriptie ingediend tot het behalen van de academische graad van Master in de Toegepaste Informatica Academiejaar Samenvatting Naar aanleiding van de talrijke vertragingen waarmee de treinreiziger tegenwoordig geconfronteerd wordt, groeide het idee om een website te ontwikkelen waar reizigers hun opgelopen vertragingen zouden kunnen ingeven. Naast het ingeven van vertragingen, moest deze website ook grafieken genereren op basis van de gebruikersinvoer. Ter controle werd ook een beheerssectie ontwikkelde die de gebruikerinvoer ten alle tijde moet kunnen reguleren. Voor de opbouw van deze website werd gebruik gemaakt van het Content Management Systeem Drupal. Voor dit CMS werden modules ontwikkeld die de benodigde functionaliteit implementeren. Trefwoorden Treinvertragingen, Drupal, module

5 Dankwoord In de eerste plaats willen wij onze twee begeleiders, Andy Georges en Kenneth Hoste, bedanken. Dankzij hun talloze suggesties en opbouwende kritiek kunnen we met tevredenheid op onze verwezenlijkingen terugkijken. Het is namelijk geen evidentie om in een éénjarige opleiding op een relatief korte tijd een eindwerk af te leveren. Verder willen wij onze promotor en tevens bezieler van onze opleiding professor Koen De Bosschere bedanken. We hebben allebei veel bijgeleerd tijdens deze kennismaking met de boeiende wereld van de informatica. Hierdoor waren we in staat om dit actueel onderwerp zo goed mogelijk uit te werken. Dank ook aan de mensen die onze website wilden testen en ons hierbij interessante feedback gaven. Hierbij mag zeker de auteur van spoorvreter.be niet vergeten worden. Ook bedanken we Peter voor zijn advies over hoe we het best gegevens ophaalden van de NMBS-website. Klaas bedankt voorts: ouders, broers, zussen en alle overige mensen die me steeds gesteund hebben. Hierbij verdient mijn vriendin Tilly zeker een speciale vermelding. Niels bedankt tevens: ouders (nu was het echt de laatste thesis), broer en familie, de Battlecar Relaxtecy-bandleden, mijn eeuwige sterre Nele en bij uitbreiding iedereen die mij gunstig gezind is. Klaas Millet en Niels Hulstaert iv

6 Inhoudsopgave 1 Inleiding Treinvertragingen Het gebruik van een Content Management Systeem Drupal Het Drupalframework De Drupal technologie stack De Drupal core Administratieve interface Nodes Modules Hooks Drupal- en PHP-functionaliteit Gebruik van de Drupal-functionaliteit PHP-functies Opbouw van de scriptie Opbouw van de applicatie Doelstelling Vereisten Gebruikersvereisten Beheerder-requirements Applicatie-architectuur Use-case diagram Applicatiebespreking Databank Invoer van vertragingen/afschaffingen Traject ingeven Treinenoverzicht Overstappen ingeven Vertraging ingeven Afschaffing bevestigen Gegevensweergave Grafieken Persoonlijke statistieken Beheer van de website NMBS Stationsbeheer v

7 Inhoudsopgave vi NMBS Vertragingsbeheer NMBS Gebruikersbeheer NMBS Afschaffingsbeheer Besluit en toekomstperspectieven 39 Bibliografie 41 A Appendix 43 A.1 Broncode: interactie NMBS-website A.2 Gebruikersmogelijkheden A.2.1 Ingeven van treinvertragingen A.2.2 Bekijken van de persoonlijke statistieken A.2.3 Opvragen van grafieken A.3 Beheersmogelijkheden A.3.1 Nmbs Vertraginsgbeheer A.3.2 Nmbs Stationsbeheer A.3.3 Nmbs Gebruikersbeheer A.3.4 Nmbs Afschaffingsbeheer

8 Inleiding Treinvertragingen Vertragingen waarmee treinreizigers geconfronteerd worden, zijn een vrij actueel thema. Nog onlangs was er immers heel wat discussie over de vernieuwde treinregeling die sinds 10 december 2007 in voege is. Volgend citaat van Martine Taelman in een vraag aan federaal minister Inge Vervotte illustreert dit: De nieuwe dienstregeling zorgt voor vele vertragingen, vooral tijdens de spitsuren. De verbinding via Antwerpen die nu vaker wordt gebruikt, is voor de gebruikers geen valabel alternatief. Ook voor andere lijnen regent het klachten. Heel wat reizigers hebben te kampen met moeilijke aansluitingen, treinen die afgeschaft worden, grote vertragingen, slechte communicatie bij lastminutewijzigingen. [1] De stiptheidsproblemen die de Nationale Maatschappij der Belgische Spoorwegen (NMBS) ondervindt worden duidelijk geïllustreerd door een onderzoek van de BTTB voor het jaar 2007: De Bond van Trein-, Tram- en Busgebruikers (BTTB) en zijn Franstalige tegenhanger Association des Clients des Transports Publics (ACTP) stellen vast dat de stiptheid van de treinen erop achteruit gaat: 65% van de meer dan geregistreerde treinritten verliep met vertraging. [2] Een dergelijk gebrek aan stiptheid is allerminst nieuw, dit mag blijken uit een verslag van de plenaire zitting van de senaat op 29 oktober 1998 waarbij mevrouw Jeanmoye de bevoegde minister van vervoer (minister Daerden) interpelleert over de vertragingen bij de Nmbs: Op 28 mei reeds hebben wij u geïnterpelleerd over de vertragingen bij de NMBS. De situatie is er sindsdien niet op verbeterd en er komt meer en meer protest van de reizigers. U kondigt financiële sancties aan ten aanzien van de NMBS in verhouding tot het percentage vertragingen van meer dan vijf minuten. Door die vertragingen dreigen de gebruikers het openbaar vervoer de rug toe te keren, zodat de files op onze wegen nog zullen toenemen. [3] Uit bovenstaande mag blijken dat de stiptheid van de treinen een groot pijnpunt is van de NMBS. De NMBS berekent zelf ook de stiptheidscijfers van de treinen. Sinds dit jaar werd beslist om deze cijfers per trimester bekend te maken. 1 Op een specifieke manier houdt Infrabel (de onafhankelijke infrastructuurbeheerder van het Belgische spoorwegnet) de vertragingen en de oorzaken van de vertragingen bij. 1 Voorheen gebeurde dit per jaar. 1

9 Hoofdstuk 1. Inleiding 2 Er worden een aantal parameters bijgehouden. Allereerst is er het globale stiptheidcijfer. Dit stiptheidcijfer is gebaseerd op de gemeten vertraging in het eindstation van een bepaalde lijn. Hiernaast heeft Infrabel dit jaar ook besloten rekening te houden met eventuele weggewerkte of opgelopen vertragingen die zich tijdens de treinreis hebben voorgedaan, omdat deze betrekking hebben op de reizigers die uitstappen vóór het eindstation. Als gevolg hiervan meet Infrabel de stiptheid ook tijdens de treinreis, weliswaar slechts in 93 meetpunten op het treinnetwerk. Ook heeft Infrabel een methode uitgewerkt om de stiptheidsgraad te linken aan het aantal reizigers aan boord van de trein. Door deze methode wordt de vertraging van een trein met vele reizigers anders behandeld dan de vertraging van een trein met minder reizigers. De treinen worden in vier groepen onderverdeeld en gewogen op basis van hun aankomstuur en hun reisweg. De vier groepen zijn de volgende: 1. tijdens het spitsuur in Brussel 2. tijdens het spitsuur in Antwerpen-Centraal, Gent-Sint-Pieters, Charleroi-Zuid of Luik-Guillemins 3. tijdens het spitsuur in de rest van het land 4. tijdens de daluren en in het weekend in het hele land Naast het globale stiptheidscijfer wordt er ook rekening gehouden met het aantal verzekerde aansluitingen. Aangezien veel reizigers op een andere trein moeten overstappen om hun bestemming te bereiken, heeft Infrabel ervoor gekozen om het aantal geslaagde aansluitingen te meten. In de 10 voornaamste overstapstations (volgens Infrabel) van het land wordt nagegegaan hoeveel voorziene aansluitingen (met een overstaptijd van minstens 4 minuten en maximum 20 minuten) er daadwerkelijk worden gehaald. In deze meting beschouwt men de volgende stations: Antwerpen-Centraal, Bergen,Brugge, Charleroi, Gent-Sint-Pieters, Leuven, Luik, Mechelen, Namen en Zottegem. Ondanks de recente inspanningen die de NMBS lijkt te doen om nauwkeurigere en transparantere informatie te verschaffen inzake stiptheid, kunnen we ons de vraag stellen of de door de NMBS verschafte cijfers effectief een reëel beeld schetsen van de werkelijke vertragingen. Het is immers zo dat Infrabel vertragingen pas effectief meerekent indien de trein meer dan vijf minuten vertraging heeft bij aankomst [4]. Bovendien valt de vertraging enkel gedetailleerd te raadplegen voor de acht volgende verbindingen: 1. IC A Oostende-Eupen 2. IC B Brussel-Amsterdam 3. IC C Antwerpen-Kortrijk 4. IC D Herstal-Doornik 5. IC E Knokke / Blankenberge - Hasselt / Tongeren 6. IC J Brussel-Luxemburg 7. IC H Schaarbeek-Moeskroen 8. IC I Antwerpen - Charleroi

10 Hoofdstuk 1. Inleiding 3 Voor de vele kleine treinverbindingen wordt er dus geen gedetailleerde informatie vrijgegeven. Daarenboven is het globale stiptheidscijfer ook minder relevant voor treinreizigers op de kleinere verbindingen, aangezien deze zoals al aangegeven, minder wegen bij de stiptheidsmeting. Vanuit die optiek dachten we dat het interessant was een webapplicatie te ontwikkelen die het moest mogelijk maken om zonder onderscheid de vertragingen op specifieke reizigertrajecten te meten. In deze applicatie kan er informatie in verband met vertragingen opgevraagd worden voor zowel tussenstations als eindstations. Bovendien moet deze applicatie ook voor de kleinere lijnen specifieke vertragingsinformatie kunnen weergeven. Hoe dan ook is het een feit dat de treinvertragingen veel reizigers bezighouden. Dit blijkt alleszins wanneer we enkele sites op het net bekeken. Zo bestaan er toch enkele blogs die hun belevenissen als treinreiziger delen met de rest van de wereld. Hierbij bemerken we vaak ook speciale aandacht voor de vertragingen waarmee men als reiziger wordt geconfronteerd. Op be bijvoorbeeld beschrijft de auteur vrij regelmatig hoeveel vertragingen hij op zijn trajecten heeft ondervonden. Ook andere bloggers (http://oomss.wordpress.com/, be/fr_perrongeluk.html) vergeten de opgelopen vertragingen allerminst te vermelden. Door het ontwikkelen van deze applicatie hopen we een gecentraliseerd overzicht te kunnen verkrijgen van de Belgische treinvertragingen. Het idee zelf is niet nieuw. We merkten immers dat er in Nederland reeds een website bestaat waarop treinreizigers hun vertragingen kunnen registreren (http://www.treinvertragingen.nl). Deze site lijkt ons echter te beperkt uitgewerkt om een relevant beeld te schetsen van de werkelijke treinvertragingen. In onze webapplicatie wensten we toch heel wat meer functionaliteit aan te bieden. 1.2 Het gebruik van een Content Management Systeem We opteren ervoor gebruik te maken van een web content management systeem (CMS). Een dergelijk systeem laat het toe om op een relatief eenvoudige wijze websites te bouwen en zo gegevens op het internet te publiceren. Douglas, Little en Smith formuleren het als volgt: A content management system, or CMS, is an application that can be used to deal with various methods of web publishing. A CMS can generally be customized by adding or removing specific features, so that the end result is only those features that you want for your community. Features included with a CMS can include file management, photo galleries, private messaging, discussion forums, articles, polls, and much more... [5] Voor onze webapplicatie wensen we gebruik te maken van een CMS omwille van de reeds ingebouwde nuttige functionaliteit in een dergelijk systeem. De ingebouwde mogelijkheden van een dergelijk systeem lijken ons van pas te komen bij de uitbouw van onze website. Onze bedoeling is immers het ontwikkelen van een door de gebruiker aangedreven applicatie waarbij later op eenvoudige wijze extra functionaliteiten zoals een forum, blogs of nieuwsberichten kunnen toegevoegd worden. Een CMS biedt het voordeel dat heel wat van deze functionaliteiten reeds standaard aanwezig zijn wat het in de toekomst makkelijker zal maken om de website verder te ontwikkelen. Een dergelijk systeem biedt voorts het voordeel dat we er van uit kunnen gaan dat de geïmplementeerde functionaliteiten degelijk getest zijn en dus ook goed werken.

11 Hoofdstuk 1. Inleiding Drupal Voor ons eindwerk hebben we specifiek gebruik gemaakt van het Drupal content management systeem. Dit CMS laat toe op een eenvoudige manier inhoud (zoals teksten, afbeeldingen, bestanden en audio) te beheren en te publiceren op het web. Het is een platform dat kan uitgebreid worden met verscheidene al dan niet zelf geschreven modules. Drupal bevat bovendien ook een aantal API s die webdevelopers toelaten op een efficïente en snelle wijze webapplicaties te bouwen. Drupal is een open source systeem 2, dat zijn oorsprong vindt in een kleine nieuwssite opgericht door Dries Buytaert in het jaar Deze nieuwssite die bedoeld was om met kotgenoten te communiceren evolueerde langzaam maar zeker tot het content management zoals we het de dag van vandaag kennen 3. Het wordt gekenmerkt door de grote gemeenschap van gebruikers en developers die ervoor zorgen dat dit systeem blijft bestaan en verder evolueert. Drupal dat beschikbaar is onder de GNU General Public License [6] blijkt heden ten dage in de lift te zitten, steeds meer websites worden er immers mee opgebouwd. Bekende websites die gebruik maken van Drupal zijn ondermeer deze van Acquia 4, Amnesty International, Ubuntu, MTV UK... Een belangrijke reden die onze keuze voor Drupal bepaalde, is het open source karakter van dit systeem. Er waren echter ook andere zaken die onze voorkeur bepaalden. Zo bleken de mogelijkheden van Drupal heel uitgebreid. Ondanks de relatief kleine basis van dit systeem in vergelijking met andere CMS en 5, bleek Drupal toch heel krachtig. Hoewel we een zekere aanpassingsperiode nodig hadden om te wennen aan het CMS, kwam de structuur van het systeem ons al gauw als vrij logisch over. Door het systeem van modules leek het ons dan uiteindelijk interessant om de applicatie, die wij wensten te ontwikkelen, binnen Drupal te integreren. Een groot voordeel bij Drupal leek ons ook het feit dat er reeds een grote gemeenschap is ontstaan rond dit systeem, wat toch duidt op een zekere betrouwbaarheid. Bovendien kon deze gemeenschap ons van pas komen indien we problemen ondervonden tijdens het ontwikkelen van onze webapplicatie binnen de Drupalomgeving. Alvorens we definitief besloten Drupal te gebruiken, informeerden we ons toch nog over enkele andere open source systemen zoals Joomla [7] en CakePHP [8]. Dit laatste is meer een PHP-framework 6 dat gebruik maakt van het model-view-controller model 7. Op zich leek dit wel een degelijk systeem, maar we misten een beetje de functionaliteiten die je bij een CMS standaard hebt. Joomla en Drupal leken ons qua opzet vrij gelijkaardig. Uiteindelijk werd de keuze voor Drupal bepaald door het meer gemeenschapsgerichte karakter van dit systeem, aangezien onze webapplicatie zich toch op een zekere gemeenschap van treingebruikers zal richten. Bovendien hadden we het gevoel dat Drupal misschien toch ook iets meer mogelijkheden biedt dan Joomla. Vooral naar gebruikersbeheer toe leek Drupal ons interessanter. Misschien werd onze keuze ook wel enigszins beïnvloed door chauvinistische motieven. Het feit dat Drupal opgericht is door een Belgische student die zijn doctoraat behaalde aan de Universiteit van Gent pleitte immers zeker niet in het nadeel van dit CMS. Dit neemt echter niet weg dat Drupal gewoon een uitstekend systeem is dat zeer goed aansluit bij hetgeen wij voor ogen hadden. 2 Volgens Van Dale: software waarvan de broncode voor iedereen beschikbaar is en door iedereen te veranderen.[9] 3 Meer informatie over de geschiedenis van Drupal: 4 Een in Boston gevestigd bedrijf dat opgericht werd eind 2007 dat professionele, commerciële Drupal ondersteuning zal aanbieden in de vorm van diensten en software. Eén van de co-founders is Dries Buytaert. 5 Zo is het aantal lijnen code bij Drupal beduidend kleiner dan bij Joomla. 6 PHP: Hypertext Preprocessor. 7 Structuur (of patroon) dat het ontwerp van complexe toepassingen opdeelt in drie eenheden met verschillende verantwoordelijkheden: Datamodel (Model), Datapresentatie (View) en Applicatielogica (Controller). Het scheiden van deze verantwoordelijkheden bevordert de leesbaarheid en herbruikbaarheid van code.[10]

12 Hoofdstuk 1. Inleiding Het Drupalframework Drupal is ontstaan vanuit het idee dat dit systeem moest kunnen draaien op goedkope webhosting. Anderzijds was het wel de bedoeling een systeem te ontwerpen dat ook complexe, uitgebreide websites kon ondersteunen. De opbouw van het systeem moet dan ook vanuit deze optiek bekeken worden [11] De Drupal technologie stack De technologie stack van Drupal bestaat uit vier componenten: de programmeertaal de databank de webserver het besturingssysteem Drupal draait perfect op de LAMP stack. LAMP is een acroniem van het besturingssysteem Linux, de webserver Apache, de databaseserver MySQL en de scripttaal PHP [12]. Het is Open Source software die vaak samen gebruikt worden om dynamische websites te draaien. Deze LAMP stack is uitgegroeid tot van de meest gebruikte Webplatformen. Drupal ondersteunt echter niet alleen de software van de LAMP stack. Zo kan gelijk welke webserver die ook ondersteuning biedt aan PHP, Drupal ondersteunen. Ook het gebruik van Apache als webserver of MySQL als databank is niet verplicht. De scripttaal PHP is wel essentieel voor Drupal. Dit Content Management Systeem is immers geschreven in PHP. Aangezien deze scripttaal vrij eenvoudig te leren valt, is veel code geschreven door beginners en bijgevolg is de kwaliteit hiervan dan ook niet altijd aanvaardbaar. Toch kan PHP gebruikt worden om goede code te schrijven. Zo is alle kerncode van Drupal geschreven volgens strikte programmeerstandaarden. Voorts dient nog vermeld dat de Drupal een databankabstractielaag aanbiedt waarmee er kan gecommuniceerd worden met de databank. Deze abstractielaag past de SQL-queries aan zodanig dat verschillende soorten databanken kunnen gebruikt worden, zonder dat de code dient aangepast te worden. De meest geteste databanken hiervoor zijn MySQL en PostgreSQL De Drupal core Een licht maar krachtig framework vormt de core van Drupal. Deze core verzorgt de basisfunctionaliteit die gebruikt wordt om andere delen van het systeem te ondersteunen. De core omvat code die het Drupal systeem toelaat te reageren wanneer het een request ontvangt en een bibliotheek met vaak gebruikte functies zoals drupal set message() of form set error(). Tot slot zijn in deze core ook de modules vervat die basisfunctionaliteit zoals taxonomie 8 en gebruikersbeheer bieden Administratieve interface De administratieve interface in Drupal is sterk geïntegreerd met de rest van de Drupalsite. De eerste gebruiker die zich registreert wordt automatisch beheerder en verkrijgt aldus volledige toegang tot de website. Na het inloggen als gebruiker, verschijnt er een beheerderslink binnen het gebruikersblok. Door hierop te klikken komt de gebruiker in het administratief gedeelte van de website. 8 Dit is Drupals systeem om inhoud onder te verdelen in categoriën.

13 Hoofdstuk 1. Inleiding Nodes Inhoudstypes in Drupal zijn allemaal afgeleid van één basistype dat aangeduid wordt als een node. Alle inhoudstypes, of het nu een blog of een nieuwsbericht is, bestaan uit eenzelfde onderliggende datastructuur. Een dergelijke opbouw bevordert het toevoegen van functionaliteit aan verschillende types inhoud. Nodes bevatten ook een aantal vaste gedragseigenschappen die alle inhoudstypes overerven. Zo kan bijvoorbeeld gelijk welke node op de voorpagina weergegeven worden Modules Drupal is modulair opgebouwd wat inhoudt dat de functionaliteit van dit systeem vervat zit in modules, die ingeschakeld of uitgeschakeld kunnen worden 9.Dit heeft als voordeel dat de beheerder eenvoudig zelf kan bepalen hoeveel functionaliteit er wordt toegevoegd aan de website. Drupal maakt gebruik van het inversion of control ontwerp mechanisme. Het basisprincipe hierbij is dat het framework op de hoogte is van de modulaire functionaliteit en deze zelf aanroept wanneer dit nodig blijkt [13]. Om dit principe te kunnen verwezenlijken wordt er in Drupal gebruik gemaakt van zogenaamde hooks Hooks Het Drupal module systeem is gebaseerd op het concept van hooks [14], die beschouwd kunnen worden als interne Drupal events. Bij het schrijven van een module moeten de benodigde hooks geïmplementeerd worden. Deze laten de modules toe te communiceren met de Drupal core. Als Drupal de interventie wenst van modules, zal het framework controleren welke modules een specifieke hook implementeren en voor elke module in de resulterende verzameling de betreffende hook opvragen. Voorbeeld 1.1. Een hook die heel vaak gebruikt werd in onze module is hook validate(). Deze wordt gebruikt om na te gaan of een bepaalde node geldig is. Als we in onze module een webformulier willen aanmaken kunnen we volgende functienaam gebruiken om deze pagina te definiëren: traject ingeven(). Als we nu willen maken dat Drupal deze functie ook effectief valideert moeten we een hook gebruiken. Deze hook wordt in dit geval gecreëerd door volgende functie: traject ingeven validate(). Indien deze validatehook toegevoegd is zorgt dit ervoor dat na het indrukken van een submitknop de invoer van het webformulier eerst gevalideerd wordt in de validatiefunctie alvorens over te gaan naar de hook submit functie. (die in dit geval de naam traject ingeven submit() zou hebben.) Indien de validatie faalt kan de ontwerper aan de hand van de form set error-functie ervoor zorgen dat er een foutboodschap op het scherm verschijnt en dat er dus niet overgegaan wordt naar de submitfase. De gebruiker blijft dan op de pagina van gegevensinvoer. 9 Met uitzondering dan van enkele core modules die essentieel zijn om de goede werking van de website te handhaven.

14 Hoofdstuk 1. Inleiding Drupal- en PHP-functionaliteit Gebruik van de Drupal-functionaliteit Opbouw van de module Het opbouwen van onze modules gebeurde op basis van een tutorial op de Drupalwebsite die zich specifiek richtte op het creëren van modules. Bij het creëren van onze module maakten we dan ook gebruik van heel wat ingebouwde Drupalfuncties. Zo gebruikten we een eerste functie om de permissies in te stellen voor onze module. Ook heel wat uitleg die op de verschillende pagina s staat, wordt in het begin van de module gedefinieerd in een specifieke helpfunctie die standaard aanwezig is. Ook de verschillende menu-items, met de juiste verwijzingen naar de verscheidene pagina s, kunnen met behulp van een standaardfunctie geïmplementeerd worden. Overigens zijn de aangemaakte pagina s in feite allemaal specifieke functies die opgeroepen worden door de voorheen gedeclareerde menu-items. In die menu-items wordt dan ook telkens aangeduid welke authenticatierechten vereist zijn om dit specifieke menu-item te kunnen raadplegen. Voorts kan er nog ingesteld worden of een menu-item effectief dient weergegeven te worden, waar het menu-item moet geplaatst worden en of een menu-item het kind of de ouder is van een ander menu-item. Specifieke functies Naast de meer algemene functies die we nodig hadden om een basismodule op te bouwen maakten we gebruik van meer specifieke functies om de module te creëren naar de vooropgestelde behoeften. Zo moesten er heel wat formulieren aangemaakt worden. Voor deze webformulieren maakten we geen gebruik van standaard HTML-code. De webformulieren werden immers aangemaakt met behulp van de ingebouwde formfuncties die door de forms api beschreven worden [15]. Niet alle mogelijkheden van deze forms zijn altijd even goed beschreven op de Drupalwebsite, toch slaagden we erin de benodigde form-functionaliteiten op een consistente manier te implementeren in de modules. De gegevensinvoer van de webformulieren diende veelal om informatie op te vragen of in te voeren van de Drupaldatabank. Hiervoor werd gebruik gemaakt van SQL-statements die voldeden aan de vereisten van Drupal. Een functie waarvan we ook vaak gebruik maakten is de drupal set message-functie. Deze liet ons toe op een eenvoudige wijze een statusbericht of foutmelding weer te geven. Een gelijkaardige functie is de form set error-functie die specifiek bedoeld is voor het genereren van foutboodschappen bij webformulieren. Voorts werd ook gebruik gemaakt van een batch die toeliet gegevens uit een CSV-bestand te importeren. Dit is het geval bij de optie stationsbeheer in de beheerssectie van de website. Ook werd de animatie van deze batch gebruikt bij het invoeren van de vertraging en het opvragen van de specifieke grafieken 10. Tot slot dienen we ook nog de Javascript-functie tableselect te vermelden die we gebruikten binnen het menu Vertragingsbeheer. Ook deze functie was standaard aanwezig in Drupal en laat toe alle aanwezige checkboxes te selecteren. 10 Deze animatie werd om esthetische redenen toegevoegd. Het opvragen van de trajecten lijkt volgens ons op die manier dynamischer over te komen.

15 Hoofdstuk 1. Inleiding 8 Mollom Naast de core modules die standaard aanwezig zijn in Drupal installeerden we ook nog de Mollommodule [16]. Mollom is een platform waarbij nagegaan wordt of de ingevoerde gegevens op een website spam (ongeweste post) of ham (gewenste post) zijn. Het is mogelijk dat dit systeem niet zeker is of de gegevensinvoer gewenst of ongewenst is. Vervolgens zal Mollom de analyse van de postgegevens terugsturen naar de website. Indien een post gemarkeerd wordt als Ham, zal deze door de website geaccepteerd worden. Indien gemarkeerd als Spam zal de website de post verwerpen. In het geval van onzekerheid zal Mollom een captcha-afbeelding meesturen om na te gaan of de gebruiker geen spambot is [17]. Het systeem biedt een aantal duidelijke voordelen. De controle op de gebruikersinvoer gebeurt extern bij Mollom. Indien er toch spam toegelaten wordt op je website kan dit gemeld worden aan Mollom. Hierdoor verkrijgt Mollom heel wat data waardoor er een goede gewogen beslissing kan gemaakt worden of de gebruikersinvoer als hetzij Spam hetzij Ham moet gemarkeerd worden [17]. Deze module leek ons vooral interessant voor controle bij de gebruikersregistratie. Ook in een latere fase, wanneer we een forum of iets dergelijks zouden willen installeren, kan deze Mollom-module zeker van pas komen PHP-functies Aangezien Drupal geschreven is in PHP, hebben we onze modules veelvuldig gebruik gemaakt van PHP-functies [18]. In onderstaande tabel geven we een overzicht van een aantal door ons frequent gebruikte PHP-functies. We vermelden enkel de functie-naam (zonder argumenten) en een korte beschrijving. Functie mktime date time strtotime empty explode implode split list isset db fetch array Omschrijving zet een tijdstip om naar een UNIX timestamp zet een timestamp om naar een te specificeren tijdsformaat geeft de huidige tijd in timestamp-formaat terug zet een tijdsformaat om naar een UNIX timestamp geeft true of false terug als een array al dan niet leeg is splitst een string op basis van een karakterreeks op in een array van strings voegt een array samen tot een string met een bepaalde string als lijm zet een string a.d.h.v. een reguliere uitdrukking om in een array kent de elementen van een array toe aan gespecificeerde variabelen geeft true of false terug als een (sessie)variabele al dan niet gedeclareerd is gegevens uit een database worden opgehaald en in een array geplaatst Tabel 1.1: Veel gebruikte PHP-functies.

16 Hoofdstuk 1. Inleiding Opbouw van de scriptie In deze scriptie zullen we eerst de opbouw van de ontwikkelde webapplicatie bespreken. Hierbij worden eerst de gewenste doelstellingen van de applicatie aangegeven, waarna er meer aandacht komt voor de specifieke noden van de gebruiker en de beheerder. Daarnaast wordt er ook kort aandacht besteed aan de betrouwbaarheid van de gegevens die gebruikt worden. Tot slot wordt in dit hoofdstuk, aan de hand van een use-case diagram, de verschillende mogelijkheden van de ontworpen applicatie beknopt besproken (zie Hoofdstuk 2). Het hier opvolgende hoofdstuk richt zich dan specifiek naar de applicatie zelf. Na een overzicht van de databankstructuur worden de mogelijkheden van de applicatie, voor zowel gebruiker als beheerder, uitgebreid toegelicht (Hoofdstuk 3). Tot slot wordt aangegeven in hoeverre de applicatie aan de oorspronkelijke doelstellingen voldoet waarbij ook de eventuele toekomstige ontwikkelingen vermeld worden.

17 Opbouw van de applicatie Doelstelling Het doel van onze webapplicatie is tweeledig. Ten eerste is het de bedoeling dat de treinreiziger aan de hand van de ingegeven vertragingen en afschaffingen een beeld krijgt van de werkelijke reisduur op een bepaald traject. Hoe meer mensen actief gebruik maken van de applicatie, hoe realistischer dit beeld zal zijn. Een pendelaar kan dan, aan de hand van de verkregen informatie over zijn voorkeurstraject, eventueel opteren om een vroegere of latere trein te nemen. De applicatie verschaft met andere woorden additionele info over een traject, die de NMBS zelf niet vrijgeeft. Ten tweede is het de bedoeling om de persoonlijke statistieken van een pendelaar bij te houden, al dan niet met het oog op compensaties van de NMBS. Door die gegevens op te slaan en nadien ook te tonen in tabellen en grafieken, krijgt de gebruiker een duidelijk overzicht van zijn opgelopen vertragingen, afschaffingen en van zijn reisgedrag in het algemeen. 2.2 Vereisten De vereisten voor de applicatie zijn afhankelijk van de functie van de gebruiker, in dit kader ook wel actor genoemd. Enerzijds is er de gebruiker, waarbij we nog een onderscheid maken tussen de geregistreerde (actieve) gebruiker 1 en de niet-geregistreerde (passieve) gebruiker. Anderzijds is er de beheerder, die het geheel moet coördineren. We bespreken de noden van deze twee actoren dan ook afzonderlijk. Verder heeft de applicatie, onafhankelijk van de actoren, ook een aantal vereisten. We denken hierbij bijvoorbeeld aan de interactie met de NMBS-website. Aan de hand van de vereisten die in de volgende sectie besproken worden, stellen we vervolgens een use-case diagram op (zie Sectie 2.3). Dit schematisch overzicht vormt het skelet van de applicatie. De verschillende onderdelen van het diagram worden ten slotte kort besproken. Voor de specifieke vereisten beschreven worden, overlopen we eerst de gebruikte terminologie; Lijn: Met een (spoor)lijn wordt een aantal stations bedoeld die met elkaar verbonden zijn door een spoorweg. Alle Belgische spoorlijnen zijn genummerd; zo verbindt bijvoorbeeld lijn 50A Brussel met Oostende, met o.a. Gent-Sint-Pieters, Landegem, Hansbeke en Bellem als tussenstations [19]. Het begin- en eindstation van deze lijn is respectievelijk Brussel-Zuid en Oostende. 1 Een geregistreerde gebruiker die niet ingelogd is heeft uiteraard dezelfde toegangsrechten als een niet-geregistreerde gebruiker. 10

18 Hoofdstuk 2. Opbouw van de applicatie 11 Traject: Aangezien de term traject frequent gebruikt wordt in de bespreking, is het van belang om duidelijk te stellen wat wij daaronder term verstaan. Algemeen is een traject de weg die de pendelaar tussen vertrek- en aankomststation per trein aflegt. Als de treinreiziger onderweg één of meerdere keren moet overstappen, spreken we van een onrechtstreeks traject, in het andere geval van een rechtstreeks traject. Bij een onrechtstreeks traject (met overstappen dus) wisselt de pendelaar met andere woorden van lijn. Omdat we in het vervolg het vooral over trajecten zonder overstappen zullen hebben, vermelden we voor de eenvoud rechtstreeks niet altijd. Indien een onrechtstreeks traject besproken wordt, zal dit steeds nadrukkelijk vermeld worden. Traject- of treindetails: Met behulp van de trajectdetails kan door de applicatie een onderscheid gemaakt worden tussen de verschillende rechtstreekse trajecten. We beschouwen de volgende details: Vertrek- en aankomststation Vertrek- en aankomstdatum Vertrek- en aankomstuur Reisduur Treinsoort De verschillende treinsoorten die de NMBS onderscheidt 2 zijn de volgende [20]: IC: InterCity; exprestrein die alleen op de allerbelangrijkste stations stopt. IR: InterRegio; exprestrein die op de belangrijkere stations stopt. L: Lokale trein; stopt op (bijna) alle stations. CR: CityRail; voorstadstrein rond Brussel, stopt op de meeste stations. P: Piekuurtrein; trein die enkel tijdens de piekmomenten spoort. ICT: Toeristentrein: trein die rijdt op piekmomenten naar toeristische bestemmingen. Trajectspecificatie: Hieronder verstaan we de hoeveelheid invoer die de applicatie van een gebruiker vergt om een traject te specificeren aan de hand van de trajectdetails. Zoals verder besproken wordt, hoeft de gebruiker niet eigenhandig alle trajectdetails in de geven. Trajectregistratie: Dit is de ingevoerde vertraging of afschaffing die door een bepaalde geregistreerde gebruiker werd ingevoerd. Trajectinformatie: Hiermee bedoelen we het geheel van de trajectregistraties binnen een beschouwde periode van een bepaald traject. Opmerking 2.1. Aan de hand van de voorbeeldlijn 50A maken we volgende belangrijke opmerking; de (rechtstreekse) trajecten Oostende - Landegem en Oostende - Bellem worden als afzonderlijke trajecten beschouwd, ook al zijn ze onderdeel van dezelfde lijn en hebben ze gemeenschappelijke stations. Een rechtstreeks traject wordt namelijk bepaald door de trajectdetails, en de twee beschouwde trajecten hebben een verschillend eindstation (Landegem en Bellem respectievelijk). 2 De Extra-treinen die ingezet worden bij festivals, concerten en andere evenementen laten we buiten beschouwing.

19 Hoofdstuk 2. Opbouw van de applicatie Gebruikersvereisten We beginnen deze sectie met twee voorbeelden om de vereisten voor de gebruiker in te verduidelijken. Voorbeeld 2.1. Een gebruiker heeft op 05/05/2008 het traject Oostende - Aalter afgelegd. De ICtrein van 16.05u u (reisduur 26 min.) is met 5 minuten vertraging aangekomen te Aalter. De gebruiker wil zijn opgelopen vertraging registreren en hij wil nadien ook al zijn trajectregistraties kunnen opvragen. Voorbeeld 2.2. Een pendelaar wil volgend weekend met de trein naar zee (traject Gent-Sint-Pieters - Knokke). Hij zou willen weten wat de gemiddelde vertragingen zijn van de treinen die rond 10 uur vertrekken. Indien het traject kan afgelegd worden met verschillende treinsoorten, wil hij die ook kunnen vergelijken met elkaar. Vertragingen/afschaffingen ingeven Een gebruiker moet op een gebruiksvriendelijke manier opgelopen vertragingen en afschaffingen kunnen ingeven. Hiermee bedoelen we het volgende: Minimale invoer: De applicatie mag niet enkel toegankelijk zijn voor de doorwinterde pendelaar, ook de occasionele treinreiziger moet op eenvoudige wijze trajectinformatie kunnen ingeven. We gaan er met andere woorden vanuit dat de gebruiker die een vertraging/afschaffing wil invoeren trajectdetails zoals treinsoort en excact vertrek- en aankomstuur niet uit het hoofd kent. Het absolute minimum aan informatie dat een gebruiker van onze applicatie dient te weten is het vertrek- en eindstation 3 en de datum, met bijhorend richttijdstip, waarop de trein gespoord heeft. Met richttijdstip bedoelen we een tijdstip omstreeks het exacte vertrektijdstip van de trein. Minimale invoertijd: Het aantal pagina s dat een gebruiker moet doorlopen tot zijn vertraging/afschaffing geregistreerd wordt, dient tevens beperkt te blijven. Foutieve invoer: De gebruiker moet de mogelijkheid hebben om, zowel tijdens als na het registratieproces, foutieve invoer te corrigeren. Tijdens de registratie moet de gebruiker bijvoorbeeld kunnen terugkeren naar een vorige pagina, nadien moet de ingegeven vertraging kunnen gewijzigd worden. Gegevens opvragen Aangezien de applicatie als doel heeft trajectinformatie te bekomen, is de gegevensweergave een belangrijk onderdeel van het gebruikersgedeelte. Er moet hierbij met een aantal aspecten rekening gehouden worden: Invoer: Als de gebruiker informatie over de vertragingen en afschaffingen van een bepaald traject wil opvragen, moet het traject eerst gespecificeerd worden. Zoals bij een vertraging of afschaffing ingeven mag die specificatie niet te veel tijd kosten. Het is tevens aan te raden dat de gegevensopvraging in de mate van het mogelijke analoog is aan de gegevensregistratie. We bedoelen hiermee dat een gebruiker die reeds een vertraging of afschaffing heeft geregistreerd in staat moet zijn om zonder problemen vertragingsgrafieken op te vragen, en omgekeerd. 3 Door de autocomplete-functie (zie Sectie 3.2.1) is het zelfs niet nodig om de volledige stationsnaam te kennen.

20 Hoofdstuk 2. Opbouw van de applicatie 13 Privacy: De privacy van de gebruiker moet bewaard blijven; gebruikers mogen geenszins informatie over de andere geregistreerde gebruikers kunnen opvragen. Trajectinformatie dient dus anoniem weergegeven te worden 4. Persoonlijke registraties: Een gebruiker moet de mogelijkheid hebben om enkel zijn persoonlijke trajectregistraties te bekijken. Dit is een eerste reden om te stellen dat gebruikers zich eerst moeten registreren alvorens vertragingen/afschaffingen in te kunnen geven. Passieve gebruikers, die enkel trajectinformatie willen opvragen, hoeven uiteraard niet geregistreerd te zijn. Dataspecificatie: Bij de weergave van trajectinformatie moeten de parameters (tijdsinterval, labels van de assen) duidelijk gespecificeerd worden. De gebruiker moet ook de mogelijkheid hebben om een aantal van die parameters (zoals weergave, de beschouwde periode) zelf aan te passen. Datavisualisatie: De gebruiker heeft baat bij een relevante en visueel aantrekkelijke datavisualisatie. Daarom is het belangrijk om de opgevraagde trajectinfomatie op een aantal verschillende manieren weer te geven, door middel van grafieken, diagrammen en tabellen. Het ophalen en verwerken van de gegevens mag niet te veel tijd kosten. Het is beter dat de visualisaties tevens geen bijkomende installaties 5 van de gebruiker vergen. Bovenstaande vereisten zorgen ervoor dat de al dan niet geregistreerde gebruiker vlot met de applicatie overweg moet kunnen. De taak van de beheerder bestaat er dan in om de invoer van de verschillende gebruikers in goede banen te leiden. We bespreken dit in de volgende sectie Beheerder-requirements De beheerder fungeert als moderator; aangezien de applicatie gebaseerd is op gebruikersinvoer, is het noodzakelijk om in de mate van het mogelijke misbruik of foutieve invoer tegen te gaan. Voorts moet de beheerder in staat zijn updates (beveiliging, nieuwe CMS-versie, enz..) door te voeren, zonder hiervoor op de hoogte te moeten zijn van de broncode van de module. We bespreken kort de benodigdheden waarover de beheerder moet beschikken om zijn taak naar behoren te volbrengen. Probleemstellingen Zoals reeds gezegd moet een gebruiker zich eerst registreren voor hij vertragingen of afschaffingen kan ingeven. Op die manier kunnen de ingaven specifiek per gebruiker bijgehouden worden. Er kunnen zich een aantal probleemscenario s voordoen die beheerder efficiënt moet kunnen oplossen. We illustreren dit aan de hand van een aantal voorbeelden. Voorbeeld 2.3. Een gebruiker heeft een vertraging ingegeven voor een specifiek traject waarvoor reeds vertragingen werden geregistreerd. De beschouwde vertraging wijkt echter heel wat af van hetgeen andere gebruikers hebben ingevoerd. De beheerder wil alle registraties voor dit traject bekijken om aan de hand daarvan te afwijkende vertraging al dan niet goed te keuren. 4 Zoals verder besproken wordt, kunnen geregistreerde gebruikers wel enkel hun persoonlijke registraties bekijken. 5 We doelen hierbij op bv. flash-grafieken.

21 Hoofdstuk 2. Opbouw van de applicatie 14 Voorbeeld 2.4. Gebruiker A heeft een traject als afgeschaft geregistreerd, terwijl gebruiker B voor hetzelfde traject reeds een vertraging had ingegeven. De beheerder wil nagaan of er nog gebruikers een vertraging of afschaffing voor het beschouwde traject geregistreerd hebben. Indien er (bvb.) 6 verschillende gebruikers een vertraging ingevoerd hebben, wil de beheerder de afschaffing ingegeven door gebruiker A verwijderen. De vereisten om als beheerder bovenstaande problemen op te lossen zijn de volgende: Conflicterende invoer: Indien een aantal gebruikers een vertraging ingeven voor dezelfde trein, wordt voor de vertragingsgrafieken het gemiddelde berekend. Waarden die niet binnen een statistisch verantwoord interval van dat gemiddelde liggen (zie Sectie 3.2.4), moeten door de beheerder opgevraagd en geëvalueerd kunnen worden. Hetzelfde geldt voor conflicterende afschaffingen en vertragingen; als de ene gebruiker een bepaalde trein als afgeschaft opgeeft en een andere voert voor diezelfde trein een vertraging in, moet de beheerder de ingaven voor dat traject kunnen analyseren. Gebruikersbeheer: Een gebruiker kan om allerlei redenen malafide data ingeven 6. De beheerder moet daarom alle invoer van een bepaalde geregistreerde gebruiker kunnen bekijken en in het slechtste geval de ingegeven data verwijderen en die persoon blokkeren. Updates De beheerder moet tevens in staat zijn aanpassingen door te voeren om de website up to date te houden. Vooral beveiligingsupdates zijn van cruciaal belang voor de correcte werking van de applicatie. Het is met andere woorden belangrijk om over een goed content management systeem te beschikken, waarmee de beheerder zonder al te veel voorkennis overweg kan. Momenteel zijn wij nog de beheerders, maar in de toekomst zou het beheer even goed aan iemand anders kunnen overgelaten worden Applicatie-architectuur Interactie met de NMBS De beheerder moet in principe zijn taak kunnen uitvoeren zonder kennis van de broncode van de applicatie; gegevensverwerking, gegevensweergave, registratie, enz... gebeurt allemaal in de black box van de applicatie. Eén van de belangrijkste componenten hierbij is de interactie met de NMBSwebsite. De gebruiker moet, als hij een vertraging of afschaffing wil ingeven, kunnen kiezen uit trajecten van de huidige dienstregeling van de NMBS. Hoe dit gebeurt is voor de gebruiker niet van belang, de informatie moet alleen up to date zijn. Gegevensopslag De invoer van de gebruiker moet op een effectieve manier bijgehouden worden in een databank. Hiermee bedoelen we dat er geen data dubbel mag opgeslagen worden. Een MySQL-database, in combinatie met PHP wordt veel gebruikt bij webapplicaties zoals de onze. 6 Een gefrustreerde pendelaar kan bijvoorbeeld een tiental minuten bij zijn opgelopen vertraging tellen.

22 Hoofdstuk 2. Opbouw van de applicatie Use-case diagram Aan de hand van al de verschillende vereisten werd onderstaand diagram opgesteld. We beschouwen zoals reeds vermeld drie types actoren; de geregistreerde en de anonieme gebruiker langs de ene kant, de beheerder van de applicatie aan de andere kant. Een niet-geregistreerde gebruiker kan enkel grafieken opvragen, terwijl een geregistreerde gebruiker naast vertragingen en afschaffingen ingeven ook zijn persoonlijke statistieken kan bekijken. De acties die enkel de beheerder kan ondernemen werden aan de applicatie toegevoegd om de gebruikersinvoer te modereren. Figuur 2.1: Use-case diagram van de applicatie met de verschillende actoren (groen) en de verschillende cases (blauw). We bespreken kort de verschillende functies van de applicatie aan de hand van bovenstaand schema. In het volgende hoofdstuk wordt elke component dan uitvoerig besproken.

23 Hoofdstuk 2. Opbouw van de applicatie 16 Inloggen/Registreren: De gebruikerslogin behoort tot de standaard Drupal-functionaliteit. Een nieuwe gebruiker kan zich laten registreren door een adres, gebruikersnaam en paswoord in te geven. Reeds geregistreerde gebruikers moeten zich inloggen om toegangsrechten te krijgen tot ondermeer hun persoonlijke statistieken. Grafieken opvragen: Al dan niet geregistreerde gebruikers kunnen de reeds ingevoerde trajectinformatie van een bepaald traject opvragen. Hierbij kan men kiezen uit drie grafiek-klassen. Grafieken 1 verschaft informatie over een specifiek traject, terwijl Grafieken 2 en Grafieken 3 de ingevoerde vertragingen voor alle trajecten tussen een bepaald vertrek- en aankomststation tonen. Hierdoor kan de gebruiker op overzichtelijke wijze de verschillende treinen die sporen tussen twee stations vergelijken. Voor verdere uitleg omtrent de verschillende grafiek-klassen en voorbeeldgrafieken verwijzen we naar Sectie Persoonlijke statistieken: Ingelogde gebruikers kunnen hier hun reeds ingevoerde trajectregistraties oproepen. Zoals wordt besproken in Sectie 3.3.2, bestaat Persoonlijke statistieken uit de tabbladen Recente lijnen, Ingevoerde vertragingen/afschaffingen, Extra en Jaarstatistieken. We verschaffen de gebruiker dus een uitgebreid aanbod om zijn persoonlijke registraties weer te geven. Vertraging/afschaffing ingeven: Het hart van de applicatie; hoe meer mensen een bepaald traject registreren, hoe dichter de gemiddelde vertraging bij de werkelijke vertraging van dat traject zal aanleunen. Om over de recentste dienstregeling te beschikken, wordt er telkens een verbinding opgezet met de NMBS-website. De gebruiker heeft na invoeren van een aantal trajectdetails de keuze uit een aantal treinen, waarna zijn vertraging of afschaffing van de door hem geselecteerde trein geregistreerd wordt (zie Sectie 3.2). Stationsbeheer: Met deze functie kan de beheerder de tabel nmbs stations uit de databank bewerken (zie Sectie 3.1). Een lijst van beschikbare stations kan als CSV-bestand geïmporteerd worden, nieuwe stations kunnen toegevoegd worden, voormalige stations kunnen verwijderd worden en stationsnamen kunnen gewijzigd worden (zie Sectie 3.4.1). Aangezien de gebruiker enkel een station kan ingeven dat in nmbs stations voorkomt, kan de beheerder met behulp van deze functie de gebruikersinvoer in goede banen leiden. Vertragingsbeheer: Hier kan de beheerder al de afwijkende vertragingen bekijken. Hij kan vervolgens de beschouwde afwijkende vertraging al dan niet goedkeuren (zie Sectie 3.4.2). Gebruikersbeheer: Met Gebruikersbeheer kan de beheerder alle ingegeven vertragingen en afschaffingen van een bepaalde gebruiker weergeven. Dit is bijvoorbeeld handig als een gebruiker opvallend veel afwijkende vertragingen ingeeft. Indien nodig kan een gebruiker, samen met zijn invoer, geblokeerd en verwijderd worden (zie Sectie 3.4.3). Afschaffingsbeheer: Hier worden de afschaffingen die conflicteren met ingevoerde vertragingen weergegeven. Aan de hand van een gedetailleerde weergave van al de registraties van het beschouwde traject kan de beheerder dan beslissen om de trein al dan niet als afgelast te registreren (zie Sectie 3.4.4).

24 Applicatiebespreking Databank De structuur van de MySQL-databank is weergeven in Figuur 3.1. Hierbij beschouwen we enkel de tabellen van onze module en de users-tabel 1. De grijze velden zijn de primaire sleutels en de pijlen stellen de vreemde sleutels voor. De overige tabellen die Drupal automatisch installeert zijn niet relevant in deze bespreking. Figuur 3.1: Schematisch overzicht van de databankstructuur: de primaire sleutels zijn in grijs weergegeven. Bij de tabel users worden enkel de relevante velden getoond. 1 Enkel de velden userid en name van users zijn van belang voor onze modules. 17

25 Hoofdstuk 3. Applicatiebespreking 18 We overlopen kort de verschillende tabellen: nmbs stations: In deze tabel kunnen de stationsnamen op een aantal manieren ingeladen en gewijzigd worden (zie Sectie 3.4.1). Aan de hand daarvan wordt de stationsinvoer gevalideerd en kunnen we de autocomplete-functie aanbieden. Elk station heeft een naam en een id. nmbs gebruikerstrajecten: Deze tabel bewaart de voorkeurtrajecten van een bepaalde gebruiker. nmbs overzicht: Deze tabel bevat de eigenlijke trajecten. De data worden met de PHPfunctie mktime(uur, minuut, seconde, maand, dag, jaar) 2 opgeslagen als een UNIX timestamp 3. Het versienummer wordt ook bijgehouden. Momenteel is dit v1, maar bij een nieuwe dienstregeling kan dit eventueel aangepast worden om bijvoorbeeld na te gaan of de treinen al dan niet stipter sporen. Verder worden ook nog per traject het vertrek- en aankomststation, de reisduur en de treinsoort opgeslagen. nmbs vertragingen: De ingegeven vertragingen worden per gebruiker bijgehouden; verscheidene gebruikers kunnen namelijk een vertraging ingeven voor hetzelfde traject (= hetzelfde overzichtid). Bij Persoonlijke statistieken (zie Sectie 3.3.2) kan de gebruiker zijn zelf ingegeven vertragingen opvragen en vergelijken met de gemiddelde vertraging van een bepaald traject. Het veld afwijkend wordt besproken in Secties en nmbs afschaffingen: De tabel afschaffingen is analoog aan nmbs vertragingen in die zin dat de afschaffingen per traject (overzichtid) en per gebruiker (uid) worden bewaard. users: Deze tabel wordt door Drupal gegenereerd en bevat allerlei informatie over de geregistreerde gebruikers. nmbs traject: In deze tabel worden trajecten met overstappen opgeslagen; het veld traject bevat de stationid s van de verschillende stations van het traject, gescheiden door ;. We maken nog geen gebruik van de tabel, maar het leek ons nuttig om de trajecten met overstappen per gebruiker op te slaan. We komen hier op terug bij de uitbreidingsmogelijkheden. De tabellen worden tijdens het installeren van de nmbs-module door nmbs module.install aangemaakt [21]. De functie nmbs module install() installeert de functie nmbs schema() waarin de verschillende tabellen gedefinieerd worden. Na desinstallatie van de nmbs-module kunnen de tabellen verwijderd worden door de functie nmbs module uninstall(). Voorbeeld 3.1. Ten slotte beschouwen we als voorbeeld de query die de overzichtid s ophaalt van de trajecten die een bepaalde gebruiker ($user) in de maand en het jaar van $aankomstdatum heeft ingevoerd: $result = db query( SELECT nmbs afschaffingen.overzichtid AS overzichtid FROM {nmbs overzicht} INNER JOIN {nmbs afschaffingen} USING (overzichtid) WHERE MONTH(FROM UNIXTIME(aankomstdatum))= %d AND YEAR(FROM UNIXTIME(aankomstdatum))= %d AND uid= %d GROUP BY overzichtid ORDER BY aankomstdatum, aankomstuur, vertrekplaatsid, aankomstplaatsid, $aankomstdatum, $aankomstdatum,$user->uid); 2 Voor de vertrek- en aankomsturen hebben we als standaard-datum 1 januari 2000 genomen (mktime(uur, minuut, seconde, 1, 1, 2000). 3 UNIX timestamp: het aantal seconden verlopen sinds 1 januari 1970

26 Hoofdstuk 3. Applicatiebespreking Invoer van vertragingen/afschaffingen Een essentieel onderdeel van onze website is uiteraard het ingeven van de vertragingen voor een specifiek traject. We creëerden hiervoor in onze module enkele pagina s Traject ingeven Onderstaand schema verduidelijkt de pagina Traject ingeven. Op deze pagina dient de gebruiker zoals de naam van de pagina doet vermoeden zijn traject en datum van vertrek aan te geven. Hierbij kan de gebruiker de keuze maken of hij één van de voorkeurtrajecten selecteert of dat hij een nieuwe vertrekplaats en eindbestemming invoert. Hierbij kan aangevinkt worden om het nieuwe traject op te slaan als één van de voorkeurtrajecten.!"#$%"&$'()*+&$',)-.$&()*+&$'!11#%"2#)$#(3"4$ )"'"4$"#"*!"#$#"%&'(($) "* "+*,-")$"..+*/ +*/"0"*!"#$%& #'()*%&%"!+,%%" #$$&-%.&/&'0%1/ 2%&/&%-3(''/4 %" %)"*5%4/%66)", #'()*%&%" 7$"/&$(%&%" $8 4/'/)$"4"'6%" )",%,%#%" 9)0" 7$"/&$(%&%" $8 4/'/)$"4"'6%" )" *'/'5'"- ''":%9), 9)0" 7$"/&$(%&%" $8 4/'/)$"4"'6%" #%&41;)((%" 2'()*'/)%,%4('',*B!",%#$%&*%,%,%#%"4 :$&*%" )" 4%44)%#'&)'5%(%",%4/$-%"!+ 1;%1-5$C #$$&-%.&4/&'0%1/ $34(''" ''",%#)"-/??A D34(''" )" *'/'5'"- #'" #$$&-%.&4/&'0%1/ E<F!E<7G "''& G&%)"%"$#%&9)1;/ 5($2. "* #+46$22# 0(* 0"#$#"% ((*,2+,"* <=>< 4/'/)$"4"'6%".)/ #$$&-%.&/&'0%1/ $3,%4(''"!+'841;'88)", ''",%*.)*? '841;'88)",??A /&.% '841;'88)",??A 8'(4% 2'()*'/)% ")%/,%4('',* 74$+"8 9!"#$#(/+*/ 9 7:)46(::+*/ 7$"/&$(%&%" $8,%4%(%1/%%&*% *'/.6 &%%*4 #$$&5)0 ;12$."',+*/< Figuur 3.2: Schematisch overzicht van de trajectingave-pagina. Op de pagina Traject ingeven dient de gebruiker de vertrekplaats en de eindbestemming van zijn traject op te geven. Ook een specifieke datum en richtuur moet aangeduid worden. Voorts worden op deze pagina ook nog twee opties aangegeven naargelang de gebruiker de vertraging voor een specifiek traject of de afschaffing van een specifieke trein wil ingeven. Tot slot hebben we om het de gebruiker iets eenvoudiger te maken de ingebouwde autocomplete functie gebruikt in de invoervelden voor de vertrekplaats en de eindbestemming. Deze functie wordt in Drupal standaard gebruikt bij onder meer het invoeren van de gebruikersnaam. In onze module hebben we een nieuwe autocompletefunctie aangemaakt opdat deze ook zou werken voor stationsnamen. Op zich was dit vrij eenvoudig, maar het gebrek aan documentatie voor Drupal 6 omtrent deze functie zorgde voor enige vertraging tijdens de implementatie ervan. Wanneer de gebruiker een traject heeft ingevoerd wordt hij doorgestuurd naar de pagina Treinenoverzicht. Alvorens dit gebeurt wordt de invoer van de gebruiker wel gecontroleerd. Hiervoor bestaat in Drupal de validatiefunctie die specifiek kan gebruikt worden om de gebruikersinvoer te controleren.

27 Hoofdstuk 3. Applicatiebespreking 20 Deze validatiefunctie wordt uitgevoerd voor de submitfunctie van de pagina. In de validatiefunctie van deze pagina controleren we een aantal zaken. Indien er geen voorkeurstraject geselecteerd werd, wordt er nagegaan of er effectief een vertrekplaats en eindbestemming werd ingevoerd. Indien dit het geval is, wordt gecontroleerd of de ingevoerde stationsnamen effectief in de databank aanwezig zijn 4. Het feit dat we enkel stationsnamen gebruiken die reeds in de databank aanwezig zijn garandeert de beheerder van de website dat de invoer qua stationsnamen zeker correct is. Naast het controleren of de ingevoerde stationsnamen effectief in de databank aanwezig zijn, gaan we ook na of niet tweemaal hetzelfde station is ingegeven. Voorts hebben we ook ingesteld dat de ingevoerde datum nooit een datum uit de toekomst kan zijn aangezien men de vertragingen pas mag ingeven als de trein effectief gereden heeft. Tot slot stellen we in de validatiefunctie reeds enkele sessie-objecten in die we op latere pagina s nog nodig hebben. Hierbij denken we bijvoorbeeld aan het sessie-object dat aanduidt of de gebruiker een afgeschafte trein of een vertraging wil ingeven. Andere sessie-objecten bevatten dan weer de stationsnamen. Indien bepaalde gegevens niet als correct gevalideerd worden in de validatiefunctie wordt er een foutmelding weergegeven. In het andere geval wordt er overgegaan naar de submitfunctie. In deze submitfunctie worden de overige sessieobjecten aangemaakt die nodig zijn om de specifieke trein op te vragen (vb. datum, richtuur). Ook wordt er nagegaan of een ingevoerd traject moet opgeslagen worden als een voorkeurstraject 5. Vervolgens hebben we in de submitfunctie ook gebruik gemaakt van de batchfunctie die standaard in Drupal aanwezig is. In principe gebruiken we die batchfunctie niet echt om gegevens te verwerken. Eerder hebben we deze geïmplementeerd omdat de overgang naar de volgende pagina ons op die manier dynamischer leek over te komen Treinenoverzicht Zoals de naam reeds laat vermoeden, wordt op de treinenoverzichtpagina de treinen weergegeven die op een bepaalde datum rijden. De gegevens die op deze pagina te zien zijn, worden rechtstreeks opgehaald van de NMBS-website. Om de gegevens op te halen gebruikten we de PHP-klasse Curl. Met deze klasse haalden we de inhoud op van de NMBS-website. Vervolgens gebruikten we de functie explode om de pagina volledig op te splitsen tot de benodigde informatie in sessievariabelen kon opgeslagen worden. Voor de broncode van de gegevensophaling verwijzen we naar de Appendix (Sectie A.1). 4 Hierbij gaan we er dus vanuit dat de stationsnamen door de beheerder met behulp van het menu stationsbeheer zijn toegevoegd. 5 Hierbij gaan we wel na of het traject nog niet opgeslagen is als voorkeurstraject. Indien dit het geval is, wordt de databank ongemoeid gelaten. 6 Met dynamischer doelen we op het feit dat de gebruiker door deze animatie het idee krijgt dat de overgang naar de volgende pagina vlotter verloopt.

28 Hoofdstuk 3. Applicatiebespreking 21 :173$+01%)+$#!"#$%#%&'#"($)*+!"#$"#%"& '&(")*"#+" ("(")"&,-."/ 01#2 31',/" 45('&5 *4652"& )5& &78,$"8,'/" 7-8-)- 91"#:,/#'&(- ;5('&5 "<42*+"& "& $""#(")"& '& /58"2)*#7 7"/ )"#,=6'22"&+" /#53"=/"&- >#53"=/,"2"=/"#"&?'=6/11# B&)*"# )52'+"#"&,-.$/-+$#01%)+$# 0*&/#*2"#"& *A (","2"=/""#+" +5/17 #""+, )**#8'3 ',-!52'+5/'" &'"/ (",255(+!52'+5/'" (",255(+ C$'/=6 05," DE")",/'("&D )5& 6"/ #'=6/11# 8#"5%G 05," DC"2"=/'" +**#(")"&D BH 5A(",=65A/" /#"'& BH *)"#,/544"& IIJ (""& *)"#,/544"&,"2"=/"#"& KLCK "#/$"#)+ %--" -06)*-00$%4 7#'#6+$4#% KLCKBH #""+, *)"#,/544"& (","2"=/""#+ (""& /#53"=/ 7"/ *)"#,/544"& 7""#,"2"=/"#"& KLCKBH /#53"=/ 7"/ *)"#,/544"& "& &*( (""& /#53"=/ 7"/ *)"#,/544"& (","2"=/""#+ 8#/$"#)+ %--" &'#"6+-99#% KLCK 8#/$"#)+ %--" '#"+"-4$%4 $%4#'#% 2&1+3#./$%45 Figuur 3.3: Schematisch overzicht van de treinenoverzicht-pagina. Aanvankelijk gebruikten we de informatie van de internationale treinplanner omdat we gemerkt hadden dat de juiste informatie van deze site kon opgeroepen worden met behulp van een querystring [22]. Bovendien leek het ons ook interessant die website te gebruiken omdat we dan op een eenvoudige manier ook eenzelfde website konden opbouwen voor onze buurlanden. Na een testperiode bleek echter dat de informatie niet geheel correct was. Vooral de treinsoorten die aangegeven werden, klopten vaak niet. Ook werden soms bepaalde treinen niet weergegeven. Uiteindelijk bleek het toevallig ook zo te zijn dat diezelfde querystring (die we gebruikten op de internationale treinplanner) ook toepasbaar was op de officiële NMBS-website [23], wat het mogelijk maakte om de gegevens van deze site op te halen. Voordeel van deze manier van ophalen is de normaliter adequate informatie die verkregen wordt. Ook als de treinregelingen wijzigen zou de informatie op de website nog steeds actueel moeten zijn. Bovendien viel van de NMBS-website ook het specifieke treinnummer van de treinsoort af te lezen.voorts liet de NMBS-website ons ook toe om treininformatie op te halen aan de hand van een richtuur. Aan de hand van dit richtuur wordt immers een keuzelijst weergegeven van een aantal treinen rond een bepaalde tijdsperiode. De optie richttijd wijzigen tot slot zorgt er voor dat de richttijd in de querystring aangepast wordt waarna de juiste informatie van de NMBS-site wordt opgehaald. Ook bij dit treinenoverzicht werden een aantal controlemechanismen ingebouwd. Zo werd ook hier ingesteld dat enkel treinen die aangekomen zijn kunnen geselecteerd worden. Voorts hielden we er ook rekening mee dat gebruikers een trein met overstappen kunnen selecteren. In dat geval wordt de gebruiker naar de pagina Overstappen ingeven doorgestuurd. In de module werd ook ingesteld dat er geen trajecten met overstappen kunnen geselecteerd worden, indien de gebruiker een afgeschafte trein wil aanduiden of indien de gebruiker reeds een traject met overstappen geselecteerd heeft. Opmerking 3.1. In de praktijk kan het uiteraard voorkomen dat een gebruiker een traject met overstappen neemt waarbij er een trein afgeschaft werd. Een persoon wil bijvoorbeeld de trein nemen van Kortrijk naar Brussel-Centraal. Eerst neemt deze dus de trein van Kortrijk naar Gent-Sint-Pieters. Vervolgens merkt de persoon dat de trein van Gent-Sint-Pieters naar Brussel-Centraal, die normaal

29 Hoofdstuk 3. Applicatiebespreking 22 genomen zou worden, afgeschaft is. Vervolgens moet die persoon dus een latere trein nemen van Gent- Sint-Pieters naar Brussel. De reden dat we het niet toelaten aan een gebruiker om in een traject met overstappen een afgeschafte trein in te geven, heeft te maken met het feit dat de gebruiker normaal een andere trein heeft genomen om op bestemming te geraken. Dus verwachten we dat de reiziger in het geval van een traject met overstappen de treinen ingeeft die effectief genomen zijn. Indien de gebruiker een trein niet kon nemen omdat deze afgeschaft was, kan deze alsnog later toegevoegd worden. Hoe dan ook lijkt het interessant, naar de toekomst toe, om na te gaan hoe er eventueel op een betere manier met een dergelijke situatie kan worden omgegaan. Ook is het interessant na te denken over hoe er moet omgegaan worden met gemiste aansluitingen. Zo kan het gebeuren dat een reiziger die een traject heeft met overstappen heel wat later op zijn bestemming aankomt, door het missen van een aansluiting. De latere trein die dan genomen wordt heeft dan misschien geen vertraging, toch verliest de reiziger heel wat tijd. Hoe dit kan geïmplementeerd worden, zal de toekomst moeten uitwijzen. Na het eventuele ingeven van overstappen en het selecteren van een specifiek traject wordt de gebruiker dan doorgestuurd naar hetzij de pagina Vertraging ingeven hetzij de pagina Afschaffing bevestigen, naargelang de keuze die gemaakt werd op de pagina Vertraging ingeven Overstappen ingeven 5,60!*+,"-*!$ Overstappen!"#$%$"!" #$%&% '$( ))( $$(*$+,')-%*$"")(," "$.&($ *-)&()(,')-/&01* 2,-3)( )- ')+3)(.)0-)4)-35 6) ')+3)( 2,-3)( &(.)'7+3 8#' $7*,0,8"+)*) 9(',)- '$+&3)-)( &'(!)'*!$+,"-*!$ 9: %*$*&,(%($$8 &% $$(2)/&. &( 3) 3$*$#$(; 9:.))( *2)) 3)/)+<3) %*$*&,(%($8)( 9:,')-%*$""+$$*% => ')-*-);,< A > B > ))-%*),')-%*$""+$$*% -)3&-)0* *2$!"$"/%$23!-4*?$+&3$*&) (&)*.)%+$$.3./,*0$()!"#1 Figuur 3.4: Schematisch overzicht in het geval een traject met overstappen wordt ingegeven. Indien de gebruiker een traject selecteert met overstappen zal hij automatisch doorgestuurd worden naar de pagina Overstappen ingeven. Deze pagina genereert een aantal velden naargelang het aantal overstapplaatsen. Deze velden moet de gebruiker dan invullen. Op basis van deze ingevoerde overstapplaatsen kan de gebruiker dan traject per traject de vertraging kunnen invullen. Eens de gebruiker deze overstapplaatsen heeft ingevuld kan hij logischerwijs binnen dit traject wel geen trajecten meer selecteren met overstappen. Ook in deze pagina werden overigens een aantal controlemechanismen verwerkt. Zo zorgen we er ook hier voor dat de gebruiker enkel stationsnamen kan ingeven die reeds in de databank aanwezig zijn. Voorts kan een gebruiker nooit een vertrekstation of eindstation als overstapplaats ingeven. Ook kan eenzelfde station nooit meerdere keren als overstapplaats worden aangeduid.

30 Hoofdstuk 3. Applicatiebespreking Vertraging ingeven Op deze pagina komt men terecht na de selectie van de correcte trein op de pagina Treinenoverzicht. Hier dient de gebruiker de specifieke vertraging bij aankomst in te vullen die werd opgelopen. Wanneer de gebruiker een traject selecteerde met meerdere overstappen kan er ook een tweede veld verschijnen waar de gebruiker de vertrekvertraging van de trein dient aan te geven. Dit is het geval wanneer een gebruiker een trein selecteert die normaal vroeger vertrekt dan de voorgaande trein (waarvoor de vertraging werd ingevuld). Op basis van de ingevoerde vertrekvertraging wordt dan nagegaan of de ingevoerde vertraging aanvaard wordt. Indien een traject met overstappen aangeduid werd, zal deze pagina de gebruiker terugsturen naar de Treinenoverzicht pagina totdat het volledige traject ingegeven is. Hierna wordt de gebruiker doorverwezen naar de startpagina van de website. Uiteraard controleren we op deze pagina ook of de invoer effectief numeriek is. Ook werd ingesteld dat de ingevoerde vertragingen positief dienen te zijn. Vervolgens dient de invoer op een correcte manier opgeslagen te worden in de database. Om de gegevens op te slaan in de databank maakten we gebruik van de specifieke Drupal SQL-statements die eigenlijk vrij gelijkend zijn aan standaard SQL-statements. 6-71'$,-(.$'"!"#$#%&'(& '(&")"(!" #$"%& ''( #')*$"+,-.'" $/0')$,#% %1& 2$-%$'& 11( $(%'"3&11(%' "'0' )'($%.0%' 3'33.'21".1)'-'( 89 -''0: ; 56 72'"&"'<,," (.',#' &"'.( 2"$'0'" %1( 11(<$+3&,," 2$".0' &"'.(: ; 2'"&"'<2'"&"10.(0.(2$'"'( %+2 &'=&*.'-% > > 5(2$'" 21-.%'"'(!%*'+%$'",-(.$'" 56 72'"&"'<,," (.',#' &"'.( 2"$'0'" %1( 11(<$+3& 2$".0' &"'.(: 21( (.',# 2'"&"'<,," $/ ) ( 2$".0' 2'"&"'<,," $/0'&'-% +'& 2'"&"'<2'"&"10.(0 > 56 72'"&"'<2'"&"10.(0.3 (,+'".'<: (<$+3&2'"&"10.(0.3 (,+'".'<: A1-.%1&.' 0'3-110% A1-.%1&.' (.'& 0'3-110% B'/1-'( 21( )'($%.0%' 21".1)'-'(4 C'0'2'(3 $/3-11(.( %1&1)1(<.(%.'( ($0 (.'& 11(#'D.04 5(%.'( "''%3 2'"&"10.(0.(0'2$'"%E,/%1&' 21( 2$".0'.(0'2$'"%' 0'0'2'(34 B.F.(0'2$'"%' 2'"&"10.(0 $$< 3&1(%11"%1*#.F<.(0 )'/1-'( '+.%%'-%' 2'"&"10.(0 G 3&1(%11"%1*#.F<.(0 H.(0'2$'"%' 2'"&"10.(0 I 0'+.%%'-%' 2'"&"10.(0 J 3&1(%11"%1*#.F<.(0:; 1*#.F<.(0 9 *1-3'K >!LM! ; 1*#.F<.(09&",'K > 56 7&"1F'?& +'& $2'"3&1//'(: ; 3"+'#".$ (%%# $#"'("(0)"#4'.5$ > /0-$1"*+'(&2 Figuur 3.5: Schematisch overzicht van de vertragingsingave-pagina. Voor het opslaan in de databank definieerden we een nieuwe functie, om de module zelf iets overzichtelijker te houden. In deze functie creëren we de nodige variabelen om op te slaan in de databank. Zo worden de stationsnamen omgezet naar de overeenkomstige id s uit de nmbs stationstabel. Omdat we ervoor opteerden om data en tijdstippen op te slaan in UNIX-formaat, gebeurt de omzetting naar UNIX timestamp ook in deze functie. Wanneer alle variabelen aangemaakt zijn gaan we na of de variabelen reeds aanwezig zijn in de tabel nmbs overzicht. Indien dit niet het geval is maken we een nieuwe record aan in deze tabel. Zijn de benodigde gegevens wel al aanwezig, dan wordt enkel het overzichtid van de record opgevraagd. Hierna maken we in de nmbs vertragingentabel een record aan met de ingegeven vertraging en een verwijzing naar het id van de record in de nmbs overzichttabel.

31 Hoofdstuk 3. Applicatiebespreking 24 In deze functie gaan we ook nog na of de ingevoerde vertraging niet teveel afwijkt van vorige ingevoerde vertragingen voor het geselecteerde traject. Dit gebeurt aan de hand van de standaardafwijking ( N ) s = 1 i x) N i=1(x 2 die bepaald wordt vanaf de derde vertragingsregistratie voor een specifiek traject. Aan de hand hiervan bepalen we een interval I I = [ x s ; x + s] waarbinnen de ingevoerde vertraging als normaal beschouwd wordt. Indien de ingevoerde vertraging teveel afwijkt wordt dit dan ook als dusdanig opgeslagen in nmbs vertragingen. Voorts dient nog vermeld dat elke gebruiker slechts één vertraging mag invoeren per specifiek traject. Bij elke vertragingsinvoer wordt dan ook nagegaan of de gebruiker nog geen vertraging invoerde. Indien dit het geval is, wordt de oude ingevoerde vertraging vervangen door de nieuwe. Ook de standaardafwijking wordt dan opnieuw berekend. Tot slot wordt ook elk traject opgeslagen in de databank. Bij een traject met overstappen worden dan het gebruikersid en alle overzichtid s, gescheiden door een komma, opgeslagen in de tabel nmbs trajecten. Voorlopig gebeurt er nog niet echt iets met deze gegevens. Deze werden vooral toegevoegd opdat de mogelijkheid zou bestaan hier later eventueel bepaalde informatie over weer te geven op de website Afschaffing bevestigen De pagina Afschaffing bevestigen wordt enkel weergegeven indien de optie Afgeschafte trein ingeven werd aangeduid op de pagina Traject ingeven. Op deze pagina kan enkel bevestigd worden of de specifiek geselecteerde trein effectief afgeschaft werd. Indien dit het geval is, wordt net als op de pagina Vertraging ingegeven nagegaan of het overzichtid voor dit specifieke traject nog niet aanwezig is in de databank. Indien dit niet het geval is wordt een nieuwe record met de benodigde variabelen aangemaakt. Vervolgens wordt aan de tabel nmbs afschaffingen het overzichtid en het gebruikersid toegevoegd.

32 Hoofdstuk 3. Applicatiebespreking Gegevensweergave Grafieken Google graphs Voor de vertragingsgrafieken hebben we geopteerd voor Google Graphs [24]. De gegevens worden gecodeerd in een URL, en een HTTP GET aanvraag op die URL resulteert in een URL waarop de grafiek (in PNG-formaat) te vinden is 7. Het voordeel van deze werkwijze is dat er geen bijkomend programma op de server geïnstalleerd hoeft worden. Het PNG-formaat vereist ook, in tegenstelling tot flash-grafieken, geen ActiveX-besturingselement zodat alle gebruikers onmiddellijk de opgevraagde grafieken te zien krijgen. Aanvankelijk was het de bedoeling aan de hand van een module de grafieken te generen [25]. Die stond voor Drupal 6 echter nog niet op punt, vandaar de beslissing om de HTTP-requests rechtstreeks in onze grafieken-module te plaatsen. Op die manier konden we met behulp van de online developer s guide de functionaliteit van google graphs ten volle benutten. Ter illustratie bespreken we kort de belangrijkste componenten van zo n URL: cht=[1]&chxr=[2]&chds=[3]&chxl=[4]&chco=[5]&chd=[6] 1. cht: grafiektype, bvg voor de grafieken en p3 voor het 3D-taartdiagram. 2. chxr: bereik van de assen instellen. 3. chds: de data schalen. De data wordt standaard relatief uitgezet t.o.v. 100, het is dus belangrijk om de maximum-waarde van de opgevraagde data mee te geven. 4. chxl: de labels van de verschillende assen. Bij Grafieken 1 en 2 moet rekening gehouden worden met het aantal dagen in de gespecificeerde maand. 5. chco: de kleur van de weergegeven data, bij een taartdiagram wordt de opgegeven RGB-waarde automatisch geïnterpoleerd. 6. chd: de door te geven data. Onderlinge waarden zijn gescheiden door komma s, series door. De URL s worden opgebouwd door een combinatie van PHP- strings en variabelen. Die variabelen bevatten de eigenlijke data die met behulp van query s uit de database opgehaald werd. De zo bekomen string wordt ten slotte tussen HTML-tags geplaatst (<img src=url>). Grafiek-klassen De gebruiker kan voor de weergave van de ingegeven vertragingen (en afschaffingen) kiezen uit drie grafiek-klassen 8 : Grafieken 1, Grafieken 2 en Grafieken 3. We bespreken deze drie keuzemogelijkheden, met een aantal schermafbeeldingen ter illustratie 9, in onderstaand overzicht. 7 Men kan tot aanvragen per dag versturen, bij hogere aantallen moet een aanvraag (plus schatting) ingediend worden. 8 We verwijzen voor de eenvoud hier naar de klassen als 1, 2 en 3 9 De vertragingen die in de grafieken worden getoond zijn fictief en dienen louter als voorbeeld.

33 Hoofdstuk 3. Applicatiebespreking Grafieken 1: Vertragingsgrafieken voor een specifieke trein van een bepaald traject. Doel: Maandinfo over een specifieke trein van een traject verkrijgen, vergelijken met treinen van dezelfde soort. Voorbeeld: Traject Gent-Sint-Pieters - Brugge in Mei 2008 vertrekuur: 17:39u. - aankomstuur: 18:02u. Treinsoort: IC Deze grafieken worden op dezelfde wijze opgevraagd als een vertraging/afschaffing (zie Sectie 3.2) ingeven; er moet namelijk een datum en een richtuur ingegeven worden. Die worden vervolgens doorgestuurd in een HTTP-request naar de NMBS-website zodat de gebruiker uit een aantal treinen kan kiezen. Door de analogie met een vertraging/afschaffing ingeven wordt een anonieme gebruiker vertrouwd met deze opvraagwijze, waardoor de drempel om zelf vertragingen of afschaffingen in te geven verkleint. Merk op dat het richtuur en de datum van opvragen kan gewijzigd worden. We hebben deze optie toegevoegd om de volgende reden; de gebruiker moet een datum selecteren waarop de desbetreffende trein gespoord heeft en de meeste treinen rijden nu eenmaal niet op alle dagen van de week. Op die manier kan het richttijdstip op eenvoudige wijze aangepast worden (zonder terug te keren naar de beginpagina). Eenmaal een specifieke trein van een bepaald traject geselecteerd, worden de desbetreffende grafieken weergegeven (van de maand van de geselecteerde datum). De belangrijkste grafiek uit deze klasse is de gemiddelde dagelijkse vertraging weergegeven per maand met aansluitend een taartdiagram met de gemiddelde reisduur van het traject. Verder zijn er nog een aantal bijkomende grafieken met vertragingsinformatie over de treinen van dezelfde soort als de gespecificeerde trein. Ten slotte worden ook de afschaffingen weergegeven en kan de gebruiker met een muisklik de grafieken van het omgekeerde traject bekijken. We geven een beknopt overzicht van de verschillende grafieken en andere opties. Figuur 3.6: De gemiddelde dagelijkse vertraging van de trein uit het voorbeeld.

34 Hoofdstuk 3. Applicatiebespreking 27 De gemiddelde dagelijkse vertraging: (zie Figuur 3.7) wordt zoals reeds vermeld weergeven per dag van de maand. Het is belangrijk op te merken (zie voorbeeld) dat in deze grafiek enkel vertragingen van een specifieke trein worden beschouwd. De gemiddelde maandelijkse reisduur van het traject: (zie Figuur 3.6) hierbij worden de gemiddelde maandelijkse vertraging en de reisduur die de NMBS vooropstelt weergeven in taartdiagram. We vermelden hierbij uitdrukkelijk dat bij het berekenen van de gemiddelde vertraging enkel de dagen waarop vertragingen zijn ingegeven in rekening werden gebracht. We gaan er met andere woorden vanuit dat als een gebruiker geen vertraging heeft opgelopen, hij effectief 0 minuten vertraging ingeeft. De totale reisduur (vooropgestelde reisduur + gemiddelde vertraging) wordt in de titel van het taartdiagram weergeven. Figuur 3.7: De gemiddelde maandelijkse reisduur van de trein uit het voorbeeld. De gemiddelde maandelijkse vertraging per weekdag: (zie Figuur 3.8) in deze grafiek wordt de gemiddelde vertraging van de gespecificeerde trein bekeken per weekdag (maandag tot vrijdag). Pendelaars krijgen op die manier een duidelijk overzicht van op welke dag van de week hun gebruikelijke trein gemiddeld de meeste vertraging oploopt. De gemiddelde maandelijkse vertraging per uur van de dag (6u-21u): (zie Figuur 3.8) we kunnen hierbij uiteraard niet enkel de gespecifieerde trein beschouwen, maar alle treinen van dezelfde treinsoort van het traject. Deze laatste, meer algemene grafiek verschaft nuttige informatie over het traject; een pendelaar kan bijvoorbeeld aan de hand van deze grafiek opteren om een vroegere trein te nemen als de vertragingen aanzienlijk verschillen. Afschaffingen: de afschafte treinen (van de beschouwde maand) van het traject worden chronologisch weergegeven in een tabel 10. Het omgekeerde traject bekijken: door een richtuur in te geven kan een gebruiker op een snelle en eenvoudige manier de vertragingsgrafieken van een trein van het omgekeerde traject selecteren. We hebben deze funcie toegevoegd omdat veel pendelaars weliswaar op een ander tijdstip ook het omgekeerde traject afleggen. 10 De afschaffingen worden niet weergeven als er nog geen vertragingen werden ingegeven.

35 Hoofdstuk 3. Applicatiebespreking 28 Figuur 3.8: De gemiddelde maandelijkse vertraging per weekdag, gevolgd door de gemiddelde maandelijkse vertraging per uur van de dag (6u-21u) van de beschouwde trein. Opmerking 3.2. Ook vanaf de pagina s Grafieken 2 en Grafieken 3 kunnen de grafieken van het omgekeerde traject bekeken worden. Het enige verschil is dat de gebruiker geen richtuur moet selecteren aangezien er bij Grafieken 2 en Grafieken 3 geen specifieke treinen beschouwd worden. De treinen worden namelijk gegroepeerd per treinsoort, en per dag of per maand. 2. Grafieken 2: Vertragingsgrafieken voor alle treinen van een bepaald traject. Doel: Maandinfo over alle treinsoorten van een traject verkrijgen, treinsoorten vergelijken met elkaar. Voorbeeld: Traject Gent-Sint-Pieters - Brugge in Mei 2008

36 Hoofdstuk 3. Applicatiebespreking 29 Om de grafieken van deze klasse weer te geven moeten (naast begin- en eindstation) enkel de maand en het jaar geslecteerd worden. In het staafdiagram (zie Figuur 3.10) wordt de gemiddelde dagelijkse vertraging uitgezet per treinsoort en per dag van de maand. De treinreiziger krijgt in één enkele grafiek dus een overzicht van de opgelopen vertragingen van die maand, waarbij we het onderscheid in treinsoorten om twee redenen gemaakt hebben. In de eerste plaats is het statistisch meer verantwoord om enkel vertragingen van treinen van dezelfde soort uit te middelen aangezien die over hetzelfde traject ongeveer dezelfde reisduur zullen hebben. Ten tweede kan de reiziger aan de hand van de grafiek beslissen met welke treinsoort hij het traject kan afleggen. Om die laatstgenoemde reden hebben we dan ook per treinsoort een taartdiagram ingevoegd (zie Figuur 3.9), waarin de vooropgestelde reisduur en de gemiddelde vertraging weergegeven worden. Figuur 3.9: Taartdiagrammen van de gemiddelde reisduur per treinsoort. Op het beschouwde traject sporen enkel P, L en IC-treinen.

37 Hoofdstuk 3. Applicatiebespreking 30 Figuur 3.10: Staafdiagram van de gemiddelde dagelijkse vertraging per treinsoort. Op het beschouwde traject sporen enkel P, L en IC-treinen. 3. Grafieken 3: Vertragingsgrafieken voor alle treinen van een bepaald traject. Doel: Jaarinfo over alle treinsoorten van een traject verkrijgen, aantal ingaven bekijken. Voorbeeld: Traject Gent-Sint-Pieters - Brugge in 2008 Het staafdiagram (zie Figuur 3.11) is analoog aan dat van Grafieken 2, met het verschil dat de vertragingen per maand en per treinsoort berekend worden. Vervolgens geven we voor elke treinsoort het aantal ingevoerde vertragingen per maand weer (zie Figuur 3.12). De gebruiker kan zich zo een beeld vormen van het aantal geregistreerde vertragingen voor een bepaald traject zonder de privacy van andere gebruikers te schenden. Figuur 3.11: Staafdiagram van de gemiddelde maandelijkse vertraging per treinsoort. Aangezien enkel vertraginen van treinen die reeds gereden hebben kunnen ingevoerd worden, toont de grafiek vanaf juni nog geen vertragingen.

38 Hoofdstuk 3. Applicatiebespreking 31 Figuur 3.12: Tabel van het aantal ingegeven vertragingen per maand en per treinsoort, gevolgd door de mogelijkheid om het omgekeerde traject te bekijken. Opmerking 3.3. We merken nog op dat niet steeds alle grafieken van een klasse zichtbaar zijn; bij Grafieken 1 zal de vertraging per dag van de week enkel getoond worden indien er reeds een vertraging op een weekdag werd ingegeven. We bieden de gebruiker een aantal mogelijkheden aan om via Persoonlijke statistieken grafieken op te vragen. We bedoelen hiermee dat door een traject te selecteren op één van de bij navigatie vermelde pagina s, de vertragingsgrafieken van dat traject kunnen bekeken worden (zie Tabel 3.1). We gaan hier in Sectie dieper op in. In onderstaande tabel worden de verschillende onderdelen van de drie grafiek-klassen samengevat. Grafieken 1 Grafieken 2 Grafieken 3 Periode per maand per maand per jaar dagelijkse vertr. dagelijkse vertr. maandelijkse vertr. Staafdiagram vertr. per weekdag vertr. per uur Taartdiagram totale reisduur totale reisduur # Tabel afschaffingen afschaffingen # ingevoerde vertr. Ingevoerde vertr./afsch. Grafieken 1 Grafieken 1 Extra Recente lijnen Grafieken 2 Navigatie Ingevoerde vertr./afsch. Recente lijnen Extra Ingevoerde vertr./afsch. Extra Omgekeerd traject!!! Tabel 3.1: Samenvatting van de verschillende klassen. Met navigatie bedoelen we vanaf welke pagina s de (aangemelde) gebruiker naar de beschouwde klasse kan navigeren. Recente lijnen, Ingevoerde vertragingen/afschaffingen en Extra zijn onderdelen van Persoonlijke statistieken (zie Sectie 3.3.2).

39 Hoofdstuk 3. Applicatiebespreking Persoonlijke statistieken Hier kan een geregistreerde gebruiker zijn ingegeven vertragingen en afschaffingen bekijken. We zijn van mening dat een gebruiker graag een duidelijk overzicht heeft van zijn persoonlijke ingaven, met het oog op eventuele compensaties van de NMBS. Ook kunnen langs deze weg de grafieken van de persoonlijke trajecten rechtstreeks opgevraagd worden, zonder omweg langs Grafieken opvragen (zie Tabel 3.1). We geven een overzicht van de vier pagina s van Persoonlijke statistieken (zie de appendix voor een impressie van de website aan de hand van schermafbeeldingen): 1. Recente lijnen: op deze pagina worden vertrek- en aankomststation 11 van de 20 recentste ingegeven vertragingen getabelleerd, gevolgd door de 20 recentste afschaffingen. De gebruiker heeft zo reeds een overzicht over zijn persoonlijke trajecten zonder de details (reisduur, treinsoort, enz...) te zien, wat de duidelijkheid van de pagina ten goede komt. Na een traject en een maand en/of een jaar te geselecteerd te hebben, kan hij doorklikken naar Grafieken 2 of Grafieken 3 om de grafieken van de beschouwde traject te bekijken (zie Tabel 3.1 of Sectie A.2.2). 2. Ingevoerde vertragingen/afschaffingen: terwijl bij Recente lijnen per traject enkel de stations te zien waren, worden hier alle details (zie Sectie 2.2) van de ingegeven vertragingen en afschaffingen weergegeven per maand. Naast begin- en eindstation, vertrek- en aankomsttijdstip, reisduur, treinsoort en gemiddelde vertraging wordt ook de zelf ingevoerde vertraging getoond zodat de gebruiker makkelijk zijn registratie met die van anderen kan vergelijken. De huidige maand van het huidige jaar staat als standaard-maand ingesteld. Door het veld Wijzig de maand van het overzicht aan te passen kunnen andere maanden bekeken worden. We hebben hier als tijdsinterval voor een maand gekozen omdat de grafieken ook per maand gegenereerd worden. Als een pendelaar dagelijks zijn trajecten invoert kan deze pagina snel onoverzichtelijk ogen; de trajecten worden namelijk chronologisch geordend, en niet volgens vertrek- en aankomststation. Om die reden hebben we het veld Pas de weergave aan ingevoegd. De gebruiker kan hierdoor kiezen uit drie weergave-opties: (a) Alle vertragingen/afschaffingen weergeven van deze maand: dit is de standaard-weergave. (b) Geef enkel de vertragingen/afschaffingen weer tussen vertrek- en aankomststation van het geselecteerde traject: enkel de trajecten tussen het gespecificeerd vertrek- en eindstation worden getoond. (c) Geef enkel de vertragingen/afschaffingen weer van de specifieke trein van het geselecteerde traject: enkel de ingegeven treinen op een welbepaald vertrek- en aankomstuur van een specifiek traject worden getoond. De geselecteerde weergave wordt op de pagina boven Pas de weergave aan nadrukkelijk getoond. De query die de gegevens uit de database ophaalt is dus afhankelijk van de weergave. Indien de gebruiker de maand van het overzicht wijzigt, blijft de geselecteerde weergave behouden. Als er in de aangepaste maand evenwel geen treinen met de welbepaalde weergave werden teruggevonden, wordt de query nogmaals uitgevoerd met de standaard-weergave (alle vertragingen/afschaffingen). Deze opmerking geldt voor alle pagina s waarvoor de weergave kan gewijzigd worden. 11 We beschouwen hierbij enkel verschillende trajecten, met verschillend vertrek- en eindstation.

40 Hoofdstuk 3. Applicatiebespreking Extra: hier kan men alle ingaven voor een bepaald traject in een geselecteerde periode bekijken. Deze pagina is dan ook analoog aan Ingevoerde vertragingen/afschaffingen. Het verschil is dat de gebruiker de periode arbitrair kan kiezen, en er een vertrek- en eindstation moet gespecificeerd worden. Het veld Traject en periode invoeren, dat aanvankelijk opengevouwen is, minimaliseert als er vertragingen/afschaffingen opgevraagd worden. De tweede weergave-optie van de vorige pagina is hier niet van toepassing zodat er enkel kan gekozen worden tussen de eerste en de derde optie, namelijk Alle vertragingen/afschaffingen weergeven van deze maand en Geef enkel de vertragingen/afschaffingen weer van de specifieke trein van het geselecteerde traject. 4. Jaarstatistieken: de laatste pagina van Persoonlijke statistieken (zie Figuur 3.13) is toepasselijk een jaaroverzicht. De treinen worden onderverdeeld in 4 categorieën, 1. Vertraging <= 5 minuten 2. 5 minuten < vertraging <= 10 minuten 3. Vertraging > 10 minuten 4. Afgeschafte treinen waarbij telkens het percentage van het totaal aantal ingevoerde treinen per categorie vermeld wordt. Die percentages worden vervolgens grafisch weergegeven in een taartdiagram. Zo heeft de gebruiker een handig, visueel overzicht van zijn jaarlijks opgelopen vertragingen en afschaffingen. Figuur 3.13: Schermafbeelding van het tabblad Jaarstatistieken. Merk op dat het beschouwde jaar kan gewijzigd worden. Zoals blijkt uit bovenstaande bespreking, bieden we de geregistreerde gebruiker een aanzienlijk aantal mogelijkheden aan om zijn persoonlijke ingaven te bekijken. We willen dat de pendelaar die de moeite neemt om dagelijks zijn traject in te voeren, snel en overzichtelijk een beeld kan krijgen van zijn opgelopen vertragingen.

41 Hoofdstuk 3. Applicatiebespreking Beheer van de website Het beheer van de module werd opgesplitst in een aantal aspecten: 1. De invoer van stationsnamen 2. Het bekijken van afwijkingen binnen de vertragingsinvoer en het eventueel verwijderen van ongeldige invoer 3. het opvragen van gegevensinvoer voor een specifieke gebruiker NMBS Stationsbeheer Het menu stationsbeheer bestaat uit vier opties die weergegeven worden op verschillende tabbladen. De eerste optie Stations importeren laat toe om een CSV-bestand met stationsnamen te importeren in Drupal. Hiervoor hebben we het standaard uploadformulier aangepast. Voorts werd er gebruik gemaakt van een functie die reeds aanwezig was in een andere Drupalmodule (Taxonomy CSV import) en die we naar onze behoeften aangepast hebben. De tweede optie Stations handmatig ingeven werd toegevoegd opdat het mogelijk zou zijn voor de beheerder om ook handmatig stations in te geven. Zo blijft de bestaande stationslijst up to date; de beheerder kan nieuwe stations toevoegen en voormalige stations verwijderen. Er werd hierbij gebruik gemaakt van een tekstgebied. Dit laat toe om meerdere stationsnamen tegelijk in te geven, die dienen gesplitst dienen te worden door middel van een scheidingsteken naar keuze. De scheidingstekens worden uiteraard niet opgeslagen in de databank. In de submitfunctie maakten we dan uitgebreid gebruik van enkele stringfuncties van PHP (preg replace, str replace, split) om tot de specifieke stationnamen te komen. De optie Stations verwijderen laat de beheerder toe stationsnamen te verwijderen uit de databank. Dit kan nodig zijn indien bepaalde stations geschrapt worden of indien men merkt dat er verkeerde stations zijn ingegeven in de databank. We maakten gebruik van een keuzeveld omdat dit de mogelijkheid toelaat om meerdere stationsnamen te selecteren en te verwijderen. Het laatste onderdeel van dit menu is de optie Stationsnaam wijzigen. Deze optie werd toegevoegd om indien nodig de naam van een station te wijzigen. De onderliggende operatie is een SQL UPDATE commando. Aangezien een dergelijke operatie vrij ingrijpend is, gaan we er hierbij wel van uit dat de eventuele beheerders bij het gebruik van deze functie wel enige verantwoordelijkheid aan de dag zullen leggen.

42 Hoofdstuk 3. Applicatiebespreking NMBS Vertragingsbeheer Het menu vertragingsbeheer werd toegevoegd aan de beheersectie om de ingevoerde vertragingen te kunnen controleren. Afwijkingen Figuur 3.14: Schematisch overzicht van de afwijkingen. Omdat we toch een zekere controle wensen wat betreft de vertragingen die een gebruiker invoert maken we gebruik van een standaardafwijking. Deze zet een vlag op true indien de ingevoerde vertraging een grotere afwijking ten opzichte van het gemiddelde vertoont dan de standaardafwijking van de eerder ingevoerde vertragingen op dit traject. De beheerder kan de afwijkende vertragingen bekijken. We zorgen voor de mogelijkheid om een aantal acties te ondernemen voor elke afwijking. Zo kan de beheerder bepaalde afwijkingen verwijderen of goedkeuren. Om de afwijkingen te selecteren opteren we voor een lijst van checkboxes in de plaats van radiobuttons. Door gebruik te maken van checkboxes kunnen we één actie direct toepassen op meerdere afwijkingen. Als we radiobuttons zouden gebruiken, moeten we elke afwijking afzonderlijk behandelen. Bovendien bevat Drupal een interessante Javascript-functie die toelaat alle keuzevelden met één actie aan te vinken. 12 Opmerking 3.4. Een probleem dat optreedt bij het bepalen van de afwijkende vertragingen is het feit dat we reeds moeten beschikken over twee vroeger ingevoerde vertragingen alvorens een standaardafwijking wordt berekend. Dit zorgt dan wel voor het probleem dat indien de eerste twee ingevoerde vertragingen niet overeenstemmen met de werkelijkheid dat later ingevoerde vertragingen als afwijkend zullen geregistreerd worden. Dit is een probleem dat moeilijk te ontlopen viel. Daarom hebben we toch enkele maatregelen genomen om de correcte invoer te garanderen. Zo kan de beheerder van elke afwijking de overige vertragingsinvoer opvragen. Hierbij wordt de beheerder doorverwezen naar het Specifieke vertragingsoverzicht. 12 De Javascript-functie is te vinden in de standaardinstallatie van Drupal onder de naam tableselect.js

43 Hoofdstuk 3. Applicatiebespreking 36 Specifiek vertragingsoverzicht 6193'$01(+$'" Specifiek!"#$#%&'(&)!"#*'+,$!"#$%%"&%" '"()(*+$,+", -.'(*+", '--( "", )(*/"0) 7,'-"( '*&$%"(", -%.'/%$'"01(+$'" 12$)03 4*5" 67,'-"(",6 8*+**, -9 5)*)$-,5,*#", '"(503$&&",% :$/,; 8*+**, -9 5)*)$-,5,*#", $, %*)*<*,= **,2":$+ :$/,; 8*+**, -9 '"()("=%*)>#,$") &*)"( '*&) %*, **,=-#5)%*)># 8*+**, -9 '"()("=%*)># -9 **,=-#5)%*)>#,$") &*)"( '*&) %*, 3>$%$+" %*)># +"5&**+% 12$)03 4*5" $,'>&&", %$" "('--( :-(+", %*) +"#$%%"&%" '"()(*+$,+", =>,,", 2""(+"+"'", 2-(%", <("*=? 4*5" 6A"'"5)$+",6 5"/'#"+$ 67"+'0'"8!"#$#%&'(&)!"#*'+,$ +"5&**+% 2)1$3"./'(&4 Figuur 3.15: Schematisch overzicht van de ingevoerde vertragingen voor een specifiek traject. Op de pagina Specifiek vertragingsoverzicht krijgt de gebruiker een overzicht van alle ingevoerde vertragingen voor een bepaald traject. Bij deze vertragingen staat telkens of de ingevoerde vertraging teveel afwijkend is van de gemiddelde vertraging. De vertragingen worden weergegeven van klein naar groot. Als er meer dan vier vertragingen zijn,worden de twee kleinste vertragingen en de twee grootste vertragingen in het rood weergegeven. Dit verduidelijkt wat de uitersten van de ingevoerde vertragingen zijn. Op basis hiervan kan de beheerder dan beslissen om de afwijkingen binnen een bepaald traject goed te keuren of om de te afwijkende vertragingen te verwijderen uit de databank. Algemeen vertragingsoverzicht 738%+)23&.)+$!"#$%$$& '$()(*#+&#,'$(-+./)!"#$%%"&%" '"()(*+$,+", -.'(*+", '--( "", )(*/"0) 7,'-"( '*&$%"(", 0*"+1*)+$23&.)+$ 12$)03 4*5" 67,'-"(",6 8*+**, -9 5)*)$-,5,*#", '"(503$&&",% :$/,; 8*+**, -9 5)*)$-,5,*#", $, %*)*<*,= **,2":$+ :$/,; 8*+**, -9 '"()("=%*)>#,$") &*)"( '*&) %*, **,=-#5)%*)># 8*+**, -9 '"()("=%*)># -9 **,=-#5)%*)>#,$") &*)"( '*&) %*, 3>$%$+" %*)># +"5&**+% 12$)03 4*5" $,'>&&", %$" "('--( :-(+", %*) +"#$%%"&%" '"()(*+$,+", =>,,", 2""(+"+"'", 2-(%", <("*=? 4*5" 6A"'"5)$+",6 6$1+($.) Algemeen '$()(*#+&#,'$(-+./) +"5&**+% 4,3)%$"1+&#5 Figuur 3.16: Schematisch overzicht van de algemene vertragingsoverzichtpagina.

44 Hoofdstuk 3. Applicatiebespreking 37 Binnen het menu vertragingsbeheer hebben we tot slot ook nog een optie Algemeen vertragingsoverzicht toegevoegd. Dit maakt het mogelijk om alle gemiddelde vertragingen voor een bepaald traject te raadplegen. Dit kan interessant zijn om een overzicht te krijgen van alle gemiddelde ingevoerde vertragingen. Zeker ook omdat de optie bestaat om elk traject ook gedetailleerd te bekijken binnen het Specifieke vertragingsoverzicht. Het menu vertragingsbeheer laat dus toe misbruiken na te gaan wat betreft de ingevoerde vertragingen. Bij het overzicht van de afwijkingen of bij het specifieke vertragingsoverzicht worden immers telkens ook de gebruikers weergegeven. Op die manier kan de beheerder eenvoudig zien welke gebruikers regelmatig afwijkende vertragingen ingeven. Momenteel wordt nog niet specifiek bijgehouden in de databank hoeveel keer een bepaalde gebruiker een afwijkende vertraging ingaf. Naar de toekomst toe is dit echter zeker een functie die te overwegen valt aangezien dit nog meer duidelijkheid zal verschaffen over de gegevensinvoer per gebruiker NMBS Gebruikersbeheer Momenteel valt de specifieke gegevensinvoer van de gebruikers wel al te raadplegen in het menu NMBS Gebruikersbeheer. Invoer van een gebruiker 6*)4+01*"20+%!"#$%& #'" %%" (%)&*+,%&!!"#$%&$'($ %$')'*#+"#$",$$'#$%$" %&&' $$" -$.**/($ #$-'0+1$'2 3.)+$4 5 6//$ %$')'*#+"#$" 5 7$')'*#+"#$" %&&' $$" -$.**/( )'*8$9),$$'#$%$" 5 7$')'*#+"#$" %&&' $$" -$.**/( )'*8$9) &. $$" 4.$9+:+$1$ (*)0;,$$'#$%$"!"%&$' %*/+($'$" -'.+/'0+%1*"20+% <,+)9= &: #$-'0+1$'4"**; **",$A+# +4 +" ($ &: %$')'$1(*)0; $" $+"((*)0; '$$(4 %&&'-+8 A+8"2 "*#**" &: %$')'$1(*)0; %*/) %&&' **"1&;4)(*)0; -'$*1B 7*/+(*)+$ #$4/**#( 7*/+(*)+$ "+$) #$4/**#( <,+)9= >*4$?!"%&$'$"? 7*'+*-$/$" +"%0//$" (+$ $'%&&' A&'#$" (*) +"#$%&$'($ %$')'*#+"#$" 10""$",$$'#$#$%$",&'($" -'$*1B >*4$?C$%$4)+#$"? C$.*/$" =&$ ($ +"#$%&$'($ %$')'*#+"#$",$$'#$#$%$" (+$"$" )$,&'($"2 -'$*1B 3$*04%./+"(5 Figuur 3.17: Schematisch overzicht van de afschaffingsbeheerpagina. Op de pagina Invoer van een gebruiker kan de beheerder de ingevoerde vertragingen en afschaffingen van een specifieke gebruiker binnen een bepaalde periode raadplegen. Bij deze weergave wordt dan telkens ook aangeduid of de invoer afwijkend is of niet. Hierbij bestaat de mogelijkheid om enkel de vertragingen weer te geven voor een bepaald traject of de vertragingen voor een bepaald traject op een specifieke datum. Op die manier kan dus bepaald worden welke gebruikers al te vaak verkeerde informatie hebben ingevoerd. Vervolgens kan de beheerder beslissen om alle invoer van een bepaalde gebruiker te verwijderen. Het tabblad Verwijder gebruikersinvoer laat dit toe.

45 Hoofdstuk 3. Applicatiebespreking 38 Verwijder gebruikersinvoer Op de pagina Gebruikersinvoer kan de naam van een gebruiker ingegeven worden, waarna alle records van die gebruiker uit de databank verwijderd worden. Bovendien kan men aanduiden of de gebruiker ook geblokkeerd dient te worden. Indien men de gebruiker blokkeert zal er een waarschuwingsbericht worden weergegeven waarbij men de gebruiker kan inlichten over de blokkering. Voor dit waarschuwingsbericht maakten we gebruik van de standaard drupal set message() functie NMBS Afschaffingsbeheer Tot slot hebben we nog een afschaffingsbeheermenu toegevoegd aan onze module. Dit menu werd toegevoegd om na te gaan of een bepaalde trein werd aangeduid als afgeschaft, terwijl andere gebruikers een vertraging invulden voor die specifieke trein. Indien dit het geval is, kan de beheerder deze conflicterende invoer opvragen voor een bepaalde tijdsperiode. Hierbij kan dan voor elk traject een gedetailleerde weergave opgevraagd worden. Gedetailleerd overzicht van geselecteerde traject Figuur 3.18: Schematisch overzicht van de gedetailleerde overzichtspagina. In deze gedetailleerde weergave worden dan alle ingevoerde vertragingen voor die specifieke trein opgevraagd uit de databank, waarbij ook telkens de gebruikers weergegeven worden. Daarnaast is er ook een overzicht van gebruikers die deze specifieke trein hebben aangeduid als afgeschaft. Op basis hiervan kan de beheerder opteren voor één van de twee opties die onderaan de pagina aangegeven worden. De eerste optie zorgt ervoor dat alle ingevoerde vertragingen voor die specifieke trein worden verwijderd en de trein dus aangeduid wordt als afgeschaft. De tweede optie verwijdert de trein uit de tabel met afgeschafte treinen en bewaart de ingevoerde vertraging. De beheerder zal naar zijn gevoel moeten bepalen welke optie gekozen moet worden. Eventueel kan deze ook besluiten een mail te sturen naar de gebruikers om meer uitleg te vragen over de betreffende invoer. Afschaffingen bekijken Op de tweede pagina van NMBS Afschaffingsbeheer kan de beheerder al de ingegeven afschaffingen voor een arbitraire periode bekijken. Naast traject, aankomst, vertrek, duur en treinsoort wordt als detail ook de gebruiker weergegeven. Om het overzicht te behouden, kan ook hier de weergave aangepast worden.

46 Besluit en uitbreidingsmogelijkheden Besluit We hebben een Drupalmodule geïmplementeerd die inspeelt op het actuele thema treinvertragingen. Treingebruikers kunnen aan de hand van deze applicatie: Vertragingen/afschaffingen registreren: Een aangemelde gebruiker kan zijn opgelopen vertragingen of afschaffingen op de website registreren. Tijdens dit registratieproces worden de details van het beschouwde traject geparset van de NMBS-website, zodat de gebruiker steeds over de huidige dienstregeling kan beschikken. Het is tevens mogelijk om een traject met overstappen te registreren, waarbij de vertragingen per tussentraject worden opgeslagen. De beheerder kan gebruik maken van een aantal functies om de gebruiksinvoer in goede banen te begeleiden. Zo kan hij afwijkende vertragingen, conflicterende vertragingen en afschaffingen en de invoer van een bepaalde gebruiker opvragen. Aangezien de trajectinformatie gebaseerd is op de gebruikersregistraties, is de beheerssectie een belangrijk onderdeel van onze applicatie. Trajectinformatie opvragen: Een al dan niet aangemelde gebruiker heeft de mogelijkheid om de reeds ingegeven vertragingen en afschaffingen van een bepaald rechtstreeks traject te bekijken. Hij kan dit doen aan de hand van drie grafiek-klassen, elk met hun specifieke grafieken en tabellen. Op die manier krijgt de gebruiker een duidelijk beeld van de gemiddelde vertragingen op een bepaald traject. Persoonlijke statistieken: Een geregistreerde gebruiker kan zijn persoonlijke registraties opvragen, eventueel met het oog op compensaties van de NMBS. Hierbij kan hij onder andere de weergave en de beschouwde periode wijzigen om een zo accuraat mogelijk beeld te verkrijgen van zijn reisgedrag. De functionaliteit die we momenteel aanbieden kan nog uitgebreid worden. We bespreken de toekomstperspectieven van de applicatie in de volgende sectie. 39

47 Hoofdstuk 3. Applicatiebespreking 40 Uitbreidingsmogelijkheden Tot slot overlopen we enkele interessante uitbreidingspistes van de module. Dienstregelingen vergelijken: Zoals besproken in Sectie 3.1 bevat het veld versie van de databanktabel nmbs overzicht het versienummer van de huidige dienstregeling 13. Het kan nuttig zijn om verschillende dienstregelingen te vergelijken; zo kan nagegaan worden of de invoering van een nieuwe dienstregeling een al dan niet gunstig effect heeft op de stiptheid van het treinverkeer. Oorzaak van vertraging/afschaffing: De tabel nmbs vertragingen kan uitgebreid worden met een veld dat de oorzaak van vertraging opslaat. De gebruiker zou bij de vertragings- of afschaffingsregistratie dan kunnen kiezen uit een aantal standaard oorzaken 14. Bij de vertragingsgrafieken kunnen deze oorzaken vervolgens in een taartdiagram uitgezet worden. Een tekstveld, waarin additionele trajectinformatie kan ingevoerd worden, behoort in deze optiek ook tot de mogelijkheden. Onrechtstreekse trajecten: Trajecten met overstappen (zie Opmerking 3.1) vormen een grote uitdaging; aangezien we niet met lijnen werken, is het moeilijk om een onrechtstreeks geregistreerd traject te visualiseren. We slaan evenwel in de tabel nmbs traject het traject met bijhorende tussenstations op (zie Sectie 3.1). Aan de hand daarvan zou het traject met overstappen gereconstrueerd kunnen worden uit de rechtstreekse tussentrajecten. Bij een onrechtstreeks traject kunnen voor de tussentrajecten momenteel enkel vertragingen geregistreerd worden. In de toekomst zou het ook mogelijk moeten zijn om een bepaald tussentraject als afgeschaft te kunnen registreren. Ten slotte zou een geregistreerde gebruiker zijn persoonlijke statistieken in pdf-formaat moeten kunnen omzetten. We hebben dit geprobeerd aan de hand van een drupalmodule, maar het resultaat was niet bevredigend. 13 Momenteel wordt dit opgeslagen als bvb. v1, maar het is beter om in het vervolg ook de ingangsdatum van de beschouwde dienstregeling bij te houden. 14 We denken hierbij aan technische problemen, staking, andere, enz...

48 Bibliografie [1] Handelingen (n 4-13) van de Belgische Senaat, donderdag 17 januari Namiddagvergadering. 17/2008\&DOSID= \&MINID=4333\&LEG=4\&NR=13\&VTYPE=vouid\&LANG=nl [2] [3] Plenaire vergadering van de Belgische Senaat, Donderdag 29 oktober /29/ 1998 \&TYP=crabv\&VOLGNR=1\&LANG=nl [4] https://www.infrabel.be/portal/page/portal/pgr_infr_e_internet/pag_society/ Ponctualite2007/Ponctualite-infos/ [5] Douglas T., Little M., Smith J.W., Building online Communities with Drupal, PhpBB and Wordpress, Apress, 2005, xxvii [6] [7] [8] [9] [10] [11] We baseren ons grotendeels op: J.K. Van Dyck,M.Westgate, Pro Drupal Development, Apress, Berkeley, 2007,428 p. [12] [13] [14] [15] [16] [17] [18] 41

49 Bibliografie 42 [19] [20] [21] [22] [23] [24] [25]

50 Appendix A A.1 Broncode: interactie NMBS-website <?php $data= railway_getcontent("http://hari.b-holding.be/hafas/bin/query.exe/n?s=".$_session['station1']. "!&Z=".$_SESSION['station2']."!&time=".$_SESSION['tijd']."&date=".$_SESSION['datum']. "&start=1&l=b-rail&req0journeyproduct_prod_list=1: "); $_SESSION['vertrekstation']=""; $temp=explode("overzicht",$data); $temp=explode("details van selectie",$temp[1]); $temp=explode("hafasovcheckbox",$temp[0]); for($i=2;$i<count($temp);$i++){ $temp2=explode("</td>",$temp[$i]); $temp3=explode("<br />",$temp2[1]); $_SESSION['vertrekstation'][$i-2]=str_replace(" ","", trim(strip_tags($temp3[0]))); $_SESSION['eindstations'][$i-2]=str_replace(" ","", trim(strip_tags($temp3[1]))); $temp3=explode("<br />",$temp2[2]); $temp3a= explode("<br />", $temp3[0]); $temp3b= explode("<br />", $temp3[1]); $_SESSION['vertrekdatum'][$i-2]=trim(Strip_tags($temp3a[0])); $_SESSION['aankomstdatum'][$i-2]= trim(strip_tags($temp3b[0])); if ($_SESSION['aankomstdatum'][$i-2] == ""){ $_SESSION['aankomstdatum'][$i-2]= $_SESSION['vertrekdatum'][$i-2]; } $temp3=explode("<br />",$temp2[4]); $_SESSION['vertrekuur'][$i-2]=str_replace(" ","", trim(strip_tags(trim($temp3[0])))); $_SESSION['aankomstuur'][$i-2]=str_replace(" ","", strip_tags(trim($temp3[1]))); $_SESSION['reisduur'][$i-2]=str_replace("\n","",(str_replace(" ","",strip_tags(trim($temp2[6]))))); $_SESSION['overstappen'][$i-2]= trim(strip_tags($temp2[7])); $temp4=explode("<img src=",$temp2[8]); $_SESSION['extendedtreinsoort'][$i-2]=""; $_SESSION['treinsoort'][$i-2]=""; for($j=1;$j<count($temp4);$j++){ $temp5=explode("title=\"",$temp4[$j]); $temp6=str_replace("\" />","",trim($temp5[1])); $temp7= explode(" ",$temp6); $opgelet=false; if ($temp7[0]=="opgelet!") {} else{ if ($_SESSION['treinsoort'][$i-2]==""){ $_SESSION['extendedtreinsoort'][$i-2]=$temp6; $_SESSION['treinsoort'][$i-2]=$temp7[0]; } else{ $_SESSION['extendedtreinsoort'][$i-2].=", ".$temp6; $_SESSION['treinsoort'][$i-2].=", ".$temp7[0]; } } } }?> 43

51 Bijlage A. Appendix 44 A.2 Gebruikersmogelijkheden In dit hoofdstuk wensen we, aan de hand van schermafbeeldingen, de mogelijkheden voor geregistreerde gebruikers van onze website toe te lichten. A.2.1 Ingeven van treinvertragingen Wanneer een geregistreerde gebruiker een vertraging wenst in te geven, dient deze in het menu (op de website links) te klikken op Vertraging ingeven. Vervolgens komt de gebruiker op onderstaande pagina terecht. De gebruiker kan op twee mogelijke manieren een traject te selecteren. Ofwel wordt er een traject geselecteerd dat reeds aanwezig is in de voorkeurtrajecten van de gebruiker, zoals op onderstaande afbeelding.

52 Bijlage A. Appendix 45 Ofwel opteert de gebruiker ervoor om een nieuw traject in te geven. Hierbij kan de gebruiker aanvinken of dit traject dient opgeslagen te worden bij de voorkeurtrajecten. Eens het traject en de datum geselecteerd is, dient de gebruiker aan te geven of er een afgeschafte trein of een trein met vertraging zal geregistreerd worden. In dit voorbeeld zullen we de vertraging registreren voor de trein van Brugge naar Hasselt op 15 mei 2008 omstreeks 16:12u. Eens de gebruiker op bevestigen klikt, wordt de informatie verwerkt en komt de gebruiker op de pagina Treinenoverzicht terecht. Op deze pagina bestaat de mogelijkheid om de datum te wijzigen indien dit vereist is.

53 Bijlage A. Appendix 46 Wij selecteren de trein van Brugge naar Hasselt omstreeks 16:20u. Aangezien dit een traject met 1 overstap is worden we doorverwezen naar de pagina Overstappen. Aangezien we een traject selecteerden met slechts één overstap, verschijnt er op de pagina ook maar één tekstveld om een overstapplaats in te vullen. In het voorbeeld vullen we als overstapplaats het station Antwerpen - Berchem in. Vervolgens worden we terug doorverwezen naar de pagina Treinenoverzicht waar automatisch het traject Brugge - Antwerpen-Berchem staat aangegeven.

54 Bijlage A. Appendix 47 Vanaf nu kunnen er geen trajecten meer met overstappen geselecteerd worden. Indien dit toch gebeurt, verschijnt onderstaande foutmelding. Bijgevolg selecteren we dan ook het traject zonder overstappen en komen we op de pagina Vertraging ingeven terecht.

55 Bijlage A. Appendix 48 Na invullen van een vertraging van twee minuten worden we terug doorverwezen naar de pagina Treinenoverzicht. Daar staat het tweede deel van ons traject reeds aangegeven. Vervolgens wijzigen we het uur als test naar 15:12u.

56 Bijlage A. Appendix 49 Vervolgens komen we op de pagina Vertraging ingeven waar er geconstateerd wordt dat de trein vroeger vertrekt dan dat de vorige trein is aangekomen. Bijgevolg keren we terug naar de voorgaande pagina. Waarna we de trein selecteren van 17:38u.

57 Bijlage A. Appendix 50 Vervolgens vullen we 3 minuten vertraging in. En ons traject is geregistreerd. Ter illustratie registreren we ook een afgeschafte trein.

58 Bijlage A. Appendix 51 De trein van Brugge naar Oostende op 15 mei omstreeks 16:42u. wordt geselecteerd. De afschaffing wordt bevestigd.

59 Bijlage A. Appendix 52 Voorkeurstrajcten De gebruiker kan zijn voorkeurtrajecten zelf beheren. Als voorbeeld wordt het traject Drongen - Aalter toegevoegd. De gebruiker kan tevens één of meerdere voorkeurtrajecten met een muisklik verwijderen.

60 Bijlage A. Appendix 53 En de selecteerde trajecten werden uit de lijst verwijderd.

61 Bijlage A. Appendix 54 A.2.2 Bekijken van de persoonlijke statistieken Naast het ingeven van vertragingen of afschaffingen kunnen geregistreerde gebruikers ook hun gegevensinvoer bekijken die verzameld worden onder de noemer Persoonlijke statistieken. Op de pagina Recente lijnen worden de laatste 20 ingevulde lijnen weergegeven van zowel de ingevoerde vertragingen als de ingevoerde afschaffingen. Aangezien er in ons voorbeeld nog niet zoveel vertragingen of afschaffingen zijn ingegeven is het aantal lijnen op onderstaande afbeelding wat beperkter. Naast deze weergave is het voor de gebruikers ook mogelijk om specifieke grafieken op te vragen voor de weergegeven lijnen. Op de pagina Ingevoerde vertragingen/afschaffingen kan de gebruiker dan meer specifiek per maand de ingevoerde gegevens bekijken.

62 Bijlage A. Appendix 55

63 Bijlage A. Appendix 56 Als voorbeeld geven we alle vertragingen en afschaffingen weer voor het traject Brugge - Oostende. Ook is het mogelijk alle vertragingen en afschaffingen weer te geven voor een bepaald traject op een specifiek uur. In dit geval is dat het traject Brugge - Antwerpen-Berchem met vertrekuur om 16:20u. en aankomstuur om 17:33u.

64 Bijlage A. Appendix 57 Het tabblad Extra biedt ongeveer dezelfde mogelijkheden als het tabblad Ingevoerde vertragingen/afschaffingen. Op deze pagina worden echter niet alle vertragingen weergegeven voor een specifieke maand maar alle vertragingen voor een bepaald traject binnen een bepaalde periode. Ook hier is het mogelijk de weergave aan te passen.

65 Bijlage A. Appendix 58 Tot slot zijn er ook nog de Jaarstatistieken. Op deze pagina krijgt de gebruiker een mooie algemene grafiek te zien, op basis van de ingevoerde gegevens. Procentueel wordt ook aangeduid hoeveel vertraging de ingevoerde treinen hadden. A.2.3 Grafieken 1 Opvragen van grafieken De gebruiker krijgt een gedetailleerd overzicht van de trein, die bovenaan de pagina in het rood vermeld staat. De eerste grafiek toont de gemiddelde dagelijkse vertraging van de gespecificeerde maand.

66 Bijlage A. Appendix 59 Vervolgens worden de vooropgestelde reisduur en de gemiddelde maandelijkse vertraging weergegeven in een taartdiagram. De volgende twee grafieken, de gemiddelde vertraging per weekdag de gemiddelde vertraging per uur van de dag worden enkel getoond als ze van toepassing zijn. Indien de beschouwde trein enkel de zaterdagavond om 22.15u. spoort, zullen deze grafieken dus niet weergegeven worden.

67 Bijlage A. Appendix 60 Grafieken 2 De grafiek van deze pagina toont de gemiddelde dagelijkse vertraging per treinsoort voor de beschouwde maand. Het traject en de maand worden wederom in het rood bovenaan de pagina weergegeven. De gemiddelde maandelijkse reisduur van elke treinsoort waarvoor er in de beschouwde maand reeds vertragingen werden geregistreerd, wordt getoond in een taartdiagram.

68 Bijlage A. Appendix 61 Ten slotte worden eventuele afgeschafte treinen getabelleerd en kan de gebruiker de grafieken van het omgekeerde traject bekijken. Grafieken 3 De gemiddelde maandelijkse vertraging per treinsoort en per jaar worden getoond in onderstaande grafiek. Merk op dat de kleurcodes van de treinsoorten consequent gehanteerd worden doorheen de verschillende grafiek-klassen. De tabel van Grafieken 3 toont de ingaven per maand en per treinsoort van het beschouwde traject. Ten slotte kan de gebruiker ook hier naar de grafieken van het omgekeerde traject navigeren.

69 Bijlage A. Appendix 62 A.3 Beheersmogelijkheden Ook voor de beheerde van de website werden een aantal functies ontwikkeld. Deze vallen te raadplegen in de beheerssectie van de website.

70 Bijlage A. Appendix 63 A.3.1 Nmbs Vertraginsgbeheer Allereerst bekijken we in het menu Nmbs Vertragingsbeheer de pagina Bekijk afwijkingen. Hier wordt aangeduid wie er afwijkende vertragingen heeft ingevoerd voor welk traject. In dit voorbeeld merken we dat er één afwijkende vertraging is ingegeven. Bijgevolg selecteren we deze om een gedetailleerd overzicht te kunnen krijgen over de ingevoerde vertragingen van dat specifieke traject.

71 Bijlage A. Appendix 64 We merken dat er reeds vijf vertragingen zijn ingevoerd. Deze zijn gerangschikt van klein naar groot, waarbij de twee grootste en de twee kleinste vertragingen in het rood aangegeven staan.

72 Bijlage A. Appendix 65 We besluiten de afwijkende vertraging te verwijderen. Aangezien er nu maar vier vertragingen overblijven heeft het weinig zin om deze allemaal in het rood weer te geven.

73 Bijlage A. Appendix 66 Het is overigens ook mogelijk om een specifiek traject te bekijken door gewoon dat traject in te voeren op deze pagina zelf. Tot slot is er binnen het menu Vertragingsbeheer ook nog de mogelijkheid om de gemiddelde vertragingen voor een bepaald traject binnen een bepaalde op te vragen. Dit kan op de pagina Algemeen vertragingoverzicht. In onderstaande werd het traject Bellem - Brugge opgevraagd in de periode van 1/5/2008 tot 18/5/2008.

74 Bijlage A. Appendix 67 A.3.2 Nmbs Stationsbeheer Het menu stationsbeheer werd toegevoegd om het aan de beheerder toe te laten de benodigde stations te importeren in de databank. Op de pagina Stations importeren kan dit gebeuren aan de hand van een CSV-bestand. We gebruiken een CSV-bestand waarin alle stations opgesomd staan, zoals in onderstaand voorbeeld. Vervolgens worden de stations met behulp van een batch geïmporteerd.

75 Bijlage A. Appendix 68 De stationsnamen kunnen ook handmatig ingegeven worden. Ook bestaat de mogelijkheid om stations te verwijderen.

76 Bijlage A. Appendix 69 Tot slot kan de beheerder ook nog de naam van een station wijzigen

77 Bijlage A. Appendix 70 A.3.3 Nmbs Gebruikersbeheer In het menu gebruikersbeheer kunnen de vertragingen en afschaffingen ingevoerd door een bepaalde gebruiker opgevraagd worden. Dit laat het toe om na te gaan of een gebruiker niet al teveel afwijkende vertragingen heeft ingegeven. Ook hier weer bestaat de mogelijkheid om de gebruikersinvoer weer te geven volgens traject, volgens traject en tijd...

78 Bijlage A. Appendix 71 Indien een gebruiker teveel afwijkende vertragingen invoert, kan de beheerder besluiten de gegevensinvoer van die gebruiker te verwijderen. Hierbij bestaat de mogelijkheid om de gebruiker ook te blokkeren. A.3.4 Nmbs Afschaffingsbeheer Het menu afschaffingsbeheer werd toegevoegd opdat de beheerder zou kunnen nagaan of er geen conflicterende gegevensinvoer is. Hiermee doelen we op het feit dat een gebruiker voor een bepaalde trein kan ingeven dat deze vertraging had maar daarnaast voor diezelfde trein ook kan aanduiden dat deze trein afgeschaft werd. Op de pagina Bekijk conflicten wordt deze conflicterende gegevensinvoer weergegeven.

79 Bijlage A. Appendix 72 Wanneer we op bevestigen klikken, wordt er een gedetailleerd overzicht gegeven van de ingevoerde vertragingen/afschaffingen. We opteren ervoor om de vertragingen te behouden, waarna we automatisch teruggestuurd worden naar de Bekijk conflicten pagina. Daar staat dan ook maar één traject meer aangegeven.

80 Bijlage A. Appendix 73 Tot slot werd in dit menu ook nog de optie toegevoegd om alle afschaffingen te bekijken binnen een bepaalde periode.

Handleiding voor het gebruik van de community website van OBS t Padland

Handleiding voor het gebruik van de community website van OBS t Padland Handleiding voor het gebruik van de community website van OBS t Padland Versie: 1.1 Datum: 18 juli 2013 Geschreven door: ict@padland.nl 2013 OBS t Padland. Pagina 1 Inhoud Inleiding... 3 Padland Startpagina...

Nadere informatie

De voordelen van Drupal

De voordelen van Drupal Drupal is een open source Content Management System (CMS). Daarnaast kun je Drupal zien als een framework, dit betekent dat je modules (oftewel mini-applicaties) kunt implementeren in je installatie van

Nadere informatie

2 Eisenanalyse. 2.1 Functionele eisen het UseCaseDiagram

2 Eisenanalyse. 2.1 Functionele eisen het UseCaseDiagram 2 Eisenanalyse 2.1 Functionele eisen het UseCaseDiagram beschrijvingen van de UseCases en/of prototype Inloggen Inloggen Deze usecase zorgt ervoor dat de gebruiker zich kan inloggen op het systeem. lid

Nadere informatie

Stella Maris St. Willibrordus. Handleiding site. http://www.wilste.nl

Stella Maris St. Willibrordus. Handleiding site. http://www.wilste.nl Stella Maris St. Willibrordus Handleiding site http://www.wilste.nl Versie 17 februari 2010 Inhoudsopgave 1 Inleiding... 3 1.1 Drupal... 3 1.2 Beknopte handleiding... 4 1.3 Rollen... 4 1.4 Inhoudstypen...

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren Maart 2015 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 2 December 2014 Yannick Verschueren

Nadere informatie

E-PROCUREMENT GEBRUIKERSBEHEER

E-PROCUREMENT GEBRUIKERSBEHEER E-PROCUREMENT GEBRUIKERSBEHEER HANDLEIDING VOOR AANKOPERS GEBRUIKSVOORWAARDEN Rechten De FOD Personeel en Organisatie behoudt alle rechten (waaronder auteursrechten, merkrechten en octrooien) met betrekking

Nadere informatie

Handleiding Webapplicatie Robin

Handleiding Webapplicatie Robin Handleiding Webapplicatie Robin (Versie 05) Inhoudstafel 1. Registratie van uw labo... 2 2. Persoonlijke account aanmaken... 4 3. Inloggen in uw labo account... 7 4. Wijziging labogegevens... 8 5. Inschrijven

Nadere informatie

Drupal. Handleiding voor medewerkers. Wim Hambrouck V1.1 (januari 2011)

Drupal. Handleiding voor medewerkers. Wim Hambrouck V1.1 (januari 2011) Drupal Handleiding voor medewerkers Wim Hambrouck V1.1 (januari 2011) * + INHOUDSTAFEL Inhoudstafel... 2 1. Inloggen... 3 2. Menu opties... 3 3. Inhoud aanmaken... 4 3.1 Algemene instellingen voor nieuwe

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren November 2014 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 1 Inhoudstafel 1 Introductie 3 1.1

Nadere informatie

Zicht - Content Management Systeem een algemene beschrijving

Zicht - Content Management Systeem een algemene beschrijving Zicht - Content Management Systeem een algemene beschrijving Versie april/2008 Zicht nieuwe media ontwerpers 2008 1 Inleiding Een Content Management Systeem (CMS) is een webapplicatie waarmee je zonder

Nadere informatie

XAMPP Web Development omgeving opzetten onder Windows.

XAMPP Web Development omgeving opzetten onder Windows. XAMPP Web Development omgeving opzetten onder Windows. Inhoudsopgave 1. Lees dit eerst... 2 2. Inleiding... 2 1 Xampp downloaden... 2 2 Installatie Xampp 1.7.4 op externe harddisk... 3 3 XAMPP herconfiguren...

Nadere informatie

Handleiding Leerplatform EVA 3IMSA http://dev.lerendoejezelf.be/dev_eva_drupal/

Handleiding Leerplatform EVA 3IMSA http://dev.lerendoejezelf.be/dev_eva_drupal/ Handleiding Leerplatform EVA 3IMSA http://dev.lerendoejezelf.be/dev_eva_drupal/ Inhoudsopgave 1 Voorwoord... 3 2 Een account registreren en beheren... 4 3 Oefen je kennis... 8 4 Portfolio... 10 5 Overzichten

Nadere informatie

Beschrijving functioneel en technisch design van de website

Beschrijving functioneel en technisch design van de website Bespreking Punten: Beschrijving functioneel en technisch design van de website Nr. Punt 1 Student 2 Bedrijf 3 Algemene lay out 4 Technologieën 5 Webruimte en datatrafiek 1. Student Registratie Bij de registratie

Nadere informatie

JOBSITE Handleiding (19-01-2010)

JOBSITE Handleiding (19-01-2010) JOBSITE Handleiding (19-01-2010) 19/01/2010 2/22 Inhoudsopgave INHOUDSOPGAVE... 2 INLEIDING... 3 JOBSITE FUNCTIONALITEITEN... 4 JOBSITE: BEZOEKER ZONDER ACCOUNT... 5 HOMEPAGE... 5 BEZOEKERS ZONDER ACCOUNT

Nadere informatie

Website van het openbaar ministerie Korte gebruikershandleiding voor Content Managers

Website van het openbaar ministerie Korte gebruikershandleiding voor Content Managers Website van het openbaar ministerie Korte gebruikershandleiding voor Content Managers De website van het openbaar ministerie is momenteel (tijdelijk) te vinden op volgende intranetadres: http://10.241.132.229.

Nadere informatie

Rollen en toegangsrechten

Rollen en toegangsrechten Rollen en toegangsrechten Als we een site ontwikkeld hebben waar bezoekers misschien regelmatig naar terugkeren, kunnen we de mogelijkheid openzetten dat de bezoekers zich registreren. Dit geldt bijvoorbeeld

Nadere informatie

WordPress in het Kort

WordPress in het Kort WordPress in het Kort Een website maken met Wordpress. In minder dan één uur online! Inclusief installatie van een thema en plugins Alle rechten 2013, Rudy Brinkman, BrinkhostDotCom, http://www.brinkhost.nl

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 02 april 2009. Versie 2.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin

Nadere informatie

Xampp Web Development omgeving opzetten onder Windows.

Xampp Web Development omgeving opzetten onder Windows. Xampp Web Development omgeving opzetten onder Windows. Inhoudsopgave 1. Lees dit eerst... 2 2. Inleiding... 2 3. Installatie Xampp... 3 1.1 Installatie Xampp Launcher... 7 1.2 Controle geïnstalleerde bestanden...

Nadere informatie

15 July 2014. Betaalopdrachten web applicatie beheerders handleiding

15 July 2014. Betaalopdrachten web applicatie beheerders handleiding Betaalopdrachten web applicatie beheerders handleiding 1 Overzicht Steeds vaker komen we de term web applicatie tegen bij software ontwikkeling. Een web applicatie is een programma dat online op een webserver

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................

Nadere informatie

Handleiding digitaal dossier

Handleiding digitaal dossier Handleiding digitaal dossier Handleiding digitaal dossier... 1 Omschrijving... 2 Login met persoonlijke account... 3 Geen persoonlijke account... 3 Automatisch omwisselen naar persoonlijke account... 4

Nadere informatie

15 July 2014. Betaalopdrachten web applicatie gebruikers handleiding

15 July 2014. Betaalopdrachten web applicatie gebruikers handleiding Betaalopdrachten web applicatie gebruikers handleiding 1 Overzicht Steeds vaker komen we de term web applicatie tegen bij software ontwikkeling. Een web applicatie is een programma dat online op een webserver

Nadere informatie

Handleiding Joomla! 1.5

Handleiding Joomla! 1.5 Handleiding Joomla! 1.5 Versie :0.1 2/20 Inhoud 2. Aanmelden... 4 3. Artikelbeheer... 5 3.1 Nieuw artikel toevoegen... 5 3.2 Bestaand artikel wijzigen/verwijderen... 6 3.2.1 Front end editing... 7 4. Sectie

Nadere informatie

Project plan. Erwin Hannaart Sander Tegelaar 61849 62407

Project plan. Erwin Hannaart Sander Tegelaar 61849 62407 Project plan Erwin Hannaart Sander Tegelaar 61849 62407 I4C2 I4C1 1 Inhoudsopgave Doel en doelgroep van het project... 3 Beschrijving van het project... 4 Benodigde materialen... 5 Te verwachten resultaten,

Nadere informatie

De handboek van Blogilo. Mehrdad Momeny Vertaler/Nalezer: Freek de Kruijf

De handboek van Blogilo. Mehrdad Momeny Vertaler/Nalezer: Freek de Kruijf Mehrdad Momeny Vertaler/Nalezer: Freek de Kruijf 2 Inhoudsopgave 1 Inleiding 5 2 Blogilo gebruiken 6 2.1 Beginnen........................................... 6 2.2 Een blog instellen......................................

Nadere informatie

Praktische handleiding Aanmaak van een account

Praktische handleiding Aanmaak van een account Praktische handleiding Aanmaak van een account Inhoud 1. Inleiding... 3 2. Start... 4 3. Nieuwe account aanmaken... 4 3.1. Invoeren van bedrijfsinformatie door gebruik van het ondernemingsnummer (KBO-nummer).

Nadere informatie

Handleiding puntenboek-module

Handleiding puntenboek-module Handleiding puntenboek-module Inleiding Het puntenboek is een tool dat u toelaat om opdrachten (score-elementen) te definiëren, deze omschrijven informatie op de ELO die gescoord kan worden. Dit kan veel

Nadere informatie

Gebruikershandleiding: opzoekingen D.I.V.

Gebruikershandleiding: opzoekingen D.I.V. Gebruikershandleiding: opzoekingen D.I.V. Betreffende: Project: C.I.A.-Server: opzoekingen D.I.V. C.I.A.-server: Central Identification & Authentication Server Ten behoeve van: Nationale Kamer van Gerechtsdeurwaarders

Nadere informatie

Software Requirements Specification

Software Requirements Specification Software Requirements Specification PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage

Nadere informatie

Handleiding OK CV: ESS. Handleiding. Gebruiker: ESS. Document versie: 2.1 Versiedatum: 2014-12-16 Status: concept Auteur: 2BA.

Handleiding OK CV: ESS. Handleiding. Gebruiker: ESS. Document versie: 2.1 Versiedatum: 2014-12-16 Status: concept Auteur: 2BA. Handleiding Gebruiker: ESS Document versie: 2.1 Versiedatum: 2014-12-16 Status: concept Auteur: 2BA Pagina 1 Inhoudsopgave Introductie 3 Terminologie 3 Stap 1. Inloggen op FGO+ website 4 Stap 2: Inloggen

Nadere informatie

E-PROCUREMENT GEBRUIKERSBEHEER

E-PROCUREMENT GEBRUIKERSBEHEER E-PROCUREMENT GEBRUIKERSBEHEER HANDLEIDING VOOR AANKOPERS Rechten GEBRUIKSVOORWAARDEN De FOD Personeel en Organisatie behoudt alle rechten (waaronder auteursrechten, merkrechten en octrooien) met betrekking

Nadere informatie

Instructie RFM modules

Instructie RFM modules Instructie RFM module Introductie RFM staat voor Registratie Flow Module. De RFM module vormt de basis voor een aantal nieuwe modules binnen equse Indicate: - Calamiteiten - Klachten - Kindermishandeling

Nadere informatie

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen

Nadere informatie

MOTUS- APP: De gebruikersgids

MOTUS- APP: De gebruikersgids MOTUS- APP: De gebruikersgids 1 Hoe de MOTUS- app gebruiken Een gebruikersgids voor de web tool van MOTUS is beschikbaar via de webpagina s http://www.motus.vub.ac.be en www.motusdemo.com. Wat nu volgt

Nadere informatie

Selenium IDE Webdriver. Introductie

Selenium IDE Webdriver. Introductie Selenium IDE Webdriver Het Wielsem 10, 5231 BW s- Hertogenbosch, telefoon 073-6409311 e- mail info@testwork.nl internet http://www.testwork.nl 1 Inhoudsopgave 1 Inhoudsopgave... 2 2 Selenium IDE... 3 3

Nadere informatie

Registratie als energiemeester (als je je voor het eerst aanmeldt).

Registratie als energiemeester (als je je voor het eerst aanmeldt). Handleiding website Energiejacht voor energiemeesters In deze handleiding vind je de nodige informatie over hoe je met de website van Energiejacht aan de slag kunt gaan. Met vragen over de website kun

Nadere informatie

WELKOM IN PLDA INHOUDSTAFEL

WELKOM IN PLDA INHOUDSTAFEL INHOUDSTAFEL ALGEMEEN...2 COMPONENTEN VAN PLDA...2 Aangifte...2 Financiën...2 Goederenstroom...2 INLOGGEN...3 INLOGPROCEDURE...3 WERKTAAL BEPALEN...4 NAVIGATIERICHTLIJNEN...5 ALGEMEEN...5 BROWSERFUNCTIONALITEITEN...5

Nadere informatie

Taxis Pitane Link. (gebruikershandleiding) Censys BV - Eindhoven

Taxis Pitane Link. (gebruikershandleiding) Censys BV - Eindhoven Taxis Pitane Link (gebruikershandleiding) Censys BV - Eindhoven Inhoud Wat is Taxis Pitane Link?... 4 Inloggen in Taxis Pitane Link... 5 Wachtwoord vergeten... 6 Startscherm of hoofdmenu... 7 Helpvensters

Nadere informatie

Handleiding: User Management Schuldbemiddelaars

Handleiding: User Management Schuldbemiddelaars Handleiding: User Management Schuldbemiddelaars Betreffende: Project: Handleiding beheer gebruikers van CBB voor schuldbemiddelaars CBS: Centrale Bron Schuldbemiddelaars Centraal Bestand van Berichten

Nadere informatie

Software Design Document

Software Design Document Software Design Document PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie

Nadere informatie

PlanCare Dossier V11.11 Tijdverantwoording. Inhoudsopgave

PlanCare Dossier V11.11 Tijdverantwoording. Inhoudsopgave Inhoudsopgave Inleiding... 2... 3 Leesmodus... 3 Schrijfmodus... 4 Verantwoording... 5 Wijzigen van een verantwoording... 8 Bevriezen en vrijgeven... 8 PlanCare Dossier V11.11 - Pagina 1 van 8 Inleiding

Nadere informatie

HANDLEIDING Content Management Systeem de Fertilizer 4

HANDLEIDING Content Management Systeem de Fertilizer 4 HANDLEIDING Content Management Systeem de Fertilizer 4 1 INHOUDSOPGAVE 1. INLEIDING 3 2. BEHEER 5 2.1 Site structuur 6 2.2 Afdelingen 7 2.3 Beheerders 8 2.3.1 Rechten 9 2.3.1.1 Rechten Beheer 9 3. INSTELLINGEN

Nadere informatie

Les 15 : updaten van gegevens in de database (deel2).

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

HANDLEIDING ZET5 BANKPROGRAMMA

HANDLEIDING ZET5 BANKPROGRAMMA HANDLEIDING ZET5 BANKPROGRAMMA 1 Inhoud Hoofdmenu 3 Omzetten tonen 4 Bankuittreksels 5 Orders 6 Overschrijvingen 6 Toelaten 8 Binnenlandse overschrijving 11 Globale overschrijving 12 Debetorders (domicilie

Nadere informatie

INSTALLATIE VAN DE BelD KAARTLEZER

INSTALLATIE VAN DE BelD KAARTLEZER INSTALLATIE VAN DE BelD KAARTLEZER 1. Inleiding Om toegang te krijgen tot het systeem van de Orde van Architecten Vlaamse Raad waarmee u uw digitaal visum kan verkrijgen, dient u te beschikken over een

Nadere informatie

Handleiding inschrijvingsmodule raamovereenkomsten. Deel 1 : Inloggen als instelling

Handleiding inschrijvingsmodule raamovereenkomsten. Deel 1 : Inloggen als instelling Bisdom Antwerpen Vicariaat voor het onderwijs Handleiding inschrijvingsmodule raamovereenkomsten 1. INLEIDING Deel 1 : Inloggen als instelling Het inschrijven voor een raamovereenkomst gebeurt per instelling

Nadere informatie

Handleiding: CIA - User Management

Handleiding: CIA - User Management Handleiding: CIA - User Management Onderwerp: Project: Ten behoeve van: Vanwege: Handleiding beheer gebruikers van CIA - Gerechtsdeurwaarders CIA Central Identification & Authentication server NKGB National

Nadere informatie

C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e

C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e C a s e S t u d y Y i f e C o n t a c t i n f o r m a t i e Koen Piers Boudewijnlaan 1 Ondernemingsnr. 0808.450.557 0486/666.543 3590 Diepenbeek Rekeningnr. 979-5766597-49 koen@aurealis.be België D o e

Nadere informatie

PILNAR web applicatie. Handleiding

PILNAR web applicatie. Handleiding PILNAR web applicatie Handleiding Table of Contents De PILNAR editor...3 Toegang tot de omgeving...3 De PILNAR omgeving...3 Hoofdmenu...4 Navigatie...5 Zoeken...6 Detailoverzichten...6 Collectie... 7 Inzending...

Nadere informatie

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op 1 Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP.... 8 Joomla installeren op XAMPP... 15 Handige links... 16 2 Disclaimer Bij de samenstelling

Nadere informatie

Deel I Introductie Clixmaster Studio

Deel I Introductie Clixmaster Studio Deel I Introductie Clixmaster Studio R5.0 Gebruikershandleidingen Clixmaster Studio Handleiding 1/12 Deel I - Introductie Clixmaster Studio 2010 Clixmaster BV Alle rechten voorbehouden. Niets uit deze

Nadere informatie

Gebruikershandleiding. StUF Testplatform Versie 1.3.0

Gebruikershandleiding. StUF Testplatform Versie 1.3.0 Gebruikershandleiding StUF Testplatform Versie 1.3.0 Documentversie: 0.7 Datum 25 november 2014 Status In gebruik Inhoudsopgave 1 INLEIDING...3 2 GEBRUIK MAKEN VAN HET STUF TESTPLATFORM...4 2.1 INLOGGEN

Nadere informatie

Central Station. CS website

Central Station. CS website Central Station CS website Versie 1.0 18-05-2007 Inhoud Inleiding...3 1 De website...4 2 Het content management systeem...5 2.1 Inloggen in het CMS... 5 2.2 Boomstructuur... 5 2.3 Maptypen... 6 2.4 Aanmaken

Nadere informatie

Gebruikers handleiding Brugge Printshop webshop

Gebruikers handleiding Brugge Printshop webshop Gebruikers handleiding Brugge Printshop webshop Gebruikers handleiding Brugge Printshop webshop... 1 Inleiding... 3 Inloggen... 4 Wachtwoord vergeten... 4 Gebruikersnaam vergeten... 5 Nog geen klant?...

Nadere informatie

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat: Training Trainingscode Duur Gepubliceerd Taal Type Leermethode Kosten SF2015V8 4 dagen 02/02/2015 Nederlands & Engels Developer, basis Invidueel & klassikaal Op aanvraag Deze training richt zich op het

Nadere informatie

Web applicatie Tolk- en vertaalaanvragen: Handleiding voor aanvragers SVBBO

Web applicatie Tolk- en vertaalaanvragen: Handleiding voor aanvragers SVBBO Eerste aanmelding Web applicatie Tolk- en vertaalaanvragen: Handleiding voor aanvragers SVBBO Datum release 24/04/2013 Versie 1.0 1. Eerste aanmelding Wanneer u als contactpersoon via het registratiesysteem

Nadere informatie

Handleiding OK CV: ESS. Handleiding. Gebruiker: ESS. Document versie: 2.4 Versiedatum: 2015-04-15 Status: definitief Auteur: 2BA.

Handleiding OK CV: ESS. Handleiding. Gebruiker: ESS. Document versie: 2.4 Versiedatum: 2015-04-15 Status: definitief Auteur: 2BA. Handleiding Gebruiker: ESS Document versie: 2.4 Versiedatum: 2015-04-15 Status: definitief Auteur: 2BA Pagina 1 Inhoudsopgave Introductie 3 Terminologie 3 Stap 1. Inloggen op FGO+ website 4 Stap 2: Inloggen

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Software Requirements Specification

Software Requirements Specification Software Requirements Specification PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage

Nadere informatie

TECHNICAL DESIGN DOCUMENT

TECHNICAL DESIGN DOCUMENT TECHNICAL DESIGN DOCUMENT BACHELORPROJECT IN3405 John Ciocoiu 1358227 Elwin Dokter 1275909 TECHNISCHE UNIVERSITEIT DELFT FACULTEIT EWI WOENSDAG 28 APRIL 2010 VERSIE 1 COMMISSIE: Ing. D.J. van Roest (opdrachtgever)

Nadere informatie

DAVE. Migratie Cockpit A BUSINESS INTELLIGENCE ODYSSEY. Inleiding. Voorbereiding

DAVE. Migratie Cockpit A BUSINESS INTELLIGENCE ODYSSEY. Inleiding. Voorbereiding DAVE A BUSINESS INTELLIGENCE ODYSSEY Migratie Cockpit Inleiding De module Migratie zorgt ervoor dat u op een vlotte manier kan overstappen van Cockpit Boekhouding naar Dave Accounting. Dit betekent dat

Nadere informatie

Advertentiewereld Dé advertentiesite voor regio s en groepen

Advertentiewereld Dé advertentiesite voor regio s en groepen Advertentiewereld Dé advertentiesite voor regio s en groepen Beheer uw eigen site, en bepaal eigen regels, voor een regio of specifieke groep op het domein van Advertentiewereld.com Copyright 2014 Advertentiewereld.com

Nadere informatie

AFO 142 Titel Aanwinsten Geschiedenis

AFO 142 Titel Aanwinsten Geschiedenis AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.

Nadere informatie

De gebruikershandleiding mag in zijn geheel in digitale of gedrukte versie vrij worden verspreid onder alle

De gebruikershandleiding mag in zijn geheel in digitale of gedrukte versie vrij worden verspreid onder alle Copyright Deze gebruikershandleiding is auteursrechtelijk beschermd. Wijzigingen in de inhoud, of gedeeltelijke overname van de inhoud, is alleen toegestaan na toestemming van de houder van het auteursrecht.

Nadere informatie

HANDLEIDING DMS Plugin Installatie, configuratie & werking

HANDLEIDING DMS Plugin Installatie, configuratie & werking HANDLEIDING DMS Plugin Installatie, configuratie & werking Dit document is de handleiding voor de installatie, configuratie en werking van de DMS Plugin. Versie 1-12/09/2005 Inhoudstafel 1 Installatie...

Nadere informatie

Inhoud CONTROL PANEL HANDLEIDING STANDAARD CMS SEPT. 2012 VERSIE 2

Inhoud CONTROL PANEL HANDLEIDING STANDAARD CMS SEPT. 2012 VERSIE 2 CONTROL PANEL HANDLEIDING STANDAARD CMS SEPT. 2012 VERSIE 2 Inhoud INLOGGEN CMS... 2 WELKOM SCHERM... 3 MODULES - CONTROL PANEL... 4 BEHEER - CONTROL PANEL... 5 GEBRUIKERSBEHEER - TOEVOEGEN... 6 GEBRUIKERSBEHEER

Nadere informatie

Lined Content Management System v.2 (LCMS 2)

Lined Content Management System v.2 (LCMS 2) Lined Content Management System v.2 (LCMS 2) Inhoudsopgave Lined Content Management System v.2 (LCMS 2)...2 Wat is LCMS 2?...3 Hoe gebruik ik LCMS 2?...3 De modules...4 Instellingen...4 Gebruikers...4

Nadere informatie

Release Notes. Afdrukdatum: 2008/10/06

Release Notes. Afdrukdatum: 2008/10/06 Release Notes Afdrukdatum: 2008/10/06 Dit document beschrijft vanuit technisch oogpunt de aanpassingen in Hi-Ant aan de betreffende versie. Deze tekst is geenszins bedoeld als document naar de eindgebruiker,

Nadere informatie

Katholieke Hogeschool Kempen

Katholieke Hogeschool Kempen Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 2de jaar Toegepaste Informatica Examenrooster Eisenanalyserapport Teamnr: 63 Luca Andronico (2Ti6 631) Jorge Schrauwen

Nadere informatie

SURFconext Cookbook. Het koppelen van Alfresco aan SURFconext. Versie: 1.0. Datum: 8 december 2013. 030-2 305 305 admin@surfnet.nl www.surfnet.

SURFconext Cookbook. Het koppelen van Alfresco aan SURFconext. Versie: 1.0. Datum: 8 december 2013. 030-2 305 305 admin@surfnet.nl www.surfnet. SURFconext Cookbook Het koppelen van Alfresco aan SURFconext Auteur(s): Frank Niesten Versie: 1.0 Datum: 8 december 2013 Radboudkwartier 273 3511 CK Utrecht Postbus 19035 3501 DA Utrecht 030-2 305 305

Nadere informatie

Hiervoor heeft u toegang nodig met uw persoonlijke account. Vraag uw account aan, aan de hoofd beheerder.

Hiervoor heeft u toegang nodig met uw persoonlijke account. Vraag uw account aan, aan de hoofd beheerder. Handleiding Gebruik Download Chrome voor de beste compatibiliteit Aanmelden link: http://www.omegabelgium.com/cms/ Hiervoor heeft u toegang nodig met uw persoonlijke account. Vraag uw account aan, aan

Nadere informatie

Tennis Vlaanderen Elit-clubtoepassing / Lid worden 8/12/2014

Tennis Vlaanderen Elit-clubtoepassing / Lid worden 8/12/2014 Tennis Vlaanderen Elit-clubtoepassing / Lid worden 8/12/2014 Louizapoortgalerij 203 bus 3, 1050 Brussel Tel.: 02/548.03.00 Fax: 02/548.03.03 E-mail: info@tennisvlaanderen.be E-mail clubs: elit@tennisvlaanderen.be

Nadere informatie

Schoolwebsite.nu. Snel aan de slag met uw website. Versie 4.0

Schoolwebsite.nu. Snel aan de slag met uw website. Versie 4.0 Schoolwebsite.nu Snel aan de slag met uw website Versie 4.0 Inhoudsopgave Inhoudsopgave... 2 1 Inleiding... 3 2 Voor dat u begint... 4 3 Teksten op de website... 6 4 Groepspagina s... 8 5 De groepspagina...

Nadere informatie

Landelijk Indicatie Protocol (LIP)

Landelijk Indicatie Protocol (LIP) Handleiding Landelijk Indicatie Protocol programma pagina 1 of 18 Landelijk Indicatie Protocol (LIP) Welkom bij LIP Lip is ontstaan uit een toegevoegde module aan het kraamzorg administratie pakket van

Nadere informatie

Inhoudsopgave handleiding CMS

Inhoudsopgave handleiding CMS Inhoudsopgave handleiding CMS INTRODUCTIE STICHTING GEEFGRATIS EN GEEF.NL... 2 HOE BEHEER IK ONZE GOEDE DOEL GEGEVENS?... 3 WAT IS EEN CMS?... 3 HOE LOG IK (BINNEN HET CMS) OP WWW.GEEF.NL IN?... 3 IK BEN

Nadere informatie

Bij problemen of vragen omtrent de login gegevens, kan er contact worden opgenomen met de webmaster bij Lannoo.

Bij problemen of vragen omtrent de login gegevens, kan er contact worden opgenomen met de webmaster bij Lannoo. Jean-Baptiste de Ghellincklaan 13, Bus 301 9051 Gent +32/497.52.61.20 www.misterduke.be Manual: Aanmaak Event/ Expo : Lannoocampus-Academie.nl 1. Inloggen CMS Via http://www.lannoocampus-academie.nl/beta/cms

Nadere informatie

E-loket. Doelstellingen

E-loket. Doelstellingen E-loket Doelstellingen Inzage en beheer van de gekende gegevens van de aanvrager bij het FWO. Gestructureerde manier van communicatie met het FWO. (meldingen personeelsaangelegenheden) Snellere verwerking

Nadere informatie

Handleiding elas 2.0 Nesibe Balta

Handleiding elas 2.0 Nesibe Balta <ness@letsgeel.org> Handleiding elas 2.0 Nesibe Balta http://elas.vsbnet.be 1/18 Copyright (c)2010 Nesibe Balta Permission is granted to copy, distribute and/or modify this document under the terms of

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

Inschrijvingsmodule. Handleiding voor de ploegverantwoordelijke

Inschrijvingsmodule. Handleiding voor de ploegverantwoordelijke Handleiding voor de ploegverantwoordelijke Dit document beschrijft in detail de inschrijvingsmodule en is geschreven om de ploegverantwoordelijke tijdens het inschrijven van zijn of haar ploeg te ondersteunen.

Nadere informatie

NIEUWIGHEDEN BEHEER VASTE ACTIVA 3.1

NIEUWIGHEDEN BEHEER VASTE ACTIVA 3.1 NIEUWIGHEDEN BEHEER VASTE ACTIVA 3.1 Versie 3.1 December 2004 DE WIZARD VOOR HET BEHEER VAN DE VASTE ACTIVA INLEIDING De grootte en het type onderneming bepalen grotendeels het type beheer dat toegepast

Nadere informatie

Inhoudsopgave. versie 0.8

Inhoudsopgave. versie 0.8 JOOMLA! INSTALLATIE HANDLEIDING versie 0.8 Inhoudsopgave Stappenplan...3 Inrichten database...4 Configuratiecentrum cpanel...4 Aanmaken van een database gebruiker...5 Aanmaken van een database...6 Gebruiker

Nadere informatie

Mach3Framework 5.0 / Website

Mach3Framework 5.0 / Website Mach3Framework 5.0 / Website Handleiding Mach3Builders Inhoudsopgave 1 Inloggen...5 1.1 Ingelogd blijven...6 1.2 Wachtwoord vergeten...7 2 Applicatie keuzescherm...8 2.1 De beheeromgeving openen...9 3

Nadere informatie

Handleiding Webapplicatie Robin

Handleiding Webapplicatie Robin Handleiding Webapplicatie Robin (Versie 02) Inhoudstafel 1. Registratie van uw labo... 2 2. Persoonlijke account aanmaken... 4 3. Inloggen in uw labo account... 7 4. Wijziging labogegevens... 8 5. Inschrijven

Nadere informatie

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Software Test Plan PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie 1 Versie

Nadere informatie

DR3_fons_les_09 2014_11_13 1

DR3_fons_les_09 2014_11_13 1 DR3_fons_les_09 2014_11_13 1 pad van private map sites / default / files / private als je in private map iets gaat instellen, gebeurt er iets in drupal, drupal gaat automatisch een htaccess bestand aanmaken

Nadere informatie

Stiptheidsrapport binnenlands reizigersverkeer: mei 2016

Stiptheidsrapport binnenlands reizigersverkeer: mei 2016 Stiptheidsrapport binnenlands reizigersverkeer: mei 2016 Hieronder vindt u de voornaamste stiptheidscijfers die spoorinfrastructuurbeheerder Infrabel en spooroperator NMBS maandelijks op hun website plaatsen.

Nadere informatie

https://pvo-idbeheer.vlaanderen.be

https://pvo-idbeheer.vlaanderen.be HANDLEIDING Gebruikersbeheer voor intergemeentelijke entiteiten april 2015 De toegang tot het online rapporteringsinstrument van de Vlaamse Milieumaatschappij (VMM) verloopt via het gebruikersbeheerplatform

Nadere informatie

NIS Notarieel Informatie Systeem

NIS Notarieel Informatie Systeem NIS UPDATE RELEASE Q1-2014 NIS Notarieel Informatie Systeem Sportlaan 2h, 818 BE Heerde T (0578) 693646, F (0578) 693376 www.vanbrug.nl, info@vanbrug.nl 2014 Van Brug Software B.V. Niets uit deze opgave

Nadere informatie

Klachtenbeheer (Intranet)

Klachtenbeheer (Intranet) Klachtenbeheer (Intranet) Versie:1 1/17 1 INLEIDING...3 2 NAVIGATIE VAN DE APPLICATIE...3 3 FRONT-END (OP DE WEBSITE)...4 3.1 Het online melden van klachten... 4 3.2 Mijn meldingen... 5 4 BACK-END...6

Nadere informatie

Online aanvragen - Gebruikershandleiding. Online aanvragen Gebruikershandleiding

Online aanvragen - Gebruikershandleiding. Online aanvragen Gebruikershandleiding Online aanvragen Gebruikershandleiding 01 / 11 Online aanvragen Gebruikershandleiding Inhoud Inloggen registreren Wachtwoord vergeten Mijn account Mijn account - Functies Het aanvraagformulier Het aanvraagformulier

Nadere informatie

Taak 2.1.4 Eerst zien dan geloven... 1. Inhoud

Taak 2.1.4 Eerst zien dan geloven... 1. Inhoud Taak 2.1.4 Eerst zien dan geloven Inhoud Taak 2.1.4 Eerst zien dan geloven... 1 Inhoud... 1 Inleiding... 2 Modules van urenregistratiesysteem (Blokboek)... 3 Module applicatiebeheer... 3 Module projectbeheer...

Nadere informatie

Micro Computer Service Center. Installatie

Micro Computer Service Center. Installatie Micro Computer Service Center Installatie MCSC BDR versie 2.7 van 01/01/2013 2013 Contents I. Uit te voeren bij MCSC voor vertrek naar de klant... 3 1. Bdr opzetten... 3 2. Bdr aanmaken in McscCom... 3

Nadere informatie

Opdrachtformulering (pagina 3 van 7)

Opdrachtformulering (pagina 3 van 7) Afstudeerovereenkomst van Tim Wils Bijlage 1 Opdrachtformulering (pagina 3 van 7) Dit project betreft een eigen framework (soort API) waarmee relatief gemakkelijk en in korte tijd eindproducten opgezet

Nadere informatie

Nieuw in Mamut Business Software en Mamut Online

Nieuw in Mamut Business Software en Mamut Online // Mamut Business Software Nieuw in Mamut Business Software en Mamut Online Inhoud Voorwoord 3 Nieuwe versie 3 Over updates naar een nieuwe versie 4 Nieuw in Mamut Business Software 7 Relatiebeheer 7 Verkoop

Nadere informatie

Software Design Document

Software Design Document Software Design Document PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie

Nadere informatie

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft.

Wat is nieuw in deze handleiding: Dit is een nieuwe handleiding welke nieuwe functies beschrijft. Doel Module Fronter 92 Dit document is gemaakt door Fronter Ltd fronter.com. Het document mag alleen gekopieerd of digitaal verspreid worden volgens contract of in overeenstemming met Wat is nieuw in deze

Nadere informatie