]> git.mxchange.org Git - friendica.git/blobdiff - doc/de/Plugins.md
Update docs
[friendica.git] / doc / de / Plugins.md
index dcff41a4b64968f6753bc29dbaab3210f0b4c425..f4c14bc61356c63a51099f11ebf691785b345b57 100644 (file)
@@ -1,73 +1,79 @@
-**Friendica Addon/Plugin-Entwicklung**
+Friendica Addon/Entwicklung
 ==============
 
 * [Zur Startseite der Hilfe](help)
 
-Bitte schau dir das Beispiel-Addon "randplace" für ein funktionierendes Beispiel für manche der hier aufgeführten Funktionen an. 
-Das Facebook-Addon bietet ein Beispiel dafür, die "addon"- und "module"-Funktion gemeinsam zu integrieren. 
-Addons arbeiten, indem sie Event Hooks abfangen. Module arbeiten, indem bestimmte Seitenanfragen (durch den URL-Pfad) abgefangen werden 
+Bitte schau dir das Beispiel-Addon "randplace" für ein funktionierendes Beispiel für manche der hier aufgeführten Funktionen an.
+Das Facebook-Addon bietet ein Beispiel dafür, die "addon"- und "module"-Funktion gemeinsam zu integrieren.
+Addons arbeiten, indem sie Event Hooks abfangen.
+Module arbeiten, indem bestimmte Seitenanfragen (durch den URL-Pfad) abgefangen werden.
 
-Plugin-Namen können keine Leerstellen oder andere Interpunktionen enthalten und werden als Datei- und Funktionsnamen genutzt. 
-Du kannst einen lesbaren Namen im Kommentarblock eintragen. 
-Jedes Addon muss beides beinhalten - eine Installations- und eine Deinstallationsfunktion, die auf dem Addon-/Plugin-Namen basieren; z.B. "plugin1name_install()". 
-Diese beiden Funktionen haben keine Argumente und sind dafür verantwortlich, Event Hooks zu registrieren und abzumelden (unregistering), die dein Plugin benötigt. 
-Die Installations- und Deinstallationsfunktionfunktionen werden auch ausgeführt (z.B. neu installiert), wenn sich das Plugin nach der Installation ändert - somit sollte deine Deinstallationsfunktion keine Daten zerstört und deine Installationsfunktion sollte bestehende Daten berücksichtigen. 
+Addon-Namen können keine Leerstellen oder andere Interpunktionen enthalten und werden als Datei- und Funktionsnamen genutzt.
+Du kannst einen lesbaren Namen im Kommentarblock eintragen.
+Jedes Addon muss beides beinhalten - eine Installations- und eine Deinstallationsfunktion, die auf dem Addon-Namen basieren; z.B. "addon1name_install()".
+Diese beiden Funktionen haben keine Argumente und sind dafür verantwortlich, Event Hooks zu registrieren und abzumelden (unregistering), die dein Addon benötigt.
+Die Installations- und Deinstallationsfunktionfunktionen werden auch ausgeführt (z.B. neu installiert), wenn sich das Addon nach der Installation ändert - somit sollte deine Deinstallationsfunktion keine Daten zerstört und deine Installationsfunktion sollte bestehende Daten berücksichtigen.
 Zukünftige Extensions werden möglicherweise "Setup" und "Entfernen" anbieten.
 
-Plugins sollten einen Kommentarblock mit den folgenden vier Parametern enthalten:
+Addons sollten einen Kommentarblock mit den folgenden vier Parametern enthalten:
 
-       /*
-       * Name: My Great Plugin 
-       * Description: This is what my plugin does. It's really cool
-       * Version: 1.0
-       * Author: John Q. Public <john@myfriendicasite.com>
-       */
+    /*
+     * Name: My Great Addon
+     * Description: This is what my addon does. It's really cool.
+     * Version: 1.0
+     * Author: John Q. Public <john@myfriendicasite.com>
+     */
 
-Registriere deine Plugin-Hooks während der Installation.
+Registriere deine Addon-Hooks während der Installation.
 
-    register_hook($hookname, $file, $function);
+    Addon::registerHook($hookname, $file, $function);
 
 $hookname ist ein String und entspricht einem bekannten Friendica-Hook.
 
