PHP-Hookpoints

Die Hookpoints (z.Dt. "Einklinkpunkte") erlauben die Funktionsweise von xmstore an einigen vordefinierten Gelegenheiten zu personalisieren und aktiv in die Abläufe des Systems einzugreifen.

Um nur einige Beispiele zu nennen, können via Hookpoints IPTC-Felder schon während der Dateiverarbeitung in den Datenbankbestand übernommen werden oder zusätzliche Kriterien und Prüfungen bei der Kundenregistration hinzugefügt werden.

Da die Hookpoints nativ im System arbeiten, sind komplexe Anpassungen und Abfragen möglich, welche via Template nicht zu realisieren wären.


Hinweis
Die Hookpoints dürfen nur im Rahmen der Enterprise-Edition vom Kunden und mit entsprechenden Kenntnissen selbstständig angepasst werden. Bei allen anderen Editionen von xmstore ist die Überarbeitung und Erweiterung der Hookpoints nur durch unserem Team gestattet und technisch sinnvoll möglich. Bitte senden Sie uns dazu Ihre Anfrage.


Bearbeitung

Warnung
Fehler in der Anpassung der Hookpoints können zu einem fehlerhaft oder gar nicht funktionierenden System führen. Die Anfertigung einer Datensicherung vor jeder Änderung wird dringend empfohlen.


Vorraussetzungen zur Bearbeitung der Hookpoints:

  • PHP-Kenntnisse
  • Texteditor
  • FTP-Client

Die Hookpoints sind für sowohl für Front- als auch für das Backend in der datei hooks.inc.php im Verzeichnis data (Admin-FTP-Zugang) gespeichert und dokumentiert. Anpassungen an den Hookpoints werden an dieser Datei vorgenommen.

Hookpoints äußern sich als normale Funktion. Diese Funktionen sind strikt benannt und erfüllen ihre Funktion nur bei korrekter Benennung. Umbenennen der Funktionen führt nicht zu Fehlern, allerdings dazu, dass der betreffende Hookpoint nicht mehr angewendet wird.

Beschreibungen und Dokumentationen der einzelnen Hookpoints sind im PHPDoc-Format vor jeder Funktion zu finden.

Genaueres zu einzelnen Hookpoints finden Sie in den ihrem Gebiet entsprechenden Artikeln.

Beispiel

Das folgende Beispiel veranschaulicht die Funktionsweise von Hookpoints anhand der Funktion hookbe_iptc_postimport. Ziel der Übung ist es das IPTC-Feld Caption in den deutschen Titel zu übernehmen.

function hookbe_iptc_postimport(AS_Iptc &$oIptc, $media_id, $sqlConnection)
{
    // Prequisiten laden
    require_once(WEBROOT . '/class/image.class.php');

    // Initialisierung    
    $oImage = new AS_Image($sqlConnection);	// Bild instanzieren
    $oImage->media_id = $media_id;		// Media-ID zuweisen
    $oImage->language_id = 1;			// Sprach-ID für Deutsch setzen (kann je nach Systemeinstellungen abweichen)

    // Änderungen
    $oImage->title = $oIptc->caption;		// Caption in Title kopieren

    // Speichern
    $oImage->saveLocaleData();			// Änderungen speichern
}

Hier gilt zu beachten, dass das Laden der Bilddaten ausgelassen wird, da davon ausgegangen wird, dass der Import mit einem neuen, unverschlagworteten Bild geschieht. Andernfalls würden im gezeigten Beispiel Daten gelöscht oder überschrieben.

Liste von Hookpoints

Achtung: Unvollständigkeit
Informationen in diesem Abschnitt sind aufgrund Softwareaktualisierungen unvollständig oder veraltet und bedürfen Ergänzungen.
  • hookbe_media_processed(<AS_Image|AS_Video|AS_Audio|AS_Misc> $oMedia, $path[, AS_MediaPreview $oMediaPreview])
  • hookbe_framework_login
  • hookbe_framework_logout
  • hookbe_controller_init(string $module, string $view)
  • hookbe_controller_finish
  • hookbe_exif_import(array $exif, int $media_id)
  • hookbe_iptc_import(string $key, string $value, int $media_id)
  • hookbe_iptc_postimport(AS_Iptc $oIptc, int $media_id, resource $sqlConnection)
  • hookbe_media_save_locale_data(AS_MediaBase $oMedia, string $language_code, resource $sqlConnection)
  • hookfe_orderpdf_header(AS_Order $oOrder)
  • hookfe_orderpdf_footer(AS_Order $oOrder)
  • hookfe_display_media(<AS_Image|AS_Video|AS_Audio|AS_Misc> $oMedia, array $sqlRow, resource $sqlConnection)
  • hookfe_customer_login_validate
  • hookfe_customer_login
  • hookfe_customer_register_validate
  • hookfe_customer_register
  • hookfe_order_create(AS_Order $oOrder)
  • hookfe_order_issued(AS_Order $oOrder)
  • hook_print_currency_value(string $complete, string $amount, string $format, AS_Currency $oCurrency)