Prosjekt B

Hopp til menyen


Team 3 — PHP-funksjoner

Pakkene er organisert i .php-dokument med samme navn.

  1. Kontroll
  2. Arrangor
  3. BillettOgInfo
  4. Sikkerhet
  5. Tid

1. Kontroll

Inneholder ingen klasser eller funksjoner. All trafikk fra brukergrensesnittet går via denne.

Kildekoden til pakken finnes her

2. Arrangor

Denne pakken inneholder klasser med funksjoner som arrangører har nytte av. Det er 2 klasser: Opprett og Slette.

Kildekoden til pakken finnes her

2.1 Opprett

Klassen inneholder funksjoner for å opprette nye element i databasen. Noen av funksjonene gjør lite annet en å videresende info fått fra brukergrensesnittet til databasen.

opprettSal: Funksjon for å opprette en ny sal. Kaller bare opp funksjonen opprettSaldb fra databasen. Den får inn variablene byggid, navn, ryddetif og antallseter som parametre. Det er ingen returverdi.

opprettForestilling: Funksjon for å opprette en ny forestilling, Kaller bare opp opprettForestillingdb fra databasen. Får inn variablene tittel, lengde, aldersgrense, beskrivelse og type som parametere. Det er ingen returverdi.

opprettArrangement: Funksjon for å opprette et arrangement. Får inn forestillingsID, salID, tid, dato og pris som parametre. Sjekker om det er et gyldig dato og klokeslett(intern funksjon). Kaller funksjonene hentAlleForestillinger og hentArrangementTidsrom og sjekker om det nye arrangementet overlapper med eksisterende arrangement(intern funksjon). Viss det er i orden så kalles funksjonen opprettArrangementdb fra databasen. Det er ingen returverdi til vanlig, men det blir gitt feilmeldinger.

opprettArrangementFT: Funksjon for å opprette flere arrangement av samme forestilling på en gang. Får inn samme parametre som funksjonen opprettArrangement i tillegg til en tidsliste. Tidslisten inneholder de tidspunktene som de nye arrangementene skal opprettes på. For hvert tidspunkt i listen blir funksjonen opprettArrangement kalt.

2.2 Slette

Klassen inneholder funksjoner for å slette innhold i databasen. Ingen av funksjonene gjør noe annet enn å kalle databasen, dvs. det fins ingen interne funksjoner.

slettenSal: Funksjon for å slette en sal. Får inn SalID som parameter.Kaller funksjonen slettSal(ID) fra databasen. Ingen returverdi.

slettFore: Funksjon for å slette en forestilling. Får inn ForeID som parameter. Kaller funksjonen slettForestilling(ForeID) fra Databasen. Ingen returverdi.

slettArr: Funksjon for å slette et arrangement. Får inn arrID som parameter. Kaller funksjonen slettArrangement(arrID) fra databasen. Ingen returverdi.

3. BillettOgInfo

Pakke som inneholder klasser og funksjoner som kunder har nytte av. Det er to klasser: Billett og Hentinfo.

Kildekoden til pakken finnes her

3.1 Billett

Klassen inneholder funksjoner for å bestille, kansellere eller finne billetter og bestillinger. Noen av funksjonene kaller bare databasen, mens andre har interne funksjoner.

LagRefNr: Funksjon som genererer et referansenummer(intern funksjon). Får inn bestID som parameter. Returnerer referansenummeret.

bestillPlass: Funsjon for å bestille billetter. Får inn arrangement ID, pris og en tabell over plasser som parametere. Databasen blir låst. En intern funksjon med en løkke sjekker opp tabellen ved hjelp av funksjonen sjekkPlass (arrId, plassTab[i]) i databasen for å finne ut om plassen er opptatt. Returnerer true/false. Viss alt er i orden, kalles funksjonen bestillPlasser(arrId, totPris, plassTab) i databasen, og en får tilbake en bestillings ID(bestID). Databasen åpnes igjen. Funksjonen LagRefNr(bestID) blir kalt og returnerer et referansenummer. Dette referansenummeret og prisen blir lagt i en tabell og returnert.

regHentet: Funksjon for å registrere at billetter med gitt referansenummer har blitt hentet, slik at de ikke kan hentes flere ganger. Får inn refNr som parameter og kaller funksjonen registrerHentet(refNr) fra databasen. Ingen returverdi.

