Registrierung

Als Ausgangspunkt nehmen wir an, dass der Neukunde sich zum Zwecke der Registrierung auf einer Seite befindet (etwa registration.php), die ein entsprechendes Formular enthält. Nachdem er dieses Formular ausgefüllt und abgeschickt hat, erhält er eine Bestätigung und sein Passwort in Form einer E-Mail sowie einen entsprechenden Hinweis auf einer Bestätigungsseite.

Es ist für diesen Anwendungsfall nicht relevant, wie das Formular aussieht. Wir setzen voraus, dass das Formular zwei Arrays – je eines für die Personendaten und die Anschrift – als Name/Wert-Paare zur Verfügung stellt und dass die Werte aus dem Formular valide sind. (Als Erweiterungsmöglichkeit könnte ein Opt-In-Verfahren implementiert werden.)

Beispiel für die Arrays:

$contact_data = array(
  "first_name"    => "Neuer Test",
  "last_name"     => "Benutzer",
  "email"         => "benutzer@example.com",
  "gender"        => "M",
  "phone"         => "11223344",
  "language"      => "de",
  );

$location_data = array(
  "address2"      => "Unter den Linden 20",
  "postal_code"   => "10117",
  "city"          => "Berlin",
  "country"       => "Germany",
  );

Das erste Array $contact_data enthält alle Daten, die direkt mit einer Kontaktperson zusammenhängen. Dazu gehören beispielsweise Vorname, Nachname, E-Mail-Adresse und ihre Telefonnummer. Auf Seiten des OMC sind die Personenfelder last_name, gender und language obligatorisch. Das zweite Array, $location_data, enthält die Adressdaten der Person.

Hier zunächst der gesamte Code, der im Anschluss detailliert erläutert wird:

require_once 'omc_connector/OMC_Connector.php';

try {
  // Erstelle Contact
  $contact_data["account_id"] = 1;
  $contact_data["active"] = true;
  $contact_data["login"] = $contact_data["email"];
  $contact = OMC_Contact::create($contact_data);

  // Erstelle Location
  $location_data["want_assign_geoloc"] = false;
  $location = $contact->createLocation($location_data);
  $contact->save();

  // Erzeuge neues Passwort, das per E-Mail an den Kunden verschickt wird
  $contact->generatePassword();
} catch (OMC_ResourceInvalidException $e) {
  $errors = $contact->errorMessages;
} catch (OMC_Error $e) {
  $errors = array();
  echo "Ein Fehler ist aufgetreten.";
}

if (!isset($errors)) {
  echo "Ihre Anmeldung war erfolgreich. Eine E-Mail mit Ihren
   Zugangsdaten wurde an die angegebene E-Mail-Adresse verschickt.";
}

Die Anweisung

require_once 'omc_connector/OMC_Connector.php';

bindet den OMC Connector ein, damit er verwendet werden kann.

Bevor mit $contact = OMC_Contact::create($contact_data); die Person im OMC angelegt wird, muss sichergestellt werden, dass die Pflichtfelder mit Werten belegt sind. Ein solches Pflichtfeld ist die ID des Accounts, dem die Person zugeordnet werden soll. Wir geben hier die ID eines bestehenden Sammelaccounts an:

  $contact_data["account_id"] = 1;

Damit sich der Kunde später an der Website anmelden kann, muss die Kontaktperson aktiv sein. Ferner wird ein Anmeldename benötigt, den wir hier mit der E-Mail-Adresse belegen:

  $contact_data["active"] = true;
  $contact_data["login"] = $contact_data["email"];

Dann wird die Person im OMC angelegt:

  $contact = OMC_Contact::create($contact_data);

Bei jeder Anfrage an das OMC ist es wichtig, eventuelle Fehlerfälle (Exceptions) abzufangen. Fehlt beispielsweise der Wert eines Pflichfeldes, wird eine OMC_ResourceInvalidException ausgelöst, und die Fehlermeldungen werden mittels $contact->errorMessages ausgelesen:

try {
  // ...
  $contact = OMC_Contact::create($contact_data);
  // ...
} catch (OMC_ResourceInvalidException $e) {
  $errors = $contact->errorMessages;
} catch (OMC_Error $e) {
  $errors = array();
  echo "Ein Fehler ist aufgetreten.";
}

Beim Erstellen des Standorts kann definiert werden, ob nur eine Adresse akzeptiert wird, die Google als valide meldet. Für die Überprüfung der Adresse ist es erforderlich, dass der OMC-Konfigurationswert google_geocoder_api_key einen gültigen API-Key enthält. Hier schalten wir diese Überprüfung ab, erzeugen dann mit den Daten aus $location_data den Standort (im Account der Person) und speichern die Kontaktperson schließlich im OMC ab:

  $location_data["want_assign_geoloc"] = false;
  $location = $contact->createLocation($location_data);
  $contact->save();

Die Methode createLocation erstellt einen neuen Standort im Account, dem die Person zugeordnet ist, und setzt in der lokalen Instanz $location die location_id dieser Kontaktperson auf den neu erstellten Standort. Damit diese Änderung der Person auch auf Seiten des OMC stattfindet, muss sie mit $contact->save() gespeichert werden.

Abschließend wird das OMC angewiesen, für die erstellte Kontaktperson ein neues Passwort zu generieren und ihr eine E-Mail mit den Anmeldedaten zu senden:

  $contact->generatePassword();

Die Registrierungsvorgang ist nun beendet. Wenn keine Fehler aufgetreten sind, wird ein entsprechender Hinweis angezeigt:

if (!isset($errors)) {
  echo "Ihre Anmeldung war erfolgreich. Eine E-Mail mit Ihren
   Zugangsdaten wurde an die angegebene E-Mail-Adresse verschickt.";
}

Mit den ihm zugesandten Anmeldedaten kann sich der Kunde nun an der Website anmelden. Wie dies ermöglicht wird, ist im nächsten Abschnitt beschrieben.