Dokumentation der Trigger, Classes, Callback-, Custom- und eingebundenen Funktionen in den KoGIs-Basismodulen, Stand: 22.03.2012 Dieses Dokument bietet einen Überblick über die Dateien, die im custom_function-verzeichnis der KoGIs- Instanzen abgelegt sind. Neben einer kurzen Beschreibung der Funktionalität, wird auch dokumentiert, wo die enthaltenen Funktionen verwendet werden (z. B. in Event-Trigger-Sets, Templates, zur Pflichtfeld-Prüfung in Containern, oder in anderen Custom-Functions). Inhalt 1 Trigger-Funktionen... 2 1.1 tpre_plausi_absatz.php... 2 1.2 tpre_plausi_clug_user.php... 2 1.3 tpre_plausi_infobox.php... 2 1.4 tpre_plausi_metainfo.php... 2 1.5 tpre_plausi_newsbereich.php... 2 1.6 tpre_saveinlinecontent.php... 2 1.7 tpre_savevtabsatzcontent.php... 3 1.8 tpre_savevtseitencontent.php... 3 1.9 tpre_filebridge... 3 1.10 tpost_addid... 3 1.11 tpost_updatesorter... 3 1.12 tpost_add2soapqueue_metainfo... 3 1.13 tpost_add2soapqueue_personen... 4 2 Callback-Funktionen... 4 2.1 cmsfunc_call_mediafilesize.php... 4 2.2 cmsfunc_call_mediamimetype.php... 4 2.3 cmsfunc_call_searchhighlight.php... 4 2.4 cmsfunc_call_deletebrackets... 5 2.5 cmsfunc_call_limittext.php... 5 2.6 cmsfunc_call_sorterfuncs.php... 5 2.7 cmsfunc_call_url_functions.php... 5 3 Custom-Functions... 7 3.1 custom_func_bremenauthmedia.php... 7 3.2 custom_func_getprofilegroupdefault.php... 7 3.3 custom_func_getsessiondataagentuser.php... 7 3.4 custom_func_isidinidlist.php... 7 4 Classes... 8 4.1 class_kogis_phpapi.php... 8 4.2 classes4nl.php... 8 5 Eingebundene Funktionen... 9 5.1 add2soapqueue_config.php... 9 5.2 add2soapqueue.php... 9
1 Trigger-Funktionen Es folgt eine Liste der Dateien, die Funktionen enthalten, die als Trigger verwendet werden. Ob es sich um Preaction- oder Post-action Trigger handelt, kann man am Prefix des Dateinamens (tpre bzw. tpost), der auch gleichzeitig der Funktionsnamen (dann ohne die Endung '.php') ist, erkennen. 1.1 tpre_plausi_absatz.php Überprüft, ob bei einem Artikel, der ein Bild enthält [Feldname: absatz_bild] auch ein alternativ-text [Feldname: alt_text] angegeben ist. Falls nicht, wird eine Fehlermeldung ausgegeben. Die Funktion wird in den Event-Trigger-Sets 'Plausi Absatz' und 'Plausipruefung Absatz' verwendet, die keinem Container zugeordnet sind. Zudem enthalten beide Trigger nur diese Trigger-Funktion und sind identisch. 1.2 tpre_plausi_clug_user.php Überprüft, ob für einen Benutzer, der sein Passwort ändern darf (d. h. das Flag mit dem Feldnamen 'right_changepassword' ist bei ihm gesetzt) auch der Vorname [Feldname: usr_vorname] und die Anrede [Feldname: usr_anrede] vorhanden sind. Ist dies nicht der Fall, wird eine Fehlermeldung ausgegeben. Die Funktion wird im Event-Trigger-Set 'Plausipruefung Benutzer (geschlossene Benutzergruppe)' verwendet, das wiederum dem Container 'Profile Benutzer' im Ordner 'Site: Zusatzmodule: Geschlossene Benutzergruppen:' zugeordnet ist. 1.3 tpre_plausi_infobox.php Überprüft, ob bei einem Artikel, der ein Bild enthält [Feldname: bild] auch ein alternativ-text [Feldname: alt_text] angegeben ist. Falls nicht, wird eine Fehlermeldung ausgegeben. Die Funktion wird im Event-Trigger-Set 'Plausipruefung Infobox' verwendet, das wiederum dem Container 'Infoboxartikel' im Ordner 'Site:' zugeordnet ist. 1.4 tpre_plausi_metainfo.php Überprüft, ob für einen Artikel mindestens ein externer Link [metadaten_links_dowonloads_r.externer_link], eine Download-Datei [metadaten_links_downloads_r.dowonload] oder eine Seite [metadaten_seiten_r] mit dem Status 'online' ausgewählt ist. Falls nicht, wird eine Fehlermeldung ausgegeben. Die Funktion wird im Event-Trigger-Set 'Informationsregister' verwendet, das wiederum dem Container 'Metainformationen' im Ordner 'Site: Zusatzmodule: IFG:' zugeordnet ist. 1.5 tpre_plausi_newsbereich.php Überprüft, ob für einen Artikel, der im Newsletter erscheinen soll (d.h. für den das Flag 'fuer_newsletter' gesetzt ist), mindestens ein Newsbereich ausgewählt wurde, der für die Verwendung im Newesletter freigegeben ist. Es werden entsprechende Fehlermeldungen zurückgeben, wenn kein Newsbereich ausgewählt wurde, der ausgewählte Newsbereich nicht mehr vorhanden ist oder nicht für den Newsletter freigegeben ist. Die Funktion wird im Event-Trigger-Set 'News-Newlsetter' verwendet, das wiederum dem Container 'News' im Ordner 'Site:' zugeordnet ist. 1.6 tpre_saveinlinecontent.php Diese Funktion sorgt dafür, dass auch über Inline-Relationen eingebundener Inhalt ins Volltext-Feld des Artikels übernommen wird. Dazu füllt sie das Feld 'vt_inline' eines Artikels mit dem Inhalt der Felder 'title', 'absatzart', 'zwischen', 'absatztext', 'bildtitel', 'longdesc', 'alt_desc' und 'dc_body' des über die Relation 'rel_seiten_absatz' zugeordneten Aritkels. Die Funktion wird in keinem Event-Trigger-Set verwendet. I. Schicktanz Seite 2 22.03.2012
Im 7erSixCMS ist diese Funktion eigentlich überflüssig, da man dort auch über Relationen verbundene Inhalte für das Volltext-Feld auswählen kann. Wir werden deshalb in einem der kommenden Updates die Funktion entfernen. 1.7 tpre_savevtabsatzcontent.php Diese Funktion sorgt dafür, dass auch über Inline-Relationen eingebundener Inhalt ins Volltext-Feld des Artikels übernommen wird. Dazu füllt sie das Feld 'vt_inline', mit Feldern der Relationen 'rel_seiten_links' ('title', 'externer_link', 'dc_body) und 'rel_seiten_personen' ('title', 'anrede', 'vorname', 'nachname', 'anschrift'. 'telefon', 'telefax' und 'email'). Die Funktion wird im Event-Trigger-Set 'Site: Absätze' verwendet, das wiederum dem Container 'Absätze' im Ordner 'Site: Weitere Container: ' zugeordnet ist. Im 7erSixCMS ist diese Funktion überflüssig, da man dort auch über Relationen verbundene Inhalte für das Volltext-Feld auswählen kann. Wir werden deshalb in einem der kommenden Updates die Funktion entfernen. 1.8 tpre_savevtseitencontent.php Diese Funktion sorgt dafür, dass auch über Inline-Relationen eingebundener Inhalt ins Volltext-Feld des Artikels übernommen wird. Dazu füllt sie das Feld 'vt_inline', mit Feldern der Relationen 'rel_seiten_absatz' ('title', 'absatzart', 'zwischen', 'absatztext', 'bildtitel', 'longdesc', 'alt_desc', 'vt_inline', 'dc_body' ), 'rel_seiten_infoboxartikel' (title', 'text', 'alt_text', 'externer_link'), 'rel_seiten_infoboxartikel_link' ('title', 'text', 'alt_text', 'externer_link') und 'rel_seiten_bildergalerie' ('title', 'altlabel'). Die Funktion wird im Event-Trigger-Set 'Site: Seiten' verwendet, das wiederum dem Container 'Seiten' im Ordner 'Site:' zugeordnet ist. Im 7erSixCMS ist diese Funktion überflüssig, da man dort auch über Relationen verbundene Inhalte für das Volltext-Feld auswählen kann. Wir werden deshalb in einem der kommenden Updates die Funktion entfernen. 1.9 tpre_filebridge Überprüft, ob die hochgeladene Datei [Feldname: 'fb_upload'], wirklich hochgeladen werden darf. Dazu wird überprüft, ob es im Container Whitelist einen Eintrag mit dem Dateinamen gibt und ob dort das Freigabe-Flag [Feldname: fb_flag_enable] gesetzt und der Eintrag auch dem gerade bearbeiteten Artikel zugewiesen ist. Ist dies nicht der Fall, wird eine Fehlermeldung ausgeben, ansonsten wird die Datei in dem in der Whitelist für diese Datei ausgewählte Verzeichnis [Feldname 'fb_rel_folder'] abgelegt. Die Funktion wird im Event-Trigger-Set 'Filebridge' verwendet, das wiederum dem Container 'FileBridge' im Ordner 'System: FileBridge:' zugeordnet ist. 1.10 tpost_addid Sorgt dafür, dass dem Titel des Aritkels [Feldname 'title'] die ID des Artikels in eckigen Klammern stehend anzugefügt wird. Die Funktion wird in den Event-Trigger-Sets 'Informationsregister-Personen' und 'Titel mit ID versehen' verwendet, die wiederum dem Containern 'Personen' im Ordner 'Site:' bzw. 'Links / Downloads' im Ordner 'Site: Weitere Container:' zugeordnet sind. 1.11 tpost_updatesorter Sorgt dafür, dass der gerade bearbeitete Artikel ans Ende der Artikel, die zum selber Vatereintrag [sixcms_parent] gehören, sortiert wird. Dazu wird das Feld 'sorter' entsprechend gesetzt. Um dies zu bewerkstelligen werden Funktionen der eingebundenen Datei 'cmsfunc_call_sorterfuncs.php' genutzt. Die Funktion wird in keinem Event-Trigger-Set verwendet. 1.12 tpost_add2soapqueue_metainfo Sorgt dafür, dass die Daten des Containers 'Metainformationen' für die SoapQueue aufbereitet und im Container 'Queue' im Ordner 'Site: Zusatzmodule: IFG: Transfer nach www.bremen.de:' abgelegt werden. Dazu I. Schicktanz Seite 3 22.03.2012
nutzt sie Funktionen der eingebetteten Datei 'add2soapqueue.php', die wiederum die Datei 'add2soapqueue_config.php' einbettet. Die Funktion wird im Event-Trigger-Set 'Informationsregister' verwendet, das wiederum dem Container 'Metainformationen' im Ordner 'Site: Zusatzmodule: IFG:' zugeordnet ist. 1.13 tpost_add2soapqueue_personen Sorgt dafür, dass die Daten des Containers 'Personen' für die SoapQueue aufbereitet und im Container 'Queue' im Ordner 'Site: Zusatzmodule: IFG: Transfer nach www.bremen.de:' abgelegt werden. Dazu nutzt sie Funktionen der eingebetteten Datei 'add2soapqueue.php', die wiederum die Datei 'add2soapqueue_config.php' einbettet. Die Funktion wird im Event-Trigger-Set 'Informationsregister-Personen' verwendet, das wiederum dem Container 'Personen' im Ordner 'Site:' zugeordnet ist. 1.14 tpost_depufreedownload Im Script werden zunächst die Feldnamen der Flags und der 'zugehörigen' Relationen konfiguriert und dann in einer Schleife die IDs aller Einträge im Container Links/Downloads, bei denen das Flag für die Relation auf "on" steht, in einer Array gesammelt. Sofern diese Array nicht leer ist, wird zunächst die ID der Default- Benutzergrupp ("frei verfügbar") ermittelt. Dies geschieht mit Hilfe der Templates "90_profile_group_q" (Query) und "90_profile_get_id_l" (Listentemplate). Konnte eine Default-Benutzergruppe ermittelt werden (d.h. ID > 0) dann wird diese allen ermittelten Einträgen im Container Links/Downloads zugewiesen. 1.15 tpre_depusetofflinedate Ist das Datum "Veröffentlichung im Internet bis" nicht gesetzt, so wird diese auf 'heute + 7 Tage' gesetzt, oder genauer auf 'jetzt + 7 Tage', da nicht nur Tag, Monat und Jahr, sondern auch Stunde, Minute und Sekunde bei der Berechnung berücksichtigt werden. 2 Callback-Funktionen Liste der Dateien die in Templates eingebettet sind und deren Funktionen als Call-Back-Funktionen im SixCMS- Platzhalter %CMS_DATA() verwendet werden. Die Datei- und Funktionsnamen müssen dabei nach SixCMS- Konvention mit 'cmsfunc_call_' beginnen. 2.1 cmsfunc_call_mediafilesize.php Enthält die Funktion cmsfunc_call_mediafilesize, die die Dateigröße in eine lesbare Größe, d. h. in KB, MB bzw. GB, umwandelt, wobei die größtmögliche Einheit, die noch einen Wert größer Null liefert verwendet wird. Eingebettet wird die Datei in den Templates '06_search_resultlist_get_media_d', '06_search_resultlist_l' und '90_profile_extra_article_list_l', wobei die Funktion nur im Template '06_search_resultlist_get_media_d' auch wirklich genutzt wird. 2.2 cmsfunc_call_mediamimetype.php Enthält die Funktion cmsfunc_call_mediamimetype, die ein Image-Tag mit einem Icon für den Mime-Type liefert. Eingebettet wird die Datei in den Templates '06_search_resultlist_l' und '90_profile_extra_article_list_l', allerdings wird die Funktion nirgends genutzt. 2.3 cmsfunc_call_searchhighlight.php Enthält die Funktion 'cmsfunc_call_searchhighlight', die einen Suchtext im übergebenen Text highlighted. Davor wird zunächst Text der in eckigen Klammern steht entfernt ('cmsfunc_call_deletebrackets') und dann auf eine bestimmte Anzahl von Zeichen gekürzt ('cmsfunc_call_limittext'). Die Dateien I. Schicktanz Seite 4 22.03.2012
'cmsfunc_call_deletebrackets.php' und 'cmsfunc_call_limittext.php', die die benötigten Funktionen enthalten, werden am Anfang der Datei eingebunden. Eingebettet wird die Datei in den folgenden Templates: 06_search_hitlist_l 06_search_resultlist_get_default_d 06_search_resultlist_get_ext_link_d 06_search_resultlist_get_media_d 06_search_resultlist_get_news_d 06_search_resultlist_get_person_d 06_search_resultlist_l 90_profile_extra_article_list_l 2.4 cmsfunc_call_deletebrackets Enthält die Funktion 'cmsfunc_call_deletebrackets', die Text in eckigen Klammern aus dem übergebenen Text entfernt. Die Datei wird in der Datei 'cmsfunc_call_searchhighlight.php' eingebunden und dort auch verwendet. 2.5 cmsfunc_call_limittext.php Enthält die Funktion 'cmsfunc_call_limittext', die den übergebenen Text auf eine bestimmte Länge kürzt. Die Datei wird in der Datei 'cmsfunc_call_searchhighlight.php' eingebunden und dort auch verwendet. 2.6 cmsfunc_call_sorterfuncs.php Die Datei enthält die folgenden Funktionen: geturlparamsorter: generiert eine URL aus einer Such-Array getlevelarticlesorter: liefert zu einer gegebenen ID alle Artikel, die auf derselben Ebene liegen. [? %CMS_ASSOC] updatearticlelastsorter: speichert den aktuellen Artikel, falls die übergebenen Daten korrekt sind. updatearticlesorter: speichert den aktuellen Artikel, falls die übergebenen Daten korrekt sind. sortfieldsorter: sortiert die Artikel einer Ebene nach dem neuen Sorter und speichert diese Diese werden auch von der Trigger-Funktion 'tpost_update_sorter' genutzt. Eingebunden wird die Datei in 'tpost_updatesorter.php' und im Template '99_sixcms_internal_sortlist_sorter' in dem die Funktionen auch genutzt werden. 2.7 cmsfunc_call_url_functions.php Die Datei enthält die folgenden Funktionen zur Generierung von URLs: get_url_as_html get_url_with_userparams: get_query_edited_url glue_url http_build_query Eingebettet wird die Datei in den folgenden Templates: 05_content_absatzliste_d I. Schicktanz Seite 5 22.03.2012
05_content_absatzliste_l_orig 05_content_bildergalerie_l 07_schriftgroesse_d Wobei in den Templates selbst nur die Funktionen 'get_url_as_html', 'get_url_with_userparams' und 'get_query_edited_url' verwendet werden. Die beiden anderen Funktionen werden wiederum von diesen Funktionen genutzt. I. Schicktanz Seite 6 22.03.2012
3 Custom-Functions 3.1 custom_func_bremenauthmedia.php Die Datei enthält die Funktion 'custom_func_bremenauthmedia', die prüft, ob der User das Recht hat, das aufgerufene Medium zu sehen. Dazu auch die Funktionen der folgenden eingebundenen Dateien: 'cusom_func_getprofilegroupdefault.php', 'custom_func_getsessiondataagentuser.php' 'custom_func_isidinidlist.php' 3.2 custom_func_getprofilegroupdefault.php Die Datei enthält die Funktion 'custom_func_getprofilegroupdefault', die die Default-Profil-Gruppe zurückgibt. Dazu verwendet die Funktion das Template '90_profile_get_id_l' und die SixCMS-Abfrage '90_profile_group_q' mit der Einschränkung, dass der Status 'online' sein muß und das Feld 'profile_group_key' den Wert 'default' enthält. Eingebunden wird die Datei in 'custom_func_bremenauthmedia.php', in der die Funktion auch genutzt wird. 3.3 custom_func_getsessiondataagentuser.php Die Datei enthält die Funktion 'custom_func_getsessiondataagentuser', die sich die Session-Daten des im Frontend angemeldeten Agent-Users holt. Eingebunden wird die Datei in 'custom_func_bremenauthmedia.php', in der die Funktion auch genutzt wird. 3.4 custom_func_isidinidlist.php Die Datei enthält die Funktion 'custom_func_isidinidlist', die überprüft, ob eine Id ($idlist1) in der Id_liste ($idlist2) enthalten ist. Dabei kann sowohl $idlist1 als auch $idlist2 eine einzelne ID, eine Kommaseparierte ID- Liste oder eine Array mit IDs sein. Eingebunden wird die Datei in 'custom_func_bremenauthmedia.php', in der die Funktion auch genutzt wird. I. Schicktanz Seite 7 22.03.2012
4 Classes Liste von Dateien mit PHP-Klassen, die Funktionen zur Verfügung stellen, die in Templates genutzt werden. 4.1 class_kogis_phpapi.php Damit in Templates keine Angaben mehr über Zugangsdaten von SixCMS Usern stehen, mit denen sich die PHP- API einlogt, stellt die Klasse kogis_phpapi eine Login-Funktion zur Verfügung, die mit einem Pseudo-Usernamen aufgerufen wird. In der Klasse ist die Pseudo-Usernamen der SixCMS-Username und das Passwort hinterlegt. Eingebettet wird die Datei in den folgenden Templates: 10_absaetze_d 10_absaetze_d_urltest 30_change_title_d 30_export_offline_d 30_export_title_l 90_profile_header_logic_d 90_profile_header_logic_d_old 99_remake_sorter_l 99_swap_sorter_d 4.2 classes4nl.php Die Datei enthält die beiden Klassen 'Container' und 'Email', mit denen Artikel in einem Container angelegt, geändert, gelöscht und gesucht werden können, bzw. mit denen E-Mails zusammengestellt und versendet werden können. Genutzt werden die Klassen für den Newsletter, d.h. für das Anlegen, Ändern und Löschen von Abonnenten und den Versand des Newsletters. Eingebettet wird die Datei in den folgenden Templates: 10_nl_abmelden_mail_d 10_nl_abmelden_pruef_d 10_nl_abonnieren_bestaetigen_d 10_nl_abonnieren_mail_d 10_nl_abonnieren_pruef_d 10_nl_aendern_pruef_d 10_nl_aendern_speichern_d 10_nl_versenden_l I. Schicktanz Seite 8 22.03.2012
5 Eingebundene Funktionen Liste von Dateien, die Funktionen enthalten, die nur in anderen Custom-Functions genutzt werden (können). 5.1 add2soapqueue_config.php Stellt Funktionen zur Verfügung, die Konfigurations-Parameter, die in dieser Datei gesetzt wurden, zurückgeben. Dabei handelt es sich zum einen um die GSID des SoapQueue-Containers (Container 'Queue' im Ordner 'Site: Zusatzmodule: IFG: Transfer nach www.bremen.de:'), sowie die Angabe des zu verwendenten Schlüsselfeldes bei Relationen. 5.2 add2soapqueue.php Stellt Funktionen zur Verfügung, die die Daten korrekt aufbereitet und verschlüsselt in der SoapQueue (Container 'Queue' im Ordner 'Site: Zusatzmodule: IFG: Transfer nach www.bremen.de:') ablegen. Dazu werden Funktionen der eingebetteten Datei 'add2soapqueue_config.php' verwendet. Eingebunden wird sie in 'tpost_add2soapqueue_metainfo.php' und 'tpost_add2soapqueue_personen.php'. I. Schicktanz Seite 9 22.03.2012