kansellerBest: Funksjon for å kansellere en gitt bestilling, innparameter er refnr, kaller funksjonen kansellerBestilling(refnr) i databasen. Ingen returverdi.

soekBestilling: Funksjon for å finne en gitt bestilling. Innparameter er refNR. Kaller opp sokBestilling(refNr) fra databasen. Får der tilbake en tabell med antall og arrID. Dersom denne ikke finnes, returneres false. Dersom bestillingen finnes, kalles hentArrangement(arrId) fra databasen. Der returneres [arrId, tittel, lengde, aldersgrense, tid, beskrivelse, pris]. Til denne tabellen legges antall billetter på slutten. Funksjonen returnerer en tabell [arrId, tittel, lengde, aldersgrense, tid, beskrivelse, pris, antBilletter].

3.2 HentInfo

Klassen inneholder funksjoner for å hente fram alt mulig slags informasjon om forestillinger og arrangement. En viktig klasse for at kunden skal finne det riktige arrangementet.

HentPlassInfo: Funksjon for å hente info om plasser i en sal under et gitt arrangement. Funksjonen får inn arrID som parameter og kaller funksjonen hentPlasser(arrID) i databasen. Får en tabell(plassTab) i retur og returnerer denne.

hentAlleBy: Funksjon for å hente alle byer i databasen. Kaller funksjonen hentAlleByer i databasen og returnerer listen den får derfra.

hentForeTypeIBy: Funksjon for å finne alle alle forestillingstyper i en gitt by(gitt som innparameter: sted). Kaller funksjonen hentForeTypeIByDB(sted) fra databasen og returnerer en tabell.

hentAlleArr: Funksjon som henter alle arrangement en gitt dato. Får inn dato, byggID og foreType som parametere. Kaller opp funksjonen alleArrangement(dato, byggID, foreType) fra databasen. Returnerer en: tabell med [arrID, tittel, dato, tid, antall ledige plasser].

hentArr: Henter info om et arrangement fra databasen ved å kalle hentArrangement(arrID). arrID er innparameter for funksjonen. Returnerer en tabell med [arrId, tittel, lengde, aldersgrense, beskrivelse, tid, dato, pris).

hentAlleForestilling: Funksjon som finner alle forestillinger, uten noen innparametere. Kaller opp hentAlleForestillinger() fra databasen. Returnerer en liste[foreID , tittel, lengde, aldersgrense, beskrivelse].

finnFores: Funksjon som finner en gitt forestilling. Innparameter er tittel. Kaller funksjonen finnForestilling(tittel) fra databasen. Returnerer en liste kalt forestillingsListe(ForeID, Tittel, Lengde, Aldersgrense, Beskrivelse, type).

henterSal: Funksjon for å hente en sal. Får ByggID som innparameter.Kaller funksjonen hentSal(byggID) fra databasen. Returnerer SalTab[SalID => [Navn, Ryddetid, Antseter], SalId => [...], ...], dette er en flerdimensjonal tabell.

hentAlleBygning: Funksjon for å hente alle bygninger et sted. Får inn sted som innparameter. Kaller funksjonen hentAlleBygninger(sted) fra databasen. Returnerer bygningsliste[byggID => byggNavn, byggID => byggnavn, ...], dette er en flerdimensjonal tabell.

finnArr: Funksjon for å finne alle arrangement en gitt dato og sted. Får tittel, byggID og dato som innparametere. Kaller funksjonen finnArrangement(tittel, byggID, dato) fra databasen. Ingen retur.

sjekkOmForeldet: Funksjon som får inn arrDato og arrTid som parametere. Intern funksjon sjekker om tidspunktet er eldre enn nåværende pluss 20 min ved hjelp av klassene i pakken Tid. Returnerer en true/false.

sjekkOmForeldetID: Funksjon som sjekker om tidspunktet til arrangementet med id arrID(innparameter) er eldre enn nåværende tidspunkt pluss 20 min. Kaller funksjonen hentArrangement(arrID) fra databasen. Får en tabell med alle variabler i retur. Kaller funksjonen sjekkOmForeldet med de tabellelementene (arrDato, arrTid) som den funksjonen trenger. Returnerer en true/false.

