Source for file class.BUCHUNGEN.php
Documentation is available at class.BUCHUNGEN.php
* Stellt die Verbindung zur Datenbank 'buchungen' her.
* Stellt Methoden zum Einfügen, Löschen und Bestätigen von Buchungen zur
* @subpackage foundation_tables
die('This file was generated for PHP 5');
* Basisklasse aller Klassen mit Datenbankzugriff.
* stellt Methoden und Objekte zur Fehlermeldung und zum Datenbankzugriff zur
require_once ('src/foundation/tables/class.PARENTTABLES.php');
/* user defined includes */
// section -64--88-122--2-10f41e9:1009dd996d0:-7fbe-includes begin
// section -64--88-122--2-10f41e9:1009dd996d0:-7fbe-includes end
/* user defined constants */
// section -64--88-122--2-10f41e9:1009dd996d0:-7fbe-constants begin
// section -64--88-122--2-10f41e9:1009dd996d0:-7fbe-constants end
* Stellt die Verbindung zur Datenbank 'buchungen' her.
* Stellt Methoden zum Einfügen, Löschen und Bestätigen von Buchungen zur
* @subpackage foundation_tables
* Beinhaltet den Datenbanknamen (buchungen)
* Array mit Daten der (nicht) bestätigten Buchung
private static $data=
array ();
* Fügt einen neue Datensatz in die Datenbank ein
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (bool)
false;
// section -64--88-122--2-10f41e9:1009dd996d0:-7fad begin
$buchung['pwd']=
$this->createPWD(); // Password erstellen
SET see_id = '" .
$buchung['see_id'] .
"',
name = '" .
$buchung['name'] .
"',
vorname = '" .
$buchung['vorname'] .
"',
email = '" .
$buchung['email'] .
"',
telefon = '" .
$buchung['telefon'] .
"',
verein_nr = '" .
$buchung['verein_nr'] .
"',
brevet = '" .
$buchung['brevet'] .
"',
datum = '" .
$buchung['datum'] .
"',
stunde = '" .
$buchung['stunde'] .
"',
anzahl = " .
$buchung['anzahl'] .
",
anzahlZahler = " .
$buchung['anzahlZahler'] .
",
pwd = '" .
$buchung['pwd'] .
"'";
if (!$buchung['buch_id']=
$this->insert($sql)) // Buchung eintragen
// Wenn weniger als 2 Plätze übrigbleiben, alle abziehen
if (($buchung['restPlaetze'] -
$buchung['anzahl']) <
2)
$buchung['anzahl']=
$buchung['restPlaetze'];
// Frei Plätze aktualisieren
if (!$this->oNF->decrease($buchung['see_id'], $buchung['datum'], $buchung['stunde'], $buchung['anzahl']))
if (!$this->oPDF->createUserPDF($buchung, $this->getSea()))
if (!$oMail->sendUserMail($buchung, $this->getSea()))
// section -64--88-122--2-10f41e9:1009dd996d0:-7fad end
return (bool)
$returnValue;
* Markiert eine Buchung als abgerufen
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (bool)
false;
// section -64--88-122--2-10f41e9:1009dd996d0:-7fa8 begin
if (!isset
(self :: $data[$buch_id]))
if (!(self :: $data[$buch_id]['pwd'] ==
$pwd))
if (!self :: $data[$buch_id]['istAbgeholt']) { // Buchung ist noch nicht abgeholt
$sql=
"UPDATE $this->dbTableName SET istAbgeholt='1' WHERE buch_id = '$buch_id' AND pwd = '$pwd' LIMIT 1";
if (!$this->update($sql)) // als abgeholt markieren
self :: $data[$buch_id]['istAbgeholt']=
1;
// section -64--88-122--2-10f41e9:1009dd996d0:-7fa8 end
return (bool)
$returnValue;
* liefert im Erfolgsfall TRUE
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (bool)
false;
// section -64--88-122--2-933bcb:100f60e4e57:-7ffc begin
if (!isset
(self :: $data[$buch_id]))
if (!(self :: $data[$buch_id]['pwd'] ==
$pwd))
$this->cleanEntries(self :: $data[$buch_id]); // Plätze freimachen und PDF löschen
$sql=
"DELETE FROM $this->dbTableName WHERE buch_id = '$buch_id' AND pwd = '$pwd'";
if (!$this->delete($sql)) // Buchung löschen
unset
(self :: $data[$buch_id]); // Buchung aus array löschen
// section -64--88-122--2-933bcb:100f60e4e57:-7ffc end
return (bool)
$returnValue;
* säubert Datenbank von nicht abgeholten Buchungen
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (bool)
false;
// section -64--88-122--2-933bcb:100f60e4e57:-7f8f begin
$whereit=
($all) ?
"" :
"AND now() > DATE_ADD(orderDatum, INTERVAL 1 DAY) ";
$sql=
"DELETE FROM $this->dbTableName WHERE istAbgeholt ='0' " .
$whereit;
$this->delete($sql); // Buchungen löschen
// section -64--88-122--2-933bcb:100f60e4e57:-7f8f end
return (bool)
$returnValue;
* @author Kay Koch, <kay.koch@gmx.de>
private function createPWD() {
$returnValue= (string)
'';
// section -64--88-122--2-1328c7a:1027db0d532:-7ff1 begin
$pwdLength=
5; // Länge des Passwortes
while ($pwdLength-- >
0) {
$returnValue .=
chr(rand(97, 122));
// section -64--88-122--2-1328c7a:1027db0d532:-7ff1 end
return (string)
$returnValue;
* @author Kay Koch, <kay.koch@gmx.de>
// section -64--88-122--2-1328c7a:10292f82497:-7ff9 begin
if (isset
(self :: $data[$buch_id]) AND self :: $data[$buch_id]['pwd'] ==
$pwd)
$returnValue=
self :: $data[$buch_id];
// section -64--88-122--2-1328c7a:10292f82497:-7ff9 end
return (array)
$returnValue;
* nichtabgeholte Buchungen werden aus Datenbank gelöscht
* @author Kay Koch, <kay.koch@gmx.de>
private function cleanEntries($buchung) {
// section -64--88-122--2-1328c7a:10297cab611:-7ff7 begin
// Plätze wieder frei machen
$this->oNF->increase($buchung['see_id'], $buchung['datum'], $buchung['stunde'], $buchung['anzahl']);
$this->oPDF->deleteUserPDF($buchung['buch_id'] .
$buchung['pwd']);
// section -64--88-122--2-1328c7a:10297cab611:-7ff7 end
* liefert den Pfad eines PDF-Dokuments aufgrund der Buch_id
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (string)
'';
// section -64--88-122--2-1328c7a:102988386a1:-7ffe begin
$returnValue=
$this->oPDF->getPDFPath($filename);
if (!file_exists($returnValue))
// section -64--88-122--2-1328c7a:102988386a1:-7ffe end
return (string)
$returnValue;
* liefert alle Buchungen innerhalb der nächsten $interval Tage
* @author Kay Koch, <kay.koch@gmx.de>
// section -64--88-122--2-1328c7a:102a6f94cac:-7fe7 begin
// auslesen aller alten Buchungen
$weekLimit=
$this->getFlags()->getWhereWeekLimit();
$sql=
"SELECT * FROM " .
$this->dbTableName .
$weekLimit .
" AND istAbgeholt='1' ORDER by see_id,datum ASC";
$arrOldBuchungen=
$this->select($sql);
foreach ($arrOldBuchungen as $buchung) {
$buchung['name']=
substr($buchung['name'] .
"," .
$buchung['vorname'], 0, 16); // Länge auf 18 Buchstaben begrenzen
$returnValue[$buchung['see_id']][$buchung['datum']][$buchung['stunde']][]=
array (
"name" =>
$buchung['name'],
"verein" =>
$buchung['verein_nr'],
"anzahl" =>
$buchung['anzahl'],
"anzahlZahler" =>
$buchung['anzahlZahler']
// section -64--88-122--2-1328c7a:102a6f94cac:-7fe7 end
return (array)
$returnValue;
* liefert einen link zum pdf-Dokument
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (string)
'';
// section -64--88-122--2-5a4368f4:103efc100ac:-7fad begin
$filepath=
$this->oPDF->getPDFPath($filename);
$returnValue=
"<a href='$filepath'>Link zur Reservierung</a>";
// section -64--88-122--2-5a4368f4:103efc100ac:-7fad end
return (string)
$returnValue;
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (bool)
false;
// section -64--88-122--2--6176e79b:103fa06a375:-7fbd begin
// lädt buch_id und Passwort aller alten Buchungen bis zum nächsten Update
$weekLimit=
$this->getFlags()->getWhereWeekLimit();
$sql=
"SELECT buch_id,pwd FROM " .
$this->dbTableName .
$weekLimit;
$arrOldBuchungen=
$this->select($sql);
// löscht die pdf-Dokumente der alten Buchungen
foreach ($arrOldBuchungen as $oldBuchung) {
$this->oPDF->deleteUserPDF($oldBuchung['buch_id'] .
$oldBuchung['pwd']);
// löscht alle alten, abgeholten Buchungen bis zum nächsten Update
#$sql = "DELETE FROM " . $this->dbTableName . $weekLimit;
#if ($this->delete($sql))
// section -64--88-122--2--6176e79b:103fa06a375:-7fbd end
return (bool)
$returnValue;
* aktualisiert die Daten im gegenwertigen Objekt
* @author Kay Koch, <kay.koch@gmx.de>
$returnValue= (bool)
false;
// section -64--88-122--2--3d9a0b58:1040f000f1b:-7f9c begin
self :: $data=
$this->select($sql, true, "buch_id");
// section -64--88-122--2--3d9a0b58:1040f000f1b:-7f9c end
return (bool)
$returnValue;
* erstellt Objekte der Klassen
* @author Kay Koch, <kay.koch@gmx.de>
// section -64--88-122--2-7471698e:1046ab3b89c:-7fe7 begin
if (empty (self :: $data))
$this->oNF=
new src_foundation_tables_NOCHFREI;
// section -64--88-122--2-7471698e:1046ab3b89c:-7fe7 end
* Fügt eine Blockade mit veringerten Informationen ein
* @author Kay Koch, <kay.koch@gmx.de>
private function insertBlockade($blockade) {
$returnValue= (bool)
false;
// section -64--88-0-1-1328c7a:105f3567fa3:-7ff7 begin
SET see_id = '" .
$blockade['see_id'] .
"',
name = '" .
$blockade['name'] .
"',
datum = '" .
$blockade['datum'] .
"',
stunde = '" .
$blockade['stunde'] .
"',
anzahl = " .
$blockade['anzahl'] .
",
anzahlZahler = " .
$blockade['anzahlZahler'] .
",
verein_nr = '" .
$blockade['verein_nr'] .
"',
block_id = '" .
$blockade['block_id'] .
"',
if (!$buchung['buch_id']=
$this->insert($sql)) // Buchung eintragen
// section -64--88-0-1-1328c7a:105f3567fa3:-7ff7 end
return (bool)
$returnValue;
* Erstellt Buchungen für eine Blockade
* in Abhängidkeit der Wiederholungsart
* @uses blockDays Methode für tägliche Wiederholungen
* @uses blockWeekly Methode für wöchentliche Wiederholungen
* @uses insertBlockade Methode zum Einfügen der Blockade
* @param array $data Daten der Blockade
public function blockDates($data, $reset=
false) {
$sql=
"DELETE FROM $this->dbTableName WHERE `block_id` = '" .
$data['block_id'] .
"';";
$returnValue=
$this->delete($sql);
switch ($data['wiederholung']) {
$this->blockWeekly($data);
$this->blockhours($data);;
* Wiederholungen, die eine Anzahl von Tagen stattfinden
* @uses blockhours Methode für stündliche Wiederholungen
* @param array $data Daten der Blockade
private function blockDays($data) {
$startDatum=
$data['datum'];
for ($k=
0; $k <
$data['anzahlWiederholung']; $k++
) {
$this->blockhours($data);
* Wiederholungen, die wöchentlich stattfinden
* @uses blockhours Methode für stündliche Wiederholungen
* @param array $data Daten
private function blockWeekly($data) {
$endDatum =
$this->getSeen($data['see_id'])->saisonEnde;
while ($data['datum'] <
$endDatum){
$this->blockhours($data);
* Wiederholungen, die mehrere Stunden stattfinden
* @uses insertBlockade Methode zum Einfügen der Blockade
* @param array $data Daten
private function blockhours($data) {
$startZeit= (int)
substr($data['stunde'], 0, 3); // Beginn der Blockade als Int
for ($i=
0; $i <
$data['anzahlStunden']; $i++
) {
$this->insertBlockade($data);
* liefert alle Buchungen, die aus Blockaden stammen
* wird kein Datum angegeben, werden alle Buchungen geliefert,
* die sich im für diesen See erlaubten Anmeldezeitraum
* befinden. Ansonsten nur die an diesem Datum
* @param string $datum Datum der abzuliefernden Buchungen
foreach (self::$data as $buchung){
if($buchung['block_id']==
0 OR $buchung['datum'] <
$datum OR $buchung['datum'] >
$endDatum)
$returnValue[$buchung['see_id']][$buchung['datum']][$buchung['stunde']][] =
$buchung;
} /* end of class src_foundation_tables_BUCHUNGEN */
Documentation generated on Sat, 24 Mar 2007 09:58:59 +0100 by phpDocumentor 1.3.1