]> git.mxchange.org Git - friendica.git/commitdiff
Add probe_detect hook
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 6 Jun 2020 18:54:04 +0000 (14:54 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 6 Jun 2020 18:54:04 +0000 (14:54 -0400)
doc/Addons.md
src/Network/Probe.php

index bf8f9eef456ae11d8d7bb85a39f1dd5a39dee171..bff707fa8377fb0794a850e8d4c8cc6e557d5013 100644 (file)
@@ -466,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.
index 7a6711c5f1d1751618be04599e224c78f8fb5f21..d4545e72583a018368138b55819f75b2b9281b2e 100644 (file)
@@ -24,6 +24,7 @@ namespace Friendica\Network;
 use DOMDocument;
 use DomXPath;
 use Friendica\Core\Cache\Duration;
+use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
 use Friendica\Core\System;
@@ -617,6 +618,19 @@ class Probe
        {
                $parts = parse_url($uri);
 
+               $hookData = [
+                       'uri'     => $uri,
+                       'network' => $network,
+                       'uid'     => $uid,
+                       'result'  => [],
+               ];
+
+               Hook::callAll('probe_detect', $hookData);
+
+               if ($hookData['result']) {
+                       return $hookData['result'];
+               }
+
                if (!empty($parts["scheme"]) && !empty($parts["host"])) {
                        $host = $parts["host"];
                        if (!empty($parts["port"])) {