<?php

  /**
	 * Beispielimplementierung der SOAP-Schnittstelle, um Conversion-Tracking-Werte zu ändern oder zu löschen.
	 * Es werden ein paar PHP-Objekte benötigt, welche die entsprechende Struktur des Requests abbilden.
	 *
	 * Als Antwort werden zwei Werte/Objekte zurückgegeben:
	 *
	 * 1. Ein boolscher Wert, der angibt, ob alle Eingabeobjekte Änderungen bewirkt haben (true),
	 *    oder ob in irgendeinem der Eingabe-Datensätze ein ungültiger/fehlender Wert gefunden, oder bei
	 *    mindestens einem der Eingabe-Datensätze kein Treffer erzielt wurde (false).
	 * 2. Die kompletten Eingabeobjekte, jeweils ergänzt um einen Responsecode und die Anzahl der geänderten
	 *    bzw. gelöschten Datensätze.
	 *
	 * -----------------------
	 * Mögliche ResponseCodes:
	 * -----------------------
	 * 0 -> Änderung erfolgreich vorgenommen.
	 * 1 -> Keine Änderung vorgenommen, da kein passender Datensatz gefunden wurde.
	 * 2 -> Keine Änderung vorgenommen, da kein eindeutiger Datensatz identifiziert werden konnte (uniqueMatch = true).
	 * 3 -> Datensatz ungültig.
	 *
	 * STAND: Backclick-Version: 5.9.0
	 */
  $wsdlUrl = ""; //Die URL Ihrer Schnittstelle

  // SoapClient erzeugen
  $client = new SoapClient($wsdlUrl);

  // Timezone setzen (für Aufrufe diverser Funktionen nötig)  
  date_default_timezone_set('Europe/Berlin');
  
  // Request-Objekt deklarieren
  $editConversion = new StdClass();
  
  /*
   * --------------
   * PFLICHTANGABEN
   * --------------
   */
  // Mandanten-Id
  $editConversion->mandatorId = 0;
  
  $conversion = new StdClass();
  
  //E-Mail Adresse angeben, zu der die Conversion geändert6 oder gelöscht werden soll.
  $conversion->emailAddress = "user@example.com";
  
  //Verwendete Tracking-ID für den Umsatzu setzen, damit die zu ändernde Conversion gesucht werden kann.
  $conversion->trackingId = "Gux34SI6pm";
  //aktuelle Währung setzen
  $conversion->currency = "EUR";
  
  //aktuellen Umsatz setzen
  $conversion->amount = "1000";
  
  //Zeitpunkt setzen, wann die Conversion geloggt worden ist
  //mktime: Stunde, Minute, Sekunde, Monat, Tag, Jahr
  $conversion->estimatedLogtime = mktime(9, 40, 0, 7, 4, 2013);
  
  //Erweiterung des Zeitraums der Suche. Hier wird die "In-Etwa-Zeit" genommen, +/- die hier angegeben Minuten.
  $conversion->maxMinutesDifference = 10;
  
  /*
   * -----------------
   * OPTIONALE ANGABEN
   * -----------------   
   */
   
   /*
   * API-Key.
   * Anstatt den Zugriff auf die Backclick-Schnittstelle über freigegebene IP-Adressen zu regeln,
   * kann die Zugriffsberechtigung auch über einen API-Key geregelt werden.
   * Ist im System ein API-Key definiert, MUSS dieser API-Key (siehe Menüpunkt: System-Administration->Grundeinstellungen
   * ->Einstellungen für das WebInterface) angegeben werden, da die Liste der freigegebenen IP-Adressen dann NICHT GILT!
   */
  //$editConversion->apiKey = 'Fi0ntFo4vpBqTCMdT54GpE4AoPLhv9Dgw992YrT6';
  
  
  /**
   * Neue Währung und neuer Umsatz. Wenn die Conversion nicht gelöscht werden soll, und weder eine neue Währung, 
   * noch ein neuer Umsatz angegeben wird, dann wird die Conversion nicht geändert und hat den ResultCode "3".
   */
   
  /**
   * Neue Währungseinheit, wird keine neue Währungseinheit gesetzt, dann belicht die alten Währung bestehen.
   */
  //$conversion->newCurrency = 'EUR';
  
  /**
   * Neuer Umsatz, wird kein Umsatz angegeben, dann wird der alte beibehalten.
   */
  $conversion->newAmount = 50.56;
  
  // soll die Conversion gelöscht (true) oder geändert (false) werden? (Standard: false)
  //$conversion->deleteAction = false;
  
  //Muss das Suchergebnis unique sein (true),
  //oder sind mehrere Treffer erlaubt? (Standard: false)
  //$conversion->uniqueMatch = true;
  
  //
  $editConversion->conversions = array();
  array_push($editConversion->conversions, $conversion);
  
  //Ausführen der Abfrage
  try {
    $result = $client->editConversions($editConversion);
    var_dump($result);
  } catch (Exception $e) {
    //Hier ist ein Fehler aufgetreten und abgefangen worden, wir geben die Fehlermeldung aus.
    echo "Error: " . $e->getMessage() . "\n";
  }

?>