4.Sikkerhet

Kildekoden til pakken finnes her

4.1 Innlogging

Klasse som inneholder funksjoner for innlogging til system slik at uvedkommende ikke får tilgang til kritiske områder.

validBruker: Funksjon for å validere en bruker. Får navn og pwd(passord) som innparameter. Kaller opp validerBruker(navn, pwd) fra databasen. Returnerer true/false.

validerArrangor: Funksjon for å validere en arrangør. Får brukernavn og passord som innparametere. Kaller funksjonen validerArr(brukernavn, passord) fra databasen. Returnerer true/false.

5. Tid

Pakken inneholder 4 klasser: Dato, Klokke, LangDato og hjelpefunksjoner. Disse klassene blir brukt til å behandle tid i systemet.

Kildekoden til pakken finnes her

5.1 Dato

Klassen inneholder funksjoner for å behandle datoer. Det er også mulig å lage objekt av denne klassen. Objekt har medlemsvariabler: $day, $month og $year.

setDato: Funksjon som stiller dato, får inn dag, maaned og aar som parametre. Returnerer true/false.

hentDB: Funksjon som returnerer dato i databaseformat (yyyy-mm-dd).

hentNorsk: Funksjon som returnerer dato i "norsk" format(dd.mm.yyyy).

setDatoNorsk: Funksjon som har dt(datoobjekt) som innparameter. Stiller datoen i dt med "norsk" format(dd.mm.yyyy). Returnerer true/false.

setDatoDB: Funksjon som har dt(datoobjekt) som innparameter. Stiller datoen i dt med database format(yyyy-mm-dd). Returnerer true/false

reorg: En privat funksjon, legger til 0 foran dato og måned slik at 1.1 = 01.01. Ingen retur.

skrivUt: Skriver ut til skjerm datoen dd.mm.yyyy. Ingen retur.

tidskodeTilDato: Får inn tidskode som parameter og gjør om til dato. Returnerer dato.

datoTilTidskode: Får inn dato som innparameter og gjør om til tidskode. Returnerer tidskode.

listDagerFrem: Får inn antall som parameter.Lager en liste over dager fra og med dette objektets dato til antall(gitt som parameter) dager frem. Returnerer liste over datoobjekt.

hentTidskode: Funksjon som gir dette objektets tidskode. Returnerer tidskode.

antallDager: Får inn et datoobjekt(slutt) som parameter. Funksjonen finner antall dager mellom dette objektet og slutt dato objektet. Returnerer antall dager.

5.2 Klokke

Klassen inneholder funksjoner for å behandle tidspunkt. Det er også mulig å lage objekt av denne klassen. Objekt har medlemsvariabler: $t, $min og $status.

setKlokke: Får inn timer og minutter som parametere. Stiller klokken på timer og minutter. Returnerer true/false.

setKlokkeText: Får inn tekst som parameter. Stiller klokken med tekst i format hh:mm. Returnerer true/false.

setKlokkeInt: Får inn tall som parameter. Stiller klokken med tall = hhmm. Returnerer true/false.

setKlokkeMin: Får inn min som parameter. Stiller klokken med verdien av min i minutter. Returnerer true/false.

reorg: En private funksjon som gjør 1:3 om til 01:03. Ingen retur.

fraMinTilInt: Får inn min som parameter. Gjør om minutter min til int (hhmm), endrer ikke objektet. Returnerer hhmm(int).

fraIntTilMin: Får inn tall som parameter. Gjør om fra int tall til minutter, endrer ikke objektet. Returnerer (int) min.

trekkFraKlokke: Får inn et annet klokkeobjekt som parameter. Gjør objektet mindre ved å trekke fra dette klokkeobjekt. Returnerer -1 viss det er en dag tilbake. Returnerer 0 viss det er samme dag.

leggTilKlokke: Får inn et annet klokkeobjekt som parameter. Gjør objektet større ved å legge til et dette klokkeobjekt. Returnerer 1 når det er en dag fram, 0 viss det er samme dag.

leggTilMin: Får inn minutter som parameter. Legger til minutter til dette objektet (eks 120 min). Minutter kan være negativ, trekker da i fra. Reurnerer -1 viss en dag tilbake. Returnerer 0 viss samme dag. Returnerer 1 viss en dag frem.

