<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */

class NewsletterAnmeldung extends WebDblOptin
{
  protected $arykennzeichen;

  public function __construct()
  {
    parent::__construct();
    $this->feature = WebDblOptin::FEATURE_NEWSLETTER_REGISTRIERUNG;
  }

  public function addKennzeichenByParam($pKennz, $pText = '', $pWarnung = '')
  {
    if (!is_array($this->arykennzeichen)) {
      $this->arykennzeichen = array();
    }

    $kennzeichen = new Kennz();
    $kennzeichen->kennz = $pKennz;
    $kennzeichen->text = $pText;
    $kennzeichen->warnung = $pWarnung;
    $this->arykennzeichen[] = $kennzeichen;
  }

  public function addKennzeichen($pKennz)
  {
    if ($pKennz == null) {
      return;
    }
    if (!is_array($this->arykennzeichen)) {
      $this->arykennzeichen = array();
    }
    $this->arykennzeichen[] = $pKennz;
  }

  public function hasKennzeichen($pKennz = '')
  {
    if ($pKennz == '') {
      return (is_array($this->arykennzeichen) && count($this->arykennzeichen) > 0);
    }
    if (is_array($this->arykennzeichen)) {
      foreach ($this->arykennzeichen as $kennzeichen) {
        if ($kennzeichen->kennz == $pKennz) {
          return true;
        }
      }
    }

    return false;
  }

  public function getKennzeichen()
  {
    return $this->arykennzeichen;
  }

  public function getXMLNode($pNodeTag = 'PERSON')
  {
    $exceptions = array('captcha', 'optin', 'emailhash', 'arykennzeichen', 'status', 'bemerkung', 'email', 'sessiontime', 'bearbdatum');
    
    
    $rootNode = new XMLNode($pNodeTag);
    for ($i = 0; $i < $this->getVarCount(); $i++) {
      $varname = $this->getVarname($i);
      if (in_array($varname, $exceptions)) {
        continue;
      }
      $value = $this->getVarValue($varname);
      if ($value != '') {
        $rootNode->addChild(new XMLNode(StringOperations::strtoupper($varname), $this->getVarValue($varname)));
      }
    }
    
    if (!DateTimeOperations::isDateTimeEmptyOrDefault($this->dse_unterschrieben_datum)) {
      $weg = new XMLNode('DSE_UNTERSCHRIEBEN_WEG', ConstantOperations::getWegForDseUnterschriebenWeg());
      $rootNode->addChild($weg);
    }

    return $rootNode;
  }

  public function getXMLNode4Interessengebiete($pInteressengebiete, $pNodeTag = 'INTERESSENSGEBIETE')
  {
    if (!is_array($pInteressengebiete) || count($pInteressengebiete) == 0) {
      return null;
    }
    $rootNode = new XMLNode($pNodeTag);
    foreach ($pInteressengebiete as $interessengebiet) {
      $rootNode->addChild(new XMLNode('INTERESSENSGEBIET', $interessengebiet));
    }

    return $rootNode;
  }

  public function getXMLNodeComplete($pInteressengebiete)
  {
    $retour = new XMLNode('NEWSLETTERANMELDUNG');
    $retour->addChild(new XMLNode('EMAIL', $this->email));
    $retour->addChild(new XMLNode('STATUS', $this->status));
    $retour->addChild(new XMLNode('BEMERKUNG', $this->bemerkung));
    $retour->addChild(new XMLNode('SESSIONTIME', $this->sessiontime));
    $personNode = $this->getXMLNode();
    if ($this->hasKennzeichen()) {
      $personNode->addChild($this->getXMLNode4Kennzeichen());
    }
    
    $interessenNode = $this->getXMLNode4Interessengebiete($pInteressengebiete);
    if ($interessenNode != null) {
      $personNode->addChild($interessenNode);
    }
    $retour->addChild($personNode);

    return $retour;
  }

  
  public function getXMLNode4Kennzeichen()
  {
    $kennzNodeLevel1 = new XMLNode('KENNZEICHEN');
    $kennzeichen = $this->getKennzeichen();
    foreach ($kennzeichen as $item) {
      $kennzNode = new XMLNode('KENNZEICHENEINTRAG');
      $kennzNode->addChild(new XMLNode('KENNZ', $item->kennz));
      $kennzNodeLevel1->addChild($kennzNode);
    }

    return $kennzNodeLevel1;
  }
}