]> git.mxchange.org Git - friendica.git/blobdiff - doc/Addons.md
Merge pull request #10614 from tobiasd/20210818-de
[friendica.git] / doc / Addons.md
index d448b026b8cd8cf6d1fa23cf11cd747161c106f1..4a32dc09f430c9a96c477e21412ae6a2869cd454 100644 (file)
@@ -31,7 +31,7 @@ Here's the structure:
  * Status: {Unsupported|Arbitrary status}
  */
 ```
+
 You can also provide a longer documentation in a `README` or `README.md` file.
 The latter will be converted from Markdown to HTML in the addon detail page.
 
@@ -158,13 +158,13 @@ Addons may also act as "modules" and intercept all page requests for a given URL
 In order for a addon to act as a module it needs to declare an empty function `<addon>_module()`.
 
 If this function exists, you will now receive all page requests for `https://my.web.site/<addon>` - with any number of URL components as additional arguments.
-These are parsed into an array $a->argv, with a corresponding $a->argc indicating the number of URL components.
-So `https://my.web.site/addon/arg1/arg2` would look for a module named "addon" and pass its module functions the $a App structure (which is available to many components).
-This will include:
-
+These are parsed into the `App\Arguments` object.
+So `https://my.web.site/addon/arg1/arg2` would give this:
 ```php
-$a->argc = 3
-$a->argv = array(0 => 'addon', 1 => 'arg1', 2 => 'arg2');
+DI::args()->getArgc(); // = 3
+DI::args()->get(0); // = 'addon'
+DI::args()->get(1); // = 'arg1'
+DI::args()->get(2); // = 'arg2'
 ```
 
 To display a module page, you need to declare the function `<addon>_content(App $a)`, which defines and returns the page body content.
@@ -181,6 +181,8 @@ Put your tpl files in the *templates/* subfolder of your addon.
 In your code, like in the function addon_name_content(), load the template file and execute it passing needed values:
 
 ```php
+use Friendica\Core\Renderer;
+
 # load template file. first argument is the template name,
 # second is the addon path relative to friendica top folder
 $tpl = Renderer::getMarkupTemplate('mytemplate.tpl', __DIR__);
@@ -445,7 +447,7 @@ Form field array structure is:
 - **field**: Standard field data structure to be used by `field_checkbox.tpl` and `field_select.tpl`.
 
 For `checkbox`, **field** is:
-  - [0] (String): Form field name; Mandatory. 
+  - [0] (String): Form field name; Mandatory.
   - [1]: (String): Form field label; Optional, default is none.
   - [2]: (Boolean): Whether the checkbox should be checked by default; Optional, default is false.
   - [3]: (String): Additional help text; Optional, default is none.
@@ -456,7 +458,7 @@ For `select`, **field** is:
   - [1] (String): Form field label; Optional, default is none.
   - [2] (Boolean): Default value to be selected by default; Optional, default is none.
   - [3] (String): Additional help text; Optional, default is none.
-  - [4] (Array): Associative array of options. Item key is option value, item value is option label; Mandatory. 
+  - [4] (Array): Associative array of options. Item key is option value, item value is option label; Mandatory.
 
 ### route_collection
 Called just before dispatching the router.
@@ -464,6 +466,19 @@ Hook data is a `\FastRoute\RouterCollector` object that should be used to add ad
 
 **Notice**: The class whose name is provided in the route handler must be reachable via auto-loader.
 
+### probe_detect
+
+Called before trying to detect the target network of a URL.
+If any registered hook function sets the `result` key of the hook data array, it will be returned immediately.
+Hook functions should also return immediately if the hook data contains an existing result.
+
+Hook data:
+
+- **uri** (input): the profile URI.
+- **network** (input): the target network (can be empty for auto-detection).
+- **uid** (input): the user to return the contact data for (can be empty for public contacts).
+- **result** (output): Set by the hook function to indicate a successful detection.
+
 ## Complete list of hook callbacks
 
 Here is a complete list of all hook callbacks with file locations (as of 24-Sep-2018). Please see the source for details of any hooks not documented above.
@@ -503,10 +518,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
     Hook::callAll('item_photo_menu', $args);
     Hook::callAll('jot_tool', $jotplugins);
 
-### include/items.php
-
-    Hook::callAll('page_info_data', $data);
-
 ### mod/directory.php
 
     Hook::callAll('directory_item', $arr);
@@ -540,10 +551,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 
     Hook::callAll('about_hook', $o);
 
-### mod/subthread.php
-
-    Hook::callAll('post_local_end', $arr);
-
 ### mod/profiles.php
 
     Hook::callAll('profile_post', $_POST);
@@ -593,10 +600,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 
     Hook::callAll('post_local_end', $arr);
 
-### mod/lockview.php
-
-    Hook::callAll('lockview_content', $item);
-
 ### mod/uexport.php
 
     Hook::callAll('uexport_options', $options);
@@ -616,10 +619,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 
     Hook::callAll('jot_tool', $jotplugins);
 
-### src/Network/FKOAuth1.php
-
-    Hook::callAll('logged_in', $a->user);
-
 ### src/Render/FriendicaSmartyEngine.php
 
     Hook::callAll("template_vars", $arr);
@@ -663,11 +662,36 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
     Hook::callAll('event_updated', $event['id']);
     Hook::callAll("event_created", $event['id']);
 
+### src/Model/Register.php
+
+    Hook::callAll('authenticate', $addon_auth);
+
 ### src/Model/User.php
 
+    Hook::callAll('authenticate', $addon_auth);
     Hook::callAll('register_account', $uid);
     Hook::callAll('remove_user', $user);
 
+### src/Module/PermissionTooltip.php
+
+    Hook::callAll('lockview_content', $item);
+
+### src/Module/Settings/Delegation.php
+
+    Hook::callAll('authenticate', $addon_auth);
+
+### src/Module/Settings/TwoFactor/Index.php
+
+    Hook::callAll('authenticate', $addon_auth);
+
+### src/Security/Authenticate.php
+
+    Hook::callAll('authenticate', $addon_auth);
+
+### src/Security/ExAuth.php
+
+    Hook::callAll('authenticate', $addon_auth);
+
 ### src/Content/ContactBlock.php
 
     Hook::callAll('contact_block_end', $arr);
@@ -693,9 +717,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
 ### src/Content/ContactSelector.php
 
     Hook::callAll('network_to_name', $nets);
-    Hook::callAll('gender_selector', $select);
-    Hook::callAll('sexpref_selector', $select);
-    Hook::callAll('marital_selector', $select);
 
 ### src/Content/OEmbed.php
 
@@ -706,6 +727,14 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
     Hook::callAll('page_header', DI::page()['nav']);
     Hook::callAll('nav_info', $nav);
 
+### src/Core/Authentication.php
+
+    Hook::callAll('logged_in', $a->user);
+
+### src/Core/StorageManager
+
+    Hook::callAll('storage_instance', $data);
+
 ### src/Worker/Directory.php
 
     Hook::callAll('globaldir_update', $arr);