leggTilInt: Får inn tall(int) som parameter. Legger til klokkesett i hhmm format. Returnerer 0 viss samme dag. Returnerer 1 viss en dag frem.

trekkFraInt: Får inn tall(int) som parameter. Trekker fra et klokkesett i hhmm format. Returnerer -1 viss en dag tilbake. Returnerer 0 viss samme dag.

hentInt: Henter klokke i hhmm til databasen. Returnerer int(format hhmm).

hentMin: Henter klokke i minutter. Returnerer int.

skrivUt: Skriver Dato til skjerm. Ingen retur.

5.3 LangDato

Klassen inneholder funksjoner for å behandle både tidspunkt og dato. Det er også mulig å lage objekt av denne klassen. Objekt har medlemsvariabler: $kl(objekt av klassen klokke) og $dato(objekt av klassen dato).

setTidskode: Får inn tall som parameter. Stiller klokke og dato med sekunder(gitt i tall) siden 1970. Ingen retur.

setKlokkeManuelt: Får inn t(for time) og m(for minutt). Stiller klokken ved hjelp av disse. Returnerer true/false.

setKlokkeInt: Får inn tall(int) som parameter. Tal har formatet hhmm. Siller klokken med denne. Returnerer true/false.

setKlokkenMK: Får inn et klokkeobjekt som parameter. Stiller klokken ved hjelp av det innkomne objektet. Returnerer true/false.

setDatoManuelt: Funksjon som setter datoen manuelt. Får inn d(for dag), m(for måned) og y(for år). Returnerer true/false.

setDatoDB: Får verdi som parameter på formen "yyyy-med mer-dd"(databaseformat). Stiller datoen med hensyn på dette. Returnerer true/false

setDatoMD: får inn et datoobjekt(dto). Stiller datoen ved gjelp av dette ojektet. Returnerer true/false.

getSeconds: Funksjon som gjør klokke og dato om til sekunder siden 1970. Returnerer sekunder som int.

leggTilMin: Funksjon som får min(int) inn som parameter. Legger til gitt antall minutter ( eks 360 min), minutter kan være negativ. Returnerer -1 når datoen ble redusert med en dag. Returnerer 0 når datoen ble den samme, men klokken ble endret. Returnerer 1 viss datoen ble økt med 1 dag.

orgSML: Funksjon som sammenligner dette objektet med et annet LangDato objekt(kommer som innparameter ld). Returnerer < 0 dette er eldre enn ld. Returnerer 0 viss de har samme dato og klokkeslett. Returnerer > 0 dette er yngre enn ld.

orgEldst: Funksjon for å sammenligne to objekt av LangDato klassen. Sjekker om dette er eldre enn objekt ld(kommer inn som parameter). Returnerer true viss dette objektet er eldre enn ld. Returnerer false viss dette objektet er lik eller yngre enn ld.

hentKLInt: Henter int verdi av klokken i formatet hhmm. Returnerer dette.

hentKLMin: Henter minutt verdien av klokken og returnerer dette som en int.

hentDatoDB: Henter dato i databaseformat(yyyy-mm-dd) og returnerer dette.

hentDato: Henter dato som et datoobjekt og returnerer dette.

hentKlokke: Henter klokken som et klokkeobjekt og returnerer dette.

skrivUt: Skriver ut klokke og dato i formatet: hh:mm dd.mm.yyyy.

5.4 Hjelpefunksjoner

Klasse som inneholder funksjoner som ikke helt passer inn i de andre klassene. Mens funksjonene i de andre klassene helst blir kalt av andre funksjoner, blir disse brukt direkte og automatisk av brukergrensesnittet når det er i bruk.

retTid: Får inn tidskode og en bool(verdi: 1 eller 0) som parametre .Gjør tidskode om til leselig dato (intern funksjon). Formatet er enten databaseformat (yyyy-mm-dd), eller vanlig norsk format (dd.mm.yyyy), dette blir bestemt av variabelen. Denne datoen blir returnert.

retAntDag: Får inn en tallvariabel som input. Returnerer en tabell med alle datoer fra og med i dag og et antall dager lik tallvariabelen fremover.


Oppgaven

Prosjekt B