-$file steht für den Pfadnamen, der relativ zum Top-Level-Friendicaverzeichnis liegt. 
-Das *sollte* "addon/plugin_name/plugin_name.php' sein.
+$file steht für den Pfadnamen, der relativ zum Top-Level-Friendicaverzeichnis liegt.
+Das *sollte* "addon/addon_name/addon_name.php' sein.
 
 $function ist ein String und der Name der Funktion, die ausgeführt wird, wenn der Hook aufgerufen wird.
 
+Argumente
+---
+
 Deine Hook-Callback-Funktion wird mit mindestens einem und bis zu zwei Argumenten aufgerufen
 
-    function myhook_function(&$a, &$b) {
+    function myhook_function(App $a, &$b) {
 
     }
 
-Wenn du Änderungen an den aufgerufenen Daten vornehmen willst, musst du diese als Referenzvariable (mit "&") während der Funktionsdeklaration deklarieren. 
+Wenn du Änderungen an den aufgerufenen Daten vornehmen willst, musst du diese als Referenzvariable (mit "&") während der Funktionsdeklaration deklarieren.
 
-$a ist die Friendica "App"-Klasse, die eine Menge an Informationen über den aktuellen Friendica-Status beinhaltet, u.a. welche Module genutzt werden, Konfigurationsinformationen, Inhalte der Seite zum Zeitpunkt des Hook-Aufrufs. 
-Es ist empfohlen, diese Funktion "$a" zu nennen, um seine Nutzung an den Gebrauch an anderer Stelle anzugleichen. 
+$a ist die Friendica "App"-Klasse, die eine Menge an Informationen über den aktuellen Friendica-Status beinhaltet, u.a. welche Module genutzt werden, Konfigurationsinformationen, Inhalte der Seite zum Zeitpunkt des Hook-Aufrufs.
+Es ist empfohlen, diese Funktion "$a" zu nennen, um seine Nutzung an den Gebrauch an anderer Stelle anzugleichen.
 
-$b kann frei benannt werden. 
-Diese Information ist speziell auf den Hook bezogen, der aktuell bearbeitet wird, und beinhaltet normalerweise Daten, die du sofort nutzen, anzeigen oder bearbeiten kannst. 
-Achte darauf, diese mit "&" zu deklarieren, wenn du sie bearbeiten willst. 
+$b kann frei benannt werden.
+Diese Information ist speziell auf den Hook bezogen, der aktuell bearbeitet wird, und beinhaltet normalerweise Daten, die du sofort nutzen, anzeigen oder bearbeiten kannst.
+Achte darauf, diese mit "&" zu deklarieren, wenn du sie bearbeiten willst.
 
 
-**Module**
+Module
+---
 
-Plugins/Addons können auch als "Module" agieren und alle Seitenanfragen für eine bestimte URL abfangen. 
-Um ein Plugin als Modul zu nutzen, ist es nötig, die Funktion "plugin_name_module()" zu definieren, die keine Argumente benötigt und nichts weiter machen muss. 
+Addons können auch als "Module" agieren und alle Seitenanfragen für eine bestimte URL abfangen.
+Um ein Addon als Modul zu nutzen, ist es nötig, die Funktion "addon_name_module()" zu definieren, die keine Argumente benötigt und nichts weiter machen muss.
 
-Wenn diese Funktion existiert, wirst du nun alle Seitenanfragen für "http://my.web.site/plugin_name" erhalten - mit allen URL-Komponenten als zusätzliche Argumente. 
-Diese werden in ein Array $a->argv geparst und stimmen mit $a->argc überein, wobei sie die Anzahl der URL-Komponenten abbilden. 
-So würde http://my.web.site/plugin/arg1/arg2 nach einem Modul "plugin" suchen und seiner Modulfunktion die $a-App-Strukur übergeben (dies ist für viele Komponenten verfügbar). Das umfasst:
+Wenn diese Funktion existiert, wirst du nun alle Seitenanfragen für "http://example.com/addon_name" erhalten - mit allen URL-Komponenten als zusätzliche Argumente.
+Diese werden in ein Array $a->argv geparst und stimmen mit $a->argc überein, wobei sie die Anzahl der URL-Komponenten abbilden.
+So würde http://example.com/addon/arg1/arg2 nach einem Modul "addon" suchen und seiner Modulfunktion die $a-App-Strukur übergeben (dies ist für viele Komponenten verfügbar). Das umfasst:
 
-     $a->argc = 3
-     $a->argv = array(0 => 'plugin', 1 => 'arg1', 2 => 'arg2');
+    $a->argc = 3
+    $a->argv = array(0 => 'addon', 1 => 'arg1', 2 => 'arg2');
 
-Deine Modulfunktionen umfassen oft die Funktion plugin_name_content(&$a), welche den Seiteninhalt definiert und zurückgibt. 
-Sie können auch plugin_name_post(&$a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt. 
-Du kannst ebenso plugin_name_init(&$a) nutzen, was oft frühzeitig aufgerufen wird und das Modul initialisert.
+Deine Modulfunktionen umfassen oft die Funktion addon_name_content(App $a), welche den Seiteninhalt definiert und zurückgibt.
+Sie können auch addon_name_post(App $a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt.
+Du kannst ebenso addon_name_init(App $a) nutzen, was oft frühzeitig aufgerufen wird und das Modul initialisert.
 
 
-**Derzeitige Hooks:**
+Derzeitige Hooks
+---
 
 **'authenticate'** - wird aufgerufen, wenn sich der User einloggt.
     $b ist ein Array
@@ -103,10 +109,10 @@ Du kannst ebenso plugin_name_init(&$a) nutzen, was oft frühzeitig aufgerufen wi
 **'settings_post'** - wird aufgerufen, wenn die Einstellungsseiten geladen werden.
     $b ist der $_POST-Array
 
-**'plugin_settings'** - wird aufgerufen, wenn die HTML-Ausgabe der Addon-Einstellungsseite generiert wird.
+**'addon_settings'** - wird aufgerufen, wenn die HTML-Ausgabe der Addon-Einstellungsseite generiert wird.
     $b ist die HTML-Ausgabe (String) der Addon-Einstellungsseite vor dem finalen "</form>"-Tag.
 
-**'plugin_settings_post'** - wird aufgerufen, wenn die Addon-Einstellungsseite geladen wird.
+**'addon_settings_post'** - wird aufgerufen, wenn die Addon-Einstellungsseite geladen wird.
     $b ist der $_POST-Array
 
 **'profile_post'** - wird aufgerufen, wenn die Profilseite angezeigt wird.
@@ -180,183 +186,181 @@ Du kannst ebenso plugin_name_init(&$a) nutzen, was oft frühzeitig aufgerufen wi
  - wird aufgerufen nachdem in include/nav,php der Inhalt des Navigations Menüs erzeugt wurde.
  - $b ist ein Array, das $nav wiederspiegelt.
 
-Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 14-Feb-2012 generiert): Bitte schau in die Quellcodes für Details zu Hooks, die oben nicht dokumentiert sind.
-
-boot.php:                      call_hooks('login_hook',$o);
+Komplette Liste der Hook-Callbacks
+---
 
-boot.php:                      call_hooks('profile_sidebar_enter', $profile);
-
-boot.php:                      call_hooks('profile_sidebar', $arr);
+Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 14-Feb-2012 generiert): Bitte schau in die Quellcodes für Details zu Hooks, die oben nicht dokumentiert sind.
 
-boot.php:                      call_hooks("proc_run", $arr);
+boot.php:                      Addon::callHooks('login_hook',$o);
 
-include/contact_selectors.php: call_hooks('network_to_name', $nets);
+boot.php:                      Addon::callHooks('profile_sidebar_enter', $profile);
 
-include/api.php:               call_hooks('logged_in', $a->user);
+boot.php:                      Addon::callHooks('profile_sidebar', $arr);
 
-include/api.php:               call_hooks('logged_in', $a->user);
+boot.php:                      Addon::callHooks("proc_run", $arr);
 
-include/queue.php:             call_hooks('queue_predeliver', $a, $r);
+include/contact_selectors.php: Addon::callHooks('network_to_name', $nets);
 
-include/queue.php:             call_hooks('queue_deliver', $a, $params);
+include/api.php:               Addon::callHooks('logged_in', $a->user);
 
-include/text.php:              call_hooks('contact_block_end', $arr);
+include/api.php:               Addon::callHooks('logged_in', $a->user);
 
-include/text.php:              call_hooks('smilie', $s);
+include/queue.php:             Addon::callHooks('queue_predeliver', $a, $r);
 
-include/text.php:              call_hooks('prepare_body_init', $item); 
+include/queue.php:             Addon::callHooks('queue_deliver', $a, $params);
 
-include/text.php:              call_hooks('prepare_body', $prep_arr);
+include/text.php:              Addon::callHooks('contact_block_end', $arr);
 
-include/text.php:              call_hooks('prepare_body_final', $prep_arr);
+include/text.php:              Addon::callHooks('smilie', $s);
 
-include/nav.php:               call_hooks('page_header', $a->page['nav']);
+include/text.php:              Addon::callHooks('prepare_body_init', $item);
 
-include/auth.php:              call_hooks('authenticate', $addon_auth);
+include/text.php:              Addon::callHooks('prepare_body', $prep_arr);
 
-include/bbcode.php:            call_hooks('bbcode',$Text);
+include/text.php:              Addon::callHooks('prepare_body_final', $prep_arr);
 
-include/oauth.php:             call_hooks('logged_in', $a->user);
+include/nav.php:               Addon::callHooks('page_header', $a->page['nav']);
 
-include/acl_selectors.php:     call_hooks($a->module . '_pre_' . $selname, $arr);
+include/auth.php:              Addon::callHooks('authenticate', $addon_auth);
 
-include/acl_selectors.php:     call_hooks($a->module . '_post_' . $selname, $o);
+include/bbcode.php:            Addon::callHooks('bbcode',$Text);
 
-include/acl_selectors.php:     call_hooks('contact_select_options', $x);
+include/oauth.php:             Addon::callHooks('logged_in', $a->user);
 
-include/acl_selectors.php:     call_hooks($a->module . '_pre_' . $selname, $arr);
+include/acl_selectors.php:     Addon::callHooks($a->module . '_pre_' . $selname, $arr);
 
-include/acl_selectors.php:     call_hooks($a->module . '_post_' . $selname, $o);
+include/acl_selectors.php:     Addon::callHooks($a->module . '_post_' . $selname, $o);
 
-include/acl_selectors.php:     call_hooks($a->module . '_pre_' . $selname, $arr);
+include/acl_selectors.php:     Addon::callHooks('contact_select_options', $x);
 
-include/acl_selectors.php:     call_hooks($a->module . '_post_' . $selname, $o);
+include/acl_selectors.php:     Addon::callHooks($a->module . '_pre_' . $selname, $arr);
 
-include/notifier.php:          call_hooks('notifier_normal',$target_item);
+include/acl_selectors.php:     Addon::callHooks($a->module . '_post_' . $selname, $o);
 
-include/notifier.php:          call_hooks('notifier_end',$target_item);
+include/acl_selectors.php:     Addon::callHooks($a->module . '_pre_' . $selname, $arr);
 
-include/items.php:             call_hooks('atom_feed', $atom);
+include/acl_selectors.php:     Addon::callHooks($a->module . '_post_' . $selname, $o);
 
-include/items.php:             call_hooks('atom_feed_end', $atom);
+include/notifier.php:          Addon::callHooks('notifier_normal',$target_item);
 
-include/items.php:             call_hooks('atom_feed_end', $atom);
+include/notifier.php:          Addon::callHooks('notifier_end',$target_item);
 
-include/items.php:             call_hooks('parse_atom', $arr);
+include/items.php:             Addon::callHooks('atom_feed', $atom);
 
-include/items.php:             call_hooks('post_remote',$arr);
+include/items.php:             Addon::callHooks('atom_feed_end', $atom);
 
-include/items.php:             call_hooks('atom_author', $o);
+include/items.php:             Addon::callHooks('atom_feed_end', $atom);
 
-include/items.php:             call_hooks('atom_entry', $o);
+include/items.php:             Addon::callHooks('parse_atom', $arr);
 
-include/bb2diaspora.php:       call_hooks('bb2diaspora',$Text);
+include/items.php:             Addon::callHooks('post_remote',$arr);
 
-include/cronhooks.php:         call_hooks('cron', $d);
+include/items.php:             Addon::callHooks('atom_author', $o);
 
-include/security.php:          call_hooks('logged_in', $a->user);
+include/items.php:             Addon::callHooks('atom_entry', $o);
 
-include/html2bbcode.php:       call_hooks('html2bbcode', $text);
+include/bb2diaspora.php:       Addon::callHooks('bb2diaspora',$Text);
 
-include/Contact.php:           call_hooks('remove_user',$r[0]);
+include/cronhooks.php:         Addon::callHooks('cron', $d);
 
-include/Contact.php:           call_hooks('contact_photo_menu', $args);
+include/security.php:          Addon::callHooks('logged_in', $a->user);
 
-include/conversation.php:      call_hooks('conversation_start',$cb);
+include/html2bbcode.php:       Addon::callHooks('html2bbcode', $text);
 
-include/conversation.php:      call_hooks('render_location',$locate);
+include/Contact.php:           Addon::callHooks('remove_user',$r[0]);
 
-include/conversation.php:      call_hooks('display_item', $arr);
+include/Contact.php:           Addon::callHooks('contact_photo_menu', $args);
 
-include/conversation.php:      call_hooks('render_location',$locate);
+include/conversation.php:      Addon::callHooks('conversation_start',$cb);
 
-include/conversation.php:      call_hooks('display_item', $arr);
+include/conversation.php:      Addon::callHooks('render_location',$locate);
 
-include/conversation.php:      call_hooks('item_photo_menu', $args);
+include/conversation.php:      Addon::callHooks('display_item', $arr);
 
-include/conversation.php:      call_hooks('jot_tool', $jotplugins);
+include/conversation.php:      Addon::callHooks('render_location',$locate);
 
-include/conversation.php:      call_hooks('jot_networks', $jotnets);
+include/conversation.php:      Addon::callHooks('display_item', $arr);
 
-include/plugin.php:            if(! function_exists('call_hooks')) {
+include/conversation.php:      Addon::callHooks('item_photo_menu', $args);
 
-include/plugin.php:function    call_hooks($name, &$data = null) {
+include/conversation.php:      Addon::callHooks('jot_tool', $jotplugins);
 
-index.php:                     call_hooks('init_1');
+include/conversation.php:      Addon::callHooks('jot_networks', $jotnets);
 
-index.php:                     call_hooks('app_menu', $arr);
+index.php:                     Addon::callHooks('init_1');
 
-index.php:                     call_hooks('page_end', $a->page['content']);
+index.php:                     Addon::callHooks('app_menu', $arr);
 
-mod/photos.php:                        call_hooks('photo_post_init', $_POST);
+index.php:                     Addon::callHooks('page_end', $a->page['content']);
 
-mod/photos.php:                        call_hooks('photo_post_file',$ret);
+mod/photos.php:                        Addon::callHooks('photo_post_init', $_POST);
 
-mod/photos.php:                        call_hooks('photo_post_end',$foo);
+mod/photos.php:                        Addon::callHooks('photo_post_file',$ret);
 
-mod/photos.php:                        call_hooks('photo_post_end',$foo);
+mod/photos.php:                        Addon::callHooks('photo_post_end',$foo);
 
-mod/photos.php:                        call_hooks('photo_post_end',$foo);
+mod/photos.php:                        Addon::callHooks('photo_post_end',$foo);
 
-mod/photos.php:                        call_hooks('photo_post_end',intval($item_id));
+mod/photos.php:                        Addon::callHooks('photo_post_end',$foo);
 
-mod/photos.php:                        call_hooks('photo_upload_form',$ret);
+mod/photos.php:                        Addon::callHooks('photo_post_end',intval($item_id));
 
-mod/friendica.php:             call_hooks('about_hook', $o);   
+mod/photos.php:                        Addon::callHooks('photo_upload_form',$ret);
 
-mod/editpost.php:              call_hooks('jot_tool', $jotplugins);
+mod/friendica.php:             Addon::callHooks('about_hook', $o);
 
-mod/editpost.php:              call_hooks('jot_networks', $jotnets);
+mod/editpost.php:              Addon::callHooks('jot_tool', $jotplugins);
 
-mod/parse_url.php:             call_hooks('parse_link', $arr);
+mod/editpost.php:              Addon::callHooks('jot_networks', $jotnets);
 
-mod/home.php:                  call_hooks('home_init',$ret);
+mod/parse_url.php:             Addon::callHooks('parse_link', $arr);
 
-mod/home.php:                  call_hooks("home_content",$o);
+mod/home.php:                  Addon::callHooks('home_init',$ret);
 
-mod/contacts.php:              call_hooks('contact_edit_post', $_POST);
+mod/home.php:                  Addon::callHooks("home_content",$o);
 
-mod/contacts.php:              call_hooks('contact_edit', $arr);
+mod/contacts.php:              Addon::callHooks('contact_edit_post', $_POST);
 
-mod/settings.php:              call_hooks('plugin_settings_post', $_POST);
+mod/contacts.php:              Addon::callHooks('contact_edit', $arr);
 
-mod/settings.php:              call_hooks('connector_settings_post', $_POST);
+mod/settings.php:              Addon::callHooks('addon_settings_post', $_POST);
 
-mod/settings.php:              call_hooks('settings_post', $_POST);
+mod/settings.php:              Addon::callHooks('connector_settings_post', $_POST);
 
-mod/settings.php:              call_hooks('plugin_settings', $settings_addons);
+mod/settings.php:              Addon::callHooks('settings_post', $_POST);
 
-mod/settings.php:              call_hooks('connector_settings', $settings_connectors);
+mod/settings.php:              Addon::callHooks('addon_settings', $settings_addons);
 
-mod/settings.php:              call_hooks('settings_form',$o);
+mod/settings.php:              Addon::callHooks('connector_settings', $settings_connectors);
 
-mod/register.php:              call_hooks('register_account', $newuid);
+mod/settings.php:              Addon::callHooks('settings_form',$o);
 
-mod/like.php:                  call_hooks('post_local_end', $arr);
+mod/register.php:              Addon::callHooks('register_account', $newuid);
 
-mod/xrd.php:                   call_hooks('personal_xrd', $arr);
+mod/like.php:                  Addon::callHooks('post_local_end', $arr);
 
-mod/item.php:                  call_hooks('post_local_start', $_REQUEST);
+mod/xrd.php:                   Addon::callHooks('personal_xrd', $arr);
 
-mod/item.php:                  call_hooks('post_local',$datarray);
+mod/item.php:                  Addon::callHooks('post_local_start', $_REQUEST);
 
-mod/item.php:                  call_hooks('post_local_end', $datarray);
+mod/item.php:                  Addon::callHooks('post_local',$datarray);
 
-mod/profile.php:               call_hooks('profile_advanced',$o);
+mod/item.php:                  Addon::callHooks('post_local_end', $datarray);
 
-mod/profiles.php:              call_hooks('profile_post', $_POST);
+mod/profile.php:               Addon::callHooks('profile_advanced',$o);
 
-mod/profiles.php:              call_hooks('profile_edit', $arr);
+mod/profiles.php:              Addon::callHooks('profile_post', $_POST);
 
-mod/tagger.php:                        call_hooks('post_local_end', $arr);
+mod/profiles.php:              Addon::callHooks('profile_edit', $arr);
 
-mod/cb.php:                    call_hooks('cb_init');
+mod/tagger.php:                        Addon::callHooks('post_local_end', $arr);
 
-mod/cb.php:                    call_hooks('cb_post', $_POST);
+mod/cb.php:                    Addon::callHooks('cb_init');
 
-mod/cb.php:                    call_hooks('cb_afterpost');
+mod/cb.php:                    Addon::callHooks('cb_post', $_POST);
 
-mod/cb.php:                    call_hooks('cb_content', $o);
+mod/cb.php:                    Addon::callHooks('cb_afterpost');
 
-mod/directory.php:             call_hooks('directory_item', $arr);
+mod/cb.php:                    Addon::callHooks('cb_content', $o);
 
+mod/directory.php:             Addon::callHooks('directory_item', $arr);