function parseMitgliederFormular($ui, $session, &$mitglied = null, $dokument = null) { global $config; $eintritt = $session->getTimestampVariable("eintritt"); $austritt = $session->getTimestampVariable("austritt"); $persontyp = $session->getVariable("persontyp"); $anrede = $session->getVariable("anrede"); $name = $session->getVariable("name"); $vorname = $session->getVariable("vorname"); $geburtsdatum = $session->getTimestampVariable("geburtsdatum"); $nationalitaet = $session->getVariable("nationalitaet"); $firma = $session->getVariable("firma"); $adresszusatz = $session->getVariable("adresszusatz"); $strasse = $session->getVariable("strasse"); $hausnummer = $session->getVariable("hausnummer"); $plz = $session->getVariable("plz"); $ortname = $session->getVariable("ort"); $stateid = is_numeric($session->getVariable("stateid")) ? $session->getVariable("stateid") : null; $telefon = $session->getVariable("telefon"); $handy = $session->getVariable("handy"); $email = $session->getVariable("email"); $kontoinhaber = $session->getVariable("kontoinhaber"); $iban = $session->getVariable("iban"); $bic = $session->getVariable("bic"); $gliederungid = intval($session->getVariable("gliederungid")); $gliederung = $session->getStorage()->getGliederung($gliederungid); $mitgliedschaftid = $session->getIntVariable("mitgliedschaftid"); $mitgliedschaft = $session->getStorage()->getMitgliedschaft($mitgliedschaftid); $beitrag = $session->getDoubleVariable("beitrag"); $beitragtimeformat = $session->getStorage()->getBeitragTimeFormat($session->getIntVariable("beitragtimeformatid")); $flags = $session->getListVariable("flags"); $textfields = $session->getListVariable("textfields"); $kommentar = $session->getVariable("kommentar"); $natperson = null; $jurperson = null; if ($persontyp == "nat") { $natperson = $session->getStorage()->searchNatPerson($anrede, $name, $vorname, $geburtsdatum, $nationalitaet); } else { $jurperson = $session->getStorage()->searchJurPerson($firma); } $konto = null; if ($iban != null) { if (trim($kontoinhaber) == "") { $kontoinhaber = $persontyp == "nat" ? $vorname . " " . $name : $firma; } $konto = $session->getStorage()->searchKonto($kontoinhaber, $iban, $bic); } $ort = $session->getStorage()->searchOrt($plz, $ortname, $stateid); $email = $session->getStorage()->searchEMail($email); $kontakt = $session->getStorage()->searchKontakt($adresszusatz, $strasse, $hausnummer, $ort->getOrtID(), $telefon, $handy, $email->getEMailID(), $konto == null ? null : $konto->getKontoID()); if ($mitglied == null) { if (!$session->isAllowed("mitglieder_create", $gliederung->getGliederungID())) { $ui->viewLogin(); exit; } $mitglied = new Mitglied($session->getStorage()); $mitglied->setGlobalID($config->generateGlobalID()); // Zwischenspeichern, um ersten Beitrag hinzuzufuegen $mitglied->save(); $beitragobj = $beitragtimeformat->getBeitrag(); if ($beitragobj != null) { $mitgliedbeitrag = new MitgliedBeitrag($session->getStorage()); $mitgliedbeitrag->setMitglied($mitglied); $mitgliedbeitrag->setBeitrag($beitragobj); $mitgliedbeitrag->setHoehe($beitragobj->getHoehe() == null ? $beitrag : $beitragobj->getHoehe()); $mitgliedbeitrag->save(); } } else { if (!$session->isAllowed("mitglieder_modify", $mitglied->getLatestRevision()->getGliederungID())) { $ui->viewLogin(); exit; } if ($gliederung->getGliederungID() != $mitglied->getLatestRevision()->getGliederungID() && !$session->isAllowed("mitglieder_moveto", $gliederung->getGliederungID())) { $ui->viewLogin(); exit; } } $mitglied->setEintrittsdatum($eintritt); $mitglied->setAustrittsdatum($austritt); $mitglied->save(); $revision = new MitgliedRevision($session->getStorage()); $revision->setTimestamp(time()); $revision->isGeloescht($austritt != null); $revision->setGlobalID($config->generateGlobalID()); $revision->setUser($session->getUser()); $revision->setMitglied($mitglied); $revision->setMitgliedschaft($mitgliedschaft); $revision->setGliederung($gliederung); $revision->setBeitrag($beitrag); $revision->setBeitragTimeFormat($beitragtimeformat); $revision->setNatPerson($natperson); $revision->setJurPerson($jurperson); $revision->setKontakt($kontakt); $revision->setKommentar($kommentar); foreach ($flags as $flagid => $selected) { $revision->setFlag($session->getStorage()->getMitgliedFlag($flagid)); } foreach ($textfields as $textfieldid => $value) { $revision->setTextField($session->getStorage()->getMitgliedTextField($textfieldid), $value); } $revision->save(); if ($dokument != null) { $session->getStorage()->addMitgliedDokument($mitglied->getMitgliedID(), $dokument->getDokumentID()); } if ($session->hasVariable("mailtemplateid")) { $mailtemplate = $session->getStorage()->getMailTemplate($session->getVariable("mailtemplateid")); if ($mailtemplate != null) { $mail = $mailtemplate->generateMail($mitglied->getLatestRevision()->getKontakt()->getEMail(), new MitgliedTextReplacer($mitglied)); $mail->send(); } } }