Anfrage einsehen
- - - -Leider konnten wir Ihre Anforderung nicht verarbeiten.Bitte überprüfen Sie den aufgerufenden Link.
"; - exit; - } - - // Anfrage + Person laden (NEUES SCHEMA) - $stmt = $pdo->prepare(" - SELECT - a.anfrageid, - a.checked, - a.nachricht, - a.medikament1, - a.medikament2, - a.anforderungart, - a.ordnungsid, - p.vorname, - p.nachname, - p.email, - p.tele, - p.geburtstag - FROM anfragen a - INNER JOIN persons p ON a.requester_person_id = p.person_id - WHERE a.hash = ? - LIMIT 1 - "); - $stmt->execute([$id]); - $row = $stmt->fetch(PDO::FETCH_ASSOC); - - if (!$row) { - echo "
Leider konnten wir Ihre Anforderung nicht verarbeiten.
Bitte überprüfen Sie den aufgerufenden Link.
"; - exit; - } - - // Variablen aus DB - $anfrageid = (int)$row["anfrageid"]; - $checked = (int)$row["checked"]; - - $vorname = $row["vorname"] ?? ""; - $nachname = $row["nachname"] ?? ""; - $mail = $row["email"] ?? ""; - $tel = $row["tele"] ?? ""; - $geburtstag = $row["geburtstag"] ?? null; - - $userausgabe = trim($vorname . " " . $nachname); - - $nachricht = $row["nachricht"] ?? ""; - $medikamenteins = $row["medikament1"] ?? ""; - $medikamentzwei = $row["medikament2"] ?? ""; - - $anforderungart = $row["anforderungart"] ?? null; - $ordnungsid = $row["ordnungsid"] ?? null; - - // Ordnungsstring wie bisher (deine Funktion) - $ordnungsstring = GetOrdnungsid($ordnungsid); - - // Rezeptart-Name holen - $rezeptart = null; - if (!empty($anforderungart)) { - $stmtArt = $pdo->prepare("SELECT artname FROM anfrageart WHERE artid = ? LIMIT 1"); - $stmtArt->execute([$anforderungart]); - $rezeptart = $stmtArt->fetchColumn() ?: null; - } - - // Ausgabe sicher escapen - $e = fn($s) => htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); - - if ($checked === 0) { - - echo "
Sie haben Ihre Anfrage aktuell noch nicht bestätigt!
";
- echo "Sie haben die folgenden Anfragedaten:
";
- echo "Name: " . $e($userausgabe) . "
";
- echo "Art: " . $e($ordnungsstring) . " - " . $e($rezeptart) . "
";
-
- if (!empty($medikamenteins)) {
- echo "Medikament1: " . $e($medikamenteins) . "
";
- }
- if (!empty($medikamentzwei)) {
- echo "Medikament2: " . $e($medikamentzwei) . "
";
- }
- if (!empty($nachricht)) {
- echo "Nachricht: " . nl2br(strip_tags($nachricht, '
- ')) . "
";
- }
-
- echo "
";
-
- echo "";
-
- } elseif ($checked === 1) {
-
- echo "- ')) . "
Sie haben Ihre Anforderung bestätigt!
Vielen Dank!
";
- echo "Sie haben die folgenden Anfragedaten:
";
- echo "Name: " . $e($userausgabe) . "
";
- echo "Art: " . $e($rezeptart) . "
";
-
- if (!empty($medikamenteins)) {
- echo "Medikament1: " . $e($medikamenteins) . "
";
- }
- if (!empty($medikamentzwei)) {
- echo "Medikament2: " . $e($medikamentzwei) . "
";
- }
- if (!empty($nachricht)) {
- echo "Nachricht: " . nl2br(strip_tags($nachricht, '
- ')) . "
";
- }
-
- echo "Hat sich Ihre Anfrage erledigt, tragen Sie sich bitte aus, Ihre Anfrage wird gelöscht:
";
- echo "
";
-
- } elseif ($checked === 2) {
-
- echo "- ')) . "
Ihre Anfrage wurde erfolgreich gelöscht!
Wünschen Sie eine neue Anfrage, tragen Sie sich wieder über das Formular ein.
"; - - } elseif ($checked === 3) { - - echo "
Ihre Anfrage wurde vom Praxisteam storniert!
Wünschen Sie eine neue Anfrage, tragen Sie sich wieder über das Formular ein.
"; - - } elseif ($checked === 10) { - - echo "
Ihre Anfrage wurde vom Praxisteam beantwortet!
Prüfen Sie Ihre E-Mails auf die Antwort.
"; - - } else { - echo "
Status unbekannt.
"; - } - - -}else if($_POST["aktion"] == 1){ - echo "Wollen Sie wirklich Ihren Anfrage löschen?Dieses ist nicht rückgängig zu machen!
Dann bestätigen Sie die Abmeldung:
"; - echo "Bitte bestätigen!"; - echo ""; - - -}else if($_POST["aktion"] == 2){ - - $anfrageid = (int)($_POST["anfrageid"] ?? 0); - if ($anfrageid <= 0) { - die("
Ungültige Anfrage-ID.
"); - } - - // 1) Prüfen/Updaten in einem Schritt: nur bestätigen, wenn noch nicht bestätigt - $stmt = $pdo->prepare(" - UPDATE anfragen - SET checked = 1 - WHERE anfrageid = ? - AND checked < 1 - "); - $stmt->execute([$anfrageid]); - - if ($stmt->rowCount() === 0) { - // Es wurde nichts geändert -> war schon bestätigt oder existiert nicht - // Optional: prüfen ob Anfrage existiert - $stmt = $pdo->prepare("SELECT checked FROM anfragen WHERE anfrageid = ? LIMIT 1"); - $stmt->execute([$anfrageid]); - $checked = $stmt->fetchColumn(); - - if ($checked === false) { - echo "Anfrage nicht gefunden.
"; - } else { - echo "Sie haben Ihre Anfrage schon bestätigt.
"; - } - exit; - } - - echo "Ihre Anfrage wurde erfolgreich bestätigt!
"; - - - // 2) Anfrage + Person laden (NEUES SCHEMA) - $stmt = $pdo->prepare(" - SELECT - ordnungsid - FROM anfragen a - WHERE anfrageid = ? - LIMIT 1 - "); - $stmt->execute([$anfrageid]); - $ordnungsid = $stmt->fetchColumn(); - echo "Sie erhalten gleich eine schriftliche Bestätigung per E-Mail
"; - if (!$row) { - echo "
Fehler: Anfrage wurde bestätigt, aber konnte nicht geladen werden.
"; - exit; - } - - $ordnungsid = $row["ordnungsid"] ?? null; - - if($ordnungsid == 1){ - // Anfragen allgemein Bestätigung - SendMailMessageVorlage($pdo, "3", $anfrageid, "19"); - }else if($ordnungsid == 2 || $ordnungsid == 3){ - // Anfragen Rezept Bestätigung - SendMailMessageVorlage($pdo, "3", $anfrageid, "26"); - } - - - -}else if($_POST["aktion"] == 3){ - $anfrageid = (int)($_POST["anfrageid"] ?? 0); - if ($anfrageid <= 0) { - die("Ungültige Anfrage-ID.
"); - } - - /* - 1) Anfrage auf "gelöscht" setzen, - aber nur wenn noch nicht gelöscht (checked < 2) - */ - $stmt = $pdo->prepare(" - UPDATE anfragen - SET checked = 2 - WHERE anfrageid = ? - AND checked < 2 - "); - $stmt->execute([$anfrageid]); - - if ($stmt->rowCount() === 0) { - // Entweder existiert nicht oder war schon gelöscht - $stmt = $pdo->prepare("SELECT checked FROM anfragen WHERE anfrageid = ? LIMIT 1"); - $stmt->execute([$anfrageid]); - $checked = $stmt->fetchColumn(); - - if ($checked === false) { - echo "Anfrage nicht gefunden.
"; - } else { - echo "Sie haben Ihre Anfrage schon gelöscht.
"; - } - - }else{ - - echo "Ihre Anfrage wurde erfolgreich gelöscht!
"; - echo "Sie erhalten gleich eine schriftliche Bestätigung per E-Mail
"; - - SendMailMessageVorlage($pdo, "3", $anfrageid, "49"); - - } - - - - - - - -}else{ - - echo "Leider konnten wir Ihre ID-Nummer nicht erkennen.
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
"; - echo "
Anfrage einsehen
+ + + +Leider konnten wir Ihre Anforderung nicht verarbeiten.Bitte überprüfen Sie den aufgerufenden Link.
"; + exit; + } + + // Anfrage + Person laden (NEUES SCHEMA) + $stmt = $pdo->prepare(" + SELECT + a.anfrageid, + a.checked, + a.nachricht, + a.medikament1, + a.medikament2, + a.anforderungart, + a.ordnungsid, + p.vorname, + p.nachname, + p.email, + p.tele, + p.geburtstag + FROM anfragen a + INNER JOIN persons p ON a.requester_person_id = p.person_id + WHERE a.hash = ? + LIMIT 1 + "); + $stmt->execute([$id]); + $row = $stmt->fetch(PDO::FETCH_ASSOC); + + if (!$row) { + echo "
Leider konnten wir Ihre Anforderung nicht verarbeiten.
Bitte überprüfen Sie den aufgerufenden Link.
"; + exit; + } + + // Variablen aus DB + $anfrageid = (int)$row["anfrageid"]; + $checked = (int)$row["checked"]; + + $vorname = $row["vorname"] ?? ""; + $nachname = $row["nachname"] ?? ""; + $mail = $row["email"] ?? ""; + $tel = $row["tele"] ?? ""; + $geburtstag = $row["geburtstag"] ?? null; + + $userausgabe = trim($vorname . " " . $nachname); + + $nachricht = $row["nachricht"] ?? ""; + $medikamenteins = $row["medikament1"] ?? ""; + $medikamentzwei = $row["medikament2"] ?? ""; + + $anforderungart = $row["anforderungart"] ?? null; + $ordnungsid = $row["ordnungsid"] ?? null; + + // Ordnungsstring wie bisher (deine Funktion) + $ordnungsstring = GetOrdnungsid($ordnungsid); + + // Rezeptart-Name holen + $rezeptart = null; + if (!empty($anforderungart)) { + $stmtArt = $pdo->prepare("SELECT artname FROM anfrageart WHERE artid = ? LIMIT 1"); + $stmtArt->execute([$anforderungart]); + $rezeptart = $stmtArt->fetchColumn() ?: null; + } + + // Ausgabe sicher escapen + $e = fn($s) => htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); + + if ($checked === 0) { + + echo "
Sie haben Ihre Anfrage aktuell noch nicht bestätigt!
";
+ echo "Sie haben die folgenden Anfragedaten:
";
+ echo "Name: " . $e($userausgabe) . "
";
+ echo "Art: " . $e($ordnungsstring) . " - " . $e($rezeptart) . "
";
+
+ if (!empty($medikamenteins)) {
+ echo "Medikament1: " . $e($medikamenteins) . "
";
+ }
+ if (!empty($medikamentzwei)) {
+ echo "Medikament2: " . $e($medikamentzwei) . "
";
+ }
+ if (!empty($nachricht)) {
+ echo "Nachricht: " . nl2br(strip_tags($nachricht, '
- ')) . "
";
+ }
+
+ echo "
";
+
+ echo "";
+
+ } elseif ($checked === 1) {
+
+ echo "- ')) . "
Sie haben Ihre Anforderung bestätigt!
Vielen Dank!
";
+ echo "Sie haben die folgenden Anfragedaten:
";
+ echo "Name: " . $e($userausgabe) . "
";
+ echo "Art: " . $e($rezeptart) . "
";
+
+ if (!empty($medikamenteins)) {
+ echo "Medikament1: " . $e($medikamenteins) . "
";
+ }
+ if (!empty($medikamentzwei)) {
+ echo "Medikament2: " . $e($medikamentzwei) . "
";
+ }
+ if (!empty($nachricht)) {
+ echo "Nachricht: " . nl2br(strip_tags($nachricht, '
- ')) . "
";
+ }
+
+ echo "Hat sich Ihre Anfrage erledigt, tragen Sie sich bitte aus, Ihre Anfrage wird gelöscht:
";
+ echo "
";
+
+ } elseif ($checked === 2) {
+
+ echo "- ')) . "
Ihre Anfrage wurde erfolgreich gelöscht!
Wünschen Sie eine neue Anfrage, tragen Sie sich wieder über das Formular ein.
"; + + } elseif ($checked === 3) { + + echo "
Ihre Anfrage wurde vom Praxisteam storniert!
Wünschen Sie eine neue Anfrage, tragen Sie sich wieder über das Formular ein.
"; + + } elseif ($checked === 10) { + + echo "
Ihre Anfrage wurde vom Praxisteam beantwortet!
Prüfen Sie Ihre E-Mails auf die Antwort.
"; + + } else { + echo "
Status unbekannt.
"; + } + + +}else if($_POST["aktion"] == 1){ + echo "Wollen Sie wirklich Ihren Anfrage löschen?Dieses ist nicht rückgängig zu machen!
Dann bestätigen Sie die Abmeldung:
"; + echo "Bitte bestätigen!"; + echo ""; + + +}else if($_POST["aktion"] == 2){ + + $anfrageid = (int)($_POST["anfrageid"] ?? 0); + if ($anfrageid <= 0) { + die("
Ungültige Anfrage-ID.
"); + } + + // 1) Prüfen/Updaten in einem Schritt: nur bestätigen, wenn noch nicht bestätigt + $stmt = $pdo->prepare(" + UPDATE anfragen + SET checked = 1 + WHERE anfrageid = ? + AND checked < 1 + "); + $stmt->execute([$anfrageid]); + + if ($stmt->rowCount() === 0) { + // Es wurde nichts geändert -> war schon bestätigt oder existiert nicht + // Optional: prüfen ob Anfrage existiert + $stmt = $pdo->prepare("SELECT checked FROM anfragen WHERE anfrageid = ? LIMIT 1"); + $stmt->execute([$anfrageid]); + $checked = $stmt->fetchColumn(); + + if ($checked === false) { + echo "Anfrage nicht gefunden.
"; + } else { + echo "Sie haben Ihre Anfrage schon bestätigt.
"; + } + exit; + } + + echo "Ihre Anfrage wurde erfolgreich bestätigt!
"; + + + // 2) Anfrage + Person laden (NEUES SCHEMA) + $stmt = $pdo->prepare(" + SELECT + ordnungsid + FROM anfragen a + WHERE anfrageid = ? + LIMIT 1 + "); + $stmt->execute([$anfrageid]); + $ordnungsid = $stmt->fetchColumn(); + echo "Sie erhalten gleich eine schriftliche Bestätigung per E-Mail
"; + if (!$row) { + echo "
Fehler: Anfrage wurde bestätigt, aber konnte nicht geladen werden.
"; + exit; + } + + $ordnungsid = $row["ordnungsid"] ?? null; + + if($ordnungsid == 1){ + // Anfragen allgemein Bestätigung + SendMailMessageVorlage($pdo, "3", $anfrageid, "19"); + }else if($ordnungsid == 2 || $ordnungsid == 3){ + // Anfragen Rezept Bestätigung + SendMailMessageVorlage($pdo, "3", $anfrageid, "26"); + } + + + +}else if($_POST["aktion"] == 3){ + $anfrageid = (int)($_POST["anfrageid"] ?? 0); + if ($anfrageid <= 0) { + die("Ungültige Anfrage-ID.
"); + } + + /* + 1) Anfrage auf "gelöscht" setzen, + aber nur wenn noch nicht gelöscht (checked < 2) + */ + $stmt = $pdo->prepare(" + UPDATE anfragen + SET checked = 2 + WHERE anfrageid = ? + AND checked < 2 + "); + $stmt->execute([$anfrageid]); + + if ($stmt->rowCount() === 0) { + // Entweder existiert nicht oder war schon gelöscht + $stmt = $pdo->prepare("SELECT checked FROM anfragen WHERE anfrageid = ? LIMIT 1"); + $stmt->execute([$anfrageid]); + $checked = $stmt->fetchColumn(); + + if ($checked === false) { + echo "Anfrage nicht gefunden.
"; + } else { + echo "Sie haben Ihre Anfrage schon gelöscht.
"; + } + + }else{ + + echo "Ihre Anfrage wurde erfolgreich gelöscht!
"; + echo "Sie erhalten gleich eine schriftliche Bestätigung per E-Mail
"; + + SendMailMessageVorlage($pdo, "3", $anfrageid, "49"); + + } + + + + + + + +}else{ + + echo "Leider konnten wir Ihre ID-Nummer nicht erkennen.
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
"; + echo "
Private Zusatzleistungen mit Beschreibungen & Richtpreisen
-- Unsere Privatleistungen (IGeL) finden Sie jetzt übersichtlich auf einer eigenen Seite. -
- -- - -
Ihre Hausarztpraxis direkt an der Burg und in Bisperode an der Schule
-
- Internistische Leistungen der Praxis
-- – DMP Diabetes
- – DMP KHK
- – DMP Asthma
- – EKG, Langzeit-EKG
- – Langzeitblutdruckmessung
- – Internistische und rheumatologische Blutuntersuchungen
- – Ultraschalluntersuchung innerer Organe
- – Gefäßuntersuchung mit Farbdoppler, CW-Doppler, PW-Doppler
- – Lungenfunktionstest
- – Allergieberatung
- – Farbdoppler-Sonografie der zuführenden Hirngefäße, Intimadickenmessung
- (zur Bestimmung des Schlaganfall- und Herzinfarktrisikos)
- – Schilddrüsenuntersuchung
- – Erstberatung bei Depression, ADHS, Burnout, Suchterkrankungen (Drogen, Ernährung, Handy)
- – Erstberatung bei Angsterkrankungen
-
- Nutzen Sie meine 20-jährige medizinische Erfahrung für Ihre Vitalität und Gesundheit. -
Notfallsprechstunde
-Bei Ohnmacht, Brustschmerzen, Herzschmerzen, Luftnot, akuten stark blutenden Wunden und Lähmungserscheinungen rufen Sie bitte einen Rettungswagen! Tel.: 112
- - - -So funktioniert unsere Notfallsprechstunde:
-
- – Anmeldung direkt an der Praxistür bis 11:30
- – bei starker Nachfrage erhalten Sie ggf. ein Zeitfenster für Ihre Behandlung
- – 11:30 ist Annahmeschluss
- – für alle Patienten; einmal im Quartal auch für fremde Patienten aus anderen Orten oder von anderen Hausärzten
- – nur ein akutes Anliegen
- – nur mit ausgefülltem Fragebogen
- – ohne telefonische Anmeldung,
- – ohne feste Termine,
- – ohne Fremdsprachen
- – Sprache: nur Deutsch oder mit Dolmetscher
- – ohne lange Gespräche (maximal fünf Minuten)
- – ggf. mit Folgetermin
-
Typische Krankheitsbilder für die Notfallsprechstunde:
-
- – grippaler Infekt seit 1–2 Tagen
- – Rückenschmerzen seit wenigen Tagen
- – Kinder-AU
- – bekannte Beschwerden, AU erforderlich
- – Magen-Darm-Erkrankung akut
- – Husten seit 2–3 Tagen
-
Das können Sie erwarten:
-
- – alle bis 11:30 angenommenen Patienten werden (kurz) behandelt
- – kurze körperliche Untersuchungen
- – kurze Beratungen, auch durch qualifizierte Mitarbeitende
- – Arbeitsunfähigkeitsbescheinigungen
- – Schulattest
- – übliche Hausarztmedikamente auf Rezept
- – Verordnungen nach Krankenhausaufenthalt gemäß Entlassungsbrief
- – vergessene Medikamente verordnen (ggf. Nachweis)
- – ggf. Folgetermin, z. B. bei Gesprächsbedarf, Krise, Arbeitsplatzkonflikt
-
Das können Sie nicht erwarten:
-
- – BTM-Rezepte oder Psychopharmaka ohne Verordnungsnachweis für Fremdpatienten
- – Gespräche in fremden Sprachen
- – Sonografie, EKG etc.
- – dauerhafte Aufnahme von Patienten, die nicht in unserem Einzugsgebiet wohnen
- – Behandlung von komplexen vorbestehenden Erkrankungen
- – Atteste
- – Beratung zu Reha, Kur oder Rente
-
Bei Ohnmacht, Brustschmerzen, Herzschmerzen, Luftnot, akuten stark blutenden Wunden, Verletzungen und Lähmungserscheinungen rufen Sie bitte einen Rettungswagen! Tel.: 112
-Vorsorgeleistungen
- – Impfungen- – Früherkennungsuntersuchungen
- Kinder (U6–U9) und Jugendliche (U10)
- Erwachsene (ab 35 Jahren)
- – Herzratenvariabilitätstest (Stress)
- – Krebsvorsorge bei Männern (ab 45 Jahren)
- – Hautkrebsscreening (ab 35 Jahren)
- – Herzvorsorge (Farbdopplerechokardiografie), Lungenfunktionstest, Langzeit-EKG, Blutuntersuchung
- – Schlaganfallvorsorge (Langzeit-EKG, Untersuchung der Hauptschlagadern, Blutuntersuchung) -
Warum Vorsorge?
-- Die Medizin hat in den vergangenen Jahren große Fortschritte gemacht. Viele Laborwerte geben einen sicheren Hinweis auf den Stand Ihrer Leistungsfähigkeit. - Gerade in unserer heutigen hektischen Zeit mit wenigen Ruheoasen ist die körperliche Gesundheit besonders wichtig, um vital im Alltag erfolgreich zu sein. - Profitieren Sie vom Wissen der modernen Medizin, der Neurowissenschaften und der modernen Ausstattung unserer Praxis. - Vorsorge ist besonders für Männer eine entscheidende Grundlage der persönlichen Gesundheitssorge. - Vereinbaren Sie noch heute einen Termin. Das geht hier im Internet ganz einfach online. -
-
- Gesundheitsvorsorge
-Alle drei Jahre steht Ihnen nach dem 35. Lebensjahr ein medizinischer Gesundheitscheck zu.
-Alle zwei Jahre steht Ihnen nach dem 35. Lebensjahr eine Hautkrebsuntersuchung zu.
-Alle zwei Jahre steht Ihnen nach dem 45. Lebensjahr ein Gesundheitscheck für Männer sowie eine Prostata-Untersuchung zu.
-Nutzen Sie die Vorsorgeuntersuchungen in unserer Praxis.
-Schlaganfallvorsorge
-- Mit einer technisch sehr aufwendigen Ultraschalluntersuchung können wir die Arterien vermessen, die das Gehirn mit Blut versorgen. - Die innere Schicht der Halsschlagader gibt Auskunft über den allgemeinen Zustand Ihrer Gefäße und Ihr persönliches Schlaganfallrisiko. - Verschaffen Sie sich Sicherheit durch diese ärztliche Vorsorge. -
-
- Lange vital: Longevity
-Wie bleibe ich lange vital und leistungsfähig?
-- Gerade für die Babyboomer ist eine erhöhte Lebenserwartung mit der Frage verbunden: Wie werde ich gesund alt? - Während die Lebenserwartung der jüngeren Generation vor allem durch Überernährung und Bewegungsmangel deutlich sinkt. - Was können Sie tun? -
-Vier Bausteine für eine vitale, verlängerte Lebensspanne:
- – Bewegung
- – guter Schlaf
- – entspannte Lebenseinstellungen
- – gute Ernährung mit wenig industriellen Fertigprodukten
-
Es gibt keine Patentlösungen, die allen helfen.
- Das Praxisteam unterstützt Sie mit individuellen Lösungen: Bewegung in den Alltag integrieren, Schlafstörungen ansprechen und behandeln,
- belastende Lebenseinstellungen auflösen, Ernährung sinnvoll umstellen.
-
Das können Sie erwarten: Eine individuelle Beratung mit vielen Tipps zur Neugestaltung Ihres vitalisierenden Alltags.
-Das bringen Sie mit: Bereitschaft, neue Wege zu gehen und Verantwortung für die eigene Gesundheit zu übernehmen.
-Impfberatung
-Derzeit individuelle Impfberatung:
- Die meisten Impfungen sind Kassenleistungen und damit für Sie kostenfrei!
- Für erforderliche Impfungen bei geplanten Fernreisen buchen Sie bitte einen Termin für eine reisemedizinische Beratung. (Private Zusatzleistung)
-
Warum impfen wir?
- Impfungen sind ein sicherer Schutz vor gefährlichen Viruserkrankungen, die wir anders nicht oder nur schlecht behandeln können:
- z. B. Masern, Diphtherie, Tetanus, Röteln, Meningitis, Gürtelrose (ab 60), Tollwut. Impfungen verbessern auch die durchschnittliche Gesundheit bei Kindern.
-
Gibt es Impfschäden?
- Unerwünschte Wirkungen sind möglich, aber selten. Der Nutzen einer Impfung überwiegt das Risiko deutlich.
-
Wogegen impfen wir?
- Tetanus, Diphtherie, Polio, Röteln, Meningitis, Pneumokokken, Varizellen, Rotaviren, FSME, Tollwut, Gürtelrose, Papillomaviren, Hepatitis A und B, Grippe, Covid-19 u. v. m.
-
Wen impfen wir?
- Säuglinge (alle empfohlenen Impfungen), Kleinkinder, Kinder, Jugendliche (Papillomavirus, Gardasil), Erwachsene.
-
Private Zusatzleistungen mit Beschreibungen & Richtpreisen
++ Unsere Privatleistungen (IGeL) finden Sie jetzt übersichtlich auf einer eigenen Seite. +
+ ++ + +
Ihre Hausarztpraxis direkt an der Burg und in Bisperode an der Schule
+
+ Internistische Leistungen der Praxis
++ – DMP Diabetes
+ – DMP KHK
+ – DMP Asthma
+ – EKG, Langzeit-EKG
+ – Langzeitblutdruckmessung
+ – Internistische und rheumatologische Blutuntersuchungen
+ – Ultraschalluntersuchung innerer Organe
+ – Gefäßuntersuchung mit Farbdoppler, CW-Doppler, PW-Doppler
+ – Lungenfunktionstest
+ – Allergieberatung
+ – Farbdoppler-Sonografie der zuführenden Hirngefäße, Intimadickenmessung
+ (zur Bestimmung des Schlaganfall- und Herzinfarktrisikos)
+ – Schilddrüsenuntersuchung
+ – Erstberatung bei Depression, ADHS, Burnout, Suchterkrankungen (Drogen, Ernährung, Handy)
+ – Erstberatung bei Angsterkrankungen
+
+ Nutzen Sie meine 20-jährige medizinische Erfahrung für Ihre Vitalität und Gesundheit. +
Notfallsprechstunde
+Bei Ohnmacht, Brustschmerzen, Herzschmerzen, Luftnot, akuten stark blutenden Wunden und Lähmungserscheinungen rufen Sie bitte einen Rettungswagen! Tel.: 112
+ + + +So funktioniert unsere Notfallsprechstunde:
+
+ – Anmeldung direkt an der Praxistür bis 11:30
+ – bei starker Nachfrage erhalten Sie ggf. ein Zeitfenster für Ihre Behandlung
+ – 11:30 ist Annahmeschluss
+ – für alle Patienten; einmal im Quartal auch für fremde Patienten aus anderen Orten oder von anderen Hausärzten
+ – nur ein akutes Anliegen
+ – nur mit ausgefülltem Fragebogen
+ – ohne telefonische Anmeldung,
+ – ohne feste Termine,
+ – ohne Fremdsprachen
+ – Sprache: nur Deutsch oder mit Dolmetscher
+ – ohne lange Gespräche (maximal fünf Minuten)
+ – ggf. mit Folgetermin
+
Typische Krankheitsbilder für die Notfallsprechstunde:
+
+ – grippaler Infekt seit 1–2 Tagen
+ – Rückenschmerzen seit wenigen Tagen
+ – Kinder-AU
+ – bekannte Beschwerden, AU erforderlich
+ – Magen-Darm-Erkrankung akut
+ – Husten seit 2–3 Tagen
+
Das können Sie erwarten:
+
+ – alle bis 11:30 angenommenen Patienten werden (kurz) behandelt
+ – kurze körperliche Untersuchungen
+ – kurze Beratungen, auch durch qualifizierte Mitarbeitende
+ – Arbeitsunfähigkeitsbescheinigungen
+ – Schulattest
+ – übliche Hausarztmedikamente auf Rezept
+ – Verordnungen nach Krankenhausaufenthalt gemäß Entlassungsbrief
+ – vergessene Medikamente verordnen (ggf. Nachweis)
+ – ggf. Folgetermin, z. B. bei Gesprächsbedarf, Krise, Arbeitsplatzkonflikt
+
Das können Sie nicht erwarten:
+
+ – BTM-Rezepte oder Psychopharmaka ohne Verordnungsnachweis für Fremdpatienten
+ – Gespräche in fremden Sprachen
+ – Sonografie, EKG etc.
+ – dauerhafte Aufnahme von Patienten, die nicht in unserem Einzugsgebiet wohnen
+ – Behandlung von komplexen vorbestehenden Erkrankungen
+ – Atteste
+ – Beratung zu Reha, Kur oder Rente
+
Bei Ohnmacht, Brustschmerzen, Herzschmerzen, Luftnot, akuten stark blutenden Wunden, Verletzungen und Lähmungserscheinungen rufen Sie bitte einen Rettungswagen! Tel.: 112
+Vorsorgeleistungen
+ – Impfungen+ – Früherkennungsuntersuchungen
+ Kinder (U6–U9) und Jugendliche (U10)
+ Erwachsene (ab 35 Jahren)
+ – Herzratenvariabilitätstest (Stress)
+ – Krebsvorsorge bei Männern (ab 45 Jahren)
+ – Hautkrebsscreening (ab 35 Jahren)
+ – Herzvorsorge (Farbdopplerechokardiografie), Lungenfunktionstest, Langzeit-EKG, Blutuntersuchung
+ – Schlaganfallvorsorge (Langzeit-EKG, Untersuchung der Hauptschlagadern, Blutuntersuchung) +
Warum Vorsorge?
++ Die Medizin hat in den vergangenen Jahren große Fortschritte gemacht. Viele Laborwerte geben einen sicheren Hinweis auf den Stand Ihrer Leistungsfähigkeit. + Gerade in unserer heutigen hektischen Zeit mit wenigen Ruheoasen ist die körperliche Gesundheit besonders wichtig, um vital im Alltag erfolgreich zu sein. + Profitieren Sie vom Wissen der modernen Medizin, der Neurowissenschaften und der modernen Ausstattung unserer Praxis. + Vorsorge ist besonders für Männer eine entscheidende Grundlage der persönlichen Gesundheitssorge. + Vereinbaren Sie noch heute einen Termin. Das geht hier im Internet ganz einfach online. +
+
+ Gesundheitsvorsorge
+Alle drei Jahre steht Ihnen nach dem 35. Lebensjahr ein medizinischer Gesundheitscheck zu.
+Alle zwei Jahre steht Ihnen nach dem 35. Lebensjahr eine Hautkrebsuntersuchung zu.
+Alle zwei Jahre steht Ihnen nach dem 45. Lebensjahr ein Gesundheitscheck für Männer sowie eine Prostata-Untersuchung zu.
+Nutzen Sie die Vorsorgeuntersuchungen in unserer Praxis.
+Schlaganfallvorsorge
++ Mit einer technisch sehr aufwendigen Ultraschalluntersuchung können wir die Arterien vermessen, die das Gehirn mit Blut versorgen. + Die innere Schicht der Halsschlagader gibt Auskunft über den allgemeinen Zustand Ihrer Gefäße und Ihr persönliches Schlaganfallrisiko. + Verschaffen Sie sich Sicherheit durch diese ärztliche Vorsorge. +
+
+ Lange vital: Longevity
+Wie bleibe ich lange vital und leistungsfähig?
++ Gerade für die Babyboomer ist eine erhöhte Lebenserwartung mit der Frage verbunden: Wie werde ich gesund alt? + Während die Lebenserwartung der jüngeren Generation vor allem durch Überernährung und Bewegungsmangel deutlich sinkt. + Was können Sie tun? +
+Vier Bausteine für eine vitale, verlängerte Lebensspanne:
+ – Bewegung
+ – guter Schlaf
+ – entspannte Lebenseinstellungen
+ – gute Ernährung mit wenig industriellen Fertigprodukten
+
Es gibt keine Patentlösungen, die allen helfen.
+ Das Praxisteam unterstützt Sie mit individuellen Lösungen: Bewegung in den Alltag integrieren, Schlafstörungen ansprechen und behandeln,
+ belastende Lebenseinstellungen auflösen, Ernährung sinnvoll umstellen.
+
Das können Sie erwarten: Eine individuelle Beratung mit vielen Tipps zur Neugestaltung Ihres vitalisierenden Alltags.
+Das bringen Sie mit: Bereitschaft, neue Wege zu gehen und Verantwortung für die eigene Gesundheit zu übernehmen.
+Impfberatung
+Derzeit individuelle Impfberatung:
+ Die meisten Impfungen sind Kassenleistungen und damit für Sie kostenfrei!
+ Für erforderliche Impfungen bei geplanten Fernreisen buchen Sie bitte einen Termin für eine reisemedizinische Beratung. (Private Zusatzleistung)
+
Warum impfen wir?
+ Impfungen sind ein sicherer Schutz vor gefährlichen Viruserkrankungen, die wir anders nicht oder nur schlecht behandeln können:
+ z. B. Masern, Diphtherie, Tetanus, Röteln, Meningitis, Gürtelrose (ab 60), Tollwut. Impfungen verbessern auch die durchschnittliche Gesundheit bei Kindern.
+
Gibt es Impfschäden?
+ Unerwünschte Wirkungen sind möglich, aber selten. Der Nutzen einer Impfung überwiegt das Risiko deutlich.
+
Wogegen impfen wir?
+ Tetanus, Diphtherie, Polio, Röteln, Meningitis, Pneumokokken, Varizellen, Rotaviren, FSME, Tollwut, Gürtelrose, Papillomaviren, Hepatitis A und B, Grippe, Covid-19 u. v. m.
+
Wen impfen wir?
+ Säuglinge (alle empfohlenen Impfungen), Kleinkinder, Kinder, Jugendliche (Papillomavirus, Gardasil), Erwachsene.
+
Sichern Sie Ihre Gesundheit durch vollständigen Impfschutz!
Vereinbaren Sie einen Beratungstermin!
- Kinder? Wir sind darauf eingerichtet!
-Die Praxis verfügt über ein großzügiges, separates Kinderwartezimmer und ein kindgerecht eingerichtetes Behandlungszimmer. Seit über 20 Jahren versorgen wir Kinder aller Altersgruppen.
- Kinder (U4–U9) und Jugendliche (U10)-
Unser Angebot umfasst alle Vorsorgeuntersuchungen bis zum Erwachsenenalter.
- Impfberatung-
Wir beraten Sie kompetent zu allen notwendigen Schutzimpfungen und führen diese auch durch. - Die Impfbücher Ihrer ganzen Familie können Sie bei uns kontrollieren lassen.
-
- Familienpraxis, Jugendpraxis, Krisenberatung
-- Wenn Kinder heranwachsen, gibt es vielfältige – nicht nur gesundheitliche – Herausforderungen. - Diese Entwicklungen bringen Veränderungen mit sich, die Eltern und Kinder oft vor neue Aufgaben stellen. - Krisen sind hier die Regel, nicht die Ausnahme. Dann braucht das Familiensystem Unterstützung. - Wir nehmen uns Zeit, Familien und Jugendliche in solchen Krisen zu begleiten. -
-
- Ultraschall / Sonografie
- -Ultraschall der inneren Organe (Abdomen)
- Mit unserem neuen Ultraschall- und Echokardiografiegerät (2022) untersuchen wir Ihre inneren Organe (z. B. Leber, Nieren, Milz).
-
Ultraschall der Schilddrüse
- Mit einer speziellen Ultraschallsonde beurteilen wir Schilddrüse auf häufige Veränderungen (Knoten, Zysten, Vergrößerung).
-
Ultraschall der Gefäße
- Mit Farbdoppler und Ultraschall untersuchen wir die Blutversorgung Ihrer Beine. Zusätzlich können krankhafte Veränderungen in den Arterien frühzeitig dargestellt werden.
- Ebenso können die Venen untersucht und Thrombosen (Verstopfung der Venen) festgestellt werden. (Private Zusatzleistung)
-
Schlaganfallvorsorge
- Mit einer technisch aufwendigen Ultraschalluntersuchung können wir die Arterien vermessen, die das Gehirn mit Blut versorgen.
- Die innere Schicht der Halsschlagader gibt Auskunft über den Zustand Ihrer Gefäße und Ihr persönliches Schlaganfallrisiko. (Privatleistung)
-
Herzultraschall (Echokardiografie)
- Mit einer Point-of-Care-Echokardiografie können wir Ihre Herzklappen und die Pumpfunktion Ihres Herzens genauer untersuchen. (Privatleistung)
-
Verschaffen Sie sich Sicherheit durch diese ärztliche Vorsorge.
- - -
- Ärztliches Attest für Führerscheine (LKW/Sportboot etc.)
-- Die üblichen ärztlichen Untersuchungen für Führerscheine werden bei uns durchgeführt. (Privatleistung) -
- - -Tauchtauglichkeitsuntersuchung
-- Eine Tauchtauglichkeitsuntersuchung (Sporttaucher) ist eine ärztliche Untersuchung mit dem Ziel, - Tauchen gefahrenlos ausüben zu können. (Privatleistung) -
- - -Blutbild
-- Leistungsschwäche, Konzentrationsmangel und Müdigkeit haben häufig Ursachen, die durch eine Blutbild-Untersuchung erkannt werden können. - Ebenso können chronische bakterielle und virale Infekte, aber auch seltene bösartige Erkrankungen durch diese einfache Untersuchung häufig gefunden werden. - Verschaffen Sie sich rechtzeitig Sicherheit! -
-Leber- / Nierenwerte
- -Leberwerte
- Genussgifte wie Alkohol und Nikotin, aber auch körperliche Überanstrengung, fehlender Schlaf und zu üppiges Essen belasten die Leber.
- Auch Viruserkrankungen können die Leistungsfähigkeit der Leber beeinträchtigen. Klarheit bringt der Leberstatus in unserer Praxis.
- Ich berate Sie gern. (Kassenleistung/Privatleistung)
-
Nierenwerte
- Unser wichtigstes Ausscheidungsorgan wird häufig durch einfache Schmerzmittel und Umweltgifte geschädigt.
- Die Niere reguliert Wasserhaushalt und Blutdruck. Ein einfacher Bluttest bringt schnell Sicherheit über die Leistungsfähigkeit Ihrer Niere. (Kassenleistung/Privatleistung)
-
- Herzuntersuchung
-EKG
- Das Herz entscheidet über Ihre Leistungsfähigkeit und Kondition. Die Herzstromkurve zeigt, ob Ihr Herz gut durchblutet wird, ob der Rhythmus stimmt und Sie damit fit für den Alltag sind.
-
Langzeit-EKG
- 24 Stunden lang zeichnen wir jeden Herzschlag auf. Gesundheitliche Risiken können so sicher erkannt werden.
-
Herzultraschall (Echokardiografie)
- Mit einer Point-of-Care-Echokardiografie können wir Herzklappen und Pumpfunktion genauer untersuchen. (Privatleistung)
-
- DMP Diabetes, DMP KHK, DMP Asthma
- -DMP Diabetes
- Profitieren Sie von meiner langjährigen Erfahrung als Internist. Direkt vor Ort in unserer Terminpraxis mit kurzen Wartezeiten können Sie die üblichen Untersuchungen im DMP Diabetes wahrnehmen. Bei komplexeren Fragestellungen kooperieren wir mit Fachdiabetologen.
-
DMP KHK
- Auch hier profitieren Sie von langjähriger Erfahrung als Internist – mit kurzen Wartezeiten, Parkplatz direkt an der Burg und einem Facharzt, der Zeit für Sie hat.
-
DMP Asthma
- Auch das DMP Asthma können Sie bei uns absolvieren – mit kurzen Anfahrtswegen, geringen Wartezeiten und geschultem Personal in freundlicher Praxisgestaltung.
-
DMP – Wissenswert:
- Der Risikostrukturausgleich stärkt Ihre Krankenkasse u. a. über die Zahl der im DMP eingeschriebenen Patienten.
- Deshalb nehmen wir als Praxis am DMP-Programm teil.
-
Nutzen Sie als DMP-Patient die vielfältigen Vorsorgeangebote unserer Praxis:
--
-
- Alle drei Jahre ab 35: medizinischer Gesundheitscheck -
- Alle zwei Jahre ab 35: Hautkrebsuntersuchung -
- Alle zwei Jahre ab 45: Gesundheitscheck für Männer und Prostata-Untersuchung -
Langzeit-EKG
-24 Stunden zeichnen wir jeden Herzschlag auf. Gesundheitliche Risiken können so sicher erkannt werden.
-Lungenfunktionstest
-- Die Lunge versorgt den Körper mit Sauerstoff. Schon kleine Veränderungen können Fitness und Konzentrationsfähigkeit vermindern. - Testen Sie mit einer präzisen Messung die Leistungsfähigkeit Ihrer Lunge. -
-Reiseberatung
-- Eine medizinische Beratung (inkl. Impfberatung) für Ihr Reiseziel sichert Ihre Gesundheit im Urlaub, - damit Sie von Ihrer Fernreise gesund zurückkehren. (Private Zusatzleistung) - Tropenerkrankungen wie Malaria, Cholera, Dengue-Fieber und Tollwut brauchen vor der Abfahrt Aufmerksamkeit. -
- -Schlafstörungen
-- Eine schlafmedizinische Beratung kann helfen, Ihren Schlafrhythmus zu stabilisieren und Ursachen von schlechtem Schlaf zu erkennen und zu beheben. - Schlafmittel (Sedativa) helfen dabei meist nicht; sie stören – ähnlich wie Alkohol – die gesunde Schlafstruktur. - Nur in seltenen Fällen werden zu Beginn Medikamente benötigt. -
-Suchtberatung
-- Wir begleiten Sie bei Suchterkrankungen. Unsere schnelle Internet-, Wohlstands- und Konsumgesellschaft fördert Sucht. - Das ständige Streben nach dauerhaftem Glück überfordert unser Belohnungssystem. Wir zeigen Wege auf und vermitteln geeignete Hilfsangebote. -
-Schmerztherapie
-- Wir behandeln akute und chronische Schmerzen und kooperieren mit fachärztlichen schmerztherapeutischen Praxen. -
-Chronische Erschöpfung
-- Wir behandeln chronische Überlastungsreaktionen (Burnout) und zeigen Wege, wie Sie diese Krisen mit Angeboten unseres Gesundheitssystems erfolgreich bewältigen können. -
-Verbesserung der hausärztlichen Versorgung
-
-
- Leistungen unserer mobilen Medizinischen Fachangestellten bei Ihnen zu Hause
-
- – Blutentnahmen
- – Hausbesuche zur Sicherung und Koordinierung der medizinischen Versorgung
- – Verbände und Wundkontrollen
- – Impfungen
- – Quicktest
- – Beratung zu Pflege und medizinischen Maßnahmen
- – Blutdruck-Kontrollen
-
Praxis Mobil
-Unsere mobilen Medizinischen Fachangestellten
- -- VERAH® (Versorgungsassistentin in der Hausarztpraxis) sind erfahrene Medizinische Fachangestellte mit qualifizierter Weiterbildung. - Damit wird Ihr Hausarzt inner- und außerhalb der Praxis auch bei anspruchsvollen Tätigkeiten unterstützt. - Patienten werden vom vertrauten Praxispersonal betreut, das ihre Geschichte kennt – so kann ein Hilfeplan effizienter umgesetzt werden. - Die Hausarztpraxis als zentraler Ort Ihrer medizinischen Versorgung vor Ort wird gestärkt. -
- --
-
- Besuch anfordern -
Termin buchen
-Sie möchten eine Leistung in Anspruch nehmen oder haben Fragen? Buchen Sie Ihren Termin bequem online.
--
-
- Zu termine.php -
+ Kinder? Wir sind darauf eingerichtet!
+Die Praxis verfügt über ein großzügiges, separates Kinderwartezimmer und ein kindgerecht eingerichtetes Behandlungszimmer. Seit über 20 Jahren versorgen wir Kinder aller Altersgruppen.
+ Kinder (U4–U9) und Jugendliche (U10)+
Unser Angebot umfasst alle Vorsorgeuntersuchungen bis zum Erwachsenenalter.
+ Impfberatung+
Wir beraten Sie kompetent zu allen notwendigen Schutzimpfungen und führen diese auch durch. + Die Impfbücher Ihrer ganzen Familie können Sie bei uns kontrollieren lassen.
+
+ Familienpraxis, Jugendpraxis, Krisenberatung
++ Wenn Kinder heranwachsen, gibt es vielfältige – nicht nur gesundheitliche – Herausforderungen. + Diese Entwicklungen bringen Veränderungen mit sich, die Eltern und Kinder oft vor neue Aufgaben stellen. + Krisen sind hier die Regel, nicht die Ausnahme. Dann braucht das Familiensystem Unterstützung. + Wir nehmen uns Zeit, Familien und Jugendliche in solchen Krisen zu begleiten. +
+
+ Ultraschall / Sonografie
+ +Ultraschall der inneren Organe (Abdomen)
+ Mit unserem neuen Ultraschall- und Echokardiografiegerät (2022) untersuchen wir Ihre inneren Organe (z. B. Leber, Nieren, Milz).
+
Ultraschall der Schilddrüse
+ Mit einer speziellen Ultraschallsonde beurteilen wir Schilddrüse auf häufige Veränderungen (Knoten, Zysten, Vergrößerung).
+
Ultraschall der Gefäße
+ Mit Farbdoppler und Ultraschall untersuchen wir die Blutversorgung Ihrer Beine. Zusätzlich können krankhafte Veränderungen in den Arterien frühzeitig dargestellt werden.
+ Ebenso können die Venen untersucht und Thrombosen (Verstopfung der Venen) festgestellt werden. (Private Zusatzleistung)
+
Schlaganfallvorsorge
+ Mit einer technisch aufwendigen Ultraschalluntersuchung können wir die Arterien vermessen, die das Gehirn mit Blut versorgen.
+ Die innere Schicht der Halsschlagader gibt Auskunft über den Zustand Ihrer Gefäße und Ihr persönliches Schlaganfallrisiko. (Privatleistung)
+
Herzultraschall (Echokardiografie)
+ Mit einer Point-of-Care-Echokardiografie können wir Ihre Herzklappen und die Pumpfunktion Ihres Herzens genauer untersuchen. (Privatleistung)
+
Verschaffen Sie sich Sicherheit durch diese ärztliche Vorsorge.
+ + +
+ Ärztliches Attest für Führerscheine (LKW/Sportboot etc.)
++ Die üblichen ärztlichen Untersuchungen für Führerscheine werden bei uns durchgeführt. (Privatleistung) +
+ + +Tauchtauglichkeitsuntersuchung
++ Eine Tauchtauglichkeitsuntersuchung (Sporttaucher) ist eine ärztliche Untersuchung mit dem Ziel, + Tauchen gefahrenlos ausüben zu können. (Privatleistung) +
+ + +Blutbild
++ Leistungsschwäche, Konzentrationsmangel und Müdigkeit haben häufig Ursachen, die durch eine Blutbild-Untersuchung erkannt werden können. + Ebenso können chronische bakterielle und virale Infekte, aber auch seltene bösartige Erkrankungen durch diese einfache Untersuchung häufig gefunden werden. + Verschaffen Sie sich rechtzeitig Sicherheit! +
+Leber- / Nierenwerte
+ +Leberwerte
+ Genussgifte wie Alkohol und Nikotin, aber auch körperliche Überanstrengung, fehlender Schlaf und zu üppiges Essen belasten die Leber.
+ Auch Viruserkrankungen können die Leistungsfähigkeit der Leber beeinträchtigen. Klarheit bringt der Leberstatus in unserer Praxis.
+ Ich berate Sie gern. (Kassenleistung/Privatleistung)
+
Nierenwerte
+ Unser wichtigstes Ausscheidungsorgan wird häufig durch einfache Schmerzmittel und Umweltgifte geschädigt.
+ Die Niere reguliert Wasserhaushalt und Blutdruck. Ein einfacher Bluttest bringt schnell Sicherheit über die Leistungsfähigkeit Ihrer Niere. (Kassenleistung/Privatleistung)
+
+ Herzuntersuchung
+EKG
+ Das Herz entscheidet über Ihre Leistungsfähigkeit und Kondition. Die Herzstromkurve zeigt, ob Ihr Herz gut durchblutet wird, ob der Rhythmus stimmt und Sie damit fit für den Alltag sind.
+
Langzeit-EKG
+ 24 Stunden lang zeichnen wir jeden Herzschlag auf. Gesundheitliche Risiken können so sicher erkannt werden.
+
Herzultraschall (Echokardiografie)
+ Mit einer Point-of-Care-Echokardiografie können wir Herzklappen und Pumpfunktion genauer untersuchen. (Privatleistung)
+
+ DMP Diabetes, DMP KHK, DMP Asthma
+ +DMP Diabetes
+ Profitieren Sie von meiner langjährigen Erfahrung als Internist. Direkt vor Ort in unserer Terminpraxis mit kurzen Wartezeiten können Sie die üblichen Untersuchungen im DMP Diabetes wahrnehmen. Bei komplexeren Fragestellungen kooperieren wir mit Fachdiabetologen.
+
DMP KHK
+ Auch hier profitieren Sie von langjähriger Erfahrung als Internist – mit kurzen Wartezeiten, Parkplatz direkt an der Burg und einem Facharzt, der Zeit für Sie hat.
+
DMP Asthma
+ Auch das DMP Asthma können Sie bei uns absolvieren – mit kurzen Anfahrtswegen, geringen Wartezeiten und geschultem Personal in freundlicher Praxisgestaltung.
+
DMP – Wissenswert:
+ Der Risikostrukturausgleich stärkt Ihre Krankenkasse u. a. über die Zahl der im DMP eingeschriebenen Patienten.
+ Deshalb nehmen wir als Praxis am DMP-Programm teil.
+
Nutzen Sie als DMP-Patient die vielfältigen Vorsorgeangebote unserer Praxis:
+-
+
- Alle drei Jahre ab 35: medizinischer Gesundheitscheck +
- Alle zwei Jahre ab 35: Hautkrebsuntersuchung +
- Alle zwei Jahre ab 45: Gesundheitscheck für Männer und Prostata-Untersuchung +
Langzeit-EKG
+24 Stunden zeichnen wir jeden Herzschlag auf. Gesundheitliche Risiken können so sicher erkannt werden.
+Lungenfunktionstest
++ Die Lunge versorgt den Körper mit Sauerstoff. Schon kleine Veränderungen können Fitness und Konzentrationsfähigkeit vermindern. + Testen Sie mit einer präzisen Messung die Leistungsfähigkeit Ihrer Lunge. +
+Reiseberatung
++ Eine medizinische Beratung (inkl. Impfberatung) für Ihr Reiseziel sichert Ihre Gesundheit im Urlaub, + damit Sie von Ihrer Fernreise gesund zurückkehren. (Private Zusatzleistung) + Tropenerkrankungen wie Malaria, Cholera, Dengue-Fieber und Tollwut brauchen vor der Abfahrt Aufmerksamkeit. +
+ +Schlafstörungen
++ Eine schlafmedizinische Beratung kann helfen, Ihren Schlafrhythmus zu stabilisieren und Ursachen von schlechtem Schlaf zu erkennen und zu beheben. + Schlafmittel (Sedativa) helfen dabei meist nicht; sie stören – ähnlich wie Alkohol – die gesunde Schlafstruktur. + Nur in seltenen Fällen werden zu Beginn Medikamente benötigt. +
+Suchtberatung
++ Wir begleiten Sie bei Suchterkrankungen. Unsere schnelle Internet-, Wohlstands- und Konsumgesellschaft fördert Sucht. + Das ständige Streben nach dauerhaftem Glück überfordert unser Belohnungssystem. Wir zeigen Wege auf und vermitteln geeignete Hilfsangebote. +
+Schmerztherapie
++ Wir behandeln akute und chronische Schmerzen und kooperieren mit fachärztlichen schmerztherapeutischen Praxen. +
+Chronische Erschöpfung
++ Wir behandeln chronische Überlastungsreaktionen (Burnout) und zeigen Wege, wie Sie diese Krisen mit Angeboten unseres Gesundheitssystems erfolgreich bewältigen können. +
+Verbesserung der hausärztlichen Versorgung
+
+
+ Leistungen unserer mobilen Medizinischen Fachangestellten bei Ihnen zu Hause
+
+ – Blutentnahmen
+ – Hausbesuche zur Sicherung und Koordinierung der medizinischen Versorgung
+ – Verbände und Wundkontrollen
+ – Impfungen
+ – Quicktest
+ – Beratung zu Pflege und medizinischen Maßnahmen
+ – Blutdruck-Kontrollen
+
Praxis Mobil
+Unsere mobilen Medizinischen Fachangestellten
+ ++ VERAH® (Versorgungsassistentin in der Hausarztpraxis) sind erfahrene Medizinische Fachangestellte mit qualifizierter Weiterbildung. + Damit wird Ihr Hausarzt inner- und außerhalb der Praxis auch bei anspruchsvollen Tätigkeiten unterstützt. + Patienten werden vom vertrauten Praxispersonal betreut, das ihre Geschichte kennt – so kann ein Hilfeplan effizienter umgesetzt werden. + Die Hausarztpraxis als zentraler Ort Ihrer medizinischen Versorgung vor Ort wird gestärkt. +
+ +-
+
- Besuch anfordern +
Termin buchen
+Sie möchten eine Leistung in Anspruch nehmen oder haben Fragen? Buchen Sie Ihren Termin bequem online.
+-
+
- Zu termine.php +
Service anfordern
- -Kontrollieren Sie Ihre Angaben!'; - echo ''; - - - }else if($_POST["aktion"] == "2"){ - - $vorname = trim($_POST["Vorname"] ?? ""); - $nachname = trim($_POST["Name"] ?? ""); - $geburtstag = trim($_POST["Geburtsjahr"] ?? ""); // muss später YYYY-MM-DD sein - $email = trim($_POST["Email"] ?? ""); - $tele = trim($_POST["Tel"] ?? ""); - $plz = trim($_POST["plz"] ?? ""); - $ort = trim($_POST["ort"] ?? ""); - $strasse = trim($_POST["strasse"] ?? ""); - - $medikament1 = trim($_POST["Medikament1"] ?? ""); - $medikament2 = trim($_POST["Medikament2"] ?? ""); - $nachricht = trim($_POST["message"] ?? ""); - $anforderungart = trim($_POST["category"] ?? ""); - - $abholung = $_POST["abholung"] ?? "Praxis"; - - if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { - die("Ungültige E-Mail"); - } - if (!$geburtstag) { - die("Geburtsdatum fehlt"); - } - $abholungnr = ($abholung === "Apotheke") ? "2" : "1"; - - $karte = $_POST["karte"] ?? ""; - if ($karte === "Privat") { - $karte = "Privatrezept (Selbstzahler)"; - } - - $nachricht = "Karte eingelesen: " . $karte . "
" . - "Abholungsort: " . $abholung . "
" . - $nachricht; - - $impfstofftext = null; - if (!empty($impfstoff)) { - $stmt = $pdo->prepare("SELECT impfname FROM impfstoff WHERE impfid = ?"); - $stmt->execute([$impfstoff]); - $impfstofftext = $stmt->fetchColumn(); - } - - $sendmail = false; - - $pdo->beginTransaction(); - - $stmt = $pdo->prepare(" - INSERT INTO persons (vorname, nachname, email, geburtstag, tele, ort, plz, strasse) - VALUES (:vorname, :nachname, :email, :geburtstag, :tele, :ort, :plz, :strasse) - ON DUPLICATE KEY UPDATE - vorname = VALUES(vorname), - nachname = VALUES(nachname), - tele = VALUES(tele), - ort = VALUES(ort), - plz = VALUES(plz), - strasse = VALUES(strasse), - updated_at = CURRENT_TIMESTAMP - "); - $stmt->execute([ - ':vorname' => $vorname, - ':nachname' => $nachname, - ':email' => $email, - ':geburtstag' => $geburtstag, - ':tele' => $tele, - ':ort' => $ort, - ':plz' => $plz, - ':strasse' => $strasse - ]); - - // person_id holen (weil ON DUPLICATE nicht zuverlässig lastInsertId liefert) - $stmt = $pdo->prepare("SELECT person_id FROM persons WHERE email = ? AND geburtstag = ?"); - $stmt->execute([$email, $geburtstag]); - $person_id = (int)$stmt->fetchColumn(); - - if (!$person_id) { - $pdo->rollBack(); - die("Keine eindeutige Kennung (person_id)"); - }else{ - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - - - $sendmail = true; - - $stmt = $pdo->prepare(" - SELECT 1 - FROM anfragen - WHERE requester_person_id = ? - AND anforderungart = ? - AND medikament1 = ? - AND medikament2 = ? - AND nachricht = ? - AND create_time >= (NOW() - INTERVAL 7 DAY) - LIMIT 1 - "); - $stmt->execute([$person_id, $anforderungart, $medikament1, $medikament2, $nachricht]); - $exists = (bool)$stmt->fetchColumn(); - - if (!$exists) { - $stmt = $pdo->prepare(" - INSERT INTO anfragen - (requester_person_id, anforderungart, medikament1, medikament2, - nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht, - source, created_by_account_id) - VALUES - (?, ?, ?, ?, ?, ?, NOW(), '1', ?, '0', 'mail', NULL) - "); - $stmt->execute([ - $person_id, - $anforderungart, - $medikament1, - $medikament2, - $nachricht, - $hash, - $abholungnr - ]); - - $anfrageid = (int)$pdo->lastInsertId(); - - $pdo->commit(); - - // Achtung: deine Funktion erwartet $con (mysqli). Die musst du später auf PDO umbauen. - // Übergangsweise: Lass die Mailfunktion noch mit mysqli laufen oder baue sie um. - SendMailMessageVorlage($pdo, "3", $anfrageid , "18" ); - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
Sie werden gleich weitergeleitet.
"; - header("refresh:15;rezepte.php"); - - } else { - $pdo->rollBack(); - echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; - header("refresh:15;rezepte.php"); - - } - - } - - - - - - } -}else{ - - -?> - - - - Formulare anfordern, nur nach ärztlicher Absprache und Kontakt. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
-
Benutzen Sie eine Email-Adresse auf die Sie direkt zugreifen können. Bitte bestätigen Sie dann den Link in der Email. So können wir Ihnen im Verlauf den Stand der Bearbeitung Ihrer Anfrage sicher mitteilen. -
- Stellen Sie wiederholt Anfragen an die Praxis Creutzburg?
- Wollen Sie bis zu sechs Medikamente beantragen?
- Benötigen Sie ein längeres Textfeld?
- -
Dann nutzen Sie auch unseren Internen Bereich für Patienten. -
-
Nutzen Sie unsere neue Datei-Upload-Funktion!
- Sie können damit dem Praxis-Team Unterlagen per PDF zur Verfügung stellen.- - Den Upload finden Sie hier: Datei-Upload
- - -
ACHTUNG!
- -Fragen zu Corona?
- - Alle Informationen zur Corona-Impfung finden Sie hier:- Corona-Informationen
- -
Sie benötigen einen Termin?
- - Schauen Sie in unserem Online-Kalender nach einem Termin. Dort sind meist auch kurzfristige Termine vorhanden.- Untersuchungen wie Blutabnahmen, Blutbild oder Ultraschall auf Kassenleistung erfolgen ausschließlich nach direkter Rücksprache mit unserem Arzt und können nicht selbstständig online gebucht werden.
- -
Buchen Sie dafür zunächst einen Sprechstundentermin.
Anschließend wird das weitere Vorgehen mit unserem Arzt besprochen. -- Online-Kalender
- -
Formular bitte ausfüllen und abschicken
-Gehen Sie nach unten zum Formular und füllen Sie es (wie gewohnt) aus.
- - - '; - echo ''; - - - ?> - - - - -- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- Ihre Daten werden HTTPS-verschlüsselt an unser System übertragen. Sie erhalten die Antwort per E-Mail mit TLS-Verschlüsselung. Mit Absenden Ihrer Anfrage stimmen Sie diesen Bedingungen zu.
- -
-
-
-
-
-Praxis im Urlaub"; - echo "Wir befinden uns aktuell im Urlaub.
Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; - - $today = date("Y-m-d"); - - $stmt = $pdo->prepare(" - SELECT ende, vertretung, vertretertelefon, vertreteradresse, vertreterurl - FROM urlaub - WHERE start <= :today - AND ende >= :today - ORDER BY ende DESC - LIMIT 1 - "); - $stmt->execute([':today' => $today]); - - $row = $stmt->fetch(); // liefert Array oder false - - if ($row) { - $vertreter = $row["vertretung"] ?? null; - $vertretertelefon = $row["vertretertelefon"] ?? null; - $vertreteradresse = $row["vertreteradresse"] ?? null; - $vertreterurl = $row["vertreterurl"] ?? null; - $ende = $row["ende"] ?? null; - - if ($ende) { - $endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende))); - } else { - $endeausgabe = null; - } - - if (!empty($vertreter)) { - echo "Unsere Vertretung: " . htmlspecialchars($vertreter, ENT_QUOTES, 'UTF-8') . "
"; - } - if (!empty($vertreterurl)) { - // optional: URL escapen/validieren - echo "Webseite Vertretung: " . htmlspecialchars($vertreterurl, ENT_QUOTES, 'UTF-8') . "
"; - } - if (!empty($vertretertelefon)) { - echo "Telefonischer Kontakt Vertretung: " . htmlspecialchars($vertretertelefon, ENT_QUOTES, 'UTF-8') . "
"; - } - if (!empty($vertreteradresse)) { - echo "Adresse Vertretung: " . htmlspecialchars($vertreteradresse, ENT_QUOTES, 'UTF-8') . "
"; - } - - if ($endeausgabe) { - echo "
Wir stehen Ihnen ab dem " . htmlspecialchars($endeausgabe, ENT_QUOTES, 'UTF-8') . " wieder zur Verfügung.
"; - } - } - ?> - - - -
Service anfordern
+ +Kontrollieren Sie Ihre Angaben!'; + echo ''; + + + }else if($_POST["aktion"] == "2"){ + + $vorname = trim($_POST["Vorname"] ?? ""); + $nachname = trim($_POST["Name"] ?? ""); + $geburtstag = trim($_POST["Geburtsjahr"] ?? ""); // muss später YYYY-MM-DD sein + $email = trim($_POST["Email"] ?? ""); + $tele = trim($_POST["Tel"] ?? ""); + $plz = trim($_POST["plz"] ?? ""); + $ort = trim($_POST["ort"] ?? ""); + $strasse = trim($_POST["strasse"] ?? ""); + + $medikament1 = trim($_POST["Medikament1"] ?? ""); + $medikament2 = trim($_POST["Medikament2"] ?? ""); + $nachricht = trim($_POST["message"] ?? ""); + $anforderungart = trim($_POST["category"] ?? ""); + + $abholung = $_POST["abholung"] ?? "Praxis"; + + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + die("Ungültige E-Mail"); + } + if (!$geburtstag) { + die("Geburtsdatum fehlt"); + } + $abholungnr = ($abholung === "Apotheke") ? "2" : "1"; + + $karte = $_POST["karte"] ?? ""; + if ($karte === "Privat") { + $karte = "Privatrezept (Selbstzahler)"; + } + + $nachricht = "Karte eingelesen: " . $karte . "
" . + "Abholungsort: " . $abholung . "
" . + $nachricht; + + $impfstofftext = null; + if (!empty($impfstoff)) { + $stmt = $pdo->prepare("SELECT impfname FROM impfstoff WHERE impfid = ?"); + $stmt->execute([$impfstoff]); + $impfstofftext = $stmt->fetchColumn(); + } + + $sendmail = false; + + $pdo->beginTransaction(); + + $stmt = $pdo->prepare(" + INSERT INTO persons (vorname, nachname, email, geburtstag, tele, ort, plz, strasse) + VALUES (:vorname, :nachname, :email, :geburtstag, :tele, :ort, :plz, :strasse) + ON DUPLICATE KEY UPDATE + vorname = VALUES(vorname), + nachname = VALUES(nachname), + tele = VALUES(tele), + ort = VALUES(ort), + plz = VALUES(plz), + strasse = VALUES(strasse), + updated_at = CURRENT_TIMESTAMP + "); + $stmt->execute([ + ':vorname' => $vorname, + ':nachname' => $nachname, + ':email' => $email, + ':geburtstag' => $geburtstag, + ':tele' => $tele, + ':ort' => $ort, + ':plz' => $plz, + ':strasse' => $strasse + ]); + + // person_id holen (weil ON DUPLICATE nicht zuverlässig lastInsertId liefert) + $stmt = $pdo->prepare("SELECT person_id FROM persons WHERE email = ? AND geburtstag = ?"); + $stmt->execute([$email, $geburtstag]); + $person_id = (int)$stmt->fetchColumn(); + + if (!$person_id) { + $pdo->rollBack(); + die("Keine eindeutige Kennung (person_id)"); + }else{ + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + + + $sendmail = true; + + $stmt = $pdo->prepare(" + SELECT 1 + FROM anfragen + WHERE requester_person_id = ? + AND anforderungart = ? + AND medikament1 = ? + AND medikament2 = ? + AND nachricht = ? + AND create_time >= (NOW() - INTERVAL 7 DAY) + LIMIT 1 + "); + $stmt->execute([$person_id, $anforderungart, $medikament1, $medikament2, $nachricht]); + $exists = (bool)$stmt->fetchColumn(); + + if (!$exists) { + $stmt = $pdo->prepare(" + INSERT INTO anfragen + (requester_person_id, anforderungart, medikament1, medikament2, + nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht, + source, created_by_account_id) + VALUES + (?, ?, ?, ?, ?, ?, NOW(), '1', ?, '0', 'mail', NULL) + "); + $stmt->execute([ + $person_id, + $anforderungart, + $medikament1, + $medikament2, + $nachricht, + $hash, + $abholungnr + ]); + + $anfrageid = (int)$pdo->lastInsertId(); + + $pdo->commit(); + + // Achtung: deine Funktion erwartet $con (mysqli). Die musst du später auf PDO umbauen. + // Übergangsweise: Lass die Mailfunktion noch mit mysqli laufen oder baue sie um. + SendMailMessageVorlage($pdo, "3", $anfrageid , "18" ); + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
Sie werden gleich weitergeleitet.
"; + header("refresh:15;rezepte.php"); + + } else { + $pdo->rollBack(); + echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; + header("refresh:15;rezepte.php"); + + } + + } + + + + + + } +}else{ + + +?> + + + + Formulare anfordern, nur nach ärztlicher Absprache und Kontakt. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+
Benutzen Sie eine Email-Adresse auf die Sie direkt zugreifen können. Bitte bestätigen Sie dann den Link in der Email. So können wir Ihnen im Verlauf den Stand der Bearbeitung Ihrer Anfrage sicher mitteilen. +
+ Stellen Sie wiederholt Anfragen an die Praxis Creutzburg?
+ Wollen Sie bis zu sechs Medikamente beantragen?
+ Benötigen Sie ein längeres Textfeld?
+ +
Dann nutzen Sie auch unseren Internen Bereich für Patienten. +
+
Nutzen Sie unsere neue Datei-Upload-Funktion!
+ Sie können damit dem Praxis-Team Unterlagen per PDF zur Verfügung stellen.+ + Den Upload finden Sie hier: Datei-Upload
+ + +
ACHTUNG!
+ +Fragen zu Corona?
+ + Alle Informationen zur Corona-Impfung finden Sie hier:+ Corona-Informationen
+ +
Sie benötigen einen Termin?
+ + Schauen Sie in unserem Online-Kalender nach einem Termin. Dort sind meist auch kurzfristige Termine vorhanden.+ Untersuchungen wie Blutabnahmen, Blutbild oder Ultraschall auf Kassenleistung erfolgen ausschließlich nach direkter Rücksprache mit unserem Arzt und können nicht selbstständig online gebucht werden.
+ +
Buchen Sie dafür zunächst einen Sprechstundentermin.
Anschließend wird das weitere Vorgehen mit unserem Arzt besprochen. ++ Online-Kalender
+ +
Formular bitte ausfüllen und abschicken
+Gehen Sie nach unten zum Formular und füllen Sie es (wie gewohnt) aus.
+ + + '; + echo ''; + + + ?> + + + + ++ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ Ihre Daten werden HTTPS-verschlüsselt an unser System übertragen. Sie erhalten die Antwort per E-Mail mit TLS-Verschlüsselung. Mit Absenden Ihrer Anfrage stimmen Sie diesen Bedingungen zu.
+ +
-
+
+
+
+Praxis im Urlaub"; + echo "Wir befinden uns aktuell im Urlaub.
Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; + + $today = date("Y-m-d"); + + $stmt = $pdo->prepare(" + SELECT ende, vertretung, vertretertelefon, vertreteradresse, vertreterurl + FROM urlaub + WHERE start <= :today + AND ende >= :today + ORDER BY ende DESC + LIMIT 1 + "); + $stmt->execute([':today' => $today]); + + $row = $stmt->fetch(); // liefert Array oder false + + if ($row) { + $vertreter = $row["vertretung"] ?? null; + $vertretertelefon = $row["vertretertelefon"] ?? null; + $vertreteradresse = $row["vertreteradresse"] ?? null; + $vertreterurl = $row["vertreterurl"] ?? null; + $ende = $row["ende"] ?? null; + + if ($ende) { + $endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende))); + } else { + $endeausgabe = null; + } + + if (!empty($vertreter)) { + echo "Unsere Vertretung: " . htmlspecialchars($vertreter, ENT_QUOTES, 'UTF-8') . "
"; + } + if (!empty($vertreterurl)) { + // optional: URL escapen/validieren + echo "Webseite Vertretung: " . htmlspecialchars($vertreterurl, ENT_QUOTES, 'UTF-8') . "
"; + } + if (!empty($vertretertelefon)) { + echo "Telefonischer Kontakt Vertretung: " . htmlspecialchars($vertretertelefon, ENT_QUOTES, 'UTF-8') . "
"; + } + if (!empty($vertreteradresse)) { + echo "Adresse Vertretung: " . htmlspecialchars($vertreteradresse, ENT_QUOTES, 'UTF-8') . "
"; + } + + if ($endeausgabe) { + echo "
Wir stehen Ihnen ab dem " . htmlspecialchars($endeausgabe, ENT_QUOTES, 'UTF-8') . " wieder zur Verfügung.
"; + } + } + ?> + + + +
\n"; - return $newdate; - } - - /** - * Date math: get date from week and day in specifiec month - * - * This routine finds actual dates for the second Tuesday of the month, last Friday of the month, etc. - * For second Tuesday, use $week = 1, $wday = 2 - * for last Friday, use $week = -1, $wday = 5 - * - * @param int $date Unix timestamp - * - * @param int $week week number, 0 is first week, -1 is last - * - * @param int $wday day of week, 0 is Sunday, 6 is Saturday - * - * @param string $tzid PHP supported timezone - * - * @return int Unix timestamp - */ - static function getDateFromDay($date, $week, $wday,$tzid="UTC") { - //echo "getDateFromDay(" . self::toSqlDateTime($date) . ",$week,$wday)
\n"; - // determine first day in month - $tdate = getdate($date); - $monthbegin = gmmktime(0,0,0, $tdate["mon"],1,$tdate["year"]); - $monthend = self::addDate($monthbegin, 0,0,0,1,-1,0,$tzid); // add 1 month and subtract 1 day - $day = self::addDate($date,0,0,0,0,1 - $tdate["mday"],0,$tzid); - $month = array(array()); - while($day <= $monthend) { - $tdate=getdate($day); - $month[$tdate["wday"]][]=$day; - //echo self::toSQLDateTime($day) . "
\n"; - $day = self::addDate($day, 0,0,0,0,1,0,$tzid); // add 1 day - } - $dayinmonth=0; - if($week >= 0) - $dayinmonth = $month[$wday][$week]; - else - $dayinmonth = $month[$wday][count($month[$wday]) - 1]; - //echo "return " . self::toSQLDateTime($dayinmonth); - //exit; - return $dayinmonth; - } - - /** - * Convert UTC date-time to local date-time - * - * @param string $sqldate SQL date-time string - * - * @param string $tzid PHP recognized timezone (default is "UTC") - * - * @return string SQL date-time string - */ - static function toLocalDateTime($sqldate, $tzid = "UTC" ){ - try - { - $timezone = new DateTimeZone($tzid); - } - catch(Exception $e) - { - // bad time zone specified - return $sqldate; - } - $udate = self::toUnixDateTime($sqldate); - $daydatetime = new DateTime("@" . $udate); - $tzoffset = $timezone->getOffset($daydatetime); - return self::toSqlDateTime($udate + $tzoffset); - } - - /** - * Convert local date-time to UTC date-time - * - * @param string $sqldate SQL date-time string - * - * @param string $tzid PHP recognized timezone (default is "UTC") - * - * @return string SQL date-time string - */ - static function toUTCDateTime($sqldate, $tzid = "UTC" ){ - - date_default_timezone_set("UTC"); - try - { - $date = new DateTime($sqldate, $tzid); - } - catch(Exception $e) - { - // bad time zone specified - return $sqldate; - } - $offset = $date->getOffsetFromGMT(); - if($offset >= 0) - $date->sub(new DateInterval("PT".$offset."S")); - else - $date->add(new DateInterval("PT".abs($offset)."S")); - return $date->toSql(true); - } - - /** - * Convert from a relative date to an absolute date - * - * Examples of relative dates are "-2y" for 2 years ago, "18m" - * for 18 months after today. Relative date uses "y", "m" and "d" for - * year, month and day. Relative date can be combined into comma - * separated list, i.e., "-1y,-1d" for 1 year and 1 day ago. - * - * @param string $date relative date string (i.e. "1y" for 1 year from today) - * - * @param string $rdate reference date, or blank for current date (in SQL date-time format) - * - * @return string in SQL date-time format - */ - static function getAbsDate($date,$rdate = ""){ - if(str_replace(array("y","m","d","h","n"),"",strtolower($date)) != strtolower($date)){ - date_default_timezone_set("UTC"); - if($rdate == "") - $udate = time(); - else - $udate = self::toUnixDateTime($rdate); - $values=explode(",",strtolower($date)); - $y = 0; - $m = 0; - $d = 0; - $h = 0; - $n = 0; - foreach($values as $value){ - $rtype = substr($value,strlen($value)-1); - $rvalue = intval(substr($value,0,strlen($value) - 1)); - switch($rtype){ - case 'y': - $y = $rvalue; - break; - case 'm': - $m = $rvalue; - break; - case 'd': - $d = $rvalue; - break; - case 'h': - $h = $rvalue; - break; - case 'n': - $n = $rvalue; - break; - } - // for "-" values, move to start of day , otherwise, move to end of day - if($rvalue[0] == '-') - $udate = mktime(0,0,0,date('m',$udate),date('d',$udate),date('Y',$udate)); - else - $udate = mktime(0,-1,0,date('m',$udate),date('d',$udate)+1,date('Y',$udate)); - $udate = self::addDate($udate,$h,$n,0,$m,$d,$y); - } - $date = self::toSqlDateTime($udate); - } - return $date; - } - - /** - * Format Unix timestamp to iCal date-time format - * - * @param int $datetime Unix timestamp - * - * @return string iCal date-time string - */ - static function toiCalDateTime($datetime = null){ - date_default_timezone_set('UTC'); - if($datetime == null) - $datetime = time(); - return gmdate("Ymd\THis",$datetime); - } - - /** - * Format Unix timestamp to iCal date format - * - * @param int $datetime Unix timestamp - * - * @return string iCal date-time string - */ - static function toiCalDate($datetime = null){ - date_default_timezone_set('UTC'); - if($datetime == null) - $datetime = time(); - return gmdate("Ymd",$datetime); - } -} + + * @copyright Copyright (C) 2006 - 2017 by Dan Cogliano + * @license GNU GPLv3
\n"; + return $newdate; + } + + /** + * Date math: get date from week and day in specifiec month + * + * This routine finds actual dates for the second Tuesday of the month, last Friday of the month, etc. + * For second Tuesday, use $week = 1, $wday = 2 + * for last Friday, use $week = -1, $wday = 5 + * + * @param int $date Unix timestamp + * + * @param int $week week number, 0 is first week, -1 is last + * + * @param int $wday day of week, 0 is Sunday, 6 is Saturday + * + * @param string $tzid PHP supported timezone + * + * @return int Unix timestamp + */ + static function getDateFromDay($date, $week, $wday,$tzid="UTC") { + //echo "getDateFromDay(" . self::toSqlDateTime($date) . ",$week,$wday)
\n"; + // determine first day in month + $tdate = getdate($date); + $monthbegin = gmmktime(0,0,0, $tdate["mon"],1,$tdate["year"]); + $monthend = self::addDate($monthbegin, 0,0,0,1,-1,0,$tzid); // add 1 month and subtract 1 day + $day = self::addDate($date,0,0,0,0,1 - $tdate["mday"],0,$tzid); + $month = array(array()); + while($day <= $monthend) { + $tdate=getdate($day); + $month[$tdate["wday"]][]=$day; + //echo self::toSQLDateTime($day) . "
\n"; + $day = self::addDate($day, 0,0,0,0,1,0,$tzid); // add 1 day + } + $dayinmonth=0; + if($week >= 0) + $dayinmonth = $month[$wday][$week]; + else + $dayinmonth = $month[$wday][count($month[$wday]) - 1]; + //echo "return " . self::toSQLDateTime($dayinmonth); + //exit; + return $dayinmonth; + } + + /** + * Convert UTC date-time to local date-time + * + * @param string $sqldate SQL date-time string + * + * @param string $tzid PHP recognized timezone (default is "UTC") + * + * @return string SQL date-time string + */ + static function toLocalDateTime($sqldate, $tzid = "UTC" ){ + try + { + $timezone = new DateTimeZone($tzid); + } + catch(Exception $e) + { + // bad time zone specified + return $sqldate; + } + $udate = self::toUnixDateTime($sqldate); + $daydatetime = new DateTime("@" . $udate); + $tzoffset = $timezone->getOffset($daydatetime); + return self::toSqlDateTime($udate + $tzoffset); + } + + /** + * Convert local date-time to UTC date-time + * + * @param string $sqldate SQL date-time string + * + * @param string $tzid PHP recognized timezone (default is "UTC") + * + * @return string SQL date-time string + */ + static function toUTCDateTime($sqldate, $tzid = "UTC" ){ + + date_default_timezone_set("UTC"); + try + { + $date = new DateTime($sqldate, $tzid); + } + catch(Exception $e) + { + // bad time zone specified + return $sqldate; + } + $offset = $date->getOffsetFromGMT(); + if($offset >= 0) + $date->sub(new DateInterval("PT".$offset."S")); + else + $date->add(new DateInterval("PT".abs($offset)."S")); + return $date->toSql(true); + } + + /** + * Convert from a relative date to an absolute date + * + * Examples of relative dates are "-2y" for 2 years ago, "18m" + * for 18 months after today. Relative date uses "y", "m" and "d" for + * year, month and day. Relative date can be combined into comma + * separated list, i.e., "-1y,-1d" for 1 year and 1 day ago. + * + * @param string $date relative date string (i.e. "1y" for 1 year from today) + * + * @param string $rdate reference date, or blank for current date (in SQL date-time format) + * + * @return string in SQL date-time format + */ + static function getAbsDate($date,$rdate = ""){ + if(str_replace(array("y","m","d","h","n"),"",strtolower($date)) != strtolower($date)){ + date_default_timezone_set("UTC"); + if($rdate == "") + $udate = time(); + else + $udate = self::toUnixDateTime($rdate); + $values=explode(",",strtolower($date)); + $y = 0; + $m = 0; + $d = 0; + $h = 0; + $n = 0; + foreach($values as $value){ + $rtype = substr($value,strlen($value)-1); + $rvalue = intval(substr($value,0,strlen($value) - 1)); + switch($rtype){ + case 'y': + $y = $rvalue; + break; + case 'm': + $m = $rvalue; + break; + case 'd': + $d = $rvalue; + break; + case 'h': + $h = $rvalue; + break; + case 'n': + $n = $rvalue; + break; + } + // for "-" values, move to start of day , otherwise, move to end of day + if($rvalue[0] == '-') + $udate = mktime(0,0,0,date('m',$udate),date('d',$udate),date('Y',$udate)); + else + $udate = mktime(0,-1,0,date('m',$udate),date('d',$udate)+1,date('Y',$udate)); + $udate = self::addDate($udate,$h,$n,0,$m,$d,$y); + } + $date = self::toSqlDateTime($udate); + } + return $date; + } + + /** + * Format Unix timestamp to iCal date-time format + * + * @param int $datetime Unix timestamp + * + * @return string iCal date-time string + */ + static function toiCalDateTime($datetime = null){ + date_default_timezone_set('UTC'); + if($datetime == null) + $datetime = time(); + return gmdate("Ymd\THis",$datetime); + } + + /** + * Format Unix timestamp to iCal date format + * + * @param int $datetime Unix timestamp + * + * @return string iCal date-time string + */ + static function toiCalDate($datetime = null){ + date_default_timezone_set('UTC'); + if($datetime == null) + $datetime = time(); + return gmdate("Ymd",$datetime); + } +} diff --git a/ical/includes/ical.php b/ical/includes/ical.php index 89dd7a5..6712bb6 100644 --- a/ical/includes/ical.php +++ b/ical/includes/ical.php @@ -1,986 +1,986 @@ - - * @copyright Copyright (C) 2006 - 2017 by Dan Cogliano - * @license GNU GPLv3
\n"; - //separate line into parameters and value - // look for colon separating name or parameter and value - // first change any escaped colons temporarily to make it easier - $tline = str_replace("\\:", "`~", $line); - // see if first colon is inside a quoted string - $i = 0; - $datafind = false; - $inquotes = false; - while(!$datafind && ($i < strlen($tline))) { - //echo "$i: " . $tline[$i] . ", ord() = " . ord($tline[$i]) . "
\n"; - if(!$inquotes && $tline[$i] == ':') - $datafind=true; - else{ - $i += 1; - if(substr($tline,$i,1) == '"') - $inquotes = !$inquotes; - } - } - if($datafind){ - $value = str_replace("`~","\\:",substr($line,$i+1)); - // fix escaped characters (don't see double quotes in spec but Apple apparently uses it in iCal) - $value = str_replace(array('\\N' , '\\n', '\\"' ), array("\n", "\n" , '"'), $value); - $tvalue = str_replace("\\,", "`~", $value); - //echo "value: " . $tvalue . "
\n"; - $tvalue = explode(",",$tvalue); - $value = str_replace("`~","\\,",$tvalue); - $this->value = $value; - } - - $parameter = trim(substr($line,0,$i)); - - $parameter = str_replace("\\;", "`~", $parameter); - $parameters = explode(";", $parameter); - $parameters = str_replace("`~", "\\;", $parameters); - $this->name = array_shift($parameters); - foreach($parameters as $parameter){ - $pos = strpos($parameter,"="); - if($pos > 0){ - $param = substr($parameter,0,$pos); - $paramvalue = substr($parameter,$pos+1); - $tvalue = str_replace("\\,", "`~", $paramvalue); - //$tvalue = explode(",",$tvalue); - $paramvalue = str_replace("`~","\\,",$tvalue); - $this->parameter[strtolower($param)] = $paramvalue; - //$this->paramvalue[] = $paramvalue; - } - } - } - -/** - * getName() - * - * Return the name of the object - * - * @return string - */ - function getName(){ - return $this->name; - } - -/** - * Get $ith parameter from array - * @param int $i - * - * @return var - */ - function getParameter($i){ - return $this->parameter[$i]; - } - -/** - * Get parameter array - * - * @return array - */ - function getParameters(){ - return $this->parameter; - } - -/** - * Get comma separated values - * - * @return string - */ - function getValues(){ - return implode(",",$this->value); - } -} - -/** - * Object for storing a list of unfolded iCalendar lines (ZCiCalDataNode objects) - * - * @property object $parentnode Parent of this node - * - * @property array $child Array of children for this node - * - * @property data $data Array of data for this node - * - * @property object $next Next sibling of this node - * - * @property object $prev Previous sibling of this node - */ - -class ZCiCalNode { - /** - * The name of the node - * - * @var string - */ - var $name=""; - - /** - * The parent of this node - * - * @var object - */ - var $parentnode=null; - - /** - * Array of children for this node - * - * @var array - */ - var $child= array(); - - /** - * Array of $data for this node - * - * @var array - */ - var $data= array(); - - - /** - * Next sibling of this node - * - * @var object - */ - var $next=null; - - /** - * Previous sibling of this node - * - * @var object - */ - var $prev=null; - - /** - * Create ZCiCalNode - * - * @param string $_name Name of node - * - * @param object $_parent Parent node for this node - * - * @param bool $first Is this the first child for this parent? - */ - function __construct( $_name, & $_parent, $first = false) { - $this->name = $_name; - $this->parentnode = $_parent; - if($_parent != null){ - if(count($this->parentnode->child) > 0) { - if($first) - { - $first = & $this->parentnode->child[0]; - $first->prev = & $this; - $this->next = & $first; - } - else - { - $prev =& $this->parentnode->child[count($this->parentnode->child)-1]; - $prev->next =& $this; - $this->prev =& $prev; - } - } - if($first) - { - array_unshift($this->parentnode->child, $this); - } - else - { - $this->parentnode->child[] =& $this; - } - } - /* - echo "creating " . $this->getName(); - if($_parent != null) - echo " child of " . $_parent->getName() . "/" . count($this->parentnode->child); - echo "
"; - */ - } - - /** - * Return the name of the object - * - * @return string - */ - function getName() { - return $this->name; - } - - /** - * Add node to list - * - * @param object $node - * - */ - function addNode($node) { - if(array_key_exists($node->getName(), $this->data)) - { - if(!is_array($this->data[$node->getName()])) - { - $this->data[$node->getName()] = array($this->data[$node->getName()]); - } - $this->data[$node->getName()][] = $node; - } - else - { - $this->data[$node->getName()] = $node; - } - } - - /** - * Get Attribute - * - * @param int $i array id of attribute to get - * - * @return string - */ - function getAttrib($i) { - return $this->attrib[$i]; - } - - /** - * Set Attribute - * - * @param string $value value of attribute to set - * - */ - function setAttrib($value) { - $this->attrib[] = $value; - } - - /** - * Get the parent object of this object - * - * @return object parent of this object - */ - function &getParent() { - return $this->parentnode; - } - - /** - * Get the first child of this object - * - * @return object The first child - */ - function &getFirstChild(){ - static $nullguard = null; - if(count($this->child) > 0) { - //echo "moving from " . $this->getName() . " to " . $this->child[0]->getName() . "
"; - return $this->child[0]; - } - else - return $nullguard; - } - - /** - * Print object tree in HTML for debugging purposes - * - * @param object $node select part of tree to print, or leave blank for full tree - * - * @param int $level Level of recursion (usually leave this blank) - * - * @return string - HTML formatted display of object tree - */ - function printTree(& $node=null, $level=1){ - $level += 1; - $html = ""; - if($node == null) - $node = $this->parentnode; - if($level > 5) - { - die("levels nested too deep
\n"); - //return; - } - for($i = 0 ; $i < $level; $i ++) - $html .= "+"; - $html .= $node->getName() . "
\n"; - foreach ($node->child as $c){ - $html .= $node->printTree($c,$level); - } - $level -= 1; - return $html; - } - - /** - * export tree to icalendar format - * - * @param object $node Top level node to export - * - * @param int $level Level of recursion (usually leave this blank) - * - * @return string iCalendar formatted output - */ - function export(& $node=null, $level=0){ - $txtstr = ""; - if($node == null) - $node = $this; - if($level > 5) - { - //die("levels nested too deep
\n"); - throw new Exception("levels nested too deep"); - } - $txtstr .= "BEGIN:" . $node->getName() . "\r\n"; - if(property_exists($node,"data")) - foreach ($node->data as $d){ - if(is_array($d)) - { - foreach ($d as $c) - { - //$txtstr .= $node->export($c,$level + 1); - $p = ""; - $params = @$c->getParameters(); - if(count($params) > 0) - { - foreach($params as $key => $value){ - $p .= ";" . strtoupper($key) . "=" . $value; - } - } - $txtstr .= $this->printDataLine($c, $p); - } - } - else - { - $p = ""; - $params = @$d->getParameters(); - if(count($params) > 0) - { - foreach($params as $key => $value){ - $p .= ";" . strtoupper($key) . "=" . $value; - } - } - $txtstr .= $this->printDataLine($d, $p); - /* - $values = $d->getValues(); - // don't think we need this, Sunbird does not like it in the EXDATE field - //$values = str_replace(",", "\\,", $values); - - $line = $d->getName() . $p . ":" . $values; - $line = str_replace(array("
","
","
","
0) { - $linewidth = ($linecount == 0? 75 : 74); - $linesize = (strlen($line) > $linewidth? $linewidth: strlen($line)); - if($linecount > 0) - $txtstr .= " "; - $txtstr .= substr($line,0,$linesize) . "\r\n"; - $linecount += 1; - $line = substr($line,$linewidth); - } - */ - } - //echo $line . "\n"; - } - if(property_exists($node,"child")) - foreach ($node->child as $c){ - $txtstr .= $node->export($c,$level + 1); - } - $txtstr .= "END:" . $node->getName() . "\r\n"; - return $txtstr; - } - - /** - * print an attribute line - - * @param object $d attributes - * @param object $p properties - * - */ - function printDataLine($d, $p) - { - $txtstr = ""; - - $values = $d->getValues(); - // don't think we need this, Sunbird does not like it in the EXDATE field - //$values = str_replace(",", "\\,", $values); - - $line = $d->getName() . $p . ":" . $values; - $line = str_replace(array("
","
","
","
0) { - $linewidth = ($linecount == 0? 75 : 74); - $linesize = (strlen($line) > $linewidth? $linewidth: strlen($line)); - if($linecount > 0) - $txtstr .= " "; - $txtstr .= substr($line,0,$linesize) . "\r\n"; - $linecount += 1; - $line = substr($line,$linewidth); - } - return $txtstr; - } -} - -/** - * - * The main iCalendar object containing ZCiCalDataNodes and ZCiCalNodes. - * -*/ -class ZCiCal { - /** - * The root node of the object tree - * - * @var object - */ - var $tree=null; - /** - * The most recently created node in the tree - * - * @var object - */ - var $curnode=null; - -/** - * The main iCalendar object containing ZCiCalDataNodes and ZCiCalNodes. - * - * use maxevents and startevent to read events in multiple passes (to save memory) - * - * @param string $data icalendar feed string (empty if creating new feed) - * - * @param int $maxevents maximum # of events to read - * - * @param int $startevent starting event to read - * - * @return void - * -* -*/ -function __construct($data = "", $maxevents = 1000000, $startevent = 0) { - - if($data != ""){ - // unfold lines - // first change all eol chars to "\n" - $data = str_replace(array("\r\n", "\n\r", "\n", "\r"), "\n", $data); - // now unfold lines - //$data = str_replace(array("\n ", "\n "),"!?", $data); - $data = str_replace(array("\n ", "\n "),"", $data); - // replace special iCal chars - $data = str_replace(array("\\\\","\,"),array("\\",","), $data); - - // parse each line - $lines = explode("\n", $data); - - $linecount = 0; - $eventcount = 0; - $eventpos = 0; - foreach($lines as $line) { - //$line = str_replace("!?", "\n", $line); // add nl back into descriptions - // echo ($linecount + 1) . ": " . $line . "
"; - if(substr($line,0,6) == "BEGIN:") { - // start new object - $name = substr($line,6); - if($name == "VEVENT") - { - if($eventcount < $maxevents && $eventpos >= $startevent) - { - $this->curnode = new ZCiCalNode($name, $this->curnode); - if($this->tree == null) - $this->tree = $this->curnode; - } - } - else - { - $this->curnode = new ZCiCalNode($name, $this->curnode); - if($this->tree == null) - $this->tree = $this->curnode; - } - //echo "new node: " . $this->curnode->name . "
\n"; - /* - if($this->curnode->getParent() != null) - echo "parent of " . $this->curnode->getName() . " is " . $this->curnode->getParent()->getName() . "
"; - else - echo "parent of " . $this->curnode->getName() . " is null
"; - */ - } - else if(substr($line,0,4) == "END:") { - $name = substr($line,4); - if($name == "VEVENT") - { - if($eventcount < $maxevents && $eventpos >= $startevent) - { - $eventcount++; - if($this->curnode->getName() != $name) { - //panic, mismatch in iCal structure - //die("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); - throw new Exception("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); - } - if($this->curnode->getParent() != null) { - //echo "moving up from " . $this->curnode->getName() ; - $this->curnode = & $this->curnode->getParent(); - //echo " to " . $this->curnode->getName() . "
"; - //echo $this->curnode->getName() . " has " . count($this->curnode->child) . " children
"; - } - } - $eventpos++; - } - else - { - if($this->curnode->getName() != $name) { - //panic, mismatch in iCal structure - //die("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); - throw new Exception("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); - } - if($this->curnode->getParent() != null) { - //echo "moving up from " . $this->curnode->getName() ; - $this->curnode = & $this->curnode->getParent(); - //echo " to " . $this->curnode->getName() . "
"; - //echo $this->curnode->getName() . " has " . count($this->curnode->child) . " children
"; - } - } - } - else { - $datanode = new ZCiCalDataNode($line); - if($this->curnode->getName() == "VEVENT") - { - if($eventcount < $maxevents && $eventpos >= $startevent) - { - if($datanode->getName() == "EXDATE") - { - if(!array_key_exists($datanode->getName(),$this->curnode->data)) - { - $this->curnode->data[$datanode->getName()] = $datanode; - } - else - { - $this->curnode->data[$datanode->getName()]->value[] = $datanode->value[0]; - } - } - else - { - if(!array_key_exists($datanode->getName(),$this->curnode->data)) - { - $this->curnode->data[$datanode->getName()] = $datanode; - } - else - { - $tnode = $this->curnode->data[$datanode->getName()]; - $this->curnode->data[$datanode->getName()] = array(); - $this->curnode->data[$datanode->getName()][] = $tnode; - $this->curnode->data[$datanode->getName()][] = $datanode; - } - } - } - } - else - { - if($datanode->getName() == "EXDATE") - { - if(!array_key_exists($datanode->getName(),$this->curnode->data)) - { - $this->curnode->data[$datanode->getName()] = $datanode; - } - else - { - $this->curnode->data[$datanode->getName()]->value[] = $datanode->value[0]; - } - } - else - { - if(!array_key_exists($datanode->getName(),$this->curnode->data)) - { - $this->curnode->data[$datanode->getName()] = $datanode; - } - else - { - $tnode = $this->curnode->data[$datanode->getName()]; - $this->curnode->data[$datanode->getName()] = array(); - $this->curnode->data[$datanode->getName()][] = $tnode; - $this->curnode->data[$datanode->getName()][] = $datanode; - } - } - } - } - $linecount++; - } - } - else { - $name = "VCALENDAR"; - $this->curnode = new ZCiCalNode($name, $this->curnode); - $this->tree = $this->curnode; - $datanode = new ZCiCalDataNode("VERSION:2.0"); - $this->curnode->data[$datanode->getName()] = $datanode; - - $datanode = new ZCiCalDataNode("PRODID:-//ZContent.net//ZapCalLib 1.0//EN"); - $this->curnode->data[$datanode->getName()] = $datanode; - $datanode = new ZCiCalDataNode("CALSCALE:GREGORIAN"); - $this->curnode->data[$datanode->getName()] = $datanode; - $datanode = new ZCiCalDataNode("METHOD:PUBLISH"); - $this->curnode->data[$datanode->getName()] = $datanode; - } -} - -/** - * CountEvents() - * - * Return the # of VEVENTs in the object - * - * @return int - */ - -function countEvents() { - $count = 0; - if(isset($this->tree->child)){ - foreach($this->tree->child as $child){ - if($child->getName() == "VEVENT") - $count++; - } - } - return $count; -} - -/** - * CountVenues() - * - * Return the # of VVENUEs in the object - * - * @return int - */ - -function countVenues() { - $count = 0; - if(isset($this->tree->child)){ - foreach($this->tree->child as $child){ - if($child->getName() == "VVENUE") - $count++; - } - } - return $count; -} - -/** - * Export object to string - * - * This function exports all objects to an iCalendar string - * - * @return string an iCalendar formatted string - */ - -function export() { - return $this->tree->export($this->tree); -} - -/** - * Get first event in object list - * Use getNextEvent() to navigate through list - * - * @return object The first event, or null - */ -function &getFirstEvent() { - static $nullguard = null; - if ($this->countEvents() > 0){ - $child = $this->tree->child[0]; - $event=false; - while(!$event && $child != null){ - if($child->getName() == "VEVENT") - $event = true; - else - $child = $child->next; - } - return $child; - } - else - return $nullguard; -} - -/** - * Get next event in object list - * - * @param object $event The current event object - * - * @return object Returns the next event or null if past last event - */ -function &getNextEvent($event){ - do{ - $event = $event->next; - } while($event != null && $event->getName() != "VEVENT"); - return $event; -} - -/** - * Get first venue in object list - * Use getNextVenue() to navigate through list - * - * @return object The first venue, or null - */ -function &getFirstVenue() { - static $nullguard = null; - if ($this->countVenues() > 0){ - $child = $this->tree->child[0]; - $event=false; - while(!$event && $child != null){ - if($child->getName() == "VVENUE") - $event = true; - else - $child = $child->next; - } - return $child; - } - else - return $nullguard; -} - -/** - * Get next venue in object list - * - * @param object $venue The current venue object - * - * @return object Returns the next venue or null if past last venue - */ -function &getNextVenue($venue){ - do{ - $venue = $venue->next; - } while($venue != null && $venue->getName() != "VVENUE"); - return $venue; -} - -/** - * Get first child in object list - * Use getNextSibling() and getPreviousSibling() to navigate through list - * - * @param object $thisnode The parent object - * - * @return object The child object - */ -function &getFirstChild(& $thisnode){ - $nullvalue = null; - if(count($thisnode->child) > 0) { - //echo "moving from " . $thisnode->getName() . " to " . $thisnode->child[0]->getName() . "
"; - return $thisnode->child[0]; - } - else - return $nullvalue; -} - -/** - * Get next sibling in object list - * - * @param object $thisnode The current object - * - * @return object Returns the next sibling - */ -function &getNextSibling(& $thisnode){ - return $thisnode->next; -} - -/** - * Get previous sibling in object list - * - * @param object $thisnode The current object - * - * @return object Returns the previous sibling - */ -function &getPrevSibling(& $thisnode){ - return $thisnode->prev; -} - -/** - * Read date/time in iCal formatted string - * - * @param string iCal formated date/time string - * - * @return int Unix timestamp - * @deprecated Use ZDateHelper::toUnixDateTime() instead - */ - -function toUnixDateTime($datetime){ - $year = substr($datetime,0,4); - $month = substr($datetime,4,2); - $day = substr($datetime,6,2); - $hour = 0; - $minute = 0; - $second = 0; - if(strlen($datetime) > 8 && $datetime[8] == "T") { - $hour = substr($datetime,9,2); - $minute = substr($datetime,11,2); - $second = substr($datetime,13,2); - } - $d1 = mktime($hour, $minute, $second, $month, $day, $year); - -} - -/** - * fromUnixDateTime() - * - * Take Unix timestamp and format to iCal date/time string - * - * @param int $datetime Unix timestamp, leave blank for current date/time - * - * @return string formatted iCal date/time string - * @deprecated Use ZDateHelper::fromUnixDateTimetoiCal() instead - */ - -static function fromUnixDateTime($datetime = null){ - date_default_timezone_set('UTC'); - if($datetime == null) - $datetime = time(); - return date("Ymd\THis",$datetime); -} - - -/** - * fromUnixDate() - * - * Take Unix timestamp and format to iCal date string - * - * @param int $datetime Unix timestamp, leave blank for current date/time - * - * @return string formatted iCal date string - * @deprecated Use ZDateHelper::fromUnixDateTimetoiCal() instead - */ - -static function fromUnixDate($datetime = null){ - date_default_timezone_set('UTC'); - if($datetime == null) - $datetime = time(); - return date("Ymd",$datetime); -} - -/** - * Format into iCal time format from SQL date or SQL date-time format - * - * @param string $datetime SQL date or SQL date-time string - * - * @return string iCal formatted string - * @deprecated Use ZDateHelper::fromSqlDateTime() instead - */ -static function fromSqlDateTime($datetime = ""){ - if($datetime == "") - $datetime = ZDateHelper::toSqlDateTime(); - if(strlen($datetime) > 10) - return sprintf('%04d%02d%02dT%02d%02d%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2), - substr($datetime,11,2),substr($datetime,14,2),substr($datetime,17,2)); - else - return sprintf('%04d%02d%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2)); -} - -/** - * Format iCal time format to either SQL date or SQL date-time format - * - * @param string $datetime icalendar formatted date or date-time - * @return string SQL date or SQL date-time string - * @deprecated Use ZDateHelper::toSqlDateTime() instead - */ -static function toSqlDateTime($datetime = ""){ - if($datetime == "") - return ZDateHelper::toSqlDateTime(); - if(strlen($datetime) > 10) - return sprintf('%04d-%02d-%02d %02d:%02d:%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2), - substr($datetime,11,2),substr($datetime,14,2),substr($datetime,17,2)); - else - return sprintf('%04d-%02d-%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2)); -} - -/** - * Pull timezone data from node and put in array - * - * Returning array contains the following array keys: tzoffsetfrom, tzoffsetto, tzname, dtstart, rrule - * - * @param array $node timezone object - * - * @return array - */ -static function getTZValues($node){ - $tzvalues = array(); - - $tnode = @$node->data['TZOFFSETFROM']; - if($tnode != null){ - $tzvalues["tzoffsetfrom"] = $tnode->getValues(); - } - - $tnode = @$node->data['TZOFFSETTO']; - if($tnode != null){ - $tzvalues["tzoffsetto"] = $tnode->getValues(); - } - - $tnode = @$node->data['TZNAME']; - if($tnode != null){ - $tzvalues["tzname"] = $tnode->getValues(); - } - else - $tzvalues["tzname"] = ""; - - $tnode = @$node->data['DTSTART']; - if($tnode != null){ - $tzvalues["dtstart"] = ZDateHelper::fromiCaltoUnixDateTime($tnode->getValues()); - } - - $tnode = @$node->data['RRULE']; - if($tnode != null){ - $tzvalues["rrule"] = $tnode->getValues(); - //echo "rule: " . $tzvalues["rrule"] . "
\n"; - } - else{ - // no rule specified, let's create one from based on the date - $date = getdate($tzvalues["dtstart"]); - $month = $date["mon"]; - $day = $date["mday"]; - $tzvalues["rrule"] = "FREQ=YEARLY;INTERVAL=1;BYMONTH=$month;BYMONTHDAY=$day"; - } - - return $tzvalues; -} - -/** - * Escape slashes, commas and semicolons in strings - * - * @param string $content - * - * @return string - */ -static function formatContent($content) -{ - $content = str_replace(array('\\' , ',' , ';' ), array('\\\\' , '\\,' , '\\;' ),$content); - return $content; -} - -} - -?> + + * @copyright Copyright (C) 2006 - 2017 by Dan Cogliano + * @license GNU GPLv3
\n"; + //separate line into parameters and value + // look for colon separating name or parameter and value + // first change any escaped colons temporarily to make it easier + $tline = str_replace("\\:", "`~", $line); + // see if first colon is inside a quoted string + $i = 0; + $datafind = false; + $inquotes = false; + while(!$datafind && ($i < strlen($tline))) { + //echo "$i: " . $tline[$i] . ", ord() = " . ord($tline[$i]) . "
\n"; + if(!$inquotes && $tline[$i] == ':') + $datafind=true; + else{ + $i += 1; + if(substr($tline,$i,1) == '"') + $inquotes = !$inquotes; + } + } + if($datafind){ + $value = str_replace("`~","\\:",substr($line,$i+1)); + // fix escaped characters (don't see double quotes in spec but Apple apparently uses it in iCal) + $value = str_replace(array('\\N' , '\\n', '\\"' ), array("\n", "\n" , '"'), $value); + $tvalue = str_replace("\\,", "`~", $value); + //echo "value: " . $tvalue . "
\n"; + $tvalue = explode(",",$tvalue); + $value = str_replace("`~","\\,",$tvalue); + $this->value = $value; + } + + $parameter = trim(substr($line,0,$i)); + + $parameter = str_replace("\\;", "`~", $parameter); + $parameters = explode(";", $parameter); + $parameters = str_replace("`~", "\\;", $parameters); + $this->name = array_shift($parameters); + foreach($parameters as $parameter){ + $pos = strpos($parameter,"="); + if($pos > 0){ + $param = substr($parameter,0,$pos); + $paramvalue = substr($parameter,$pos+1); + $tvalue = str_replace("\\,", "`~", $paramvalue); + //$tvalue = explode(",",$tvalue); + $paramvalue = str_replace("`~","\\,",$tvalue); + $this->parameter[strtolower($param)] = $paramvalue; + //$this->paramvalue[] = $paramvalue; + } + } + } + +/** + * getName() + * + * Return the name of the object + * + * @return string + */ + function getName(){ + return $this->name; + } + +/** + * Get $ith parameter from array + * @param int $i + * + * @return var + */ + function getParameter($i){ + return $this->parameter[$i]; + } + +/** + * Get parameter array + * + * @return array + */ + function getParameters(){ + return $this->parameter; + } + +/** + * Get comma separated values + * + * @return string + */ + function getValues(){ + return implode(",",$this->value); + } +} + +/** + * Object for storing a list of unfolded iCalendar lines (ZCiCalDataNode objects) + * + * @property object $parentnode Parent of this node + * + * @property array $child Array of children for this node + * + * @property data $data Array of data for this node + * + * @property object $next Next sibling of this node + * + * @property object $prev Previous sibling of this node + */ + +class ZCiCalNode { + /** + * The name of the node + * + * @var string + */ + var $name=""; + + /** + * The parent of this node + * + * @var object + */ + var $parentnode=null; + + /** + * Array of children for this node + * + * @var array + */ + var $child= array(); + + /** + * Array of $data for this node + * + * @var array + */ + var $data= array(); + + + /** + * Next sibling of this node + * + * @var object + */ + var $next=null; + + /** + * Previous sibling of this node + * + * @var object + */ + var $prev=null; + + /** + * Create ZCiCalNode + * + * @param string $_name Name of node + * + * @param object $_parent Parent node for this node + * + * @param bool $first Is this the first child for this parent? + */ + function __construct( $_name, & $_parent, $first = false) { + $this->name = $_name; + $this->parentnode = $_parent; + if($_parent != null){ + if(count($this->parentnode->child) > 0) { + if($first) + { + $first = & $this->parentnode->child[0]; + $first->prev = & $this; + $this->next = & $first; + } + else + { + $prev =& $this->parentnode->child[count($this->parentnode->child)-1]; + $prev->next =& $this; + $this->prev =& $prev; + } + } + if($first) + { + array_unshift($this->parentnode->child, $this); + } + else + { + $this->parentnode->child[] =& $this; + } + } + /* + echo "creating " . $this->getName(); + if($_parent != null) + echo " child of " . $_parent->getName() . "/" . count($this->parentnode->child); + echo "
"; + */ + } + + /** + * Return the name of the object + * + * @return string + */ + function getName() { + return $this->name; + } + + /** + * Add node to list + * + * @param object $node + * + */ + function addNode($node) { + if(array_key_exists($node->getName(), $this->data)) + { + if(!is_array($this->data[$node->getName()])) + { + $this->data[$node->getName()] = array($this->data[$node->getName()]); + } + $this->data[$node->getName()][] = $node; + } + else + { + $this->data[$node->getName()] = $node; + } + } + + /** + * Get Attribute + * + * @param int $i array id of attribute to get + * + * @return string + */ + function getAttrib($i) { + return $this->attrib[$i]; + } + + /** + * Set Attribute + * + * @param string $value value of attribute to set + * + */ + function setAttrib($value) { + $this->attrib[] = $value; + } + + /** + * Get the parent object of this object + * + * @return object parent of this object + */ + function &getParent() { + return $this->parentnode; + } + + /** + * Get the first child of this object + * + * @return object The first child + */ + function &getFirstChild(){ + static $nullguard = null; + if(count($this->child) > 0) { + //echo "moving from " . $this->getName() . " to " . $this->child[0]->getName() . "
"; + return $this->child[0]; + } + else + return $nullguard; + } + + /** + * Print object tree in HTML for debugging purposes + * + * @param object $node select part of tree to print, or leave blank for full tree + * + * @param int $level Level of recursion (usually leave this blank) + * + * @return string - HTML formatted display of object tree + */ + function printTree(& $node=null, $level=1){ + $level += 1; + $html = ""; + if($node == null) + $node = $this->parentnode; + if($level > 5) + { + die("levels nested too deep
\n"); + //return; + } + for($i = 0 ; $i < $level; $i ++) + $html .= "+"; + $html .= $node->getName() . "
\n"; + foreach ($node->child as $c){ + $html .= $node->printTree($c,$level); + } + $level -= 1; + return $html; + } + + /** + * export tree to icalendar format + * + * @param object $node Top level node to export + * + * @param int $level Level of recursion (usually leave this blank) + * + * @return string iCalendar formatted output + */ + function export(& $node=null, $level=0){ + $txtstr = ""; + if($node == null) + $node = $this; + if($level > 5) + { + //die("levels nested too deep
\n"); + throw new Exception("levels nested too deep"); + } + $txtstr .= "BEGIN:" . $node->getName() . "\r\n"; + if(property_exists($node,"data")) + foreach ($node->data as $d){ + if(is_array($d)) + { + foreach ($d as $c) + { + //$txtstr .= $node->export($c,$level + 1); + $p = ""; + $params = @$c->getParameters(); + if(count($params) > 0) + { + foreach($params as $key => $value){ + $p .= ";" . strtoupper($key) . "=" . $value; + } + } + $txtstr .= $this->printDataLine($c, $p); + } + } + else + { + $p = ""; + $params = @$d->getParameters(); + if(count($params) > 0) + { + foreach($params as $key => $value){ + $p .= ";" . strtoupper($key) . "=" . $value; + } + } + $txtstr .= $this->printDataLine($d, $p); + /* + $values = $d->getValues(); + // don't think we need this, Sunbird does not like it in the EXDATE field + //$values = str_replace(",", "\\,", $values); + + $line = $d->getName() . $p . ":" . $values; + $line = str_replace(array("
","
","
","
0) { + $linewidth = ($linecount == 0? 75 : 74); + $linesize = (strlen($line) > $linewidth? $linewidth: strlen($line)); + if($linecount > 0) + $txtstr .= " "; + $txtstr .= substr($line,0,$linesize) . "\r\n"; + $linecount += 1; + $line = substr($line,$linewidth); + } + */ + } + //echo $line . "\n"; + } + if(property_exists($node,"child")) + foreach ($node->child as $c){ + $txtstr .= $node->export($c,$level + 1); + } + $txtstr .= "END:" . $node->getName() . "\r\n"; + return $txtstr; + } + + /** + * print an attribute line + + * @param object $d attributes + * @param object $p properties + * + */ + function printDataLine($d, $p) + { + $txtstr = ""; + + $values = $d->getValues(); + // don't think we need this, Sunbird does not like it in the EXDATE field + //$values = str_replace(",", "\\,", $values); + + $line = $d->getName() . $p . ":" . $values; + $line = str_replace(array("
","
","
","
0) { + $linewidth = ($linecount == 0? 75 : 74); + $linesize = (strlen($line) > $linewidth? $linewidth: strlen($line)); + if($linecount > 0) + $txtstr .= " "; + $txtstr .= substr($line,0,$linesize) . "\r\n"; + $linecount += 1; + $line = substr($line,$linewidth); + } + return $txtstr; + } +} + +/** + * + * The main iCalendar object containing ZCiCalDataNodes and ZCiCalNodes. + * +*/ +class ZCiCal { + /** + * The root node of the object tree + * + * @var object + */ + var $tree=null; + /** + * The most recently created node in the tree + * + * @var object + */ + var $curnode=null; + +/** + * The main iCalendar object containing ZCiCalDataNodes and ZCiCalNodes. + * + * use maxevents and startevent to read events in multiple passes (to save memory) + * + * @param string $data icalendar feed string (empty if creating new feed) + * + * @param int $maxevents maximum # of events to read + * + * @param int $startevent starting event to read + * + * @return void + * +* +*/ +function __construct($data = "", $maxevents = 1000000, $startevent = 0) { + + if($data != ""){ + // unfold lines + // first change all eol chars to "\n" + $data = str_replace(array("\r\n", "\n\r", "\n", "\r"), "\n", $data); + // now unfold lines + //$data = str_replace(array("\n ", "\n "),"!?", $data); + $data = str_replace(array("\n ", "\n "),"", $data); + // replace special iCal chars + $data = str_replace(array("\\\\","\,"),array("\\",","), $data); + + // parse each line + $lines = explode("\n", $data); + + $linecount = 0; + $eventcount = 0; + $eventpos = 0; + foreach($lines as $line) { + //$line = str_replace("!?", "\n", $line); // add nl back into descriptions + // echo ($linecount + 1) . ": " . $line . "
"; + if(substr($line,0,6) == "BEGIN:") { + // start new object + $name = substr($line,6); + if($name == "VEVENT") + { + if($eventcount < $maxevents && $eventpos >= $startevent) + { + $this->curnode = new ZCiCalNode($name, $this->curnode); + if($this->tree == null) + $this->tree = $this->curnode; + } + } + else + { + $this->curnode = new ZCiCalNode($name, $this->curnode); + if($this->tree == null) + $this->tree = $this->curnode; + } + //echo "new node: " . $this->curnode->name . "
\n"; + /* + if($this->curnode->getParent() != null) + echo "parent of " . $this->curnode->getName() . " is " . $this->curnode->getParent()->getName() . "
"; + else + echo "parent of " . $this->curnode->getName() . " is null
"; + */ + } + else if(substr($line,0,4) == "END:") { + $name = substr($line,4); + if($name == "VEVENT") + { + if($eventcount < $maxevents && $eventpos >= $startevent) + { + $eventcount++; + if($this->curnode->getName() != $name) { + //panic, mismatch in iCal structure + //die("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); + throw new Exception("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); + } + if($this->curnode->getParent() != null) { + //echo "moving up from " . $this->curnode->getName() ; + $this->curnode = & $this->curnode->getParent(); + //echo " to " . $this->curnode->getName() . "
"; + //echo $this->curnode->getName() . " has " . count($this->curnode->child) . " children
"; + } + } + $eventpos++; + } + else + { + if($this->curnode->getName() != $name) { + //panic, mismatch in iCal structure + //die("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); + throw new Exception("Can't read iCal file structure, expecting " . $this->curnode->getName() . " but reading $name instead"); + } + if($this->curnode->getParent() != null) { + //echo "moving up from " . $this->curnode->getName() ; + $this->curnode = & $this->curnode->getParent(); + //echo " to " . $this->curnode->getName() . "
"; + //echo $this->curnode->getName() . " has " . count($this->curnode->child) . " children
"; + } + } + } + else { + $datanode = new ZCiCalDataNode($line); + if($this->curnode->getName() == "VEVENT") + { + if($eventcount < $maxevents && $eventpos >= $startevent) + { + if($datanode->getName() == "EXDATE") + { + if(!array_key_exists($datanode->getName(),$this->curnode->data)) + { + $this->curnode->data[$datanode->getName()] = $datanode; + } + else + { + $this->curnode->data[$datanode->getName()]->value[] = $datanode->value[0]; + } + } + else + { + if(!array_key_exists($datanode->getName(),$this->curnode->data)) + { + $this->curnode->data[$datanode->getName()] = $datanode; + } + else + { + $tnode = $this->curnode->data[$datanode->getName()]; + $this->curnode->data[$datanode->getName()] = array(); + $this->curnode->data[$datanode->getName()][] = $tnode; + $this->curnode->data[$datanode->getName()][] = $datanode; + } + } + } + } + else + { + if($datanode->getName() == "EXDATE") + { + if(!array_key_exists($datanode->getName(),$this->curnode->data)) + { + $this->curnode->data[$datanode->getName()] = $datanode; + } + else + { + $this->curnode->data[$datanode->getName()]->value[] = $datanode->value[0]; + } + } + else + { + if(!array_key_exists($datanode->getName(),$this->curnode->data)) + { + $this->curnode->data[$datanode->getName()] = $datanode; + } + else + { + $tnode = $this->curnode->data[$datanode->getName()]; + $this->curnode->data[$datanode->getName()] = array(); + $this->curnode->data[$datanode->getName()][] = $tnode; + $this->curnode->data[$datanode->getName()][] = $datanode; + } + } + } + } + $linecount++; + } + } + else { + $name = "VCALENDAR"; + $this->curnode = new ZCiCalNode($name, $this->curnode); + $this->tree = $this->curnode; + $datanode = new ZCiCalDataNode("VERSION:2.0"); + $this->curnode->data[$datanode->getName()] = $datanode; + + $datanode = new ZCiCalDataNode("PRODID:-//ZContent.net//ZapCalLib 1.0//EN"); + $this->curnode->data[$datanode->getName()] = $datanode; + $datanode = new ZCiCalDataNode("CALSCALE:GREGORIAN"); + $this->curnode->data[$datanode->getName()] = $datanode; + $datanode = new ZCiCalDataNode("METHOD:PUBLISH"); + $this->curnode->data[$datanode->getName()] = $datanode; + } +} + +/** + * CountEvents() + * + * Return the # of VEVENTs in the object + * + * @return int + */ + +function countEvents() { + $count = 0; + if(isset($this->tree->child)){ + foreach($this->tree->child as $child){ + if($child->getName() == "VEVENT") + $count++; + } + } + return $count; +} + +/** + * CountVenues() + * + * Return the # of VVENUEs in the object + * + * @return int + */ + +function countVenues() { + $count = 0; + if(isset($this->tree->child)){ + foreach($this->tree->child as $child){ + if($child->getName() == "VVENUE") + $count++; + } + } + return $count; +} + +/** + * Export object to string + * + * This function exports all objects to an iCalendar string + * + * @return string an iCalendar formatted string + */ + +function export() { + return $this->tree->export($this->tree); +} + +/** + * Get first event in object list + * Use getNextEvent() to navigate through list + * + * @return object The first event, or null + */ +function &getFirstEvent() { + static $nullguard = null; + if ($this->countEvents() > 0){ + $child = $this->tree->child[0]; + $event=false; + while(!$event && $child != null){ + if($child->getName() == "VEVENT") + $event = true; + else + $child = $child->next; + } + return $child; + } + else + return $nullguard; +} + +/** + * Get next event in object list + * + * @param object $event The current event object + * + * @return object Returns the next event or null if past last event + */ +function &getNextEvent($event){ + do{ + $event = $event->next; + } while($event != null && $event->getName() != "VEVENT"); + return $event; +} + +/** + * Get first venue in object list + * Use getNextVenue() to navigate through list + * + * @return object The first venue, or null + */ +function &getFirstVenue() { + static $nullguard = null; + if ($this->countVenues() > 0){ + $child = $this->tree->child[0]; + $event=false; + while(!$event && $child != null){ + if($child->getName() == "VVENUE") + $event = true; + else + $child = $child->next; + } + return $child; + } + else + return $nullguard; +} + +/** + * Get next venue in object list + * + * @param object $venue The current venue object + * + * @return object Returns the next venue or null if past last venue + */ +function &getNextVenue($venue){ + do{ + $venue = $venue->next; + } while($venue != null && $venue->getName() != "VVENUE"); + return $venue; +} + +/** + * Get first child in object list + * Use getNextSibling() and getPreviousSibling() to navigate through list + * + * @param object $thisnode The parent object + * + * @return object The child object + */ +function &getFirstChild(& $thisnode){ + $nullvalue = null; + if(count($thisnode->child) > 0) { + //echo "moving from " . $thisnode->getName() . " to " . $thisnode->child[0]->getName() . "
"; + return $thisnode->child[0]; + } + else + return $nullvalue; +} + +/** + * Get next sibling in object list + * + * @param object $thisnode The current object + * + * @return object Returns the next sibling + */ +function &getNextSibling(& $thisnode){ + return $thisnode->next; +} + +/** + * Get previous sibling in object list + * + * @param object $thisnode The current object + * + * @return object Returns the previous sibling + */ +function &getPrevSibling(& $thisnode){ + return $thisnode->prev; +} + +/** + * Read date/time in iCal formatted string + * + * @param string iCal formated date/time string + * + * @return int Unix timestamp + * @deprecated Use ZDateHelper::toUnixDateTime() instead + */ + +function toUnixDateTime($datetime){ + $year = substr($datetime,0,4); + $month = substr($datetime,4,2); + $day = substr($datetime,6,2); + $hour = 0; + $minute = 0; + $second = 0; + if(strlen($datetime) > 8 && $datetime[8] == "T") { + $hour = substr($datetime,9,2); + $minute = substr($datetime,11,2); + $second = substr($datetime,13,2); + } + $d1 = mktime($hour, $minute, $second, $month, $day, $year); + +} + +/** + * fromUnixDateTime() + * + * Take Unix timestamp and format to iCal date/time string + * + * @param int $datetime Unix timestamp, leave blank for current date/time + * + * @return string formatted iCal date/time string + * @deprecated Use ZDateHelper::fromUnixDateTimetoiCal() instead + */ + +static function fromUnixDateTime($datetime = null){ + date_default_timezone_set('UTC'); + if($datetime == null) + $datetime = time(); + return date("Ymd\THis",$datetime); +} + + +/** + * fromUnixDate() + * + * Take Unix timestamp and format to iCal date string + * + * @param int $datetime Unix timestamp, leave blank for current date/time + * + * @return string formatted iCal date string + * @deprecated Use ZDateHelper::fromUnixDateTimetoiCal() instead + */ + +static function fromUnixDate($datetime = null){ + date_default_timezone_set('UTC'); + if($datetime == null) + $datetime = time(); + return date("Ymd",$datetime); +} + +/** + * Format into iCal time format from SQL date or SQL date-time format + * + * @param string $datetime SQL date or SQL date-time string + * + * @return string iCal formatted string + * @deprecated Use ZDateHelper::fromSqlDateTime() instead + */ +static function fromSqlDateTime($datetime = ""){ + if($datetime == "") + $datetime = ZDateHelper::toSqlDateTime(); + if(strlen($datetime) > 10) + return sprintf('%04d%02d%02dT%02d%02d%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2), + substr($datetime,11,2),substr($datetime,14,2),substr($datetime,17,2)); + else + return sprintf('%04d%02d%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2)); +} + +/** + * Format iCal time format to either SQL date or SQL date-time format + * + * @param string $datetime icalendar formatted date or date-time + * @return string SQL date or SQL date-time string + * @deprecated Use ZDateHelper::toSqlDateTime() instead + */ +static function toSqlDateTime($datetime = ""){ + if($datetime == "") + return ZDateHelper::toSqlDateTime(); + if(strlen($datetime) > 10) + return sprintf('%04d-%02d-%02d %02d:%02d:%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2), + substr($datetime,11,2),substr($datetime,14,2),substr($datetime,17,2)); + else + return sprintf('%04d-%02d-%02d',substr($datetime,0,4),substr($datetime,5,2),substr($datetime,8,2)); +} + +/** + * Pull timezone data from node and put in array + * + * Returning array contains the following array keys: tzoffsetfrom, tzoffsetto, tzname, dtstart, rrule + * + * @param array $node timezone object + * + * @return array + */ +static function getTZValues($node){ + $tzvalues = array(); + + $tnode = @$node->data['TZOFFSETFROM']; + if($tnode != null){ + $tzvalues["tzoffsetfrom"] = $tnode->getValues(); + } + + $tnode = @$node->data['TZOFFSETTO']; + if($tnode != null){ + $tzvalues["tzoffsetto"] = $tnode->getValues(); + } + + $tnode = @$node->data['TZNAME']; + if($tnode != null){ + $tzvalues["tzname"] = $tnode->getValues(); + } + else + $tzvalues["tzname"] = ""; + + $tnode = @$node->data['DTSTART']; + if($tnode != null){ + $tzvalues["dtstart"] = ZDateHelper::fromiCaltoUnixDateTime($tnode->getValues()); + } + + $tnode = @$node->data['RRULE']; + if($tnode != null){ + $tzvalues["rrule"] = $tnode->getValues(); + //echo "rule: " . $tzvalues["rrule"] . "
\n"; + } + else{ + // no rule specified, let's create one from based on the date + $date = getdate($tzvalues["dtstart"]); + $month = $date["mon"]; + $day = $date["mday"]; + $tzvalues["rrule"] = "FREQ=YEARLY;INTERVAL=1;BYMONTH=$month;BYMONTHDAY=$day"; + } + + return $tzvalues; +} + +/** + * Escape slashes, commas and semicolons in strings + * + * @param string $content + * + * @return string + */ +static function formatContent($content) +{ + $content = str_replace(array('\\' , ',' , ';' ), array('\\\\' , '\\,' , '\\;' ),$content); + return $content; +} + +} + +?> diff --git a/ical/includes/recurringdate.php b/ical/includes/recurringdate.php index 9e49511..9f6920f 100644 --- a/ical/includes/recurringdate.php +++ b/ical/includes/recurringdate.php @@ -1,796 +1,796 @@ - - * @copyright Copyright (C) 2006 - 2017 by Dan Cogliano - * @license GNU GPLv3
\n"; - switch($item[0]){ - case "FREQ": - switch($item[1]){ - case "YEARLY": - $this->freq="y"; - break; - case "MONTHLY": - $this->freq="m"; - break; - case "WEEKLY": - $this->freq="w"; - break; - case "DAILY": - $this->freq="d"; - break; - case "HOURLY": - $this->freq="h"; - break; - case "MINUTELY": - $this->freq="i"; - break; - case "SECONDLY": - $this->freq="s"; - break; - } - break; - case "INTERVAL": - $this->interval = $item[1]; - break; - case "BYSECOND": - $this->bysecond = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "BYMINUTE": - $this->byminute = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "BYHOUR": - $this->byhour = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "BYDAY": - $this->byday = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "BYMONTHDAY": - $this->bymonthday = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "BYMONTH": - $this->bymonth = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "BYYEAR": - $this->byyear = explode(",",$item[1]); - $ruletype = $item[0]; - break; - case "COUNT": - $this->count = intval($item[1]); - $this->repeatmode = "c"; - break; - case "BYSETPOS": - $this->bysetpos = explode(",",$item[1]); - break; - case "UNTIL": - $this->until = ZDateHelper::fromiCaltoUnixDateTime($item[1]); - $this->repeatmode = "u"; - break; - } - } - if(count($this->bysetpos) > 0){ - switch($ruletype){ - case "BYYEAR": - $this->byyear = $this->bySetPos($this->byyear,$this->bysetpos); - break; - case "BYMONTH": - $this->bymonth = $this->bySetPos($this->bymonth,$this->bysetpos); - break; - case "BYMONTHDAY": - $this->bymonthday = $this->bySetPos($this->bymonthday,$this->bysetpos); - break; - case "BYDAY": - $this->byday = $this->bySetPos($this->byday,$this->bysetpos); - break; - case "BYHOUR": - $this->byhour = $this->bySetPos($this->byhour,$this->bysetpos); - break; - case "BYMINUTE": - $this->byminute = $this->bySetPos($this->byminute,$this->bysetpos); - break; - case "BYSECOND": - $this->bysecond = $this->bySetPos($this->bysecond,$this->bysetpos); - break; - } - } - } - } - -/** - * bysetpos rule support - * - * @param array $bytype - * @param array $bysetpos - * - * @return array - */ - function bySetPos($bytype, $bysetpos){ - $result = array(); - for($i=0; $i < count($bysetpos); $i++){ - for($j=0; $j < count($bytype); $j++){ - $result[] = $bysetpos[$i] . $bytype[$j]; - } - } - return $result; - } - -/** - * save error - * - * @param string $msg - */ - function setError($msg){ - $this->error = $msg; - } - -/** - * get error message - * - * @return string error message - */ - function getError(){ - return $this->error; - } - -/** - * set debug level (0: none, 1: minimal, 2: more output) - * - * @param integer $level - * - */ - function setDebug($level) - { - $this->debug = $level; - } - -/** - * display debug message - * - * @param integer $level - * @param string $msg - */ - function debug($level, $msg){ - if($this->debug >= $level) - echo $msg . "
\n"; - } - -/** - * Get repeating dates by year - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function byYear($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"byYear(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $count = 0; - if(count($this->byyear) > 0){ - foreach($this->byyear as $year){ - $t = getdate($startdate); - $wdate = mktime($t[hours],$t[minutes],$t[seconds],$t[month],$t[mday],$year); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->byMonth($wdate, $enddate, $rdates, $tzid); - if($count == 0) { - $rdates[] = $wdate; - $count++; - } - } - } - } - else if(!$this->maxDates($rdates)) - $count = $this->byMonth($startdate, $enddate, $rdates, $tzid); - self::debug(1,"byYear() returned " . $count ); - return $count; - } - -/** - * Get repeating dates by month - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function byMonth($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"byMonth(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $count = 0; - if(count($this->bymonth) > 0){ - foreach($this->bymonth as $month){ - $t = getdate($startdate); - $wdate = mktime($t["hours"],$t["minutes"],$t["seconds"],$month,$t["mday"],$t["year"]); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->byMonthDay($wdate, $enddate, $rdates, $tzid); - if($count == 0) { - $rdates[] = $wdate; - $count++; - } - } - } - } - else if(!$this->maxDates($rdates)) - $count = $this->byMonthDay($startdate, $enddate, $rdates, $tzid); - self::debug(1,"byMonth() returned " . $count ); - return $count; - } - -/** - * Get repeating dates by month day - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function byMonthDay($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"byMonthDay(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $count = 0; - self::debug(1,"start date: " . ZDateHelper::toSqlDateTime($startdate)); - if(count($this->bymonthday) > 0){ - foreach($this->bymonthday as $day){ - $day = intval($day); - $t = getdate($startdate); - $wdate = mktime($t['hours'],$t['minutes'],$t['seconds'],$t['mon'],$day,$t['year']); - self::debug(2,"mktime(" . $t['hours'] . ", " . $t['minutes'] - . ", " . $t['mon'] . ", " . $day . ", " . $t['year'] . ") returned $wdate"); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->byDay($wdate, $enddate, $rdates, $tzid); - if($count == 0) { - $rdates[] = $wdate; - $count++; - } - } - } - } - else if(!$this->maxDates($rdates)) { - self::debug(1,"start date: " . ZDateHelper::toSqlDateTime($startdate)); - $count = $this->byDay($startdate, $enddate, $rdates, $tzid); - } - self::debug(1,"byMonthDay() returned " . $count ); - return $count; - } - -/** - * Get repeating dates by day - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function byDay($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"byDay(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $days = array( - "SU" => 0, - "MO" => 1, - "TU" => 2, - "WE" => 3, - "TH" => 4, - "FR" => 5, - "SA" => 6); - $idays = array( - 0 => "SU", - 1 => "MO", - 2 => "TU", - 3 => "WE", - 4 => "TH", - 5 => "FR", - 6 => "SA"); - - $count = 0; - if(count($this->byday) > 0){ - if(empty($this->byday[0])) - { - $this->byday[0] = $idays[date("w",$startdate)]; - } - foreach($this->byday as $tday){ - $t = getdate($startdate); - $day = substr($tday,strlen($tday) - 2); - if(strlen($day) < 2) - { - // missing start day, use current date for DOW - $day = $idays[date("w",$startdate)]; - } - if(strlen($tday) > 2) { - $imin = 1; - $imax = 5; // max # of occurances in a month - if(strlen($tday) > 2) - $imin = $imax = substr($tday,0,strlen($tday) - 2); - self::debug(2,"imin: $imin, imax: $imax, tday: $tday, day: $day, daynum: {$days[$day]}"); - for($i = $imin; $i <= $imax; $i++){ - $wdate = ZDateHelper::getDateFromDay($startdate,$i-1,$days[$day],$tzid); - self::debug(2,"getDateFromDay(" . ZDateHelper::toSqlDateTime($startdate) - . ",$i,{$days[$day]}) returned " . ZDateHelper::toSqlDateTime($wdate)); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->byHour($wdate, $enddate, $rdates); - if($count == 0){ - $rdates[] = $wdate; - $count++; - //break; - } - } - } - } - else { - // day of week version - $startdate_dow = date("w",$startdate); - $datedelta = $days[$day] - $startdate_dow; - self::debug(2, "start_dow: $startdate_dow, datedelta: $datedelta"); - if($datedelta >= 0) - { - $wdate = ZDateHelper::addDate($startdate,0,0,0,0,$datedelta,0,$this->tzid); - self::debug(2, "wdate: " . ZDateHelper::toSqlDateTime($wdate)); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->byHour($wdate, $enddate, $rdates); - if($count == 0){ - $rdates[] = $wdate; - $count++; - self::debug(2,"adding date " . ZDateHelper::toSqlDateTime($wdate) ); - } - } - } - } - } - } - else if(!$this->maxDates($rdates)) - $count = $this->byHour($startdate, $enddate, $rdates); - self::debug(1,"byDay() returned " . $count ); - return $count; - } - -/** - * Get repeating dates by hour - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function byHour($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"byHour(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $count = 0; - if(count($this->byhour) > 0){ - foreach($this->byhour as $hour){ - $t = getdate($startdate); - $wdate = mktime($hour,$t["minutes"],$t["seconds"],$t["mon"],$t["mday"],$t["year"]); - self::debug(2,"checking date/time " . ZDateHelper::toSqlDateTime($wdate)); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->byMinute($wdate, $enddate, $rdates); - if($count == 0) { - $rdates[] = $wdate; - $count++; - } - } - } - } - else if(!$this->maxDates($rdates)) - $count = $this->byMinute($startdate, $enddate, $rdates); - self::debug(1,"byHour() returned " . $count ); - return $count; - } - -/** - * Get repeating dates by minute - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function byMinute($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"byMinute(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $count = 0; - if(count($this->byminute) > 0){ - foreach($this->byminute as $minute){ - $t = getdate($startdate); - $wdate = mktime($t["hours"],$minute,$t["seconds"],$t["mon"],$t["mday"],$t["year"]); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $count = $this->bySecond($wdate, $enddate, $rdates); - if($count == 0) { - $rdates[] = $wdate; - $count++; - } - } - } - } - else if(!$this->maxDates($rdates)) - $count = $this->bySecond($startdate, $enddate, $rdates); - self::debug(1,"byMinute() returned " . $count ); - return $count; - } -/** - * Get repeating dates by second - * - * @param integer $startdate start date of repeating events, in Unix timestamp format - * @param integer $enddate end date of repeating events, in Unix timestamp format - * @param array $rdates array to contain expanded repeating dates - * @param string $tzid timezone of event (using PHP timezones) - * - * @return integer count of dates - */ - private function bySecond($startdate, $enddate, &$rdates, $tzid="UTC"){ - self::debug(1,"bySecond(" . ZDateHelper::toSqlDateTime($startdate) . "," - . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); - $count = 0; - if(count($this->bysecond) > 0){ - foreach($this->bysecond as $second){ - $t = getdate($startdate); - $wdate = mktime($t["hours"],$t["minutes"],$second,$t["mon"],$t["mday"],$t["year"]); - if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ - $rdates[] = $wdate; - $count++; - } - } - } - self::debug(1,"bySecond() returned " . $count ); - return $count; - } - -/** - * Determine if the loop has reached the end date - * - * @param array $rdates array of repeating dates - * - * @return boolean - */ - private function maxDates($rdates){ - if($this->repeatmode == "c" && count($rdates) >= $this->count) - return true; // exceeded count - else if(count($rdates) > 0 && $this->repeatmode == "u" && $rdates[count($rdates) - 1] > $this->until){ - return true; //past date - } - return false; - } - -/** - * Get array of dates from recurring rule - * - * @param $maxdate integer maximum date to appear in repeating dates in Unix timestamp format - * - * @return array - */ - public function getDates($maxdate = null){ - //$this->debug = 2; - self::debug(1,"getDates()"); - $nextdate = $enddate = $this->startdate; - $rdates = array(); - $done = false; - $eventcount = 0; - $loopcount = 0; - self::debug(2,"freq: " . $this->freq . ", interval: " . $this->interval); - while(!$done){ - self::debug(1,"*** Frequency ({$this->freq}) loop pass $loopcount ***"); - switch($this->freq){ - case "y": - if($eventcount > 0) - { - $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,0,$this->interval,$this->tzid); - self::debug(2,"addDate() returned " . ZDateHelper::toSqlDateTime($nextdate)); - if(!empty($this->byday)){ - $t = getdate($nextdate); - $nextdate = gmmktime($t["hours"],$t["minutes"],$t["seconds"],$t["mon"],1,$t["year"]); - } - self::debug(2,"nextdate set to $nextdate (". ZDateHelper::toSQLDateTime($nextdate) . ")"); - } - $enddate=ZDateHelper::addDate($nextdate,0,0,0,0,0,1); - break; - case "m": - if($eventcount > 0) - { - - $nextdate = ZDateHelper::addDate($nextdate,0,0,0,$this->interval,0,0,$this->tzid); - self::debug(2,"addDate() returned " . ZDateHelper::toSqlDateTime($nextdate)); - } - if(count($this->byday) > 0) - { - $t = getdate($nextdate); - if($t["mday"] > 28) - { - //check for short months when using month by day, make sure we do not overshoot the counter and skip a month - $nextdate = ZDateHelper::addDate($nextdate,0,0,0,$this->interval,0,0,$this->tzid); - $t2 = getdate($nextdate); - if($t2["mday"] < $t["mday"]) - { - // oops, skipped a month, backup to previous month - $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,$t2["mday"] - $t["mday"],0,$this->tzid); - } - } - $t = getdate($nextdate); - $nextdate = mktime($t["hours"],$t["minutes"],$t["seconds"],$t["mon"],1,$t["year"]); - } - self::debug(2,"nextdate set to $nextdate (". ZDateHelper::toSQLDateTime($nextdate) . ")"); - $enddate=ZDateHelper::addDate($nextdate,0,0,0,$this->interval,0,0); - break; - case "w": - if($eventcount == 0) - $nextdate=$nextdate; - else { - $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,$this->interval*7,0,$this->tzid); - if(count($this->byday) > 0){ - $dow = date("w", $nextdate); - // move to beginning of week (Sunday) - $bow = 0; - $diff = $bow - $dow; - if($diff > 0) - $diff = $diff - 7; - $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,$diff,0); - } - self::debug(2,"nextdate set to $nextdate (". ZDateHelper::toSQLDateTime($nextdate) . ")"); - } - $enddate=ZDateHelper::addDate($nextdate,0,0,0,0,$this->interval*7,0); - break; - case "d": - $nextdate=($eventcount==0?$nextdate: - ZDateHelper::addDate($nextdate,0,0,0,0,$this->interval,0,$this->tzid)); - $enddate=ZDateHelper::addDate($nextdate,0,0,0,0,1,0); - break; - } - - $count = $this->byYear($nextdate,$enddate,$rdates,$this->tzid); - $eventcount += $count; - if($maxdate > 0 && $maxdate < $nextdate) - { - array_pop($rdates); - $done = true; - } - else if($count == 0 && !$this->maxDates($rdates)){ - $rdates[] = $nextdate; - $eventcount++; - } - if($this->maxDates($rdates)) - $done = true; - - $year = date("Y", $nextdate); - if($year > _ZAPCAL_MAXYEAR) - { - $done = true; - } - $loopcount++; - if($loopcount > _ZAPCAL_MAXYEAR){ - $done = true; - throw new Exception("Infinite loop detected in getDates()"); - } - } - if($this->repeatmode == "u" && $rdates[count($rdates) - 1] > $this->until){ - // erase last item - array_pop($rdates); - } - $count1 = count($rdates); - $rdates = array_unique($rdates); - $count2 = count($rdates); - $dups = $count1 - $count2; - $excount = 0; - - foreach($this->exdates as $exdate) - { - if($pos = array_search($exdate,$rdates)) - { - array_splice($rdates,$pos,1); - $excount++; - } - } - self::debug(1,"getDates() returned " . count($rdates) . " dates, removing $dups duplicates, $excount exceptions"); - - - if($this->debug >= 2) - { - self::debug(2,"Recurring Dates:"); - foreach($rdates as $rdate) - { - $d = getdate($rdate); - self::debug(2,ZDateHelper::toSQLDateTime($rdate) . " " . $d["wday"] ); - } - self::debug(2,"Exception Dates:"); - foreach($this->exdates as $exdate) - { - self::debug(2, ZDateHelper::toSQLDateTime($exdate)); - } - //exit; - } - - return $rdates; - } -} + + * @copyright Copyright (C) 2006 - 2017 by Dan Cogliano + * @license GNU GPLv3
\n"; + switch($item[0]){ + case "FREQ": + switch($item[1]){ + case "YEARLY": + $this->freq="y"; + break; + case "MONTHLY": + $this->freq="m"; + break; + case "WEEKLY": + $this->freq="w"; + break; + case "DAILY": + $this->freq="d"; + break; + case "HOURLY": + $this->freq="h"; + break; + case "MINUTELY": + $this->freq="i"; + break; + case "SECONDLY": + $this->freq="s"; + break; + } + break; + case "INTERVAL": + $this->interval = $item[1]; + break; + case "BYSECOND": + $this->bysecond = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "BYMINUTE": + $this->byminute = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "BYHOUR": + $this->byhour = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "BYDAY": + $this->byday = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "BYMONTHDAY": + $this->bymonthday = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "BYMONTH": + $this->bymonth = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "BYYEAR": + $this->byyear = explode(",",$item[1]); + $ruletype = $item[0]; + break; + case "COUNT": + $this->count = intval($item[1]); + $this->repeatmode = "c"; + break; + case "BYSETPOS": + $this->bysetpos = explode(",",$item[1]); + break; + case "UNTIL": + $this->until = ZDateHelper::fromiCaltoUnixDateTime($item[1]); + $this->repeatmode = "u"; + break; + } + } + if(count($this->bysetpos) > 0){ + switch($ruletype){ + case "BYYEAR": + $this->byyear = $this->bySetPos($this->byyear,$this->bysetpos); + break; + case "BYMONTH": + $this->bymonth = $this->bySetPos($this->bymonth,$this->bysetpos); + break; + case "BYMONTHDAY": + $this->bymonthday = $this->bySetPos($this->bymonthday,$this->bysetpos); + break; + case "BYDAY": + $this->byday = $this->bySetPos($this->byday,$this->bysetpos); + break; + case "BYHOUR": + $this->byhour = $this->bySetPos($this->byhour,$this->bysetpos); + break; + case "BYMINUTE": + $this->byminute = $this->bySetPos($this->byminute,$this->bysetpos); + break; + case "BYSECOND": + $this->bysecond = $this->bySetPos($this->bysecond,$this->bysetpos); + break; + } + } + } + } + +/** + * bysetpos rule support + * + * @param array $bytype + * @param array $bysetpos + * + * @return array + */ + function bySetPos($bytype, $bysetpos){ + $result = array(); + for($i=0; $i < count($bysetpos); $i++){ + for($j=0; $j < count($bytype); $j++){ + $result[] = $bysetpos[$i] . $bytype[$j]; + } + } + return $result; + } + +/** + * save error + * + * @param string $msg + */ + function setError($msg){ + $this->error = $msg; + } + +/** + * get error message + * + * @return string error message + */ + function getError(){ + return $this->error; + } + +/** + * set debug level (0: none, 1: minimal, 2: more output) + * + * @param integer $level + * + */ + function setDebug($level) + { + $this->debug = $level; + } + +/** + * display debug message + * + * @param integer $level + * @param string $msg + */ + function debug($level, $msg){ + if($this->debug >= $level) + echo $msg . "
\n"; + } + +/** + * Get repeating dates by year + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function byYear($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"byYear(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $count = 0; + if(count($this->byyear) > 0){ + foreach($this->byyear as $year){ + $t = getdate($startdate); + $wdate = mktime($t[hours],$t[minutes],$t[seconds],$t[month],$t[mday],$year); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->byMonth($wdate, $enddate, $rdates, $tzid); + if($count == 0) { + $rdates[] = $wdate; + $count++; + } + } + } + } + else if(!$this->maxDates($rdates)) + $count = $this->byMonth($startdate, $enddate, $rdates, $tzid); + self::debug(1,"byYear() returned " . $count ); + return $count; + } + +/** + * Get repeating dates by month + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function byMonth($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"byMonth(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $count = 0; + if(count($this->bymonth) > 0){ + foreach($this->bymonth as $month){ + $t = getdate($startdate); + $wdate = mktime($t["hours"],$t["minutes"],$t["seconds"],$month,$t["mday"],$t["year"]); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->byMonthDay($wdate, $enddate, $rdates, $tzid); + if($count == 0) { + $rdates[] = $wdate; + $count++; + } + } + } + } + else if(!$this->maxDates($rdates)) + $count = $this->byMonthDay($startdate, $enddate, $rdates, $tzid); + self::debug(1,"byMonth() returned " . $count ); + return $count; + } + +/** + * Get repeating dates by month day + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function byMonthDay($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"byMonthDay(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $count = 0; + self::debug(1,"start date: " . ZDateHelper::toSqlDateTime($startdate)); + if(count($this->bymonthday) > 0){ + foreach($this->bymonthday as $day){ + $day = intval($day); + $t = getdate($startdate); + $wdate = mktime($t['hours'],$t['minutes'],$t['seconds'],$t['mon'],$day,$t['year']); + self::debug(2,"mktime(" . $t['hours'] . ", " . $t['minutes'] + . ", " . $t['mon'] . ", " . $day . ", " . $t['year'] . ") returned $wdate"); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->byDay($wdate, $enddate, $rdates, $tzid); + if($count == 0) { + $rdates[] = $wdate; + $count++; + } + } + } + } + else if(!$this->maxDates($rdates)) { + self::debug(1,"start date: " . ZDateHelper::toSqlDateTime($startdate)); + $count = $this->byDay($startdate, $enddate, $rdates, $tzid); + } + self::debug(1,"byMonthDay() returned " . $count ); + return $count; + } + +/** + * Get repeating dates by day + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function byDay($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"byDay(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $days = array( + "SU" => 0, + "MO" => 1, + "TU" => 2, + "WE" => 3, + "TH" => 4, + "FR" => 5, + "SA" => 6); + $idays = array( + 0 => "SU", + 1 => "MO", + 2 => "TU", + 3 => "WE", + 4 => "TH", + 5 => "FR", + 6 => "SA"); + + $count = 0; + if(count($this->byday) > 0){ + if(empty($this->byday[0])) + { + $this->byday[0] = $idays[date("w",$startdate)]; + } + foreach($this->byday as $tday){ + $t = getdate($startdate); + $day = substr($tday,strlen($tday) - 2); + if(strlen($day) < 2) + { + // missing start day, use current date for DOW + $day = $idays[date("w",$startdate)]; + } + if(strlen($tday) > 2) { + $imin = 1; + $imax = 5; // max # of occurances in a month + if(strlen($tday) > 2) + $imin = $imax = substr($tday,0,strlen($tday) - 2); + self::debug(2,"imin: $imin, imax: $imax, tday: $tday, day: $day, daynum: {$days[$day]}"); + for($i = $imin; $i <= $imax; $i++){ + $wdate = ZDateHelper::getDateFromDay($startdate,$i-1,$days[$day],$tzid); + self::debug(2,"getDateFromDay(" . ZDateHelper::toSqlDateTime($startdate) + . ",$i,{$days[$day]}) returned " . ZDateHelper::toSqlDateTime($wdate)); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->byHour($wdate, $enddate, $rdates); + if($count == 0){ + $rdates[] = $wdate; + $count++; + //break; + } + } + } + } + else { + // day of week version + $startdate_dow = date("w",$startdate); + $datedelta = $days[$day] - $startdate_dow; + self::debug(2, "start_dow: $startdate_dow, datedelta: $datedelta"); + if($datedelta >= 0) + { + $wdate = ZDateHelper::addDate($startdate,0,0,0,0,$datedelta,0,$this->tzid); + self::debug(2, "wdate: " . ZDateHelper::toSqlDateTime($wdate)); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->byHour($wdate, $enddate, $rdates); + if($count == 0){ + $rdates[] = $wdate; + $count++; + self::debug(2,"adding date " . ZDateHelper::toSqlDateTime($wdate) ); + } + } + } + } + } + } + else if(!$this->maxDates($rdates)) + $count = $this->byHour($startdate, $enddate, $rdates); + self::debug(1,"byDay() returned " . $count ); + return $count; + } + +/** + * Get repeating dates by hour + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function byHour($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"byHour(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $count = 0; + if(count($this->byhour) > 0){ + foreach($this->byhour as $hour){ + $t = getdate($startdate); + $wdate = mktime($hour,$t["minutes"],$t["seconds"],$t["mon"],$t["mday"],$t["year"]); + self::debug(2,"checking date/time " . ZDateHelper::toSqlDateTime($wdate)); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->byMinute($wdate, $enddate, $rdates); + if($count == 0) { + $rdates[] = $wdate; + $count++; + } + } + } + } + else if(!$this->maxDates($rdates)) + $count = $this->byMinute($startdate, $enddate, $rdates); + self::debug(1,"byHour() returned " . $count ); + return $count; + } + +/** + * Get repeating dates by minute + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function byMinute($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"byMinute(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $count = 0; + if(count($this->byminute) > 0){ + foreach($this->byminute as $minute){ + $t = getdate($startdate); + $wdate = mktime($t["hours"],$minute,$t["seconds"],$t["mon"],$t["mday"],$t["year"]); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $count = $this->bySecond($wdate, $enddate, $rdates); + if($count == 0) { + $rdates[] = $wdate; + $count++; + } + } + } + } + else if(!$this->maxDates($rdates)) + $count = $this->bySecond($startdate, $enddate, $rdates); + self::debug(1,"byMinute() returned " . $count ); + return $count; + } +/** + * Get repeating dates by second + * + * @param integer $startdate start date of repeating events, in Unix timestamp format + * @param integer $enddate end date of repeating events, in Unix timestamp format + * @param array $rdates array to contain expanded repeating dates + * @param string $tzid timezone of event (using PHP timezones) + * + * @return integer count of dates + */ + private function bySecond($startdate, $enddate, &$rdates, $tzid="UTC"){ + self::debug(1,"bySecond(" . ZDateHelper::toSqlDateTime($startdate) . "," + . ZDateHelper::toSqlDateTime($enddate) . "," . count($rdates) . " dates)"); + $count = 0; + if(count($this->bysecond) > 0){ + foreach($this->bysecond as $second){ + $t = getdate($startdate); + $wdate = mktime($t["hours"],$t["minutes"],$second,$t["mon"],$t["mday"],$t["year"]); + if($startdate <= $wdate && $wdate < $enddate && !$this->maxDates($rdates)){ + $rdates[] = $wdate; + $count++; + } + } + } + self::debug(1,"bySecond() returned " . $count ); + return $count; + } + +/** + * Determine if the loop has reached the end date + * + * @param array $rdates array of repeating dates + * + * @return boolean + */ + private function maxDates($rdates){ + if($this->repeatmode == "c" && count($rdates) >= $this->count) + return true; // exceeded count + else if(count($rdates) > 0 && $this->repeatmode == "u" && $rdates[count($rdates) - 1] > $this->until){ + return true; //past date + } + return false; + } + +/** + * Get array of dates from recurring rule + * + * @param $maxdate integer maximum date to appear in repeating dates in Unix timestamp format + * + * @return array + */ + public function getDates($maxdate = null){ + //$this->debug = 2; + self::debug(1,"getDates()"); + $nextdate = $enddate = $this->startdate; + $rdates = array(); + $done = false; + $eventcount = 0; + $loopcount = 0; + self::debug(2,"freq: " . $this->freq . ", interval: " . $this->interval); + while(!$done){ + self::debug(1,"*** Frequency ({$this->freq}) loop pass $loopcount ***"); + switch($this->freq){ + case "y": + if($eventcount > 0) + { + $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,0,$this->interval,$this->tzid); + self::debug(2,"addDate() returned " . ZDateHelper::toSqlDateTime($nextdate)); + if(!empty($this->byday)){ + $t = getdate($nextdate); + $nextdate = gmmktime($t["hours"],$t["minutes"],$t["seconds"],$t["mon"],1,$t["year"]); + } + self::debug(2,"nextdate set to $nextdate (". ZDateHelper::toSQLDateTime($nextdate) . ")"); + } + $enddate=ZDateHelper::addDate($nextdate,0,0,0,0,0,1); + break; + case "m": + if($eventcount > 0) + { + + $nextdate = ZDateHelper::addDate($nextdate,0,0,0,$this->interval,0,0,$this->tzid); + self::debug(2,"addDate() returned " . ZDateHelper::toSqlDateTime($nextdate)); + } + if(count($this->byday) > 0) + { + $t = getdate($nextdate); + if($t["mday"] > 28) + { + //check for short months when using month by day, make sure we do not overshoot the counter and skip a month + $nextdate = ZDateHelper::addDate($nextdate,0,0,0,$this->interval,0,0,$this->tzid); + $t2 = getdate($nextdate); + if($t2["mday"] < $t["mday"]) + { + // oops, skipped a month, backup to previous month + $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,$t2["mday"] - $t["mday"],0,$this->tzid); + } + } + $t = getdate($nextdate); + $nextdate = mktime($t["hours"],$t["minutes"],$t["seconds"],$t["mon"],1,$t["year"]); + } + self::debug(2,"nextdate set to $nextdate (". ZDateHelper::toSQLDateTime($nextdate) . ")"); + $enddate=ZDateHelper::addDate($nextdate,0,0,0,$this->interval,0,0); + break; + case "w": + if($eventcount == 0) + $nextdate=$nextdate; + else { + $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,$this->interval*7,0,$this->tzid); + if(count($this->byday) > 0){ + $dow = date("w", $nextdate); + // move to beginning of week (Sunday) + $bow = 0; + $diff = $bow - $dow; + if($diff > 0) + $diff = $diff - 7; + $nextdate = ZDateHelper::addDate($nextdate,0,0,0,0,$diff,0); + } + self::debug(2,"nextdate set to $nextdate (". ZDateHelper::toSQLDateTime($nextdate) . ")"); + } + $enddate=ZDateHelper::addDate($nextdate,0,0,0,0,$this->interval*7,0); + break; + case "d": + $nextdate=($eventcount==0?$nextdate: + ZDateHelper::addDate($nextdate,0,0,0,0,$this->interval,0,$this->tzid)); + $enddate=ZDateHelper::addDate($nextdate,0,0,0,0,1,0); + break; + } + + $count = $this->byYear($nextdate,$enddate,$rdates,$this->tzid); + $eventcount += $count; + if($maxdate > 0 && $maxdate < $nextdate) + { + array_pop($rdates); + $done = true; + } + else if($count == 0 && !$this->maxDates($rdates)){ + $rdates[] = $nextdate; + $eventcount++; + } + if($this->maxDates($rdates)) + $done = true; + + $year = date("Y", $nextdate); + if($year > _ZAPCAL_MAXYEAR) + { + $done = true; + } + $loopcount++; + if($loopcount > _ZAPCAL_MAXYEAR){ + $done = true; + throw new Exception("Infinite loop detected in getDates()"); + } + } + if($this->repeatmode == "u" && $rdates[count($rdates) - 1] > $this->until){ + // erase last item + array_pop($rdates); + } + $count1 = count($rdates); + $rdates = array_unique($rdates); + $count2 = count($rdates); + $dups = $count1 - $count2; + $excount = 0; + + foreach($this->exdates as $exdate) + { + if($pos = array_search($exdate,$rdates)) + { + array_splice($rdates,$pos,1); + $excount++; + } + } + self::debug(1,"getDates() returned " . count($rdates) . " dates, removing $dups duplicates, $excount exceptions"); + + + if($this->debug >= 2) + { + self::debug(2,"Recurring Dates:"); + foreach($rdates as $rdate) + { + $d = getdate($rdate); + self::debug(2,ZDateHelper::toSQLDateTime($rdate) . " " . $d["wday"] ); + } + self::debug(2,"Exception Dates:"); + foreach($this->exdates as $exdate) + { + self::debug(2, ZDateHelper::toSQLDateTime($exdate)); + } + //exit; + } + + return $rdates; + } +} diff --git a/ical/kalender.ical b/ical/kalender.ical index d6a96e1..fefbe19 100644 --- a/ical/kalender.ical +++ b/ical/kalender.ical @@ -1,56 +1,51 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//ZContent.net//ZapCalLib 1.0//EN -CALSCALE:GREGORIAN -METHOD:PUBLISH -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20250912 -DTEND:20250921 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251002 -DTEND:20251005 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251020 -DTEND:20251103 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251223 -DTEND:20251228 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251230 -DTEND:20260102 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251231 -DTEND:20260102 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251231 -DTEND:20260101 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20260102 -DTEND:20260111 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20260109 -DTEND:20260110 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20260201 -DTEND:20260204 -END:VEVENT -END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ZContent.net//ZapCalLib 1.0//EN +CALSCALE:GREGORIAN +METHOD:PUBLISH +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251002 +DTEND:20251005 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251020 +DTEND:20251103 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251223 +DTEND:20251228 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251230 +DTEND:20260102 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251231 +DTEND:20260102 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251231 +DTEND:20260101 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20260102 +DTEND:20260111 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20260109 +DTEND:20260110 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20260201 +DTEND:20260204 +END:VEVENT +END:VCALENDAR diff --git a/ical/kalender.ics b/ical/kalender.ics index d6a96e1..fefbe19 100644 --- a/ical/kalender.ics +++ b/ical/kalender.ics @@ -1,56 +1,51 @@ -BEGIN:VCALENDAR -VERSION:2.0 -PRODID:-//ZContent.net//ZapCalLib 1.0//EN -CALSCALE:GREGORIAN -METHOD:PUBLISH -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20250912 -DTEND:20250921 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251002 -DTEND:20251005 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251020 -DTEND:20251103 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251223 -DTEND:20251228 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251230 -DTEND:20260102 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251231 -DTEND:20260102 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20251231 -DTEND:20260101 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20260102 -DTEND:20260111 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20260109 -DTEND:20260110 -END:VEVENT -BEGIN:VEVENT -SUMMARY:Urlaub -DTSTART:20260201 -DTEND:20260204 -END:VEVENT -END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ZContent.net//ZapCalLib 1.0//EN +CALSCALE:GREGORIAN +METHOD:PUBLISH +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251002 +DTEND:20251005 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251020 +DTEND:20251103 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251223 +DTEND:20251228 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251230 +DTEND:20260102 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251231 +DTEND:20260102 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20251231 +DTEND:20260101 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20260102 +DTEND:20260111 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20260109 +DTEND:20260110 +END:VEVENT +BEGIN:VEVENT +SUMMARY:Urlaub +DTSTART:20260201 +DTEND:20260204 +END:VEVENT +END:VCALENDAR diff --git a/ical/urlaub_generator.php b/ical/urlaub_generator.php index e2585a0..3834622 100644 --- a/ical/urlaub_generator.php +++ b/ical/urlaub_generator.php @@ -1,52 +1,52 @@ -= "' . $startdate . '"'; -$sql = 'SELECT start AS stadate , DATE_ADD(ende, INTERVAL 1 DAY) AS enddate FROM urlaub WHERE start >= "' . $startdate . '"'; -#echo $sql; -$result = mysqli_query($con, $sql); - -// create the ical object -$icalobj = new ZCiCal(); - -$title = "Urlaub"; - -// Iteriere durch die Ergebnisse und füge Events zur iCal-Datei hinzu -while ($row = mysqli_fetch_assoc($result)) { - // create the event within the ical object - $eventobj = new ZCiCalNode("VEVENT", $icalobj->curnode); - - // add title - $eventobj->addNode(new ZCiCalDataNode("SUMMARY:" . $title)); - - // add start date - $eventobj->addNode(new ZCiCalDataNode("DTSTART:" . ZCiCal::fromSqlDateTime($row["stadate"]))); - - // add end date - $eventobj->addNode(new ZCiCalDataNode("DTEND:" . ZCiCal::fromSqlDateTime($row["enddate"]))); - -} - -// iCal-Datei ausgeben -file_put_contents("kalender.ics", $icalobj->export()); -file_put_contents("kalender.ical", $icalobj->export()); -echo "Aktualisierung angestossen. Bitte Kalender pruefen.
Wenn in dieser Liste der Eintrag steht, dann sind Anfragen und Telefonanlage vorbereitet!
"; -#echo file_get_contents('./kalender.ical', true); -$handle = fopen("./kalender.ical", "r"); -if ($handle) { - while (($line = fgets($handle)) !== false) { - // process the line read. - echo $line . "
"; - } - - fclose($handle); -} -echo"
Der letzte oder vorherige Eintrag bei DTSTART und DTEND sollte das gewuenschte Urlaubsdatum plus einen Tag haben.
-20240330 steht fuer den 30.03.2024.
-"; - += "' . $startdate . '"'; +$sql = 'SELECT start AS stadate , DATE_ADD(ende, INTERVAL 1 DAY) AS enddate FROM urlaub WHERE start >= "' . $startdate . '"'; +#echo $sql; +$result = mysqli_query($con, $sql); + +// create the ical object +$icalobj = new ZCiCal(); + +$title = "Urlaub"; + +// Iteriere durch die Ergebnisse und füge Events zur iCal-Datei hinzu +while ($row = mysqli_fetch_assoc($result)) { + // create the event within the ical object + $eventobj = new ZCiCalNode("VEVENT", $icalobj->curnode); + + // add title + $eventobj->addNode(new ZCiCalDataNode("SUMMARY:" . $title)); + + // add start date + $eventobj->addNode(new ZCiCalDataNode("DTSTART:" . ZCiCal::fromSqlDateTime($row["stadate"]))); + + // add end date + $eventobj->addNode(new ZCiCalDataNode("DTEND:" . ZCiCal::fromSqlDateTime($row["enddate"]))); + +} + +// iCal-Datei ausgeben +file_put_contents("kalender.ics", $icalobj->export()); +file_put_contents("kalender.ical", $icalobj->export()); +echo "Aktualisierung angestossen. Bitte Kalender pruefen.
Wenn in dieser Liste der Eintrag steht, dann sind Anfragen und Telefonanlage vorbereitet!
"; +#echo file_get_contents('./kalender.ical', true); +$handle = fopen("./kalender.ical", "r"); +if ($handle) { + while (($line = fgets($handle)) !== false) { + // process the line read. + echo $line . "
"; + } + + fclose($handle); +} +echo"
Der letzte oder vorherige Eintrag bei DTSTART und DTEND sollte das gewuenschte Urlaubsdatum plus einen Tag haben.
+20240330 steht fuer den 30.03.2024.
+"; + ?> \ No newline at end of file diff --git a/impfanmeldung.php b/impfanmeldung.php index fe309f7..8da8d06 100644 --- a/impfanmeldung.php +++ b/impfanmeldung.php @@ -1,2 +1,2 @@ - - - - + + + + +
- Impftermin bestätigen
- - - -
+ Impftermin bestätigen
+ + + +Sie haben Ihren Termin aktuell noch nicht bestätigt!
"; - echo "
Sagen Sie einen zugesagten Termin ab, werden Sie für 7 Tage für weitere Termine gesperrt!
Sein Sie solidarisch und kommen Sie zu Ihren festgelegten Termin!
Doppelbuchung und Falschangaben führen zum generellen Ausschluss einer Impfung!
"; - echo "Sie haben die folgenden Termindaten:
"; - echo "
Name: $userausgabe
"; - echo "Zeit: $Zeitanzeige
"; - echo "Impfstoff: $impfstofftext
"; - echo "Impfort: $impforttext
"; - - echo ""; - echo ""; - - }else if($checked == 1){ - echo "
Sie haben Ihren Termin bestätigt!
Vielen Dank!
"; - echo "
Sagen Sie einen zugesagten Termin ab, werden Sie für 7 Tage für weitere Termine gesperrt!
Sein Sie solidarisch und kommen Sie zu Ihren festgelegten Termin!
Doppelbuchung und Falschangaben führen zum generellen Ausschluss einer Impfung!
"; - echo "Sie haben die folgenden Termindaten:
"; - echo "
Name: $userausgabe
"; - echo "Zeit: $Zeitanzeige
"; - echo "Impfstoff: $impfstofftext
"; - echo "Impfort: $impforttext
"; - - echo "Können Sie Ihren Termin nicht wahrnehmen tragen Sie sich bitte aus:
"; - echo ""; - - - }else if($checked == 2){ - echo "
Ihr Termin wurde erfolgreich abgesagt!!
Wünschen Sie einen neuen Termin, tragen Sie sich wieder über das Formular ein.
"; - - - }else if($checked == 3){ - echo "
Ihr Termin wurde vom Praxisteam storniert!
Wünschen Sie einen neuen Termin, tragen Sie sich wieder über das Formular ein.
"; - - - } - - }else{ - echo "
Leider konnten wir Ihre Anforderung nicht verarbeiten.
Bitte überprüfen Sie den aufgerufenden Link.
"; - - } - - - -}else if($_POST["aktion"] == 1){ - echo "Wollen Sie wirklich Ihren Termin absagen?
Dieses ist nicht rückgängig zu machen!
Dann bestätigen Sie die Abmeldung:
"; - echo "Achtung! Sagen Sie Ihren festgelegten Termin ab, können Sie eine Woche keinen neuen Termin beantragen.
"; - echo ""; - - -}else if($_POST["aktion"] == 2){ - - $querychecked = mysqli_query($con, "SELECT checked FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); - $rowchecked = mysqli_fetch_assoc($querychecked); - //$rowchecked = $querychecked->fetch_assoc() ; - $checked = $rowchecked["checked"]; - if($checked >= 1){ - echo "
Sie haben Ihren Termin schon bestätigt.
"; - - }else{ - $query = mysqli_query($con, "Update impftermin SET checked='1' WHERE terminid ='".$_POST["terminid"]."'"); - if($query){ - echo "Ihr Termin wurde erfolgreich bestätigt!
";
- echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
-
-
- $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
- $rowimpf = mysqli_fetch_assoc($queryimpf);
- //$rowimpf = $queryimpf->fetch_assoc() ;
- $userid = $rowimpf["userid"];
- $checked = $rowimpf["checked"];
- $terminid = $rowimpf["terminid"];
- $timeid = $rowimpf["timeid"];
- //echo $userid;
+ $querytime = mysqli_query($con, "Select date,start,ende,impfstoff,impfortid FROM timeslots WHERE timeid='" . $timeid . "'");
+ $rowtime = mysqli_fetch_assoc($querytime);
+ //$rowtime = $querytime->fetch_assoc();
+ $datum = date("d.m.Y", strtotime($rowtime["date"]));
+ $start = substr($rowtime["start"],0, 5);
+ $ende = substr($rowtime["ende"],0, 5);
+
+ // Impfstoff
+ $impfstoff = $rowtime["impfstoff"];
+ $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'";
+ $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring);
+ $rowimpf = mysqli_fetch_assoc($queryimpfstoff);
+ $impfstofftext = $rowimpf["impfname"];
+
+ $impfortid = $rowtime["impfortid"];
+ $sqlimpfortstring = "SELECT * FROM impfort WHERE ortid ='" . $impfortid . "'";
+ $queryimpfort = mysqli_query($con,$sqlimpfortstring);
+ $rowimpfort = mysqli_fetch_assoc($queryimpfort);
+ $impforttext = $rowimpfort["anzeigename"] ."- " . $rowimpfort["adresse"];
+ $impforttext = iconv('CP1252//IGNORE', 'UTF-8' , $impforttext);
+
+ $mailbetreff = "Ihre Coronaimpfung bei Praxis Creutzburg";
+
+ $Zeitanzeige = $datum . " " . $start . "-" . $ende ;
+ if($checked == 0){
+ echo "Sie haben Ihren Termin aktuell noch nicht bestätigt!
";
+ echo "Sagen Sie einen zugesagten Termin ab, werden Sie für 7 Tage für weitere Termine gesperrt!
Sein Sie solidarisch und kommen Sie zu Ihren festgelegten Termin!
Doppelbuchung und Falschangaben führen zum generellen Ausschluss einer Impfung!
";
+ echo "Sie haben die folgenden Termindaten:
";
+ echo "Name: $userausgabe
";
+ echo "Zeit: $Zeitanzeige
";
+ echo "Impfstoff: $impfstofftext
";
+ echo "Impfort: $impforttext
";
+
+ echo "
";
+ echo "";
+
+ }else if($checked == 1){
+ echo ""; - echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
"; - - - $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); - $rowimpf = mysqli_fetch_assoc($queryimpf); - //$rowimpf = $queryimpf->fetch_assoc() ; - $userid = $rowimpf["userid"]; - $checked = $rowimpf["checked"]; - $terminid = $rowimpf["terminid"]; - $timeid = $rowimpf["timeid"]; - //echo $userid; + $querytime = mysqli_query($con, "Select date,start,ende,impfstoff,impfortid FROM timeslots WHERE timeid='" . $timeid . "'"); + $rowtime = mysqli_fetch_assoc($querytime); + //$rowtime = $querytime->fetch_assoc(); + $datum = date("d.m.Y", strtotime($rowtime["date"])); + $start = substr($rowtime["start"],0, 5); + $ende = substr($rowtime["ende"],0, 5); + + // Impfstoff + $impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $impfortid = $rowtime["impfortid"]; + $sqlimpfortstring = "SELECT * FROM impfort WHERE ortid ='" . $impfortid . "'"; + $queryimpfort = mysqli_query($con,$sqlimpfortstring); + $rowimpfort = mysqli_fetch_assoc($queryimpfort); + $impforttext = $rowimpfort["anzeigename"] ."- " . $rowimpfort["adresse"]; + $impforttext = iconv('CP1252//IGNORE', 'UTF-8' , $impforttext); + + $mailbetreff = "Ihre Coronaimpfung bei Praxis Creutzburg"; + + $Zeitanzeige = $datum . " " . $start . "-" . $ende ; + if($checked == 0){ + echo "
Sie haben Ihren Termin aktuell noch nicht bestätigt!
"; + echo "
Sagen Sie einen zugesagten Termin ab, werden Sie für 7 Tage für weitere Termine gesperrt!
Sein Sie solidarisch und kommen Sie zu Ihren festgelegten Termin!
Doppelbuchung und Falschangaben führen zum generellen Ausschluss einer Impfung!
"; + echo "Sie haben die folgenden Termindaten:
"; + echo "
Name: $userausgabe
"; + echo "Zeit: $Zeitanzeige
"; + echo "Impfstoff: $impfstofftext
"; + echo "Impfort: $impforttext
"; + + echo "
Sie haben Ihren Termin bestätigt!
Vielen Dank!
"; + echo "
Sagen Sie einen zugesagten Termin ab, werden Sie für 7 Tage für weitere Termine gesperrt!
Sein Sie solidarisch und kommen Sie zu Ihren festgelegten Termin!
Doppelbuchung und Falschangaben führen zum generellen Ausschluss einer Impfung!
"; + echo "Sie haben die folgenden Termindaten:
"; + echo "
Name: $userausgabe
"; + echo "Zeit: $Zeitanzeige
"; + echo "Impfstoff: $impfstofftext
"; + echo "Impfort: $impforttext
"; + + echo "Können Sie Ihren Termin nicht wahrnehmen tragen Sie sich bitte aus:
"; + echo ""; + + + }else if($checked == 2){ + echo "
Ihr Termin wurde erfolgreich abgesagt!!
Wünschen Sie einen neuen Termin, tragen Sie sich wieder über das Formular ein.
"; + + + }else if($checked == 3){ + echo "
Ihr Termin wurde vom Praxisteam storniert!
Wünschen Sie einen neuen Termin, tragen Sie sich wieder über das Formular ein.
"; + + + } + + }else{ + echo "
Leider konnten wir Ihre Anforderung nicht verarbeiten.
Bitte überprüfen Sie den aufgerufenden Link.
"; + + } + + + +}else if($_POST["aktion"] == 1){ + echo "Wollen Sie wirklich Ihren Termin absagen?
Dieses ist nicht rückgängig zu machen!
Dann bestätigen Sie die Abmeldung:
"; + echo "Achtung! Sagen Sie Ihren festgelegten Termin ab, können Sie eine Woche keinen neuen Termin beantragen.
"; + echo ""; + + +}else if($_POST["aktion"] == 2){ + + $querychecked = mysqli_query($con, "SELECT checked FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); + $rowchecked = mysqli_fetch_assoc($querychecked); + //$rowchecked = $querychecked->fetch_assoc() ; + $checked = $rowchecked["checked"]; + if($checked >= 1){ + echo "
Sie haben Ihren Termin schon bestätigt.
"; + + }else{ + $query = mysqli_query($con, "Update impftermin SET checked='1' WHERE terminid ='".$_POST["terminid"]."'"); + if($query){ + echo "Ihr Termin wurde erfolgreich bestätigt!
";
+ echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
+
+
+ $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
+ $rowimpf = mysqli_fetch_assoc($queryimpf);
+ //$rowimpf = $queryimpf->fetch_assoc() ;
+ $userid = $rowimpf["userid"];
+ $checked = $rowimpf["checked"];
+ $terminid = $rowimpf["terminid"];
+ $timeid = $rowimpf["timeid"];
+ //echo $userid;
$queryuser = mysqli_query($con, "SELECT * FROM persons WHERE person_id='" . $userid . "'");
- $rowuser = mysqli_fetch_assoc($queryuser);
- //$rowuser = $queryuser->fetch_assoc();
- $vorname = $rowuser["vorname"];
- $nachname = $rowuser["nachname"];
+ $rowuser = mysqli_fetch_assoc($queryuser);
+ //$rowuser = $queryuser->fetch_assoc();
+ $vorname = $rowuser["vorname"];
+ $nachname = $rowuser["nachname"];
$mail = $rowuser["email"];
- //echo $mail;
- $tel = $rowuser["tele"];
+ //echo $mail;
+ $tel = $rowuser["tele"];
$userausgabe = $vorname . " " . $nachname;
- $querytime = mysqli_query($con, "Select date,start,ende FROM timeslots WHERE timeid='" . $timeid . "'");
- $rowtime = mysqli_fetch_assoc($querytime);
- //$rowtime = $querytime->fetch_assoc();
- $datum = date("d.m.Y", strtotime($rowtime["date"]));
- $start = substr($rowtime["start"],0, 5);
- $ende = substr($rowtime["ende"],0, 5);
- $Zeitanzeige = $datum . " " . $start. " - " . $ende;
-
-
- SendMailMessageVorlage($pdo, "1", $terminid, "2");
-
-
- }
- }
-
-}else if($_POST["aktion"] == 3){
- $querychecked = mysqli_query($con, "SELECT checked FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
+ $querytime = mysqli_query($con, "Select date,start,ende FROM timeslots WHERE timeid='" . $timeid . "'");
+ $rowtime = mysqli_fetch_assoc($querytime);
+ //$rowtime = $querytime->fetch_assoc();
+ $datum = date("d.m.Y", strtotime($rowtime["date"]));
+ $start = substr($rowtime["start"],0, 5);
+ $ende = substr($rowtime["ende"],0, 5);
+ $Zeitanzeige = $datum . " " . $start. " - " . $ende;
+
+
+ SendMailMessageVorlage($pdo, "1", $terminid, "2");
+
+
+ }
+ }
+
+}else if($_POST["aktion"] == 3){
+ $querychecked = mysqli_query($con, "SELECT checked FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
$rowchecked = mysqli_fetch_assoc($querychecked);
$checked = $rowchecked["checked"];
- if($checked >= 2){
- echo "Sie haben Ihren Termin schon abgesagt.
";
-
- }else{
- $query = mysqli_query($con, "Update impftermin SET checked='2' WHERE terminid ='".$_POST["terminid"]."'");
- if($query){
- echo "Ihr Termin wurde erfolgreich gelöscht!
";
- echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
-
- $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
- $rowimpf = mysqli_fetch_assoc($queryimpf);
- //$rowimpf = $queryimpf->fetch_assoc() ;
- $userid = $rowimpf["userid"];
- $checked = $rowimpf["checked"];
- $terminid = $rowimpf["terminid"];
- $timeid = $rowimpf["timeid"];
- //echo $userid;
+ if($checked >= 2){
+ echo "Sie haben Ihren Termin schon abgesagt.
";
+
+ }else{
+ $query = mysqli_query($con, "Update impftermin SET checked='2' WHERE terminid ='".$_POST["terminid"]."'");
+ if($query){
+ echo "Ihr Termin wurde erfolgreich gelöscht!
";
+ echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
+
+ $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
+ $rowimpf = mysqli_fetch_assoc($queryimpf);
+ //$rowimpf = $queryimpf->fetch_assoc() ;
+ $userid = $rowimpf["userid"];
+ $checked = $rowimpf["checked"];
+ $terminid = $rowimpf["terminid"];
+ $timeid = $rowimpf["timeid"];
+ //echo $userid;
$queryuser = mysqli_query($con, "SELECT * FROM persons WHERE person_id='" . $userid . "'");
- $rowuser = mysqli_fetch_assoc($queryuser);
- //$rowuser = $queryuser->fetch_assoc();
- $vorname = $rowuser["vorname"];
- $nachname = $rowuser["nachname"];
+ $rowuser = mysqli_fetch_assoc($queryuser);
+ //$rowuser = $queryuser->fetch_assoc();
+ $vorname = $rowuser["vorname"];
+ $nachname = $rowuser["nachname"];
$mail = $rowuser["email"];
- //echo $mail;
- $tel = $rowuser["tele"];
+ //echo $mail;
+ $tel = $rowuser["tele"];
$userausgabe = $vorname . " " . $nachname;
- $querytime = mysqli_query($con, "Select date,start,ende,impfdosen FROM timeslots WHERE timeid='" . $timeid . "'");
- $rowtime = mysqli_fetch_assoc($querytime);
- //$rowtime = $querytime->fetch_assoc();
- $datum = date("d.m.Y", strtotime($rowtime["date"]));
- $start = substr($rowtime["start"],0, 5);
- $ende = substr($rowtime["ende"],0, 5);
- $dosen = $rowtime["impfdosen"];
- $dosen = $dosen + 1;
- $Zeitanzeige = $datum . " " . $start. " - " . $ende;
- $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen."' WHERE timeid ='".$timeid."'");
-
- SendMailMessageVorlage($pdo, "1", $terminid, "3");
-
-
- }
- }
-
-}else{
-
- echo "Leider konnten wir Ihre ID-Nummer nicht erkennen.
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
";
- echo "
"; + echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
"; + + + $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); + $rowimpf = mysqli_fetch_assoc($queryimpf); + //$rowimpf = $queryimpf->fetch_assoc() ; + $userid = $rowimpf["userid"]; + $checked = $rowimpf["checked"]; + $terminid = $rowimpf["terminid"]; + $timeid = $rowimpf["timeid"]; + //echo $userid; $queryuser = mysqli_query($con, "SELECT * FROM persons WHERE person_id='" . $userid . "'"); - $rowuser = mysqli_fetch_assoc($queryuser); - //$rowuser = $queryuser->fetch_assoc(); - $vorname = $rowuser["vorname"]; - $nachname = $rowuser["nachname"]; + $rowuser = mysqli_fetch_assoc($queryuser); + //$rowuser = $queryuser->fetch_assoc(); + $vorname = $rowuser["vorname"]; + $nachname = $rowuser["nachname"]; $mail = $rowuser["email"]; - //echo $mail; - $tel = $rowuser["tele"]; + //echo $mail; + $tel = $rowuser["tele"]; $userausgabe = $vorname . " " . $nachname; - $querytime = mysqli_query($con, "Select date,start,ende FROM timeslots WHERE timeid='" . $timeid . "'"); - $rowtime = mysqli_fetch_assoc($querytime); - //$rowtime = $querytime->fetch_assoc(); - $datum = date("d.m.Y", strtotime($rowtime["date"])); - $start = substr($rowtime["start"],0, 5); - $ende = substr($rowtime["ende"],0, 5); - $Zeitanzeige = $datum . " " . $start. " - " . $ende; - - - SendMailMessageVorlage($pdo, "1", $terminid, "2"); - - - } - } - -}else if($_POST["aktion"] == 3){ - $querychecked = mysqli_query($con, "SELECT checked FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); + $querytime = mysqli_query($con, "Select date,start,ende FROM timeslots WHERE timeid='" . $timeid . "'"); + $rowtime = mysqli_fetch_assoc($querytime); + //$rowtime = $querytime->fetch_assoc(); + $datum = date("d.m.Y", strtotime($rowtime["date"])); + $start = substr($rowtime["start"],0, 5); + $ende = substr($rowtime["ende"],0, 5); + $Zeitanzeige = $datum . " " . $start. " - " . $ende; + + + SendMailMessageVorlage($pdo, "1", $terminid, "2"); + + + } + } + +}else if($_POST["aktion"] == 3){ + $querychecked = mysqli_query($con, "SELECT checked FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); $rowchecked = mysqli_fetch_assoc($querychecked); $checked = $rowchecked["checked"]; - if($checked >= 2){ - echo "
Sie haben Ihren Termin schon abgesagt.
"; - - }else{ - $query = mysqli_query($con, "Update impftermin SET checked='2' WHERE terminid ='".$_POST["terminid"]."'"); - if($query){ - echo "Ihr Termin wurde erfolgreich gelöscht!
";
- echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
-
- $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
- $rowimpf = mysqli_fetch_assoc($queryimpf);
- //$rowimpf = $queryimpf->fetch_assoc() ;
- $userid = $rowimpf["userid"];
- $checked = $rowimpf["checked"];
- $terminid = $rowimpf["terminid"];
- $timeid = $rowimpf["timeid"];
- //echo $userid;
+ if($checked >= 2){
+ echo "Sie haben Ihren Termin schon abgesagt.
";
+
+ }else{
+ $query = mysqli_query($con, "Update impftermin SET checked='2' WHERE terminid ='".$_POST["terminid"]."'");
+ if($query){
+ echo "Ihr Termin wurde erfolgreich gelöscht!
";
+ echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
+
+ $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
+ $rowimpf = mysqli_fetch_assoc($queryimpf);
+ //$rowimpf = $queryimpf->fetch_assoc() ;
+ $userid = $rowimpf["userid"];
+ $checked = $rowimpf["checked"];
+ $terminid = $rowimpf["terminid"];
+ $timeid = $rowimpf["timeid"];
+ //echo $userid;
$queryuser = mysqli_query($con, "SELECT * FROM persons WHERE person_id='" . $userid . "'");
- $rowuser = mysqli_fetch_assoc($queryuser);
- //$rowuser = $queryuser->fetch_assoc();
- $vorname = $rowuser["vorname"];
- $nachname = $rowuser["nachname"];
+ $rowuser = mysqli_fetch_assoc($queryuser);
+ //$rowuser = $queryuser->fetch_assoc();
+ $vorname = $rowuser["vorname"];
+ $nachname = $rowuser["nachname"];
$mail = $rowuser["email"];
- //echo $mail;
- $tel = $rowuser["tele"];
+ //echo $mail;
+ $tel = $rowuser["tele"];
$userausgabe = $vorname . " " . $nachname;
- $querytime = mysqli_query($con, "Select date,start,ende,impfdosen FROM timeslots WHERE timeid='" . $timeid . "'");
- $rowtime = mysqli_fetch_assoc($querytime);
- //$rowtime = $querytime->fetch_assoc();
- $datum = date("d.m.Y", strtotime($rowtime["date"]));
- $start = substr($rowtime["start"],0, 5);
- $ende = substr($rowtime["ende"],0, 5);
- $dosen = $rowtime["impfdosen"];
- $dosen = $dosen + 1;
- $Zeitanzeige = $datum . " " . $start. " - " . $ende;
- $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen."' WHERE timeid ='".$timeid."'");
-
- SendMailMessageVorlage($pdo, "1", $terminid, "3");
-
-
- }
- }
-
-}else{
-
- echo "Leider konnten wir Ihre ID-Nummer nicht erkennen.
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
";
- echo "
"; - echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
"; - - $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); - $rowimpf = mysqli_fetch_assoc($queryimpf); - //$rowimpf = $queryimpf->fetch_assoc() ; - $userid = $rowimpf["userid"]; - $checked = $rowimpf["checked"]; - $terminid = $rowimpf["terminid"]; - $timeid = $rowimpf["timeid"]; - //echo $userid; + if($checked >= 2){ + echo "
Sie haben Ihren Termin schon abgesagt.
"; + + }else{ + $query = mysqli_query($con, "Update impftermin SET checked='2' WHERE terminid ='".$_POST["terminid"]."'"); + if($query){ + echo "Ihr Termin wurde erfolgreich gelöscht!
";
+ echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
";
+
+ $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'");
+ $rowimpf = mysqli_fetch_assoc($queryimpf);
+ //$rowimpf = $queryimpf->fetch_assoc() ;
+ $userid = $rowimpf["userid"];
+ $checked = $rowimpf["checked"];
+ $terminid = $rowimpf["terminid"];
+ $timeid = $rowimpf["timeid"];
+ //echo $userid;
$queryuser = mysqli_query($con, "SELECT * FROM persons WHERE person_id='" . $userid . "'");
- $rowuser = mysqli_fetch_assoc($queryuser);
- //$rowuser = $queryuser->fetch_assoc();
- $vorname = $rowuser["vorname"];
- $nachname = $rowuser["nachname"];
+ $rowuser = mysqli_fetch_assoc($queryuser);
+ //$rowuser = $queryuser->fetch_assoc();
+ $vorname = $rowuser["vorname"];
+ $nachname = $rowuser["nachname"];
$mail = $rowuser["email"];
- //echo $mail;
- $tel = $rowuser["tele"];
+ //echo $mail;
+ $tel = $rowuser["tele"];
$userausgabe = $vorname . " " . $nachname;
- $querytime = mysqli_query($con, "Select date,start,ende,impfdosen FROM timeslots WHERE timeid='" . $timeid . "'");
- $rowtime = mysqli_fetch_assoc($querytime);
- //$rowtime = $querytime->fetch_assoc();
- $datum = date("d.m.Y", strtotime($rowtime["date"]));
- $start = substr($rowtime["start"],0, 5);
- $ende = substr($rowtime["ende"],0, 5);
- $dosen = $rowtime["impfdosen"];
- $dosen = $dosen + 1;
- $Zeitanzeige = $datum . " " . $start. " - " . $ende;
- $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen."' WHERE timeid ='".$timeid."'");
-
- SendMailMessageVorlage($pdo, "1", $terminid, "3");
-
-
- }
- }
-
-}else{
-
- echo "Leider konnten wir Ihre ID-Nummer nicht erkennen.
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
";
- echo "
"; + echo "Sie erhalten gleiche eine schriftliche Bestätigung per E-Mail
"; + + $queryimpf = mysqli_query($con, "SELECT * FROM impftermin WHERE terminid='" . $_POST["terminid"] . "'"); + $rowimpf = mysqli_fetch_assoc($queryimpf); + //$rowimpf = $queryimpf->fetch_assoc() ; + $userid = $rowimpf["userid"]; + $checked = $rowimpf["checked"]; + $terminid = $rowimpf["terminid"]; + $timeid = $rowimpf["timeid"]; + //echo $userid; $queryuser = mysqli_query($con, "SELECT * FROM persons WHERE person_id='" . $userid . "'"); - $rowuser = mysqli_fetch_assoc($queryuser); - //$rowuser = $queryuser->fetch_assoc(); - $vorname = $rowuser["vorname"]; - $nachname = $rowuser["nachname"]; + $rowuser = mysqli_fetch_assoc($queryuser); + //$rowuser = $queryuser->fetch_assoc(); + $vorname = $rowuser["vorname"]; + $nachname = $rowuser["nachname"]; $mail = $rowuser["email"]; - //echo $mail; - $tel = $rowuser["tele"]; + //echo $mail; + $tel = $rowuser["tele"]; $userausgabe = $vorname . " " . $nachname; - $querytime = mysqli_query($con, "Select date,start,ende,impfdosen FROM timeslots WHERE timeid='" . $timeid . "'"); - $rowtime = mysqli_fetch_assoc($querytime); - //$rowtime = $querytime->fetch_assoc(); - $datum = date("d.m.Y", strtotime($rowtime["date"])); - $start = substr($rowtime["start"],0, 5); - $ende = substr($rowtime["ende"],0, 5); - $dosen = $rowtime["impfdosen"]; - $dosen = $dosen + 1; - $Zeitanzeige = $datum . " " . $start. " - " . $ende; - $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen."' WHERE timeid ='".$timeid."'"); - - SendMailMessageVorlage($pdo, "1", $terminid, "3"); - - - } - } - -}else{ - - echo "Leider konnten wir Ihre ID-Nummer nicht erkennen.
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
"; - echo "
Bitte tragen Sie diese in dem folgendem Feld ein und klicken Sie auf 'Senden'
"; + echo " - -
- - -
+ Impftermin online anfordern erfolgreich
+ + + +"; + /* + $querytime = mysqli_query($con, "Select date,start,ende FROM timeslots WHERE timeid='" . $timeid . "'"); + $rowtime = $querytime->fetch_assoc(); + $datum = date("d.m.Y", strtotime($rowtime["date"])); + $start = substr($rowtime["start"],0, 5); + $ende = substr($rowtime["ende"],0, 5); + $Zeitanzeige = $datum . " " . $start. " - " . $ende; + + $hashaufruf = "https://praxis-creutzburg.de/impfbestaetigung.php?id=$hash"; + + $nachricht = " + Sehr geehrte(r) Herr/Frau $nachname,
Ihre Impftermin Anfrage bei Praxis-Creutzburg war erfolgreich!
+ Bitte bestätigten Sie Ihre Impfanfrage noch über dieses Formular:
+ Impftermin bestätigen
+ oder geben Sie die folgende Zeile in Ihrem Browser in die Adressezeile ein:
+ $hashaufruf
+ Bitte bestätigen Sie Ihren Termin innerhalb von 24 Stunden!
+ Anderenfalls wird der Termin automatisch storniert.
+ Erscheinen Sie nicht zum Termin wird eine Aufwandentschädigung von 50€ fällig.
+ Sie können den Termin bis einen Tag vor dem Termin kostenfrei stornieren.
+ +
Die Impfunterlagen liegen zwei Tage vor dem Impftermin ausgedruckt aussen neben der Eingangstuer, vor der Praxis fuer Sie bereit, wenn Sie keine Moeglichkeiten zum ausdrucken haben! + Impfaufklaerung und Einwilligung sind zusammengeheftet, beide Dokumente muessen Unterschrieben werden.
+ + https://www.praxis-creutzburg.de/impfunterlagen.php+ Hier koennen Sie die Unterlagen zum ausdrucken herunterladen.
+ Unterschreiben Sie die Einwilligungserklaerung und die Impfaufklaerung!
Zwei Dokumente, zwei Unterschriften!
+ +
Bitte rufen Sie uns nicht wegen Impfterminen an!
+ + Ihre Angaben+ Name: $vorname $nachname
+ Termin: $Zeitanzeige
+
+ Bitte sein Sie pünktlich zum Termin vor Ort.
Vielen Dank für Ihre Mithilfe!
+
+ Ihr Praxis-Team
+ der Praxis Creutzburg
+ + + + "; + + echo "
Nachricht abgeschickt!
"; + $betreff = 'Impftermin-Anfrage bei Praxis Creuzburg'; + + SendMailMessage($con, $Email, $betreff, $nachricht); + */ + SendMailMessageVorlage($pdo, "1", $terminid, "31"); + + } +} + + + + ?> + + + Impftermin sichern ++ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
+ Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 + + +
+ + +
- Impftermin online anfordern
- - - -"; - - $datum = date("d.m.Y", strtotime($row["date"])); - $start = substr($row["start"],0, 5); - $ende = substr($row["ende"],0, 5); - $Zeitanzeige = $datum . " " . $start. " - " . $ende; - $queryloeschen = mysqli_query($con, "Update impftermin SET checked='5' WHERE terminid = '". $terminid . "' "); - - // Impfdosen um einen erhöhen - $query = mysqli_query($con, "Select impfdosen FROM timeslots WHERE timeid='".$timeid."'"); - $row = mysqli_fetch_assoc($query); - $dosen = $row["impfdosen"] + 1; - $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen ."' WHERE timeid ='".$timeid."'"); - - if($queryloeschen){ - - /* - $dosen = $rowtermin["impfdosen"]; - $dosen = $dosen + 1; - $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen."' WHERE timeid ='".$timeid."'"); - - $nachricht = " - Sehr geehrte(r) Herr/Frau $nachname,
- - Ihre ausgewählter Impftermin wurde storniert, da Sie diesen nicht innerhalb von 24 Stunden bestätigt haben.
- Termin: $Zeitanzeige
-
- Benötigen Sie einen neuen Termin, müssen Sie das Formular erneut ausfüllen.
- -
Bitte rufen Sie uns nicht wegen Impfterminen an!
- -Vielen Dank für Ihre Mithilfe!
-
- Ihr Praxis-Team
- der Praxis Creutzburg
- - - - "; - $nachricht = iconv('UTF-8', 'CP1252//IGNORE', $nachricht); - - //echo $nachricht; - - echo "
Nachricht abgeschickt!
"; - $betreff = 'Impftermin-Anfrage bei Praxis Creuzburg'; - - SendMailMessage($con, $mail, $betreff, $nachricht); - */ - SendMailMessageVorlage($pdo, "1", $terminid, "30"); - - } - - - } - - - } -} - - ?> - - - - - Impftermin sichern -- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
- Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 - - -
- - - - -
+ Impftermin online anfordern
+ + + +"; + + $datum = date("d.m.Y", strtotime($row["date"])); + $start = substr($row["start"],0, 5); + $ende = substr($row["ende"],0, 5); + $Zeitanzeige = $datum . " " . $start. " - " . $ende; + $queryloeschen = mysqli_query($con, "Update impftermin SET checked='5' WHERE terminid = '". $terminid . "' "); + + // Impfdosen um einen erhöhen + $query = mysqli_query($con, "Select impfdosen FROM timeslots WHERE timeid='".$timeid."'"); + $row = mysqli_fetch_assoc($query); + $dosen = $row["impfdosen"] + 1; + $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen ."' WHERE timeid ='".$timeid."'"); + + if($queryloeschen){ + + /* + $dosen = $rowtermin["impfdosen"]; + $dosen = $dosen + 1; + $query = mysqli_query($con, "Update timeslots SET impfdosen='".$dosen."' WHERE timeid ='".$timeid."'"); + + $nachricht = " + Sehr geehrte(r) Herr/Frau $nachname,
+ + Ihre ausgewählter Impftermin wurde storniert, da Sie diesen nicht innerhalb von 24 Stunden bestätigt haben.
+ Termin: $Zeitanzeige
+
+ Benötigen Sie einen neuen Termin, müssen Sie das Formular erneut ausfüllen.
+ +
Bitte rufen Sie uns nicht wegen Impfterminen an!
+ +Vielen Dank für Ihre Mithilfe!
+
+ Ihr Praxis-Team
+ der Praxis Creutzburg
+ + + + "; + $nachricht = iconv('UTF-8', 'CP1252//IGNORE', $nachricht); + + //echo $nachricht; + + echo "
Nachricht abgeschickt!
"; + $betreff = 'Impftermin-Anfrage bei Praxis Creuzburg'; + + SendMailMessage($con, $mail, $betreff, $nachricht); + */ + SendMailMessageVorlage($pdo, "1", $terminid, "30"); + + } + + + } + + + } +} + + ?> + + + + + Impftermin sichern ++ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
+ Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 + + +
+ + + + +
- Impftermin online anfordern erfolgreich
- - - -- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
- Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 - - -
- - - - -
+ Impftermin online anfordern erfolgreich
+ + + ++ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
+ Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 + + +
+ + + + +
- Impftermin online anfordern erfolgreich
- - - -- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
- Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 - - -
- - - - -
+ Impftermin online anfordern erfolgreich
+ + + ++ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
+ Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 + + +
+ + + + +
- Impftermin online anfordern erfolgreich
- - - -- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
- Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 - - -
- - - - -
+ Impftermin online anfordern erfolgreich
+ + + ++ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
+ Elektronische Nachrichten können von Dritten gelesen werden. Bei Bedenken nutzen Sie unsere Rezepthotline für alle Serviceleistungen: 05156 99 03 77 + + +
+ + + + +
Zweitimpfung
Aktuell stehen bei uns keine Termine für die Zweitimpfung zur Verfügung.Bitte kümmern Sie sich selbstständig, um einen Termin für die Zweitimpfung.
Sobald wir Termine für die Zweitimpfung zur Verfügung haben, finden Sie diese auch auf dieser Webseite.
Sehen Sie von weiteren telefonischen Anfragen ab!
"; - }else{ - ?> -
- - prepare("SELECT impfstoff, date,terminart, ZIminimal, ZImaximal, ZIaktiv, ZIbiontech, ZIastra, ZImoderna FROM timeslots INNER JOIN impfstoff ON timeslots.impfstoff = impfstoff.impfid WHERE timeid = :timeid"); + $statementtermin->execute(array('timeid' => $timeid)); + $rowtime = $statementtermin->fetch(PDO::FETCH_ASSOC); + $ZIaktiv = $rowtime["ZIaktiv"]; + $ZIminimal = $rowtime["ZIminimal"]; + $ZImaximal = $rowtime["ZImaximal"]; + $ZIbiontech = $rowtime["ZIbiontech"]; + $ZIastra = $rowtime["ZIastra"]; + $ZImoderna = $rowtime["ZImoderna"]; + $impfname = $rowtime["impfname"]; + $terminart = $rowtime["terminart"]; + + $minimaldate = date_create($rowtime["date"]); + date_add($minimaldate, date_interval_create_from_date_string($ZIminimal . ' days')); + $minimaldate = date_format($minimaldate, 'Y-m-d'); + $maximaldate = date_create($rowtime["date"]); + date_add($maximaldate, date_interval_create_from_date_string($ZImaximal . ' days')); + $maximaldate = date_format($maximaldate, 'Y-m-d'); + $impfstoffstring = ""; + $terminartstring = ""; + + if($ZIaktiv && ($terminart == 1 || $terminart == 0) ){ + if($ZIbiontech){ + if($impfstoffstring == ""){ + $impfstoffstring = $impfstoffstring . "(impfstoff='3'"; + }else{ + $impfstoffstring = $impfstoffstring . " OR impfstoff='3'"; + } + } + if($ZIastra){ + if($impfstoffstring == ""){ + $impfstoffstring = $impfstoffstring . "(impfstoff='2'"; + }else{ + $impfstoffstring = $impfstoffstring . " OR impfstoff='2'"; + } + + + } + if($ZImoderna){ + if($impfstoffstring == ""){ + $impfstoffstring = $impfstoffstring . "(impfstoff='5'"; + }else{ + $impfstoffstring = $impfstoffstring . " OR impfstoff='5'"; + } + + } + + $impfstoffstring = $impfstoffstring . ")"; + $terminartstring = " AND (terminart='1' OR terminart='3' OR terminart='5')"; + + + + $statement = $pdo->prepare("SELECT date,start,ende,impfdosen,timeid,impfstoff FROM timeslots WHERE date>= '$minimaldate' AND date<='$maximaldate' AND $impfstoffstring $terminartstring AND impfdosen > 0"); + $statement->execute(); + $count = $statement->rowCount(); + + if($count == 0){ + echo"
Zweitimpfung
Aktuell stehen bei uns keine Termine für die Zweitimpfung zur Verfügung.Bitte kümmern Sie sich selbstständig, um einen Termin für die Zweitimpfung.
Sobald wir Termine für die Zweitimpfung zur Verfügung haben, finden Sie diese auch auf dieser Webseite.
Sehen Sie von weiteren telefonischen Anfragen ab!
"; + }else{ + ?> +
+ + \ No newline at end of file diff --git a/index.php b/index.php index de19f3c..f649e10 100644 --- a/index.php +++ b/index.php @@ -1,179 +1,179 @@ - - - - - - - - -
-"; -?> - -
Aktuelle Informationen
- --
-
-
Wir impfen gegen Gürtelrose, Grippe, Corona und andere Erkrankungen! Anmeldung online! Derzeit Beratung auch in der normalen Sprechstunde.
- Impftermin sichern -- Warteliste Grippeschutzimpfung -
-
-
Haben Sie Fragen?
- Nutzen Sie unsere Formulare für eine Anfrage an unser Praxisteam.- Frage stellen -
-
- - - -
+"; +?> + +
Aktuelle Informationen
+ ++
+
+
Wir impfen gegen Gürtelrose, Grippe, Corona und andere Erkrankungen! Anmeldung online! Derzeit Beratung auch in der normalen Sprechstunde.
+ Impftermin sichern ++ Warteliste Grippeschutzimpfung +
+
+
Haben Sie Fragen?
+ Nutzen Sie unsere Formulare für eine Anfrage an unser Praxisteam.+ Frage stellen +
+
+ + + +
Interner Bereich
- -Hallo ,
- Herzlich Willkommen im internen Bereich von !
"; - echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; - echo "'; - - - } - if(!check_userdatenvorhanden()){ - - echo "
"; - echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; - echo "'; - - - } - - - - if(check_mailreg() && check_userdatenvorhanden() ){ - ?> + + + + + + +
Interner Bereich
+ +Hallo ,
+ Herzlich Willkommen im internen Bereich von !
"; + echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; + echo "'; + + + } + if(!check_userdatenvorhanden()){ + + echo "
"; + echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; + echo "'; + + + } + + + + if(check_mailreg() && check_userdatenvorhanden() ){ + ?>
Neue Anfragen können Sie über diesen Button einreichen:
@@ -58,69 +58,69 @@ if( is_checked_in_index() ){
Hier können Sie Ihre Anfragen einsehen. Die Antwort erhalten Sie per E-Mail.
- - - - - - - - - -
Interner Bereich
- -Nach der Anmeldung können Sie Ihre Anfragen an einsehen oder neue Anfragen erstellen.
- Bevor Sie sich anmelden können, müssen Sie sich registieren.
- - - - - - - - - - -
+ + + + + + + + + +
Interner Bereich
+ +Nach der Anmeldung können Sie Ihre Anfragen an einsehen oder neue Anfragen erstellen.
+ Bevor Sie sich anmelden können, müssen Sie sich registieren.
+ + + + + + + + + + +
PHP Calendar
-PHP Calendar
+Interner Bereich
- - Hallo ,- Herzlich Willkommen im internen Bereich von !
- - -
"; - echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; - echo "'; - - - } - if(!check_userdatenvorhanden()){ - - echo "
"; - echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; - echo "'; - - - } - - - - if(check_mailreg() && check_userdatenvorhanden() ){ - if($_POST["aktion"] == "11"){ - - $sqlstring = "SELECT * FROM anfragen INNER JOIN persons ON anfragen.requester_person_id = persons.person_id INNER JOIN anfrageart ON anfragen.anforderungart = anfrageart.artid WHERE anfrageid='" . $_POST["anfrageid"] . "'"; - $query = mysqli_query($con,$sqlstring); - // Ticket und Antwort ansehen. - while ($row = $query->fetch_assoc()) { - - - $anfrageid = $row["anfrageid"]; - $Zeitanzeige = $datum . " " . $start . "-" . $ende ; - $userid = $row["userid"]; - $checked = $row["checked"]; - $workerid = $row["workerid"]; - $antwortid = $row["antwortid"]; - $date_created = $row["create_time"]; - - $vorname = $row["vorname"]; - $nachname = $row["nachname"]; - $mail = $row["mail"]; - $tel = $row["tele"]; - - $geburtstag = $row["geburtstag"]; - $ausgabegeburstag = $geburtstag; - - $ort = $row["ort"]; - $plz = $row["plz"]; - $strasse = $row["strasse"]; - $ordnungsid = $row["ordnungsid"]; - $ordnungsstring = GetOrdnungsid($ordnungsid); - $nachricht = $row["nachricht"]; - $medikamenteins = $row["medikament1"]; - $medikamentzwei = $row["medikament2"]; - $medikamentdrei = $row["medikament3"]; - $medikamentvier = $row["medikament4"]; - $medikamentfuenf = $row["medikament5"]; - $medikamentsechs = $row["medikament6"]; - $anfrageart = $row["artname"]; - #$anfrageart = iconv('UTF-8' ,'CP1252//IGNORE', $anfrageart); - $antworttext = $row["antworttext"]; - $WeitereInfos= ""; - if($medikamenteins){ - $WeitereInfos .= "Medikament1: $medikamenteins
"; - } - if($medikamentzwei){ - $WeitereInfos .= "Medikament2: $medikamentzwei
"; - } - if($medikamentdrei){ - $WeitereInfos .= "Medikament3: $medikamentdrei
"; - } - if($medikamentvier){ - $WeitereInfos .= "Medikament4: $medikamentvier
"; - } - if($medikamentfuenf){ - $WeitereInfos .= "Medikament5: $medikamentfuenf
"; - } - if($medikamentsechs){ - $WeitereInfos .= "Medikament6: $medikamentsechs
"; - } - if($nachricht){ - $WeitereInfos .= "Nachricht: $nachricht"; - } - - $datumausgabe= date("d.m.Y H:i", strtotime($date_created )); - - $ausgabeworker = GetWorkerName($workerid); - $farbe = GetStatusFarbe($checked); - $checkausgabe = GetStatus($checked); - - $userausgabe = $vorname . " " . $nachname; - $adresse = $plz . " " . $ort . ", " . $strasse ; - /* - $queryconfig = mysqli_query($con, "Select betreff,body,name FROM mailtemplates WHERE templetid='$antwortid' "); - $rowconfig = mysqli_fetch_assoc($queryconfig); - $body = $rowconfig["body"]; - $betreff = $rowconfig["betreff"]; - */ - //$name = $rowconfig["name"]; - //$betreff = iconv('CP1252//IGNORE', 'UTF-8' , $betreff); - $body = iconv('CP1252//IGNORE', 'UTF-8' , $antworttext); - - - echo "Person:
$userausgabe
Anfrageinformationen:
$ordnungsstring - $anfrageart
$WeitereInfos
Status der Anfrage:
$checkausgabe - $datumausgabe
"; - - echo "Antwortnachricht:
"; - echo "$body
"; - - echo "'; - - } - - - }else{ - - - ?> -
Hier finden Sie die letzten 100 Anfragen für die E-Mail-Adresse ''.
Die Antworten können Sie auf dieser Webseite datenschutzkonform einsehen.
| Person/Adresse | createdate | Anfragedatum | Anfrage/Status | Aktion |
|---|---|---|---|---|
| $userausgabe $adresse | $date_created | $datumausgabe | $ordnungsstring - $anfrageart $WeitereInfos Status: $checkausgabe $antwortzeit | ";
- echo "";
- if($checked == "10"){
- echo "
-
-
-
- ";
- }else{
-
- echo "Keine Antwort einsehbar.";
-
- }
- echo " |
"; - echo "
"; - echo "
"; - echo "
"; - - } - } - -?> -
Interner Bereich
+ + Hallo ,+ Herzlich Willkommen im internen Bereich von !
+ + +
"; + echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; + echo "'; + + + } + if(!check_userdatenvorhanden()){ + + echo "
"; + echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; + echo "'; + + + } + + + + if(check_mailreg() && check_userdatenvorhanden() ){ + if($_POST["aktion"] == "11"){ + + $sqlstring = "SELECT * FROM anfragen INNER JOIN persons ON anfragen.requester_person_id = persons.person_id INNER JOIN anfrageart ON anfragen.anforderungart = anfrageart.artid WHERE anfrageid='" . $_POST["anfrageid"] . "'"; + $query = mysqli_query($con,$sqlstring); + // Ticket und Antwort ansehen. + while ($row = $query->fetch_assoc()) { + + + $anfrageid = $row["anfrageid"]; + $Zeitanzeige = $datum . " " . $start . "-" . $ende ; + $userid = $row["userid"]; + $checked = $row["checked"]; + $workerid = $row["workerid"]; + $antwortid = $row["antwortid"]; + $date_created = $row["create_time"]; + + $vorname = $row["vorname"]; + $nachname = $row["nachname"]; + $mail = $row["mail"]; + $tel = $row["tele"]; + + $geburtstag = $row["geburtstag"]; + $ausgabegeburstag = $geburtstag; + + $ort = $row["ort"]; + $plz = $row["plz"]; + $strasse = $row["strasse"]; + $ordnungsid = $row["ordnungsid"]; + $ordnungsstring = GetOrdnungsid($ordnungsid); + $nachricht = $row["nachricht"]; + $medikamenteins = $row["medikament1"]; + $medikamentzwei = $row["medikament2"]; + $medikamentdrei = $row["medikament3"]; + $medikamentvier = $row["medikament4"]; + $medikamentfuenf = $row["medikament5"]; + $medikamentsechs = $row["medikament6"]; + $anfrageart = $row["artname"]; + #$anfrageart = iconv('UTF-8' ,'CP1252//IGNORE', $anfrageart); + $antworttext = $row["antworttext"]; + $WeitereInfos= ""; + if($medikamenteins){ + $WeitereInfos .= "Medikament1: $medikamenteins
"; + } + if($medikamentzwei){ + $WeitereInfos .= "Medikament2: $medikamentzwei
"; + } + if($medikamentdrei){ + $WeitereInfos .= "Medikament3: $medikamentdrei
"; + } + if($medikamentvier){ + $WeitereInfos .= "Medikament4: $medikamentvier
"; + } + if($medikamentfuenf){ + $WeitereInfos .= "Medikament5: $medikamentfuenf
"; + } + if($medikamentsechs){ + $WeitereInfos .= "Medikament6: $medikamentsechs
"; + } + if($nachricht){ + $WeitereInfos .= "Nachricht: $nachricht"; + } + + $datumausgabe= date("d.m.Y H:i", strtotime($date_created )); + + $ausgabeworker = GetWorkerName($workerid); + $farbe = GetStatusFarbe($checked); + $checkausgabe = GetStatus($checked); + + $userausgabe = $vorname . " " . $nachname; + $adresse = $plz . " " . $ort . ", " . $strasse ; + /* + $queryconfig = mysqli_query($con, "Select betreff,body,name FROM mailtemplates WHERE templetid='$antwortid' "); + $rowconfig = mysqli_fetch_assoc($queryconfig); + $body = $rowconfig["body"]; + $betreff = $rowconfig["betreff"]; + */ + //$name = $rowconfig["name"]; + //$betreff = iconv('CP1252//IGNORE', 'UTF-8' , $betreff); + $body = iconv('CP1252//IGNORE', 'UTF-8' , $antworttext); + + + echo "Person:
$userausgabe
Anfrageinformationen:
$ordnungsstring - $anfrageart
$WeitereInfos
Status der Anfrage:
$checkausgabe - $datumausgabe
"; + + echo "Antwortnachricht:
"; + echo "$body
"; + + echo "'; + + } + + + }else{ + + + ?> +
Hier finden Sie die letzten 100 Anfragen für die E-Mail-Adresse ''.
Die Antworten können Sie auf dieser Webseite datenschutzkonform einsehen.
| Person/Adresse | createdate | Anfragedatum | Anfrage/Status | Aktion |
|---|---|---|---|---|
| $userausgabe $adresse | $date_created | $datumausgabe | $ordnungsstring - $anfrageart $WeitereInfos Status: $checkausgabe $antwortzeit | ";
+ echo "";
+ if($checked == "10"){
+ echo "
+
+
+
+ ";
+ }else{
+
+ echo "Keine Antwort einsehbar.";
+
+ }
+ echo " |
"; + echo "
"; + echo "
"; + echo "
"; + + } + } + +?> +
Neue Anfrage
- -Hallo ,
"; - echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; - echo "'; - - - } - if(!check_userdatenvorhanden()){ - echo "
"; - echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; - echo "'; - - - - } - - - if(check_mailreg() && check_userdatenvorhanden() ){ - ?> -
Hier können Sie eine neue Anfrage erstellen.
- - Kontrollieren Sie Ihre Angaben!'; - echo ''; - - - }else if($_POST["aktion"] == "2"){ - - $vorname = $user["vorname"]; - $nachname = $user["nachname"]; - $Email = $user["email"]; - $userid = $_POST["anfragender"]; - - $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); - $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); - $medikament3 = mysqli_real_escape_string($con, $_POST["Medikament3"]); - $medikament4 = mysqli_real_escape_string($con, $_POST["Medikament4"]); - $medikament5 = mysqli_real_escape_string($con, $_POST["Medikament5"]); - $medikament6 = mysqli_real_escape_string($con, $_POST["Medikament6"]); - $nachricht = mysqli_real_escape_string($con, $_POST["message"]); - $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); - $abholung = $_POST["abholung"]; - - - if($abholung == "Praxis"){ - $abholungnr="1"; - }elseif($abholung == "Apotheke"){ - $abholungnr="2"; - } - $karte = $_POST["karte"]; - if($karte == "Privat"){ - $karte = "Privatrezept (Selbstzahler)"; - } - - - $nachricht = "Karte eingelesen: " . $karte . "
"."Abholungsort: " . $abholung . "
". $nachricht ; - - // Impfstoff - //$impfstoff = $rowtime["impfstoff"]; - $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; - $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); - $rowimpf = mysqli_fetch_assoc($queryimpfstoff); - $impfstofftext = $rowimpf["impfname"]; - - $sendmail = false; - - // Check connection - if ($con -> connect_errno) { - echo "Failed to connect to MySQL: " . $con -> connect_error; - exit(); - }else{ - - if(!$userid){ - echo "
Keine eindeutige Kennung
Leider konnte unser System Ihnen keine eindeutige Benutzerkennung anlegen. Bitte wenden Sie sich an info@praxis-creutzburg.de.
Unser Team versucht dann schnellstmöglich das Problem zu lösen.
"; - }else{ - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - $query = mysqli_query($con, "SELECT * FROM anfragen WHERE personid='".$userid."' AND anforderungart='".$anforderungart."' AND nachricht='".$nachricht."' AND create_time >= '" . date('Y-m-d', strtotime('-7 days')) ."'"); - if($query->num_rows == 0){ - $sendmail = true; - //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; - $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, medikament1, medikament2,medikament3, medikament4,medikament5, medikament6, nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."', '".$medikament1."', '".$medikament2."','".$medikament3."', '".$medikament4."','".$medikament5."', '".$medikament6."', '".$nachricht."', '".$hash."', now(), '1', '".$abholungnr ."', '1', '1')"); - - if($query){ - //echo "$hash"; - $anfrageid = mysqli_insert_id($con); - - SendMailMessageVorlage($con, "3", $anfrageid , "26" ); - - - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; - - - }else{ - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; - - } - }else{ - echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; - - } - } - - - - - } - - - }else if($_POST["aktion"] == "4"){ - - // Urlaubsabfrage - $query = mysqli_query($con, "SELECT urlaubid FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."'"); - - if (!$query) - { - die('Error: ' . mysqli_error($con)); - } - - if($query->num_rows != 0){ - - - echo "
Praxis im Urlaub
"; - echo "Wir befinden uns aktuell im Urlaub.Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; - $query = mysqli_query($con, "SELECT ende,vertretung,vertretertelefon,vertreteradresse,vertreterurl FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."' ORDER BY ende DESC"); - $row = mysqli_fetch_assoc($query); - $vertreter = $row["vertretung"]; - $vertretertelefon = $row["vertretertelefon"]; - $vertreteradresse = $row["vertreteradresse"]; - $vertreterurl = $row["vertreterurl"]; - $ende = $row["ende"]; - $endeausgabe= date("d.m.Y", strtotime("+1 day", strtotime($ende ))); - if($vertreter){ - echo "Unsere Vertretung: $vertreter
"; - } - if($vertreterurl){ - echo "Webseite Vertretung: $vertreterurl
"; - } - if($vertretertelefon){ - echo "Telefonischer Kontakt Vertretung: $vertretertelefon
"; - } - if($vertreteradresse){ - echo "Adresse Vertretung: $vertreteradresse
"; - } - echo "
Wir stehen Ihnen ab dem ". $endeausgabe . " wieder zur Verfügung.
"; - ?> - - - - - -
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
- - - '; - echo ''; - ?> -"; - echo "Geburtstag: " . $user["geburtstag"] . "
"; - echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; - echo ''; - ?> - - -
-
-
-
- - - -
- - -
- Aktuell befinden wir uns im . Quartal von .
- Dieses geht vom bis
- Heute ist der .
Diese Angaben werden bei der Bearbeitung von unserem Praxisteam überprüft.
- War die Chipkarte dieses Quartal noch nicht eingelesen, ist die Abholung nur in der Praxis möglich. -
- -
- -
- -
- -
- -
- -
- -
- -
- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- - - -
-
- -
- - -
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
- - - '; - echo ''; - ?> - - - Benutzer"; - echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; - echo "Geburtstag: " . $user["geburtstag"] . "
"; - echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; - echo ''; - ?> - - - -
-
-
-
- - - -
- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- - - -
-
- -
- - -
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
- - - '; - echo ''; - ?> - - Benutzer"; - echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; - echo "Geburtstag: " . $user["geburtstag"] . "
"; - echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; - echo ''; - ?> - - -
-
-
- -
- - - -
- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- - - -
-
- -
- - -
'; - echo ''; - - - }else if($_POST["aktion"] == "6"){ - - $userid = $_POST["anfragender"]; - $vorname = $user["vorname"]; - $nachname = $user["nachname"]; - $Email = $user["email"]; - - $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); - $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); - $nachricht = mysqli_real_escape_string($con, $_POST["message"]); - $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); - - // Impfstoff - //$impfstoff = $rowtime["impfstoff"]; - $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; - $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); - $rowimpf = mysqli_fetch_assoc($queryimpfstoff); - $impfstofftext = $rowimpf["impfname"]; - - $sendmail = false; - - // Check connection - if ($con -> connect_errno) { - echo "Failed to connect to MySQL: " . $con -> connect_error; - exit(); - }else{ - - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - - - $sendmail = true; - //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; - $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); - - if($query){ - //echo "$hash"; - $anfrageid = mysqli_insert_id($con); - SendMailMessageVorlage($con, "3", $anfrageid , "19" ); - - - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; - - - }else{ - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; - - } - - - - - - - } - - - }elseif($_POST["aktion"] == "7"){ - - - echo '
Kontrollieren Sie Ihre Angaben!
'; - echo ''; - - - }else if($_POST["aktion"] == "8"){ - - $userid = $_POST["anfragender"]; - $vorname = $user["vorname"]; - $nachname = $user["nachname"]; - $Email = $user["email"]; - - $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); - $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); - $nachricht = mysqli_real_escape_string($con, $_POST["message"]); - $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); - - // Impfstoff - //$impfstoff = $rowtime["impfstoff"]; - $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; - $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); - $rowimpf = mysqli_fetch_assoc($queryimpfstoff); - $impfstofftext = $rowimpf["impfname"]; - - $sendmail = false; - - // Check connection - if ($con -> connect_errno) { - echo "Failed to connect to MySQL: " . $con -> connect_error; - exit(); - }else{ - - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - - - $sendmail = true; - //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; - $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); - - if($query){ - //echo "$hash"; - $anfrageid = mysqli_insert_id($con); - SendMailMessageVorlage($con, "3", $anfrageid , "19" ); - - - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; - - - }else{ - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; - - } - - - - - - - } - - - }else{ - - echo "
Wählen Sie die Anfragenart aus:
- - - - "; - }else{ - - echo InfoAusgeloggtePerson(); - - ?> - - - - - - - - - -
Neue Anfrage
+ +Hallo ,
"; + echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; + echo "'; + + + } + if(!check_userdatenvorhanden()){ + echo "
"; + echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; + echo "'; + + + + } + + + if(check_mailreg() && check_userdatenvorhanden() ){ + ?> +
Hier können Sie eine neue Anfrage erstellen.
+ + Kontrollieren Sie Ihre Angaben!'; + echo ''; + + + }else if($_POST["aktion"] == "2"){ + + $vorname = $user["vorname"]; + $nachname = $user["nachname"]; + $Email = $user["email"]; + $userid = $_POST["anfragender"]; + + $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); + $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); + $medikament3 = mysqli_real_escape_string($con, $_POST["Medikament3"]); + $medikament4 = mysqli_real_escape_string($con, $_POST["Medikament4"]); + $medikament5 = mysqli_real_escape_string($con, $_POST["Medikament5"]); + $medikament6 = mysqli_real_escape_string($con, $_POST["Medikament6"]); + $nachricht = mysqli_real_escape_string($con, $_POST["message"]); + $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); + $abholung = $_POST["abholung"]; + + + if($abholung == "Praxis"){ + $abholungnr="1"; + }elseif($abholung == "Apotheke"){ + $abholungnr="2"; + } + $karte = $_POST["karte"]; + if($karte == "Privat"){ + $karte = "Privatrezept (Selbstzahler)"; + } + + + $nachricht = "Karte eingelesen: " . $karte . "
"."Abholungsort: " . $abholung . "
". $nachricht ; + + // Impfstoff + //$impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $sendmail = false; + + // Check connection + if ($con -> connect_errno) { + echo "Failed to connect to MySQL: " . $con -> connect_error; + exit(); + }else{ + + if(!$userid){ + echo "
Keine eindeutige Kennung
Leider konnte unser System Ihnen keine eindeutige Benutzerkennung anlegen. Bitte wenden Sie sich an info@praxis-creutzburg.de.
Unser Team versucht dann schnellstmöglich das Problem zu lösen.
"; + }else{ + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + $query = mysqli_query($con, "SELECT * FROM anfragen WHERE personid='".$userid."' AND anforderungart='".$anforderungart."' AND nachricht='".$nachricht."' AND create_time >= '" . date('Y-m-d', strtotime('-7 days')) ."'"); + if($query->num_rows == 0){ + $sendmail = true; + //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; + $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, medikament1, medikament2,medikament3, medikament4,medikament5, medikament6, nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."', '".$medikament1."', '".$medikament2."','".$medikament3."', '".$medikament4."','".$medikament5."', '".$medikament6."', '".$nachricht."', '".$hash."', now(), '1', '".$abholungnr ."', '1', '1')"); + + if($query){ + //echo "$hash"; + $anfrageid = mysqli_insert_id($con); + + SendMailMessageVorlage($con, "3", $anfrageid , "26" ); + + + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; + + + }else{ + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; + + } + }else{ + echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; + + } + } + + + + + } + + + }else if($_POST["aktion"] == "4"){ + + // Urlaubsabfrage + $query = mysqli_query($con, "SELECT urlaubid FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."'"); + + if (!$query) + { + die('Error: ' . mysqli_error($con)); + } + + if($query->num_rows != 0){ + + + echo "
Praxis im Urlaub
"; + echo "Wir befinden uns aktuell im Urlaub.Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; + $query = mysqli_query($con, "SELECT ende,vertretung,vertretertelefon,vertreteradresse,vertreterurl FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."' ORDER BY ende DESC"); + $row = mysqli_fetch_assoc($query); + $vertreter = $row["vertretung"]; + $vertretertelefon = $row["vertretertelefon"]; + $vertreteradresse = $row["vertreteradresse"]; + $vertreterurl = $row["vertreterurl"]; + $ende = $row["ende"]; + $endeausgabe= date("d.m.Y", strtotime("+1 day", strtotime($ende ))); + if($vertreter){ + echo "Unsere Vertretung: $vertreter
"; + } + if($vertreterurl){ + echo "Webseite Vertretung: $vertreterurl
"; + } + if($vertretertelefon){ + echo "Telefonischer Kontakt Vertretung: $vertretertelefon
"; + } + if($vertreteradresse){ + echo "Adresse Vertretung: $vertreteradresse
"; + } + echo "
Wir stehen Ihnen ab dem ". $endeausgabe . " wieder zur Verfügung.
"; + ?> + + + + + +
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
+ + + '; + echo ''; + ?> +"; + echo "Geburtstag: " . $user["geburtstag"] . "
"; + echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; + echo ''; + ?> + + +
+
+
+
+ + + +
+ + +
+ Aktuell befinden wir uns im . Quartal von .
+ Dieses geht vom bis
+ Heute ist der .
Diese Angaben werden bei der Bearbeitung von unserem Praxisteam überprüft.
+ War die Chipkarte dieses Quartal noch nicht eingelesen, ist die Abholung nur in der Praxis möglich. +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ + + +
+
+ +
+ + +
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
+ + + '; + echo ''; + ?> + + + Benutzer"; + echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; + echo "Geburtstag: " . $user["geburtstag"] . "
"; + echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; + echo ''; + ?> + + + +
+
+
+
+ + + +
+ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ + + +
+
+ +
+ + +
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
+ + + '; + echo ''; + ?> + + Benutzer"; + echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; + echo "Geburtstag: " . $user["geburtstag"] . "
"; + echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; + echo ''; + ?> + + +
+
+
+ +
+ + + +
+ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ + + +
+
+ +
+ + +
'; + echo ''; + + + }else if($_POST["aktion"] == "6"){ + + $userid = $_POST["anfragender"]; + $vorname = $user["vorname"]; + $nachname = $user["nachname"]; + $Email = $user["email"]; + + $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); + $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); + $nachricht = mysqli_real_escape_string($con, $_POST["message"]); + $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); + + // Impfstoff + //$impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $sendmail = false; + + // Check connection + if ($con -> connect_errno) { + echo "Failed to connect to MySQL: " . $con -> connect_error; + exit(); + }else{ + + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + + + $sendmail = true; + //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; + $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); + + if($query){ + //echo "$hash"; + $anfrageid = mysqli_insert_id($con); + SendMailMessageVorlage($con, "3", $anfrageid , "19" ); + + + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; + + + }else{ + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; + + } + + + + + + + } + + + }elseif($_POST["aktion"] == "7"){ + + + echo '
Kontrollieren Sie Ihre Angaben!
'; + echo ''; + + + }else if($_POST["aktion"] == "8"){ + + $userid = $_POST["anfragender"]; + $vorname = $user["vorname"]; + $nachname = $user["nachname"]; + $Email = $user["email"]; + + $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); + $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); + $nachricht = mysqli_real_escape_string($con, $_POST["message"]); + $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); + + // Impfstoff + //$impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $sendmail = false; + + // Check connection + if ($con -> connect_errno) { + echo "Failed to connect to MySQL: " . $con -> connect_error; + exit(); + }else{ + + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + + + $sendmail = true; + //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; + $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); + + if($query){ + //echo "$hash"; + $anfrageid = mysqli_insert_id($con); + SendMailMessageVorlage($con, "3", $anfrageid , "19" ); + + + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; + + + }else{ + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; + + } + + + + + + + } + + + }else{ + + echo "
Wählen Sie die Anfragenart aus:
+ + + + "; + }else{ + + echo InfoAusgeloggtePerson(); + + ?> + + + + + + + + + +
Neue Anfrage
- -Hallo ,
"; - echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; - echo "'; - - - } - if(!check_userdatenvorhanden()){ - echo "
"; - echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; - echo "'; - - - - } - - - if(check_mailreg() && check_userdatenvorhanden() ){ - ?> -
Hier können Sie eine neue Anfrage erstellen.
- - Kontrollieren Sie Ihre Angaben!'; - echo ''; - - - }else if($_POST["aktion"] == "2"){ - - $vorname = $user["vorname"]; - $nachname = $user["nachname"]; - $Email = $user["email"]; - $userid = $_POST["anfragender"]; - - $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); - $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); - $medikament3 = mysqli_real_escape_string($con, $_POST["Medikament3"]); - $medikament4 = mysqli_real_escape_string($con, $_POST["Medikament4"]); - $medikament5 = mysqli_real_escape_string($con, $_POST["Medikament5"]); - $medikament6 = mysqli_real_escape_string($con, $_POST["Medikament6"]); - $nachricht = mysqli_real_escape_string($con, $_POST["message"]); - $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); - $abholung = $_POST["abholung"]; - - - if($abholung == "Praxis"){ - $abholungnr="1"; - }elseif($abholung == "Apotheke"){ - $abholungnr="2"; - } - $karte = $_POST["karte"]; - if($karte == "Privat"){ - $karte = "Privatrezept (Selbstzahler)"; - } - - - $nachricht = "Karte eingelesen: " . $karte . "
"."Abholungsort: " . $abholung . "
". $nachricht ; - - // Impfstoff - //$impfstoff = $rowtime["impfstoff"]; - $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; - $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); - $rowimpf = mysqli_fetch_assoc($queryimpfstoff); - $impfstofftext = $rowimpf["impfname"]; - - $sendmail = false; - - // Check connection - if ($con -> connect_errno) { - echo "Failed to connect to MySQL: " . $con -> connect_error; - exit(); - }else{ - - if(!$userid){ - echo "
Keine eindeutige Kennung
Leider konnte unser System Ihnen keine eindeutige Benutzerkennung anlegen. Bitte wenden Sie sich an info@praxis-creutzburg.de.
Unser Team versucht dann schnellstmöglich das Problem zu lösen.
"; - }else{ - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - $query = mysqli_query($con, "SELECT * FROM anfragen WHERE personid='".$userid."' AND anforderungart='".$anforderungart."' AND nachricht='".$nachricht."' AND create_time >= '" . date('Y-m-d', strtotime('-7 days')) ."'"); - if($query->num_rows == 0){ - $sendmail = true; - //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; - $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, medikament1, medikament2,medikament3, medikament4,medikament5, medikament6, nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."', '".$medikament1."', '".$medikament2."','".$medikament3."', '".$medikament4."','".$medikament5."', '".$medikament6."', '".$nachricht."', '".$hash."', now(), '1', '".$abholungnr ."', '1', '1')"); - - if($query){ - //echo "$hash"; - $anfrageid = mysqli_insert_id($con); - - SendMailMessageVorlage($con, "3", $anfrageid , "26" ); - - - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; - - - }else{ - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; - - } - }else{ - echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; - - } - } - - - - - } - - - }else if($_POST["aktion"] == "4"){ - - // Urlaubsabfrage - $query = mysqli_query($con, "SELECT urlaubid FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."'"); - - if (!$query) - { - die('Error: ' . mysqli_error($con)); - } - - if($query->num_rows != 0){ - - - echo "
Praxis im Urlaub
"; - echo "Wir befinden uns aktuell im Urlaub.Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; - $query = mysqli_query($con, "SELECT ende,vertretung,vertretertelefon,vertreteradresse,vertreterurl FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."' ORDER BY ende DESC"); - $row = mysqli_fetch_assoc($query); - $vertreter = $row["vertretung"]; - $vertretertelefon = $row["vertretertelefon"]; - $vertreteradresse = $row["vertreteradresse"]; - $vertreterurl = $row["vertreterurl"]; - $ende = $row["ende"]; - $endeausgabe= date("d.m.Y", strtotime("+1 day", strtotime($ende ))); - if($vertreter){ - echo "Unsere Vertretung: $vertreter
"; - } - if($vertreterurl){ - echo "Webseite Vertretung: $vertreterurl
"; - } - if($vertretertelefon){ - echo "Telefonischer Kontakt Vertretung: $vertretertelefon
"; - } - if($vertreteradresse){ - echo "Adresse Vertretung: $vertreteradresse
"; - } - echo "
Wir stehen Ihnen ab dem ". $endeausgabe . " wieder zur Verfügung.
"; - ?> - - - - - -
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
- - - '; - echo ''; - ?> -"; - echo "Geburtstag: " . $user["geburtstag"] . "
"; - echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; - echo ''; - ?> - - -
-
-
-
- - - -
- - -
- Aktuell befinden wir uns im . Quartal von .
- Dieses geht vom bis
- Heute ist der .
Diese Angaben werden bei der Bearbeitung von unserem Praxisteam überprüft.
- War die Chipkarte dieses Quartal noch nicht eingelesen, ist die Abholung nur in der Praxis möglich. -
- -
- -
- -
- -
- -
- -
- -
- -
- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- - - -
-
- -
- - -
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
- - - '; - echo ''; - ?> - - - Benutzer"; - echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; - echo "Geburtstag: " . $user["geburtstag"] . "
"; - echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; - echo ''; - ?> - - - -
-
-
-
- - - -
- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- - - -
-
- -
- - -
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
- - - '; - echo ''; - ?> - - Benutzer"; - echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; - echo "Geburtstag: " . $user["geburtstag"] . "
"; - echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; - echo ''; - ?> - - -
-
-
- -
- - - -
- Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
- - - -
-
- -
- - -
'; - echo ''; - - - }else if($_POST["aktion"] == "6"){ - - $userid = $_POST["anfragender"]; - $vorname = $user["vorname"]; - $nachname = $user["nachname"]; - $Email = $user["email"]; - - $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); - $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); - $nachricht = mysqli_real_escape_string($con, $_POST["message"]); - $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); - - // Impfstoff - //$impfstoff = $rowtime["impfstoff"]; - $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; - $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); - $rowimpf = mysqli_fetch_assoc($queryimpfstoff); - $impfstofftext = $rowimpf["impfname"]; - - $sendmail = false; - - // Check connection - if ($con -> connect_errno) { - echo "Failed to connect to MySQL: " . $con -> connect_error; - exit(); - }else{ - - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - - - $sendmail = true; - //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; - $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); - - if($query){ - //echo "$hash"; - $anfrageid = mysqli_insert_id($con); - SendMailMessageVorlage($con, "3", $anfrageid , "19" ); - - - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; - - - }else{ - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; - - } - - - - - - - } - - - }elseif($_POST["aktion"] == "7"){ - - - echo '
Kontrollieren Sie Ihre Angaben!
'; - echo ''; - - - }else if($_POST["aktion"] == "8"){ - - $userid = $_POST["anfragender"]; - $vorname = $user["vorname"]; - $nachname = $user["nachname"]; - $Email = $user["email"]; - - $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); - $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); - $nachricht = mysqli_real_escape_string($con, $_POST["message"]); - $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); - - // Impfstoff - //$impfstoff = $rowtime["impfstoff"]; - $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; - $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); - $rowimpf = mysqli_fetch_assoc($queryimpfstoff); - $impfstofftext = $rowimpf["impfname"]; - - $sendmail = false; - - // Check connection - if ($con -> connect_errno) { - echo "Failed to connect to MySQL: " . $con -> connect_error; - exit(); - }else{ - - - $hashvorher = $vorname . $nachname . $Email; - $hash = md5($hashvorher) . date("YmdHs"); - - - $sendmail = true; - //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; - $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); - - if($query){ - //echo "$hash"; - $anfrageid = mysqli_insert_id($con); - SendMailMessageVorlage($con, "3", $anfrageid , "19" ); - - - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; - - - }else{ - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; - - } - - - - - - - } - - - }else{ - - echo "
Wählen Sie die Anfragenart aus:
- - - - "; - }else{ - - echo InfoAusgeloggtePerson(); - - ?> - - - - - - - - - -
Neue Anfrage
+ +Hallo ,
"; + echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; + echo "'; + + + } + if(!check_userdatenvorhanden()){ + echo "
"; + echo "Es fehlen noch Informationen in Ihrem Stammdaten. Bitte pflegen Sie die Daten nach, damit
"; + echo "'; + + + + } + + + if(check_mailreg() && check_userdatenvorhanden() ){ + ?> +
Hier können Sie eine neue Anfrage erstellen.
+ + Kontrollieren Sie Ihre Angaben!'; + echo ''; + + + }else if($_POST["aktion"] == "2"){ + + $vorname = $user["vorname"]; + $nachname = $user["nachname"]; + $Email = $user["email"]; + $userid = $_POST["anfragender"]; + + $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); + $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); + $medikament3 = mysqli_real_escape_string($con, $_POST["Medikament3"]); + $medikament4 = mysqli_real_escape_string($con, $_POST["Medikament4"]); + $medikament5 = mysqli_real_escape_string($con, $_POST["Medikament5"]); + $medikament6 = mysqli_real_escape_string($con, $_POST["Medikament6"]); + $nachricht = mysqli_real_escape_string($con, $_POST["message"]); + $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); + $abholung = $_POST["abholung"]; + + + if($abholung == "Praxis"){ + $abholungnr="1"; + }elseif($abholung == "Apotheke"){ + $abholungnr="2"; + } + $karte = $_POST["karte"]; + if($karte == "Privat"){ + $karte = "Privatrezept (Selbstzahler)"; + } + + + $nachricht = "Karte eingelesen: " . $karte . "
"."Abholungsort: " . $abholung . "
". $nachricht ; + + // Impfstoff + //$impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $sendmail = false; + + // Check connection + if ($con -> connect_errno) { + echo "Failed to connect to MySQL: " . $con -> connect_error; + exit(); + }else{ + + if(!$userid){ + echo "
Keine eindeutige Kennung
Leider konnte unser System Ihnen keine eindeutige Benutzerkennung anlegen. Bitte wenden Sie sich an info@praxis-creutzburg.de.
Unser Team versucht dann schnellstmöglich das Problem zu lösen.
"; + }else{ + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + $query = mysqli_query($con, "SELECT * FROM anfragen WHERE personid='".$userid."' AND anforderungart='".$anforderungart."' AND nachricht='".$nachricht."' AND create_time >= '" . date('Y-m-d', strtotime('-7 days')) ."'"); + if($query->num_rows == 0){ + $sendmail = true; + //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; + $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, medikament1, medikament2,medikament3, medikament4,medikament5, medikament6, nachricht, hash, create_time, ordnungsid, abholort, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."', '".$medikament1."', '".$medikament2."','".$medikament3."', '".$medikament4."','".$medikament5."', '".$medikament6."', '".$nachricht."', '".$hash."', now(), '1', '".$abholungnr ."', '1', '1')"); + + if($query){ + //echo "$hash"; + $anfrageid = mysqli_insert_id($con); + + SendMailMessageVorlage($con, "3", $anfrageid , "26" ); + + + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; + + + }else{ + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; + + } + }else{ + echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; + + } + } + + + + + } + + + }else if($_POST["aktion"] == "4"){ + + // Urlaubsabfrage + $query = mysqli_query($con, "SELECT urlaubid FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."'"); + + if (!$query) + { + die('Error: ' . mysqli_error($con)); + } + + if($query->num_rows != 0){ + + + echo "
Praxis im Urlaub
"; + echo "Wir befinden uns aktuell im Urlaub.Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; + $query = mysqli_query($con, "SELECT ende,vertretung,vertretertelefon,vertreteradresse,vertreterurl FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."' ORDER BY ende DESC"); + $row = mysqli_fetch_assoc($query); + $vertreter = $row["vertretung"]; + $vertretertelefon = $row["vertretertelefon"]; + $vertreteradresse = $row["vertreteradresse"]; + $vertreterurl = $row["vertreterurl"]; + $ende = $row["ende"]; + $endeausgabe= date("d.m.Y", strtotime("+1 day", strtotime($ende ))); + if($vertreter){ + echo "Unsere Vertretung: $vertreter
"; + } + if($vertreterurl){ + echo "Webseite Vertretung: $vertreterurl
"; + } + if($vertretertelefon){ + echo "Telefonischer Kontakt Vertretung: $vertretertelefon
"; + } + if($vertreteradresse){ + echo "Adresse Vertretung: $vertreteradresse
"; + } + echo "
Wir stehen Ihnen ab dem ". $endeausgabe . " wieder zur Verfügung.
"; + ?> + + + + + +
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
+ + + '; + echo ''; + ?> +"; + echo "Geburtstag: " . $user["geburtstag"] . "
"; + echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; + echo ''; + ?> + + +
+
+
+
+ + + +
+ + +
+ Aktuell befinden wir uns im . Quartal von .
+ Dieses geht vom bis
+ Heute ist der .
Diese Angaben werden bei der Bearbeitung von unserem Praxisteam überprüft.
+ War die Chipkarte dieses Quartal noch nicht eingelesen, ist die Abholung nur in der Praxis möglich. +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ + + +
+
+ +
+ + +
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
+ + + '; + echo ''; + ?> + + + Benutzer"; + echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; + echo "Geburtstag: " . $user["geburtstag"] . "
"; + echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; + echo ''; + ?> + + + +
+
+
+
+ + + +
+ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ + + +
+
+ +
+ + +
Gehen Sie nach unten zum Formular und füllen Sie es aus. Sollte es nötig sein, können Sie Daten auch anpassen.
+ + + '; + echo ''; + ?> + + Benutzer"; + echo "Name: " . $user["vorname"] . " " . $user["nachname"] . ""; + echo "Geburtstag: " . $user["geburtstag"] . "
"; + echo "Adresse: " . $user["strasse"] . ", " . $user["plz"] . ", " . $user["ort"] . "
"; + echo ''; + ?> + + +
+
+
+ +
+ + + +
+ Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.
+ + + +
+
+ +
+ + +
'; + echo ''; + + + }else if($_POST["aktion"] == "6"){ + + $userid = $_POST["anfragender"]; + $vorname = $user["vorname"]; + $nachname = $user["nachname"]; + $Email = $user["email"]; + + $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); + $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); + $nachricht = mysqli_real_escape_string($con, $_POST["message"]); + $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); + + // Impfstoff + //$impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $sendmail = false; + + // Check connection + if ($con -> connect_errno) { + echo "Failed to connect to MySQL: " . $con -> connect_error; + exit(); + }else{ + + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + + + $sendmail = true; + //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; + $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); + + if($query){ + //echo "$hash"; + $anfrageid = mysqli_insert_id($con); + SendMailMessageVorlage($con, "3", $anfrageid , "19" ); + + + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; + + + }else{ + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; + + } + + + + + + + } + + + }elseif($_POST["aktion"] == "7"){ + + + echo '
Kontrollieren Sie Ihre Angaben!
'; + echo ''; + + + }else if($_POST["aktion"] == "8"){ + + $userid = $_POST["anfragender"]; + $vorname = $user["vorname"]; + $nachname = $user["nachname"]; + $Email = $user["email"]; + + $medikament1 = mysqli_real_escape_string($con, $_POST["Medikament1"]); + $medikament2 = mysqli_real_escape_string($con, $_POST["Medikament2"]); + $nachricht = mysqli_real_escape_string($con, $_POST["message"]); + $anforderungart = mysqli_real_escape_string($con, $_POST["category"]); + + // Impfstoff + //$impfstoff = $rowtime["impfstoff"]; + $sqlimpfstoffstring = "SELECT * FROM impfstoff WHERE impfid ='" . $impfstoff . "'"; + $queryimpfstoff = mysqli_query($con,$sqlimpfstoffstring); + $rowimpf = mysqli_fetch_assoc($queryimpfstoff); + $impfstofftext = $rowimpf["impfname"]; + + $sendmail = false; + + // Check connection + if ($con -> connect_errno) { + echo "Failed to connect to MySQL: " . $con -> connect_error; + exit(); + }else{ + + + $hashvorher = $vorname . $nachname . $Email; + $hash = md5($hashvorher) . date("YmdHs"); + + + $sendmail = true; + //echo "INSERT INTO warteliste (userid, hash, impfenangebot, impfstoff, Patientenart,Impfaufklaerung, WeitereFragen, date_created, impfenmit) VALUES ('".$userid."', '".$hash."', '".$impfenangebot."', '".$impfstoff."', '".$Patientenart."', '".$Impfaufklaerung."', '".$WeitereFragen."', now()), '".$impfenmit."'"; + $query = mysqli_query($con, "INSERT INTO anfragen (personid, anforderungart, nachricht, create_time, hash, ordnungsid, sicherenachricht, checked) VALUES ( '".$userid."', '".$anforderungart."','".$nachricht."', now(), '".$hash."', '2', '1', '1')"); + + if($query){ + //echo "$hash"; + $anfrageid = mysqli_insert_id($con); + SendMailMessageVorlage($con, "3", $anfrageid , "19" ); + + + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!
"; + + + }else{ + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
Nutzen Sie das Formular erneut.
"; + + } + + + + + + + } + + + }else{ + + echo "
Wählen Sie die Anfragenart aus:
+ + + + "; + }else{ + + echo InfoAusgeloggtePerson(); + + ?> + + + + + + + + + +
Neue Anfrage
"; -echo "Hallo " . e((string)($user['vorname'] ?? '')) . ",
"; - echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; - echo ""; -} - -if (!check_userdatenvorhanden()) { - echo "
"; - echo "Es fehlen noch Informationen in Ihren Stammdaten. Bitte pflegen Sie die Daten nach.
"; - echo ""; -} - -if (!(check_mailreg() && check_userdatenvorhanden())) { - echo "
"; - echo "
Praxis im Urlaub
"; - echo "Wir befinden uns aktuell im Urlaub.Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; - - if ($info) { - $ende = (string)$info['ende']; - $endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende))); - - if (!empty($info['vertretung'])) echo "Unsere Vertretung: " . e($info['vertretung']) . "
"; - if (!empty($info['vertreterurl'])) echo "Webseite Vertretung: " . e($info['vertreterurl']) . "
"; - if (!empty($info['vertretertelefon'])) echo "Telefonischer Kontakt Vertretung: " . e($info['vertretertelefon']) . "
"; - if (!empty($info['vertreteradresse'])) echo "Adresse Vertretung: " . e($info['vertreteradresse']) . "
"; - - echo "
Wir stehen Ihnen ab dem " . e($endeausgabe) . " wieder zur Verfügung.
"; - } - - echo ""; - echo "
Wählen Sie die Anfragenart aus:
"; - - echo ""; - include(__DIR__ . "/templates/footer.inc.php"); - exit; -} - -// choose -> show form -if ($aktion === 'choose') { - $anfrageart = (int)($_POST['anfrageart'] ?? 0); - $requester_person_id = (int)($_POST['requester_person_id'] ?? $personId); - - $mode = match ($anfrageart) { - 1 => 'rezept', - 2 => 'allgemein', - 3 => 'terminabsage', - default => '' - }; - if ($mode === '') { - echo "
Füllen Sie das Formular aus.
"; - echo ""; - - echo ""; - - echo ""; - include(__DIR__ . "/templates/footer.inc.php"); - exit; -} - -// confirm -> summary -if ($aktion === 'confirm') { - $mode = (string)($_POST['mode'] ?? ''); - $requester_person_id = (int)($_POST['requester_person_id'] ?? 0); - $category = (int)($_POST['category'] ?? 0); - - if ($requester_person_id <= 0 || $category <= 0 || $mode === '') { - echo "Kontrollieren Sie Ihre Angaben!
"; - echo ""; - - echo ""; - include(__DIR__ . "/templates/footer.inc.php"); - exit; -} - -// submit -> insert + mail -if ($aktion === 'submit') { - $mode = (string)($_POST['mode'] ?? ''); - $requester_person_id = (int)($_POST['requester_person_id'] ?? 0); - $anforderungart = (int)($_POST['category'] ?? 0); - $message = (string)($_POST['message'] ?? ''); - - if ($requester_person_id <= 0 || $anforderungart <= 0) { - echo "
Abholungsort: {$abholung}
" . $nachricht; - } - - $med = []; - for ($i = 1; $i <= 6; $i++) { - $med[$i] = trim((string)($_POST["Medikament{$i}"] ?? '')); - } - - // duplicate check (best effort) - $exists = false; - try { - $stmtDup = $pdo->prepare(" - SELECT * - FROM anfragen - WHERE requester_person_id = :pid - AND anforderungart = :art - AND nachricht = :nachricht - AND create_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) - "); - $stmtDup->execute([ - ':pid' => $requester_person_id, - ':art' => $anforderungart, - ':nachricht' => $nachricht, - ]); - $rows = $stmtDup->fetchAll(PDO::FETCH_ASSOC); - - $medFieldAliases = [ - 1 => ['med1', 'medikament1', 'med_1'], - 2 => ['med2', 'medikament2', 'med_2'], - 3 => ['med3', 'medikament3', 'med_3'], - 4 => ['med4', 'medikament4', 'med_4'], - 5 => ['med5', 'medikament5', 'med_5'], - 6 => ['med6', 'medikament6', 'med_6'], - ]; - - foreach ($rows as $row) { - $allMedsEqual = true; - for ($i = 1; $i <= 6; $i++) { - $dbValue = ''; - foreach ($medFieldAliases[$i] as $fieldName) { - if (array_key_exists($fieldName, $row)) { - $dbValue = trim((string)($row[$fieldName] ?? '')); - break; - } - } - if ($dbValue !== $med[$i]) { - $allMedsEqual = false; - break; - } - } - if ($allMedsEqual) { - $exists = true; - break; - } - } - } catch (Throwable $t) { - error_log('Duplicate check failed: ' . $t->getMessage()); - $exists = false; - } - - if ($exists) { - echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
- Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
- Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; - echo ""; - echo ""; - include(__DIR__ . "/templates/footer.inc.php"); - exit; - } - - $hash = bin2hex(random_bytes(16)); - $ordnungsid = ($mode === 'rezept') ? 1 : 2; - - try { - $anfrageid = insertAnfrage($pdo, [ - 'person_id' => $requester_person_id, - 'anforderungart' => $anforderungart, - 'med1' => $med[1], - 'med2' => $med[2], - 'med3' => $med[3], - 'med4' => $med[4], - 'med5' => $med[5], - 'med6' => $med[6], - 'nachricht' => $nachricht, - 'hash' => $hash, - 'ordnungsid' => $ordnungsid, - 'abholort' => $abholungnr, - 'sicherenachricht' => 1, - 'checked' => 1, - ]); - - $templateId = ($mode === 'rezept') ? 26 : 19; - - // IMPORTANT: Your SendMailMessageVorlage() must accept PDO after your migration. - SendMailMessageVorlage($pdo, "3", $anfrageid, (string)$templateId); - - echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
- Überprüfen Sie auch Ihren Spam-Filter!
"; - - } catch (Throwable $t) { - echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
"; - echo "
"; - - echo ""; - include(__DIR__ . "/templates/footer.inc.php"); - exit; -} - -// fallback -echo "
Neue Anfrage
"; +echo "Hallo " . e((string)($user['vorname'] ?? '')) . ",
"; + echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; + echo ""; +} + +if (!check_userdatenvorhanden()) { + echo "
"; + echo "Es fehlen noch Informationen in Ihren Stammdaten. Bitte pflegen Sie die Daten nach.
"; + echo ""; +} + +if (!(check_mailreg() && check_userdatenvorhanden())) { + echo "
"; + echo "
Praxis im Urlaub
"; + echo "Wir befinden uns aktuell im Urlaub.Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; + + if ($info) { + $ende = (string)$info['ende']; + $endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende))); + + if (!empty($info['vertretung'])) echo "Unsere Vertretung: " . e($info['vertretung']) . "
"; + if (!empty($info['vertreterurl'])) echo "Webseite Vertretung: " . e($info['vertreterurl']) . "
"; + if (!empty($info['vertretertelefon'])) echo "Telefonischer Kontakt Vertretung: " . e($info['vertretertelefon']) . "
"; + if (!empty($info['vertreteradresse'])) echo "Adresse Vertretung: " . e($info['vertreteradresse']) . "
"; + + echo "
Wir stehen Ihnen ab dem " . e($endeausgabe) . " wieder zur Verfügung.
"; + } + + echo ""; + echo ""; + include(__DIR__ . "/templates/footer.inc.php"); + exit; + } +} + +// default: show selection +if ($aktion === '') { + echo "
Wählen Sie die Anfragenart aus:
"; + + echo ""; + include(__DIR__ . "/templates/footer.inc.php"); + exit; +} + +// choose -> show form +if ($aktion === 'choose') { + $anfrageart = (int)($_POST['anfrageart'] ?? 0); + $requester_person_id = (int)($_POST['requester_person_id'] ?? $personId); + + $mode = match ($anfrageart) { + 1 => 'rezept', + 2 => 'allgemein', + 3 => 'terminabsage', + default => '' + }; + if ($mode === '') { + echo "
Füllen Sie das Formular aus.
"; + echo ""; + + echo ""; + + echo ""; + include(__DIR__ . "/templates/footer.inc.php"); + exit; +} + +// confirm -> summary +if ($aktion === 'confirm') { + $mode = (string)($_POST['mode'] ?? ''); + $requester_person_id = (int)($_POST['requester_person_id'] ?? 0); + $category = (int)($_POST['category'] ?? 0); + + if ($requester_person_id <= 0 || $category <= 0 || $mode === '') { + echo "Kontrollieren Sie Ihre Angaben!
"; + echo ""; + + echo ""; + include(__DIR__ . "/templates/footer.inc.php"); + exit; +} + +// submit -> insert + mail +if ($aktion === 'submit') { + $mode = (string)($_POST['mode'] ?? ''); + $requester_person_id = (int)($_POST['requester_person_id'] ?? 0); + $anforderungart = (int)($_POST['category'] ?? 0); + $message = (string)($_POST['message'] ?? ''); + + if ($requester_person_id <= 0 || $anforderungart <= 0) { + echo "
Abholungsort: {$abholung}
" . $nachricht; + } + + $med = []; + for ($i = 1; $i <= 6; $i++) { + $med[$i] = trim((string)($_POST["Medikament{$i}"] ?? '')); + } + + // duplicate check (best effort) + $exists = false; + try { + $stmtDup = $pdo->prepare(" + SELECT * + FROM anfragen + WHERE requester_person_id = :pid + AND anforderungart = :art + AND nachricht = :nachricht + AND create_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) + "); + $stmtDup->execute([ + ':pid' => $requester_person_id, + ':art' => $anforderungart, + ':nachricht' => $nachricht, + ]); + $rows = $stmtDup->fetchAll(PDO::FETCH_ASSOC); + + $medFieldAliases = [ + 1 => ['med1', 'medikament1', 'med_1'], + 2 => ['med2', 'medikament2', 'med_2'], + 3 => ['med3', 'medikament3', 'med_3'], + 4 => ['med4', 'medikament4', 'med_4'], + 5 => ['med5', 'medikament5', 'med_5'], + 6 => ['med6', 'medikament6', 'med_6'], + ]; + + foreach ($rows as $row) { + $allMedsEqual = true; + for ($i = 1; $i <= 6; $i++) { + $dbValue = ''; + foreach ($medFieldAliases[$i] as $fieldName) { + if (array_key_exists($fieldName, $row)) { + $dbValue = trim((string)($row[$fieldName] ?? '')); + break; + } + } + if ($dbValue !== $med[$i]) { + $allMedsEqual = false; + break; + } + } + if ($allMedsEqual) { + $exists = true; + break; + } + } + } catch (Throwable $t) { + error_log('Duplicate check failed: ' . $t->getMessage()); + $exists = false; + } + + if ($exists) { + echo "
Doppelte Anfrage
Ihre Anfrage wurde schon in unserem System gespeichert.
+ Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
+ Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.
"; + echo ""; + echo ""; + include(__DIR__ . "/templates/footer.inc.php"); + exit; + } + + $hash = bin2hex(random_bytes(16)); + $ordnungsid = ($mode === 'rezept') ? 1 : 2; + + try { + $anfrageid = insertAnfrage($pdo, [ + 'person_id' => $requester_person_id, + 'anforderungart' => $anforderungart, + 'med1' => $med[1], + 'med2' => $med[2], + 'med3' => $med[3], + 'med4' => $med[4], + 'med5' => $med[5], + 'med6' => $med[6], + 'nachricht' => $nachricht, + 'hash' => $hash, + 'ordnungsid' => $ordnungsid, + 'abholort' => $abholungnr, + 'sicherenachricht' => 1, + 'checked' => 1, + ]); + + $templateId = ($mode === 'rezept') ? 26 : 19; + + // IMPORTANT: Your SendMailMessageVorlage() must accept PDO after your migration. + SendMailMessageVorlage($pdo, "3", $anfrageid, (string)$templateId); + + echo "
Nachricht abgeschickt!
Sie bekommen eine Bestätigung per E-Mail!
+ Überprüfen Sie auch Ihren Spam-Filter!
"; + + } catch (Throwable $t) { + echo "
Speicherung nicht erfolgreich
Ihre Anfrage konnte nicht gespeichert werden.
"; + echo "
"; + + echo ""; + include(__DIR__ . "/templates/footer.inc.php"); + exit; +} + +// fallback +echo "
Anamnesebogen
- -connect_error) { - die("Verbindung fehlgeschlagen: " . $con->connect_error); - } - - if ($_SERVER["REQUEST_METHOD"] == "POST") { - $stmt = $con->prepare("INSERT INTO patientenaufnahme (name, geburtsdatum, beruf, telefon, handy, email, strasse, ort, krankheiten, raucher, alkohol, allergien, medikamente, groesse, gewicht, bemerkungen) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - - $name = htmlspecialchars($_POST['name']); - $geburtsdatum = htmlspecialchars($_POST['geburtsdatum']); - $beruf = htmlspecialchars($_POST['beruf']); - $telefon = htmlspecialchars($_POST['telefon']); - $handy = htmlspecialchars($_POST['handy']); - $email = htmlspecialchars($_POST['email']); - $strasse = htmlspecialchars($_POST['strasse']); - $ort = htmlspecialchars($_POST['ort']); - - // Erkrankungen speichern - $krankheiten = []; - foreach ($_POST['krankheiten'] as $krankheit => $details) { - $krankheiten[] = "$krankheit: " . ($details['ja_nein'] === 'ja' ? "Ja, seit " . htmlspecialchars($details['seit']) : "Nein"); - } - $krankheiten_json = json_encode($krankheiten); - - $raucher = htmlspecialchars($_POST['raucher']); - $alkohol = htmlspecialchars($_POST['alkohol']); - $allergien = htmlspecialchars($_POST['allergien']); - $medikamente = htmlspecialchars($_POST['medikamente']); - $groesse = htmlspecialchars($_POST['groesse']); - $gewicht = htmlspecialchars($_POST['gewicht']); - $bemerkungen = htmlspecialchars($_POST['bemerkungen']); - - $stmt->bind_param("ssssssssssssssss", $name, $geburtsdatum, $beruf, $telefon, $handy, $email, $strasse, $ort, $krankheiten_json, $raucher, $alkohol, $allergien, $medikamente, $groesse, $gewicht, $bemerkungen); - - if ($stmt->execute()) { - echo "Daten erfolgreich gespeichert!"; - } else { - echo "Fehler: " . $stmt->error; - } - $stmt->close(); - } - $con->close(); - - -}else{ - - -?> - - - - - -Bitte füllen Sie das Formular aus und senden Sie es ab.
- - - - '; - echo ''; - ?> --
-
-
-
-
-
-
Erkrankungen:
- $frage) { - $dateInputId = 'date_' . $index; - echo ""; - echo "
"; - } - ?> -
-
-
-
-
-
-
-
-
-
-
-
- - - - -Praxis im Urlaub"; - echo "Wir befinden uns aktuell im Urlaub.
Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; - $query = mysqli_query($con, "SELECT ende,vertretung,vertretertelefon,vertreteradresse,vertreterurl FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."' ORDER BY ende DESC"); - $row = mysqli_fetch_assoc($query); - $vertreter = $row["vertretung"]; - $vertretertelefon = $row["vertretertelefon"]; - $vertreteradresse = $row["vertreteradresse"]; - $vertreterurl = $row["vertreterurl"]; - $ende = $row["ende"]; - $endeausgabe= date("d.m.Y", strtotime("+1 day", strtotime($ende ))); - if($vertreter){ - echo "Unsere Vertretung: $vertreter
"; - } - if($vertreterurl){ - echo "Webseite Vertretung: $vertreterurl
"; - } - if($vertretertelefon){ - echo "Telefonischer Kontakt Vertretung: $vertretertelefon
"; - } - if($vertreteradresse){ - echo "Adresse Vertretung: $vertreteradresse
"; - } - echo "
Wir stehen Ihnen ab dem ". $endeausgabe . " wieder zur Verfügung.
"; - ?> - - - -
Anamnesebogen
+ +connect_error) { + die("Verbindung fehlgeschlagen: " . $con->connect_error); + } + + if ($_SERVER["REQUEST_METHOD"] == "POST") { + $stmt = $con->prepare("INSERT INTO patientenaufnahme (name, geburtsdatum, beruf, telefon, handy, email, strasse, ort, krankheiten, raucher, alkohol, allergien, medikamente, groesse, gewicht, bemerkungen) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + + $name = htmlspecialchars($_POST['name']); + $geburtsdatum = htmlspecialchars($_POST['geburtsdatum']); + $beruf = htmlspecialchars($_POST['beruf']); + $telefon = htmlspecialchars($_POST['telefon']); + $handy = htmlspecialchars($_POST['handy']); + $email = htmlspecialchars($_POST['email']); + $strasse = htmlspecialchars($_POST['strasse']); + $ort = htmlspecialchars($_POST['ort']); + + // Erkrankungen speichern + $krankheiten = []; + foreach ($_POST['krankheiten'] as $krankheit => $details) { + $krankheiten[] = "$krankheit: " . ($details['ja_nein'] === 'ja' ? "Ja, seit " . htmlspecialchars($details['seit']) : "Nein"); + } + $krankheiten_json = json_encode($krankheiten); + + $raucher = htmlspecialchars($_POST['raucher']); + $alkohol = htmlspecialchars($_POST['alkohol']); + $allergien = htmlspecialchars($_POST['allergien']); + $medikamente = htmlspecialchars($_POST['medikamente']); + $groesse = htmlspecialchars($_POST['groesse']); + $gewicht = htmlspecialchars($_POST['gewicht']); + $bemerkungen = htmlspecialchars($_POST['bemerkungen']); + + $stmt->bind_param("ssssssssssssssss", $name, $geburtsdatum, $beruf, $telefon, $handy, $email, $strasse, $ort, $krankheiten_json, $raucher, $alkohol, $allergien, $medikamente, $groesse, $gewicht, $bemerkungen); + + if ($stmt->execute()) { + echo "Daten erfolgreich gespeichert!"; + } else { + echo "Fehler: " . $stmt->error; + } + $stmt->close(); + } + $con->close(); + + +}else{ + + +?> + + + + + +Bitte füllen Sie das Formular aus und senden Sie es ab.
+ + + + '; + echo ''; + ?> ++
+
+
+
+
+
+
Erkrankungen:
+ $frage) { + $dateInputId = 'date_' . $index; + echo ""; + echo "
"; + } + ?> +
+
+
+
+
+
+
+
-
+
+
+
+ + + + +Praxis im Urlaub"; + echo "Wir befinden uns aktuell im Urlaub.
Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.
"; + $query = mysqli_query($con, "SELECT ende,vertretung,vertretertelefon,vertreteradresse,vertreterurl FROM urlaub WHERE start<='" . date("Y-m-d") ."' AND ende>='" . date("Y-m-d") ."' ORDER BY ende DESC"); + $row = mysqli_fetch_assoc($query); + $vertreter = $row["vertretung"]; + $vertretertelefon = $row["vertretertelefon"]; + $vertreteradresse = $row["vertreteradresse"]; + $vertreterurl = $row["vertreterurl"]; + $ende = $row["ende"]; + $endeausgabe= date("d.m.Y", strtotime("+1 day", strtotime($ende ))); + if($vertreter){ + echo "Unsere Vertretung: $vertreter
"; + } + if($vertreterurl){ + echo "Webseite Vertretung: $vertreterurl
"; + } + if($vertretertelefon){ + echo "Telefonischer Kontakt Vertretung: $vertretertelefon
"; + } + if($vertreteradresse){ + echo "Adresse Vertretung: $vertreteradresse
"; + } + echo "
Wir stehen Ihnen ab dem ". $endeausgabe . " wieder zur Verfügung.
"; + ?> + + + +
Ihre Hausarztpraxis in Coppenbrügge und Bisperode
- - Die Praxis Creutzburg hat aktuell die folgende Stellausschreibungen.- -
Ihre Hausarztpraxis in Coppenbrügge und Bisperode
+ + Die Praxis Creutzburg hat aktuell die folgende Stellausschreibungen.+ +
Patientenbefragung
-Patientenumfrage
+ +Vielen Dank für Ihre Teilnahme an der Umfrage!Sie unterstützen uns dabei unseren Service stätig zu verbessern!
"; +?> + + + +
Du wirst weitergeleitet. Falls die Weiterleitung nicht funktioniert, klicke hier.
- + + + + + + +Du wirst weitergeleitet. Falls die Weiterleitung nicht funktioniert, klicke hier.
+ \ No newline at end of file diff --git a/zeiterfassung/ZeitenAnzeige.php b/zeiterfassung/ZeitenAnzeige.php index d3fbc20..af7e91c 100644 --- a/zeiterfassung/ZeitenAnzeige.php +++ b/zeiterfassung/ZeitenAnzeige.php @@ -1,134 +1,134 @@ - - -Zeitenübersicht
- -- - - -
| Datum | -Typ | -Aktionen | -
|---|---|---|
| - | - - - - | -- - Anpassen - - | -
Zeitenübersicht
+ ++ + + +
| Datum | +Typ | +Aktionen | +
|---|---|---|
| + | + + + + | ++ + Anpassen + + | +
Zeitenübersicht
- -- - - - -
| Datum | -Typ | -Aktionen | -
|---|---|---|
| - | - - - - | -- Anpassen - | -
Zeitenübersicht
+ ++ + + + +
| Datum | +Typ | +Aktionen | +
|---|---|---|
| + | + + + + | ++ Anpassen + | +
Zeitbuchungsfehler Auswertung
- -prepare("SELECT id,vorname, nachname FROM users WHERE zeiterfassung='1' ORDER BY nachname ASC"); - $users_stmt->execute(); - $users = $users_stmt->fetchAll(PDO::FETCH_ASSOC); -} catch(PDOException $e) { - echo "Datenbankfehler: " . $e->getMessage(); -} - - -foreach($users AS $user){ - - - try { - // Holen Sie die fehlerhaften Zeitbuchungen des Mitarbeiters aus der Datenbank - $query = " - SELECT - DATE(timestamp_datetime) as datum, - SUM(CASE WHEN timestamp_type = 'KOMMEN' THEN 1 ELSE 0 END) as kommen_count, - SUM(CASE WHEN timestamp_type = 'GEHEN' THEN 1 ELSE 0 END) as gehen_count - FROM - timestamps - WHERE - employee_id = :employee_id - GROUP BY - DATE(timestamp_datetime) - HAVING - kommen_count != gehen_count"; - - $stmt = $pdo->prepare($query); - $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); - $stmt->execute(); - $fehlerhafteTage = $stmt->fetchAll(PDO::FETCH_ASSOC); - } catch(PDOException $e) { - echo "Datenbankfehler: " . $e->getMessage(); - } - - - try { - $query2 = " - SELECT - DATE(timestamp_datetime) AS datum, - GROUP_CONCAT(timestamp_type ORDER BY timestamp_datetime) AS day_sequence - FROM - timestamps - WHERE - employee_id = :employee_id - GROUP BY - DATE(timestamp_datetime);"; - - $stmt = $pdo->prepare($query2); - $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); - $stmt->execute(); - $result = $stmt->fetchAll(); - - $invalidDates = []; - - } catch(PDOException $e) { - echo "Datenbankfehler: " . $e->getMessage(); - } - - - try { - $query1 = " - SELECT - vorname, - nachname - FROM - users - WHERE - id = :employee_id - ORDER BY - nachname - "; - - $stmt = $pdo->prepare($query1); - $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); - $stmt->execute(); - $userdaten = $stmt->fetchAll(PDO::FETCH_ASSOC); - } catch(PDOException $e) { - echo "Datenbankfehler: " . $e->getMessage(); - } - - - foreach ($userdaten as $usertag){ - echo "" . $usertag["vorname"] . " " . $usertag["nachname"] . "
"; - - } - - - foreach ($result as $row) { - if (!isValidSequence($row["day_sequence"])) { - $invalidDates[] = $row["datum"]; - } - } - - - ?> - - - - - - - -| Datum | -Fehler | -Aktionen | -
|---|---|---|
| - | Fehlerhafte Daten | -- Anpassen - | -
Zeitbuchungsfehler Auswertung
+ +prepare("SELECT id,vorname, nachname FROM users WHERE zeiterfassung='1' ORDER BY nachname ASC"); + $users_stmt->execute(); + $users = $users_stmt->fetchAll(PDO::FETCH_ASSOC); +} catch(PDOException $e) { + echo "Datenbankfehler: " . $e->getMessage(); +} + + +foreach($users AS $user){ + + + try { + // Holen Sie die fehlerhaften Zeitbuchungen des Mitarbeiters aus der Datenbank + $query = " + SELECT + DATE(timestamp_datetime) as datum, + SUM(CASE WHEN timestamp_type = 'KOMMEN' THEN 1 ELSE 0 END) as kommen_count, + SUM(CASE WHEN timestamp_type = 'GEHEN' THEN 1 ELSE 0 END) as gehen_count + FROM + timestamps + WHERE + employee_id = :employee_id + GROUP BY + DATE(timestamp_datetime) + HAVING + kommen_count != gehen_count"; + + $stmt = $pdo->prepare($query); + $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); + $stmt->execute(); + $fehlerhafteTage = $stmt->fetchAll(PDO::FETCH_ASSOC); + } catch(PDOException $e) { + echo "Datenbankfehler: " . $e->getMessage(); + } + + + try { + $query2 = " + SELECT + DATE(timestamp_datetime) AS datum, + GROUP_CONCAT(timestamp_type ORDER BY timestamp_datetime) AS day_sequence + FROM + timestamps + WHERE + employee_id = :employee_id + GROUP BY + DATE(timestamp_datetime);"; + + $stmt = $pdo->prepare($query2); + $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); + $stmt->execute(); + $result = $stmt->fetchAll(); + + $invalidDates = []; + + } catch(PDOException $e) { + echo "Datenbankfehler: " . $e->getMessage(); + } + + + try { + $query1 = " + SELECT + vorname, + nachname + FROM + users + WHERE + id = :employee_id + ORDER BY + nachname + "; + + $stmt = $pdo->prepare($query1); + $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); + $stmt->execute(); + $userdaten = $stmt->fetchAll(PDO::FETCH_ASSOC); + } catch(PDOException $e) { + echo "Datenbankfehler: " . $e->getMessage(); + } + + + foreach ($userdaten as $usertag){ + echo "" . $usertag["vorname"] . " " . $usertag["nachname"] . "
"; + + } + + + foreach ($result as $row) { + if (!isValidSequence($row["day_sequence"])) { + $invalidDates[] = $row["datum"]; + } + } + + + ?> + + + + + + + +| Datum | +Fehler | +Aktionen | +
|---|---|---|
| + | Fehlerhafte Daten | ++ Anpassen + | +
Urlaubsanträge - Genehmigung
- -| Mitarbeiter | -Von | -Bis | -Tage | -Kommentar | -Status | -Aktion | -
|---|---|---|---|---|---|---|
| - | - | - | - | - | - Beantragt'; - } elseif ($r['status'] === 'genehmigt') { - echo 'Genehmigt'; - } else { - echo 'Abgelehnt'; - } - ?> - | -
-
- |
-
Urlaubsanträge - Genehmigung
+ +| Mitarbeiter | +Von | +Bis | +Tage | +Kommentar | +Status | +Aktion | +
|---|---|---|---|---|---|---|
| + | + | + | + | + | + Beantragt'; + } elseif ($r['status'] === 'genehmigt') { + echo 'Genehmigt'; + } else { + echo 'Abgelehnt'; + } + ?> + | +
+
+ |
+
Stempelkarten-System
- -"; - // Abfrage für alle Zeitstempel des Tages - $query = " - SELECT timestamp_type, timestamp_datetime - FROM timestamps - WHERE employee_id = :employee_id AND DATE(timestamp_datetime) = :datum - ORDER BY timestamp_datetime - "; - try { - $stmt = $pdo->prepare($query); - $stmt->bindParam(':employee_id', $mitarbeiterId, PDO::PARAM_INT); - $stmt->bindParam(':datum', $datum); - $stmt->execute(); - $zeitstempel = $stmt->fetchAll(PDO::FETCH_ASSOC); - echo $zeitstempel; - } catch(PDOException $e) { - $pdo->rollBack(); - echo "Datenbankfehler: " . $e->getMessage(); - } - $fruehesteKommenZeit = null; - $spaetesteGehenZeit = null; - $gesamtarbeitszeit = new DateInterval('PT0S'); - $gesamtpausenzeit = new DateInterval('PT0S'); - $letzterGehenZeitstempel = null; - echo "test"; - foreach ($zeitstempel as $index => $eintrag) { - $zeit = new DateTime($eintrag['timestamp_datetime']); - echo "test2"; - if ($eintrag['timestamp_type'] === 'KOMMEN') { - echo "test3"; - if ($fruehesteKommenZeit === null || $zeit < $fruehesteKommenZeit) { - $fruehesteKommenZeit = $zeit; - } - if ($letzterGehenZeitstempel) { - $pause = $letzterGehenZeitstempel->diff($zeit); - $gesamtpausenzeit = $gesamtpausenzeit->add($pause); - } - } else if ($eintrag['timestamp_type'] === 'GEHEN') { - if ($spaetesteGehenZeit === null || $zeit > $spaetesteGehenZeit) { - $spaetesteGehenZeit = $zeit; - } - $letzterGehenZeitstempel = $zeit; - } - } - - if ($fruehesteKommenZeit && $spaetesteGehenZeit) { - $gesamtarbeitszeit = $fruehesteKommenZeit->diff($spaetesteGehenZeit)->subtract($gesamtpausenzeit); - } - #echo $gesamtarbeitszeit; - $zeitenProTag[$datum] = [ - 'fruehesteKommenZeit' => $fruehesteKommenZeit ? $fruehesteKommenZeit->format('H:i:s') : '', - 'spaetesteGehenZeit' => $spaetesteGehenZeit ? $spaetesteGehenZeit->format('H:i:s') : '', - 'gesamtarbeitszeit' => $gesamtarbeitszeit->format('%H:%I:%S'), - 'gesamtpausenzeit' => $gesamtpausenzeit->format('%H:%I:%S') - ]; -} - -// Ausgabe der Ergebnisse für Testzwecke -echo ''; -print_r($zeitenProTag); -echo ''; -?> - -
Stempelkarten-System
+ +"; + // Abfrage für alle Zeitstempel des Tages + $query = " + SELECT timestamp_type, timestamp_datetime + FROM timestamps + WHERE employee_id = :employee_id AND DATE(timestamp_datetime) = :datum + ORDER BY timestamp_datetime + "; + try { + $stmt = $pdo->prepare($query); + $stmt->bindParam(':employee_id', $mitarbeiterId, PDO::PARAM_INT); + $stmt->bindParam(':datum', $datum); + $stmt->execute(); + $zeitstempel = $stmt->fetchAll(PDO::FETCH_ASSOC); + echo $zeitstempel; + } catch(PDOException $e) { + $pdo->rollBack(); + echo "Datenbankfehler: " . $e->getMessage(); + } + $fruehesteKommenZeit = null; + $spaetesteGehenZeit = null; + $gesamtarbeitszeit = new DateInterval('PT0S'); + $gesamtpausenzeit = new DateInterval('PT0S'); + $letzterGehenZeitstempel = null; + echo "test"; + foreach ($zeitstempel as $index => $eintrag) { + $zeit = new DateTime($eintrag['timestamp_datetime']); + echo "test2"; + if ($eintrag['timestamp_type'] === 'KOMMEN') { + echo "test3"; + if ($fruehesteKommenZeit === null || $zeit < $fruehesteKommenZeit) { + $fruehesteKommenZeit = $zeit; + } + if ($letzterGehenZeitstempel) { + $pause = $letzterGehenZeitstempel->diff($zeit); + $gesamtpausenzeit = $gesamtpausenzeit->add($pause); + } + } else if ($eintrag['timestamp_type'] === 'GEHEN') { + if ($spaetesteGehenZeit === null || $zeit > $spaetesteGehenZeit) { + $spaetesteGehenZeit = $zeit; + } + $letzterGehenZeitstempel = $zeit; + } + } + + if ($fruehesteKommenZeit && $spaetesteGehenZeit) { + $gesamtarbeitszeit = $fruehesteKommenZeit->diff($spaetesteGehenZeit)->subtract($gesamtpausenzeit); + } + #echo $gesamtarbeitszeit; + $zeitenProTag[$datum] = [ + 'fruehesteKommenZeit' => $fruehesteKommenZeit ? $fruehesteKommenZeit->format('H:i:s') : '', + 'spaetesteGehenZeit' => $spaetesteGehenZeit ? $spaetesteGehenZeit->format('H:i:s') : '', + 'gesamtarbeitszeit' => $gesamtarbeitszeit->format('%H:%I:%S'), + 'gesamtpausenzeit' => $gesamtpausenzeit->format('%H:%I:%S') + ]; +} + +// Ausgabe der Ergebnisse für Testzwecke +echo ''; +print_r($zeitenProTag); +echo ''; +?> + +
Betriebsurlaub verwalten
- -| Von | -Bis | -Beschreibung | -Erstellt von | -Aktion | -
|---|---|---|---|---|
| - | - | - | prepare("SELECT vorname, nachname FROM users WHERE id = ?"); - $s->execute([$h['created_by']]); - $u = $s->fetch(); - echo htmlspecialchars($u['vorname'] . ' ' . $u['nachname']); - ?> | -
- |
-
Betriebsurlaub verwalten
+ +| Von | +Bis | +Beschreibung | +Erstellt von | +Aktion | +
|---|---|---|---|---|
| + | + | + | prepare("SELECT vorname, nachname FROM users WHERE id = ?"); + $s->execute([$h['created_by']]); + $u = $s->fetch(); + echo htmlspecialchars($u['vorname'] . ' ' . $u['nachname']); + ?> | +
+ |
+
Arbeitszeiten - ' . $firmaName . '
'; - $html .= 'Mitarbeiter: ' . $mitarbeiterName . '
'; - $html .= 'Monat: ' . $monthName . ' ' . $selectedYear . '
'; - $html .= '| Tag | Start | Pause | Ende | Gesamtzeit | aufgezeichnet am: | Bemerkung |
|---|---|---|---|---|---|---|
| ' . $day . ' | ' . date('H:i:s', strtotime($row['first_come'])) . ' | ' . $row['difference_between_total_time_and_pause_time'] . ' | ' . date('H:i:s', strtotime($row['last_go'])) . ' | ' . $row['total_time'] . ' | ' . date('d.m.Y', strtotime($row['day'])) . ' | |
| ' . $day . ' | ||||||
| Gesamt | ' . $totalTime .' |
Arbeitszeiten - ' . $firmaName . '
'; + $html .= 'Mitarbeiter: ' . $mitarbeiterName . '
'; + $html .= 'Monat: ' . $monthName . ' ' . $selectedYear . '
'; + $html .= '| Tag | Start | Pause | Ende | Gesamtzeit | aufgezeichnet am: | Bemerkung |
|---|---|---|---|---|---|---|
| ' . $day . ' | ' . date('H:i:s', strtotime($row['first_come'])) . ' | ' . $row['difference_between_total_time_and_pause_time'] . ' | ' . date('H:i:s', strtotime($row['last_go'])) . ' | ' . $row['total_time'] . ' | ' . date('d.m.Y', strtotime($row['day'])) . ' | |
| ' . $day . ' | ||||||
| Gesamt | ' . $totalTime .' |
Stempelkarten-System
- -prepare($query); - $stmt->bindParam(':employee_id', $user_id, PDO::PARAM_INT); - $stmt->bindParam(':datum', $datum); - $stmt->execute(); - $buchungen = $stmt->fetchAll(PDO::FETCH_ASSOC); - } catch(PDOException $e) { - echo "Datenbankfehler: " . $e->getMessage(); - } -} else { - die("Fehler: Mitarbeiter-ID oder Datum fehlt."); -} - -// ... [Hier könnten Sie PHP-Code für die Bearbeitung der Buchungen hinzufügen] - -?> - - - - -Tageseinträge bearbeiten -
- - -- -
- -
Stempelkarten-System
+ +prepare($query); + $stmt->bindParam(':employee_id', $user_id, PDO::PARAM_INT); + $stmt->bindParam(':datum', $datum); + $stmt->execute(); + $buchungen = $stmt->fetchAll(PDO::FETCH_ASSOC); + } catch(PDOException $e) { + echo "Datenbankfehler: " . $e->getMessage(); + } +} else { + die("Fehler: Mitarbeiter-ID oder Datum fehlt."); +} + +// ... [Hier könnten Sie PHP-Code für die Bearbeitung der Buchungen hinzufügen] + +?> + + + + +Tageseinträge bearbeiten -
+ + ++ +
+ +
Mitarbeiter bearbeiten
-Mitarbeiter bearbeiten
+Neues Passwort vergeben
- -Passwort von Mitarbeiter: " . htmlspecialchars($mitarbeiter['vorname']) . " " . htmlspecialchars($mitarbeiter['nachname']) . " ändern." ?> - --
- -
-
- - -
- - -
Neues Passwort vergeben
+ +Passwort von Mitarbeiter: " . htmlspecialchars($mitarbeiter['vorname']) . " " . htmlspecialchars($mitarbeiter['nachname']) . " ändern." ?> + ++
+ +
+
+ + +
+ + +
Zeitbuchungsfehler Auswertung
- - - - - - - - -| Datum | -Fehler | -Aktionen | -
|---|---|---|
| - | Fehlerhafte KOMMEN/GEHEN Buchung | -- Anpassen - | -
Zeitbuchungsfehler Auswertung
+ + + + + + + + +| Datum | +Fehler | +Aktionen | +
|---|---|---|
| + | Fehlerhafte KOMMEN/GEHEN Buchung | ++ Anpassen + | +
Stempelkarten-System
- -prepare("SELECT vorname FROM users WHERE id = ?"); - $stmt->bindParam(1, $user_id); - $stmt->execute(); - $user = $stmt->fetch(PDO::FETCH_ASSOC); - - - if ($user) { - // Logik für das Setzen des Zeitstempels - $stmt = $pdo->prepare("SELECT COUNT(CASE WHEN timestamp_type = 'KOMMEN' THEN 1 ELSE NULL END) AS AnzahlKommen, COUNT(CASE WHEN timestamp_type = 'GEHEN' THEN 1 ELSE NULL END) AS AnzahlGehen FROM timestamps WHERE employee_id = ? AND DATE(timestamp_datetime) = CURDATE()"); - $stmt->bindParam(1, $user_id); - $stmt->execute(); - $timestamp_data = $stmt->fetch(PDO::FETCH_ASSOC); - - $timestamp_type = $timestamp_data['AnzahlKommen'] > $timestamp_data['AnzahlGehen'] ? "GEHEN" : "KOMMEN"; - - // Zeitstempel hinzufügen - $insert_stmt = $pdo->prepare("INSERT INTO timestamps (employee_id, timestamp_type, timestamp_datetime, timestamp_endpoint) VALUES (?, ?, NOW(), 1)"); - $insert_stmt->bindParam(1, $user_id); - $insert_stmt->bindParam(2, $timestamp_type); - $insert_stmt->execute(); - - if ($insert_stmt->rowCount() > 0) { - echo '- -
Es gibt ein Buchungsproblem! Zur Anpassung
-Aktueller Status: ABWESEND
Letzte Stempelzeit:
-- -
Stempelkarten-System
+ +prepare("SELECT vorname FROM users WHERE id = ?"); + $stmt->bindParam(1, $user_id); + $stmt->execute(); + $user = $stmt->fetch(PDO::FETCH_ASSOC); + + + if ($user) { + // Logik für das Setzen des Zeitstempels + $stmt = $pdo->prepare("SELECT COUNT(CASE WHEN timestamp_type = 'KOMMEN' THEN 1 ELSE NULL END) AS AnzahlKommen, COUNT(CASE WHEN timestamp_type = 'GEHEN' THEN 1 ELSE NULL END) AS AnzahlGehen FROM timestamps WHERE employee_id = ? AND DATE(timestamp_datetime) = CURDATE()"); + $stmt->bindParam(1, $user_id); + $stmt->execute(); + $timestamp_data = $stmt->fetch(PDO::FETCH_ASSOC); + + $timestamp_type = $timestamp_data['AnzahlKommen'] > $timestamp_data['AnzahlGehen'] ? "GEHEN" : "KOMMEN"; + + // Zeitstempel hinzufügen + $insert_stmt = $pdo->prepare("INSERT INTO timestamps (employee_id, timestamp_type, timestamp_datetime, timestamp_endpoint) VALUES (?, ?, NOW(), 1)"); + $insert_stmt->bindParam(1, $user_id); + $insert_stmt->bindParam(2, $timestamp_type); + $insert_stmt->execute(); + + if ($insert_stmt->rowCount() > 0) { + echo '+ +
Es gibt ein Buchungsproblem! Zur Anpassung
+Aktueller Status: ABWESEND
Letzte Stempelzeit:
++ +
Mein Urlaubskalender
- --
- -
Mein Urlaubskalender
+ ++
+ +
Stempelkarten-System
- - $buchung) { - if (date('Y-m-d', strtotime($buchung['timestamp_datetime'])) !== $datum) { - die("Fehler: Nicht alle Termineinträge sind für denselben Tag."); - } - } - - try { - $pdo->beginTransaction(); - - // Löschvorgänge durchführen - foreach ($deleted_entries as $deleted_id) { - $delete_query = "DELETE FROM timestamps WHERE timestamp_id = :timestamp_id AND employee_id = :employee_id"; - $stmt = $pdo->prepare($delete_query); - $stmt->bindParam(':timestamp_id', $deleted_id, PDO::PARAM_INT); - $stmt->bindParam(':employee_id', $employee_id, PDO::PARAM_INT); - $stmt->execute(); - } - - // Speichern oder Aktualisieren der Buchungen - foreach ($buchungen as $timestamp_id => $buchung) { - if (strpos($timestamp_id, 'new_') !== false) { - // Neue Buchung hinzufügen - $insert_query = "INSERT INTO timestamps (employee_id, timestamp_type, timestamp_datetime) VALUES (:employee_id, :timestamp_type, :timestamp_datetime)"; - $stmt = $pdo->prepare($insert_query); - } else { - // Bestehende Buchung aktualisieren - $update_query = "UPDATE timestamps SET timestamp_type = :timestamp_type, timestamp_datetime = :timestamp_datetime WHERE timestamp_id = :timestamp_id AND employee_id = :employee_id"; - $stmt = $pdo->prepare($update_query); - $stmt->bindParam(':timestamp_id', $timestamp_id, PDO::PARAM_INT); - } - - $stmt->bindParam(':employee_id', $employee_id, PDO::PARAM_INT); - $stmt->bindParam(':timestamp_type', $buchung['timestamp_type']); - $stmt->bindParam(':timestamp_datetime', $buchung['timestamp_datetime']); - $stmt->execute(); - } - - $pdo->commit(); - echo "Änderungen erfolgreich gespeichert."; - } catch(PDOException $e) { - $pdo->rollBack(); - echo "Datenbankfehler: " . $e->getMessage(); - } -} else { - die("Ungültige Anfrage."); -} -?> -Stempelkarten-System
+ + $buchung) { + if (date('Y-m-d', strtotime($buchung['timestamp_datetime'])) !== $datum) { + die("Fehler: Nicht alle Termineinträge sind für denselben Tag."); + } + } + + try { + $pdo->beginTransaction(); + + // Löschvorgänge durchführen + foreach ($deleted_entries as $deleted_id) { + $delete_query = "DELETE FROM timestamps WHERE timestamp_id = :timestamp_id AND employee_id = :employee_id"; + $stmt = $pdo->prepare($delete_query); + $stmt->bindParam(':timestamp_id', $deleted_id, PDO::PARAM_INT); + $stmt->bindParam(':employee_id', $employee_id, PDO::PARAM_INT); + $stmt->execute(); + } + + // Speichern oder Aktualisieren der Buchungen + foreach ($buchungen as $timestamp_id => $buchung) { + if (strpos($timestamp_id, 'new_') !== false) { + // Neue Buchung hinzufügen + $insert_query = "INSERT INTO timestamps (employee_id, timestamp_type, timestamp_datetime) VALUES (:employee_id, :timestamp_type, :timestamp_datetime)"; + $stmt = $pdo->prepare($insert_query); + } else { + // Bestehende Buchung aktualisieren + $update_query = "UPDATE timestamps SET timestamp_type = :timestamp_type, timestamp_datetime = :timestamp_datetime WHERE timestamp_id = :timestamp_id AND employee_id = :employee_id"; + $stmt = $pdo->prepare($update_query); + $stmt->bindParam(':timestamp_id', $timestamp_id, PDO::PARAM_INT); + } + + $stmt->bindParam(':employee_id', $employee_id, PDO::PARAM_INT); + $stmt->bindParam(':timestamp_type', $buchung['timestamp_type']); + $stmt->bindParam(':timestamp_datetime', $buchung['timestamp_datetime']); + $stmt->execute(); + } + + $pdo->commit(); + echo "Änderungen erfolgreich gespeichert."; + } catch(PDOException $e) { + $pdo->rollBack(); + echo "Datenbankfehler: " . $e->getMessage(); + } +} else { + die("Ungültige Anfrage."); +} +?> +Mitarbeiterliste
-| ID | -Vorname | -Nachname | -Zeiterfassung | -worker | -Admin | -Card ID | -Card2 ID | -Aktionen | -|
|---|---|---|---|---|---|---|---|---|---|
| " . htmlspecialchars($row['id']) . " | "; - echo "" . htmlspecialchars($row['email']) . " | "; - echo "" . htmlspecialchars($row['vorname']) . " | "; - echo "" . htmlspecialchars($row['nachname']) . " | "; - echo "" ; - if($row['zeiterfassung'] == "1"){echo "Ja";} - echo " | "; - echo "" ; - if($row['worker'] == "1"){echo "Ja";} - echo " | "; - echo "" ; - if($row['admin'] == "1"){echo "Ja";} - echo " | "; - echo "" . htmlspecialchars($row['card_id']) . " | "; - echo "" . htmlspecialchars($row['card2_id']) . " | "; - echo "Bearbeiten | "; - echo "
Neuen Mitarbeiter hinzufügen
-- -
Mitarbeiterliste
+| ID | +Vorname | +Nachname | +Zeiterfassung | +worker | +Admin | +Card ID | +Card2 ID | +Aktionen | +|
|---|---|---|---|---|---|---|---|---|---|
| " . htmlspecialchars($row['id']) . " | "; + echo "" . htmlspecialchars($row['email']) . " | "; + echo "" . htmlspecialchars($row['vorname']) . " | "; + echo "" . htmlspecialchars($row['nachname']) . " | "; + echo "" ; + if($row['zeiterfassung'] == "1"){echo "Ja";} + echo " | "; + echo "" ; + if($row['worker'] == "1"){echo "Ja";} + echo " | "; + echo "" ; + if($row['admin'] == "1"){echo "Ja";} + echo " | "; + echo "" . htmlspecialchars($row['card_id']) . " | "; + echo "" . htmlspecialchars($row['card2_id']) . " | "; + echo "Bearbeiten | "; + echo "
Neuen Mitarbeiter hinzufügen
++ +
Urlaubsanträge genehmigen
- - - - - - -| Mitarbeiter | -Von | -Bis | -Tage | -Kommentar | -Aktion | -
|---|---|---|---|---|---|
| - | - | - | - | - |
-
- |
-
Urlaubsanträge genehmigen
+ + + + + + +| Mitarbeiter | +Von | +Bis | +Tage | +Kommentar | +Aktion | +
|---|---|---|---|---|---|
| + | + | + | + | + |
+
+ |
+
Urlaubsantrag
- - - - - - - - - -- - - -
- -
Meine Anträge
- -prepare(" - SELECT * FROM vacations - WHERE user_id = ? - ORDER BY created_at DESC -"); -$stmt->execute([$user_id]); -$antraege = $stmt->fetchAll(); -?> - -| Von | -Bis | -Tage | -Status | -Aktion | -
|---|---|---|---|---|
| - | - | - | - Beantragt'; - } elseif ($a['status'] == 'genehmigt') { - echo 'Genehmigt'; - } else { - echo 'Abgelehnt'; - } - ?> - | -
- |
-
Urlaubsantrag
+ + + + + + + + + ++ + + +
+ +
Meine Anträge
+ +prepare(" + SELECT * FROM vacations + WHERE user_id = ? + ORDER BY created_at DESC +"); +$stmt->execute([$user_id]); +$antraege = $stmt->fetchAll(); +?> + +| Von | +Bis | +Tage | +Status | +Aktion | +
|---|---|---|---|---|
| + | + | + | + Beantragt'; + } elseif ($a['status'] == 'genehmigt') { + echo 'Genehmigt'; + } else { + echo 'Abgelehnt'; + } + ?> + | +
+ |
+
Team Urlaubskalender
- --
- -
Team Urlaubskalender
+ ++
+ +
Team Urlaubskalender
- --
- -
Team Urlaubskalender
+ ++
+ +
Urlaubsübersicht ()
- -| Mitarbeiter | -Anspruch | -Genutzt () | -Verbleibend | -Ausstehend | -Bevorstehende Urlaube | -|
|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - '; - } - } ?> - | -
Hinweis: Ansprüche werden aus dem Feld users.urlaubstage gelesen. Falls dieses Feld leer ist, bitte in der Nutzerverwaltung pflegen.
- -Urlaubsübersicht ()
+ +| Mitarbeiter | +Anspruch | +Genutzt () | +Verbleibend | +Ausstehend | +Bevorstehende Urlaube | +|
|---|---|---|---|---|---|---|
| + | + | + | + | + | + | + '; + } + } ?> + | +
Hinweis: Ansprüche werden aus dem Feld users.urlaubstage gelesen. Falls dieses Feld leer ist, bitte in der Nutzerverwaltung pflegen.
+ +Private Zusatzleistungen (IGeL) – Transparenz & Preise
-- Einige sinnvolle Untersuchungen und Beratungen werden nicht von der Gesetzlichen Krankenversicherung übernommen. - Diese Privatleistungen rechnen wir als Selbstzahlerleistungen ab. - Die folgenden Preise sind Richtwerte und können je nach Aufwand variieren. - Vorab erhalten Sie von uns eine verständliche Kostentransparenz. -
-Unsere beliebtesten Zusatzleistungen
-Alle Preise in Euro. Impfstoffe und externe Laborkosten (falls anfallend) werden gesondert berechnet.
-Diagnostik & Beratung
- --
-
-
-
- - Reisemedizinische Beratung (Fernreisen) - ca. 35–60 € --
- Individuelle Impf- und Prophylaxeplanung passend zu Reiseziel, Dauer und Vorerkrankungen. - (Private Zusatzleistung) -
-
-
-
- -
- - Ärztliches Attest für Führerscheine (z. B. LKW, Sportboot) - ca. 40–90 € --
- Übliche ärztliche Untersuchung gemäß Vorgaben der Behörde/Prüfstelle mit Ausstellung des Attests. - (Privatleistung) -
-
-
-
- -
- - Tauchtauglichkeitsuntersuchung (Sporttaucher) - ca. 80–140 € --
- Anamnese, körperliche Untersuchung und – je nach Anforderung – ggf. EKG/Lungenfunktion; Bescheinigung nach Richtlinien. - (Privatleistung) -
-
-
- -
- - Ultraschall der Gefäße (Beine, mit Farbdoppler) - ca. 60–100 € --
- Beurteilung von arterieller Durchblutung und Venensituation; frühzeitiges Erkennen von Gefäßveränderungen, - Thromboseausschluss möglich. (Private Zusatzleistung) -
-
-
-
- -
- - Ultraschall der Halsgefäße (Carotis) inkl. Intima-Media-Messung - ca. 70–110 € --
- Hochauflösende Messung der Gefäßwanddicke und Darstellung von Plaques zur Einschätzung des Schlaganfall- und Gefäßrisikos. - (Privatleistung) -
-
-
-
- -
- - Herzultraschall (Echokardiografie, Point-of-Care) - ca. 70–120 € --
- Überblick über Pumpfunktion, Herzgröße und Herzklappen; schnelle Abklärung bei Beschwerden. - (Privatleistung) -
-
-
-
- -
- - Ultraschall Bauchorgane (Abdomen, bis 3 Organe) - ca. 35–50 € --
Vorsorgliche Beurteilung von Leber, Gallenblase, Nieren u. a.
-
-
- -
- - Ultraschall Schilddrüse - ca. 35–45 € --
Beurteilung von Größe, Struktur und Knoten – z. B. als Verlaufskontrolle.
-
- -
- - Leberwerte (Bluttest) - ca. 20–45 € --
- Typisch: AST, ALT, GGT, ggf. Bilirubin. Kassenleistung bei medizinischer Indikation, - sonst Privatleistung als Vorsorge. (Kassenleistung/Privatleistung) -
-
-
-
- -
- - Nierenwerte (Bluttest) - ca. 20–45 € --
- Typisch: Kreatinin, Harnstoff, eGFR. Kassenleistung bei medizinischer Indikation, - sonst Privatleistung als Vorsorge. (Kassenleistung/Privatleistung) -
-
-
-
- -
- - Vitamin-D-Bestimmung - ca. 25–40 € --
25-OH-Vitamin-D im Blut; inkl. Laborhandling.
-
- -
- - Impfung (Durchführung, ohne Impfstoff) - ca. 10–20 € --
- Durchführung einer Impfung; Impfstoffe und ggf. Reisediagnostik separat. -
-
- -
- - Ruhe-EKG - ca. 20–30 € --
12-Kanal-EKG in Ruhe zur Beurteilung von Rhythmus und Leitung.
-
-
-
Ultraschall / Sonografie
--
-
-
Labor
--
-
-
Impfungen
--
-
Kardiologie / EKG
--
-
- * Preisangaben sind Richtwerte inkl. MwSt., soweit anwendbar. Maßgeblich ist die individuelle Rechnung. -
-Termin buchen
-Gern beraten wir Sie, welche Leistungen in Ihrem Fall sinnvoll sind. Vereinbaren Sie einfach einen Termin in unserer Praxis.
--
-
- Termin anfragen -
Private Zusatzleistungen (IGeL) – Transparenz & Preise
++ Einige sinnvolle Untersuchungen und Beratungen werden nicht von der Gesetzlichen Krankenversicherung übernommen. + Diese Privatleistungen rechnen wir als Selbstzahlerleistungen ab. + Die folgenden Preise sind Richtwerte und können je nach Aufwand variieren. + Vorab erhalten Sie von uns eine verständliche Kostentransparenz. +
+Unsere beliebtesten Zusatzleistungen
+Alle Preise in Euro. Impfstoffe und externe Laborkosten (falls anfallend) werden gesondert berechnet.
+Diagnostik & Beratung
+ +-
+
+
-
+ + Reisemedizinische Beratung (Fernreisen) + ca. 35–60 € ++
+ Individuelle Impf- und Prophylaxeplanung passend zu Reiseziel, Dauer und Vorerkrankungen. + (Private Zusatzleistung) +
+
+
+
+ -
+ + Ärztliches Attest für Führerscheine (z. B. LKW, Sportboot) + ca. 40–90 € ++
+ Übliche ärztliche Untersuchung gemäß Vorgaben der Behörde/Prüfstelle mit Ausstellung des Attests. + (Privatleistung) +
+
+
+
+ -
+ + Tauchtauglichkeitsuntersuchung (Sporttaucher) + ca. 80–140 € ++
+ Anamnese, körperliche Untersuchung und – je nach Anforderung – ggf. EKG/Lungenfunktion; Bescheinigung nach Richtlinien. + (Privatleistung) +
+
+
+ -
+ + Ultraschall der Gefäße (Beine, mit Farbdoppler) + ca. 60–100 € ++
+ Beurteilung von arterieller Durchblutung und Venensituation; frühzeitiges Erkennen von Gefäßveränderungen, + Thromboseausschluss möglich. (Private Zusatzleistung) +
+
+
+
+ -
+ + Ultraschall der Halsgefäße (Carotis) inkl. Intima-Media-Messung + ca. 70–110 € ++
+ Hochauflösende Messung der Gefäßwanddicke und Darstellung von Plaques zur Einschätzung des Schlaganfall- und Gefäßrisikos. + (Privatleistung) +
+
+
+
+ -
+ + Herzultraschall (Echokardiografie, Point-of-Care) + ca. 70–120 € ++
+ Überblick über Pumpfunktion, Herzgröße und Herzklappen; schnelle Abklärung bei Beschwerden. + (Privatleistung) +
+
+
+
+ -
+ + Ultraschall Bauchorgane (Abdomen, bis 3 Organe) + ca. 35–50 € ++
Vorsorgliche Beurteilung von Leber, Gallenblase, Nieren u. a.
+
+
+ -
+ + Ultraschall Schilddrüse + ca. 35–45 € ++
Beurteilung von Größe, Struktur und Knoten – z. B. als Verlaufskontrolle.
+
+ -
+ + Leberwerte (Bluttest) + ca. 20–45 € ++
+ Typisch: AST, ALT, GGT, ggf. Bilirubin. Kassenleistung bei medizinischer Indikation, + sonst Privatleistung als Vorsorge. (Kassenleistung/Privatleistung) +
+
+
+
+ -
+ + Nierenwerte (Bluttest) + ca. 20–45 € ++
+ Typisch: Kreatinin, Harnstoff, eGFR. Kassenleistung bei medizinischer Indikation, + sonst Privatleistung als Vorsorge. (Kassenleistung/Privatleistung) +
+
+
+
+ -
+ + Vitamin-D-Bestimmung + ca. 25–40 € ++
25-OH-Vitamin-D im Blut; inkl. Laborhandling.
+
+ -
+ + Impfung (Durchführung, ohne Impfstoff) + ca. 10–20 € ++
+ Durchführung einer Impfung; Impfstoffe und ggf. Reisediagnostik separat. +
+
+ -
+ + Ruhe-EKG + ca. 20–30 € ++
12-Kanal-EKG in Ruhe zur Beurteilung von Rhythmus und Leitung.
+
+
+
Ultraschall / Sonografie
+-
+
+
Labor
+-
+
+
Impfungen
+-
+
Kardiologie / EKG
+-
+
+ * Preisangaben sind Richtwerte inkl. MwSt., soweit anwendbar. Maßgeblich ist die individuelle Rechnung. +
+Termin buchen
+Gern beraten wir Sie, welche Leistungen in Ihrem Fall sinnvoll sind. Vereinbaren Sie einfach einen Termin in unserer Praxis.
+-
+
- Termin anfragen +