Exemplo n.º 1
0
 private static final function processCall()
 {
     if (is_array(static::$class_whitelist) && !in_array(static::$call_class, static::$class_whitelist)) {
         Status::addError('Kein Zugriff auf Klasse: %s', array(static::$call_class));
         return;
     }
     if (!class_exists(static::$call_class, true)) {
         Status::addError('Klasse %s existiert nicht', array(static::$call_class));
         return;
     }
     if (!in_array(static::$call_method, get_class_methods(static::$call_class))) {
         Status::addError('%s existiert nicht', array(static::$call_class . '::' . static::$call_method . '()'));
         return;
     }
     return call_user_func(static::$call_class . '::' . static::$call_method, static::$call_params);
 }
 /**
  * Inhalte aus Einstellungs-INI-Datei auslesen
  *
  * @param string $sName - Name der auszulesenden INI-Datei
  * @return array
  */
 public static function get($sName)
 {
     // Pfad zur auszulesenden Einstellungs-INI
     $sFile = DIR_SETTINGS . $sName . '.ini';
     // Existiert die Einstellungs-INI und darf sie von PHP ausgelesen werden?
     if (!is_readable($sFile)) {
         // Fehlermeldungen nur einmal pro Datei anzeigen
         if (!in_array($sFile, static::$missingFiles)) {
             Status::addError('Einstellungen der "' . $sFile . '" konnten nicht ausgelesen werden.');
             static::$missingFiles[] = $sFile;
         }
         return;
     }
     // Werte aus dem Cache auslesen und zurückgeben, sofern vorhanden
     if (array_key_exists($sName, static::$cache)) {
         return static::$cache[$sName];
     }
     // Einstellungs-INI auslesen, assoziatives Array generieren und Werte cachen
     static::$cache[$sName] = parse_ini_file($sFile, true);
     return static::$cache[$sName];
 }
 public static function addToCart($hParams = array())
 {
     // Keine Produkt-ID uebergeben
     if (!$hParams['peid']) {
         // sofort abbrechen
         Status::addError("Es wurde keine Produkt-ID uebergeben");
         return;
     }
     // Produktdaten auslesen
     $hProduct = shopProduct::readEntry(array("peid" => $hParams["peid"]));
     // Produkt unsichtbar
     if (!$hProduct['visible']) {
         Status::addWarning("Das Produkt konnte nicht in den Warenkorb gelegt werden");
         // Sicherheitsfrage bei Tarifwechsel
     } elseif ($hProduct['norm'] == 'tariff' && ($hCurrentTariff = shopShopping::getTariff() && !$hParams['signed'])) {
         // Daten fuer Dialog mit den bevorstehenden Hinweisen auslesen
         $ahAlerts = shopShopping::changeTariffAlerts(array("peid" => $hParams["peid"]));
         Renderer::assign('alerts', $ahAlerts);
         Renderer::assign('tariff', $hProduct);
         return array('template' => Renderer::render('content/modal_tariff_change.tpl'), 'assigns' => array('action' => 'show_dialog', 'new_tariff' => $hProduct));
         // Produkt in Warenkorb legen
     } else {
         // Liegt das Produkt bereits im Warenkorb?
         if ($hNewCartItem = shopShopping::isInCart(array("peid" => $hParams["peid"]))) {
             // Anzahl des Produkts erhoehen
             $hNewCartItem["amount"]++;
             // Produkt liegt noch nicht im Warenkorb
         } else {
             $hNewCartItem = array("scid" => 0, "peid" => $hParams["peid"], "amount" => 1);
         }
         // Speichern des Artikels im Warenkorb
         if ($iScid = shopShopping::saveCartItem($hNewCartItem)) {
             if (!Status::hasErrors()) {
                 if ($hNewCartItem['amount']) {
                     Status::addSuccess($hProduct['name'] . " wurde in den Warenkorb gelegt.");
                 } else {
                     Status::addSuccess($hProduct['name'] . " wurde aus dem Warenkorb entfernt.");
                 }
             }
             // Speichern erfolgreich -> Warenkorb auslesen
             $returnCart = static::getCart($hParams);
             $returnCart['assigns']['scid'] = $iScid;
             $returnCart['assigns']['peid'] = $hProduct['peid'];
             // Dialog nach dem Hinzufügen eines Tarifs darstellen
             // Prüfung auf signed -> nur einmal statt bei jedem Tarif anzeigen
             if (static::SHOW_TARIFF_UPSELL && $hProduct['norm'] === 'tariff' && !$hParams['signed']) {
                 Renderer::assign('tariff', $hProduct);
                 $returnCart['assigns']['dialog'] = Renderer::render('content/modal_upsell_tariff.tpl');
                 $returnCart['assigns']['action'] = 'add_dialog';
             }
             return $returnCart;
             // Speichern nicht erfolgreich
         } else {
             Status::addWarning("Das Produkt konnte nicht in den Warenkorb gelegt werden");
         }
     }
     return;
 }