Kundenkarte

Der individuelle Beitrag zur eigenen Gesundheit wird in der heutigen Zeit immer wichtiger, da der Staat seine Gesundheitsleistungen aus finanziellen Gründen immer mehr reduziert. Auch die Angebote zur Gesundheitsvorsorge und der Arzneimittelmarkt werden immer vielfältiger, so dass es notwendig ist, neben dem Arzt, der oftmals aus Zeitgründen nicht die Möglichkeit hat, alle Fragen zu beantworten, einen weiteren kompetenten und neutralen Ansprechpartner in allen Fragen zur Gesundheit zu haben. Diese Aufgabe möchten wir gern für Sie übernehmen und bieten Ihnen dafür unsere Kundenkarte mit vielen Vorteilen an. Nutzen Sie außerdem unsere vielfältigen Serviceangebote.

Beantragen Sie noch heute Ihre persönliche Kundenkarte.
Kundenkartenanträge erhalten Sie bei uns in der Wiesen-Apotheke.

Template($tags); $this->array_registeredParsers = array( new StrAPIFunctionsParser(), new CounterFunctionParser(), new IfFunctionParser() ); if(is_array($parser)) { $this->array_registeredParsers = $parser; } } /** * Generiert das Template und gibt es aus/zurck. * * @param $template string/file Template * @param $return bool Return or print template * @param $note bool Echo "Generated by ... " Comment * * @return string complete Template string */ function generate($template, $return = 0, $note = 1) { $template = parent::generate($template, true, $note); foreach($this->array_registeredParsers as $class) { if(is_string($class)) { $classInstance = new $class; } else if(is_object($class)) { $classInstance = $class; } if(is_object($classInstance)) { if(is_subclass_of($classInstance, "AbstractTemplateParser")) { $template = $classInstance->parse($template); } else { $template = "TemplateParserKlasse " . get_class($classInstance) . " ist nicht von AbstractTemplateParser abgeleitet!"; break; } } } if ($return) { return $template; } echo $template; } } /** * class AbstractTemplateParser * * Abstrakte Superklasse fr alle Templateparser * * @author Stefan Welpot * @version 1.0 */ class AbstractTemplateParser { /** * Konstruktor */ function AbstractTemplateParser() {} /** * Parst das bergeben Template * * @param $template string das zu parsende Template * * @return string das geparste Template */ function parse($template) { return $template; } } /** * class IfFunctionParser * * Implemenation des AbstractTemplateParser zum Auswerten von * If-Konstrukten im Template * Als Tags im Template sind vorgesehen: * - {if(Bedigung)} * - {else if(Bedingung)} * - {else} * - {/if} * * Ein If-Konstrukt besteht dabei mindestens aus {if(Bedingung)} und einem abschlieenden {/if}. * Das {else if(Bedingung)} kann beliebig oft hintereinander verwendet werden. * Die Konstrukte an sich knnen beliebig tief geschachtelt werden. * Die Bedinungen der {if()}- und {else if()}-Teile werden durch eval ausgewertet * und knnen somit auch PHP-Funktionen interpretieren. * * * @author Stefan Welpot * @version 1.0 */ class IfFunctionParser extends AbstractTemplateParser { /** * Regexp-Pattern fr {if(Bedingung)} * @var pattern_if */ var $pattern_if = "\{if\040*\((.*?)\)\}"; /** * Regexp-Pattern fr {else if(Bedingung)} * @var pattern_elseif */ var $pattern_elseif = "\{else if\040*\((.*?)\)\}"; /** * Regexp-Pattern fr {else} * @var pattern_else */ var $pattern_else = "\{else\}"; /** * Regexp-Pattern fr {/if} * @var pattern_endif */ var $pattern_endif = "\{\/if\}"; /** * Lnge des {if(Bedinung)}-Tags ohne Bedingung * @var patternlength_if */ var $patternlength_if = 6; /** * Lnge des {else if(Bedinung)}-Tags ohne Bedingung * @var patternlength_elseif */ var $patternlength_elseif = 11; /** * Lnge des {else}-Tags * @var patternlength_else */ var $patternlength_else = 6; /** * Lnge des {/if}-Tags * @var patternlength_endif */ var $patternlength_endif = 5; /** * Konstruktor */ function IfFunctionParser() { $this->AbstractTemplateParser(); } /** * @see AbstractTemplateParser#parse(string) */ function parse($template) { $array2_uncompletedConstructs = array(); //geffnete, aber noch nicht geschlossene funktionen //hilfsvariablen $array_match_all = array(); $array_match_part = array(); $uncompletedConstructsIndex = 0; $elseifIndex = 0; $currentOffset = 0; $oldOffset = -1; $array_construct = array(); $pattern_all = "/(?is)(" . $this->pattern_if . "|" . $this->pattern_elseif . "|" . $this->pattern_else . "|" . $this->pattern_endif . ")/"; //das template solange nach konstruktteilen durchsuchen bis keine mehr gefunden werden while($currentOffset != $oldOffset) { $oldOffset = $currentOffset; //wenn irgendein teil einer if-konstruktion gefunden wird if(preg_match($pattern_all, $template, $array_match_all, PREG_OFFSET_CAPTURE, $currentOffset) > 0) { //herausfinden, welcher teil gefunden wurde //if-teil if(preg_match("/(?is)" . $this->pattern_if . "/", $array_match_all[0][0], $array_match_part) > 0) { $uncompletedConstructsIndex++; //inkrement openFunctionIndex $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['condition'] = $array_match_part[1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_start'] + $this->patternlength_if + strlen($array_match_part[1]); $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_end']; } //elseif-teil else if(preg_match("/(?is)" . $this->pattern_elseif . "/", $array_match_all[0][0], $array_match_part) > 0) { $elseifIndex = count($array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif']); $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['condition'] = $array_match_part[1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_start'] + $this->patternlength_elseif + strlen($array_match_part[1]); $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_end']; } //else-teil else if(preg_match("/(?is)" . $this->pattern_else . "/", $array_match_all[0][0], $array_match_part) > 0) { $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_start'] + $this->patternlength_else; $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_end']; } //endif else if(preg_match("/(?is)" . $this->pattern_endif . "/", $array_match_all[0][0], $array_match_part) > 0) { $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_start'] + $this->patternlength_endif; $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_end']; //gefundene komplette funktion sofort ersetzen $array_construct = array_pop($array2_uncompletedConstructs); $uncompletedConstructsIndex--; $template = $this->replaceConstruct($array_construct, $template); //offset korrigieren = anfang der ersetzten funktion $currentOffset = $array_construct['if']['pos_start']; } } } // end while if($uncompletedConstructsIndex > 0) { // wenn noch offene Funktionen vorhanden sind => Fehler im Template $template = "Fehler in IF-Konstruktionen. Folgende If-Statements sind nicht abgeschlossen:
\n"; foreach($array2_uncompletedConstructs as $array_construct) { $template .= "- {if(" . $array_construct['if']['condition'] . ")}
\n"; } } return $template; } // end function /** * Ersetzt die als Array bergebene Funktion durch * den ersten Teil mit einer wahren Bedingung * * @param $array_construct Array das komplette If-Konstrukt das ausgewertet werden soll * @param $template string das Template in dem das Konstrukt ersetzt werden soll * * @return string das Template mit dem ersetzten Konstrukt */ function replaceConstruct($array_construct, $template) { $array_elseif = array(); $key = 0; $replace_text = ""; $boolConditionTrue = false; //prfen ob der if-teil wahr ist und $replace_text finden if(eval("return " . $array_construct['if']['condition'] . ";")) { if(array_key_exists('elseif', $array_construct)) { //wenn ein elseif-teil existiert $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['elseif'][0]['pos_start'] - $array_construct['if']['pos_end']); } else if(array_key_exists('else', $array_construct)) { //wenn nur ein else-teil existiert $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['else']['pos_start'] - $array_construct['if']['pos_end']); } else {//wenn der nchste teil schon endif ist $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['endif']['pos_start'] - $array_construct['if']['pos_end']); } } else { //alle elseif-teile prfen if(is_array($array_construct['elseif'])) { foreach($array_construct['elseif'] as $key => $array_elseif) { if(eval("return " . $array_elseif['condition'] . ";")) { $boolConditionTrue = true; if(array_key_exists(($key + 1), $array_construct['elseif'])) { //wenn ein weiterer elseif-teil existiert $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['elseif'][$key+1]['pos_start'] - $array_elseif['pos_end']); } else if(array_key_exists('else', $array_construct)) { //wenn nchster teil nur ein else-teil ist $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['else']['pos_start'] - $array_elseif['pos_end']); } else {//wenn der nchste teil schon endif ist $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['endif']['pos_start'] - $array_elseif['pos_end']); } break; } } } //wenn bisher noch keine wahre Bedingung gefunden wurde if(!$boolConditionTrue) { if(array_key_exists('else', $array_construct)) { // wenn ein else-teil existiert $replace_text = substr($template, $array_construct['else']['pos_end'], $array_construct['endif']['pos_start'] - $array_construct['else']['pos_end']); } else { // sonst wird das gesamte kontrukt durch einen leeren string ersetzt $replace_text = ""; } } } // end else //if-konstruktion durch wahren teil ersetzen $template = substr_replace($template, $replace_text, $array_construct['if']['pos_start'], $array_construct['endif']['pos_end'] - $array_construct['if']['pos_start']); return $template; } } /** * class CounterFunctionParser * * Implemenation des AbstractTemplateParser zur Verwendung von * Zhlern im Template * Als Tag im Template ist vorgesehen: * - {counter PARAMETER} * Die PARAMETER sind: * - name=ZHLERNAME * - start=STARTWERT (default: 0) * - step=SCHRITTWEITE (default: 1) * - print=(true|false) (default: true) * Alle Parameter sind optional. * * ber die Name-Eigenschaft knnen mehrere unschiedliche Zhler verwendet werden. * Bei jedem Vorkommen des {counter}-Tags wird der gleichnamige Zhler um STEP erhht. * Wird die Eigenschaft print auf true oder gar nicht gesetzt erfolgt eine Ausgabe des * Zhlerwerts an der Stelle des {counter}-Tags * * * @author Stefan Welpot * @version 1.0 */ class CounterFunctionParser extends AbstractTemplateParser { /** * Regexp-Pattern fr {counter PARAMETER} * @var pattern_countertag */ var $pattern_countertag = "/(?si)\{counter(.*?\})/"; /** * Regexp-Pattern fr Parameter name=NAME * @var pattern_countername */ var $pattern_countername = "/(?i)name\040?\=(.+?)(\040|\})/"; /** * Regexp-Pattern fr Parameter start=STARTWERT * @var pattern_counterstart */ var $pattern_counterstart = "/(?i)start\040?\=(\d+?)(\040|\})/"; /** * Regexp-Pattern fr Parameter step=SCHRITTWEITE * @var pattern_counterstep */ var $pattern_counterstep = "/(?i)step\040?\=(\d+?)(\040|\})/"; /** * Regexp-Pattern fr Parameter print=(true|false) * @var pattern_counterprint */ var $pattern_counterprint = "/(?i)print\040?\=(true|false)(\040|\})/"; /** * Defaultwert fr Parameter name * @var default_countername */ var $default_countername = "unnamed"; /** * Defaultwert fr Parameter start * @var default_counterstart */ var $default_counterstart = 0; /** * Defaultwert fr Parameter step * @var default_counterstep */ var $default_counterstep = 1; /** * Defaultwert fr Parameter print * @var default_counterprint */ var $default_counterprint = true; /** * Konstruktor */ function CounterFunctionParser() { $this->AbstractTemplateParser(); } /** * @see AbstractTemplateParser#parse(string) */ function parse($template) { $counterParameters = ""; $counterKey = ""; $array_matches = array(); $array_countermatches = array(); $array_initCounters = array(); $boolPrint = $this->default_counterprint; $boolDoNotInkr = false; preg_match_all($this->pattern_countertag, $template, $array_countermatches, PREG_SET_ORDER); for($i = 0; $i < count($array_countermatches); $i++) { $counterKey = ""; $counterParameters = $array_countermatches[$i][1]; //Attribut Countername auslesen, falls vorhanden preg_match($this->pattern_countername, $counterParameters, $array_matches); if(count($array_matches) > 0) { $counterKey = $array_matches[1]; } else { // sonst defaultname $counterKey = $this->default_countername; } if(!array_key_exists($counterKey, $array_initCounters)) { // neuen Counter initialisieren $array_initCounters[$counterKey]['value'] = $this->default_counterstart; $array_initCounters[$counterKey]['step'] = $this->default_counterstep; $boolDoNotInkr = true; } //Attribut step preg_match($this->pattern_counterstep, $counterParameters, $array_matches); if(count($array_matches) > 0) { $array_initCounters[$counterKey]['step'] = $array_matches[1]; } //Attribut start preg_match($this->pattern_counterstart, $counterParameters, $array_matches); if(count($array_matches) > 0) { $array_initCounters[$counterKey]['value'] = $array_matches[1]; $boolDoNotInkr = true; } // value regulr erhhen if(!$boolDoNotInkr) { $array_initCounters[$counterKey]['value'] = $array_initCounters[$counterKey]['value'] + $array_initCounters[$counterKey]['step']; } else { $boolDoNotInkr = false; } //Attribut print preg_match($this->pattern_counterprint, $counterParameters, $array_matches); if(count($array_matches) > 0) { $boolPrint = (strcasecmp("true", $array_matches[1]) == 0) ? true : false; } else { $boolPrint = $this->default_counterprint; } if($boolPrint) { $template = preg_replace($this->pattern_countertag, $array_initCounters[$counterKey]['value'], $template, 1); } else { $template = preg_replace($this->pattern_countertag, '', $template, 1); } } return $template; } } /** * class StrAPIFunctionsParser * * Implemenation des AbstractTemplateParser zum Auswerten von * ContenidoStrAPIFunktionen. * Als erlaubte Funktionen sind vorgesehen: * - {capiStrTrimHard(STRING, LNGE)} * - {capiStrTrimAfterWord(STRING, LNGE)} * - {capiStrTrimSentence(STRING, LNGE)} * * Die die Funktionen werden ertrahiert, ausgewertet und anschlieend durch das Ergebnis ersetzt. * * * @author Stefan Welpot * @version 1.0 */ class StrAPIFunctionsParser extends AbstractTemplateParser { /** * zu ersetzende Funktionen * @var array_strAPIFunctions */ var $array_strAPIFunctions = array( "capiStrTrimHard", "capiStrTrimAfterWord", "capiStrTrimSentence" ); /** * Konstruktor */ function StrAPIFunctionParser() { $this->AbstractTemplateParser(); } /** * @see AbstractTemplateParser#parse(string) */ function parse($template) { $anzahlMatches = 0; $array2_matches = array(); $evaledCode = ""; foreach($this->array_strAPIFunctions as $functionname) { $anzahlMatches = preg_match_all("/(?si)\{" . preg_quote($functionname, "/") . "\(\"?(.*?)\"?,\040?(\d+?)\)\}/", $template, $array2_matches); for($i = ($anzahlMatches - 1); $i >= 0; $i--) { $evaledCode = eval("return " . $functionname . "(\"" . $array2_matches[1][$i] . "\", " . $array2_matches[2][$i] . ");"); $template = preg_replace( "/(?si)\{" . preg_quote($functionname, "/") . "\(\"?" . preg_quote($array2_matches[1][$i], "/") . "\"?,\040?" . preg_quote($array2_matches[2][$i], "/") . "\)\}/", $evaledCode, $template ); } //end for(i) } // end foreach return $template; } } ?>

RABATT

Sie erhalten 3% TREUE-SOFORTRABATT auf Ihren gesamten Einkauf, ausgenommen sind Rezeptzuzahlungen und verschreibungspflichtige Medikamente aufgrund gesetzlicher Bestimmungen.

Warnung vor Risiken

Wir überprüfen Ihre Einkäufe routinemäßig auf Risiken und Wechselwirkungen (Interaktions-Check). Falls Wechselwirkungen auftreten, dann suchen wir nach geeigneten Alternativen. Wenn wir von Herstellern oder in der Fachpresse wichtige Neuerungen oder Änderungen zu Ihren Medikamenten erfahren, dann informieren wir Sie gezielt darüber.

Frei Haus Lieferung

Haben wir ein Medikament nicht sofort vorrätig, dann liefern wir es Ihnen bei Bedarf noch am gleichen Tag kostenlos nach Hause oder an Ihren Arbeitsplatz.

Kontinuität

Wir wissen, welches Hustenmittel Ihnen im letzten Winter geholfen hat oder welchen Lichtschutzfaktor Ihr Sonnenschutzmittel hatte. Ein Blick in Ihre Kundenkarte liefert uns die gewünschten Informationen.

Wir wissen stets, ob Sie "befreit" sind

Bei uns brauchen Sie Ihr Befreiungskärtchen nur einmal vorlegen. Wir speichern die Befreiungsdauer in unserem Computer und wissen bei jedem Besuch, dass Sie "befreit" sind.

Jahresabrechnung

Sie erhalten von uns kostenlos eine Jahresaufstellung Ihrer Zuzahlungen und Einkäufe als Nachweis für die Krankenkasse oder das Finanzamt. Mit der Kundenkarte benötigen Sie kein Quittungsheft und müssen keine Einzelbelege mehr sammeln.

Sonderangebote und Aktionen

Wir halten monatlich wechselnde Sonderangebotsartikel zu Top-Preisen für Sie bereit und veranstalten regelmäßig Gesundheits- sowie Verkostungsaktionen in der Apotheke. Es lohnt sich also für Sie, uns regelmäßig zu besuchen!

Auf Datenschutz legen wir größten Wert

Wir garantieren Ihnen, dass Ihre Daten streng vertraulich behandelt und nicht an Dritte weitergegeben werden. Auf Wunsch können wir Ihre Daten jederzeit sofort löschen.

 

Weiter sagen lohnt sich!

Die Kunden – werben – Kunden – Aktion

Sie sind als eingetragener Kunde bereits mit den Vorteilen der Kundenkarte vertraut und zufrieden mit unserem Service? Dann empfehlen Sie uns doch weiter!

Für Ihre erfolgreiche Empfehlung bedanken wir uns mit einem
Einkaufsgutschein über 5,- Euro.

Antragformulare und nähere Informationen dazu erhalten Sie bei uns in der Apotheke.

Vielen Dank und viel Erfolg!

nach oben