]> git.mxchange.org Git - friendica.git/blobdiff - mod/pubsubhubbub.php
Fix formatting and PHP notice in mod/photos
[friendica.git] / mod / pubsubhubbub.php
index 97f1c98209b1a30799a1ef7ad18cd8cad4c8707c..f3134308fb9fff24c1783fc0774df09a9a8e9168 100644 (file)
@@ -1,5 +1,9 @@
 <?php
 
+use Friendica\App;
+use Friendica\Core\Config;
+use Friendica\Database\DBM;
+
 function post_var($name) {
        return (x($_POST, $name)) ? notags(trim($_POST[$name])) : '';
 }
@@ -7,19 +11,19 @@ function post_var($name) {
 function pubsubhubbub_init(App $a) {
        // PuSH subscription must be considered "public" so just block it
        // if public access isn't enabled.
-       if (get_config('system', 'block_public')) {
+       if (Config::get('system', 'block_public')) {
                http_status_exit(403);
        }
 
        // Subscription request from subscriber
        // https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.4.html#anchor4
        // Example from GNU Social:
-    // [hub_mode] => subscribe
-    // [hub_callback] => http://status.local/main/push/callback/1
-    // [hub_verify] => sync
-    // [hub_verify_token] => af11...
-    // [hub_secret] => af11...
-    // [hub_topic] => http://friendica.local/dfrn_poll/sazius
+       // [hub_mode] => subscribe
+       // [hub_callback] => http://status.local/main/push/callback/1
+       // [hub_verify] => sync
+       // [hub_verify_token] => af11...
+       // [hub_secret] => af11...
+       // [hub_topic] => http://friendica.local/dfrn_poll/sazius
 
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
                $hub_mode = post_var('hub_mode');
@@ -42,9 +46,14 @@ function pubsubhubbub_init(App $a) {
                logger("pubsubhubbub: $hub_mode request from " .
                           $_SERVER['REMOTE_ADDR']);
 
-               // get the nick name from the topic, a bit hacky but needed
+               // get the nick name from the topic, a bit hacky but needed as a fallback
                $nick = substr(strrchr($hub_topic, "/"), 1);
 
+               // Normally the url should now contain the nick name as last part of the url
+               if ($a->argc > 1) {
+                       $nick = $a->argv[1];
+               }
+
                if (!$nick) {
                        logger('pubsubhubbub: bad hub_topic=$hub_topic, ignoring.');
                        http_status_exit(404);
@@ -55,7 +64,7 @@ function pubsubhubbub_init(App $a) {
                           " AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1",
                           dbesc($nick));
 
-               if (!dbm::is_result($r)) {
+               if (!DBM::is_result($r)) {
                        logger('pubsubhubbub: local account not found: ' . $nick);
                        http_status_exit(404);
                }
@@ -73,7 +82,7 @@ function pubsubhubbub_init(App $a) {
                $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND NOT `blocked`".
                           " AND NOT `pending` AND `self` LIMIT 1",
                           intval($owner['uid']));
-               if (!dbm::is_result($r)) {
+               if (!DBM::is_result($r)) {
                        logger('pubsubhubbub: contact not found.');
                        http_status_exit(404);
                }
@@ -132,7 +141,7 @@ function pubsubhubbub_init(App $a) {
 
                        // if we are just updating an old subscription, keep the
                        // old values for push and last_update
-                       if (dbm::is_result($r)) {
+                       if (DBM::is_result($r)) {
                                $last_update = $r[0]['last_update'];
                                $push_flag = $r[0]['push'];
                        }
@@ -158,5 +167,3 @@ function pubsubhubbub_init(App $a) {
 
        killme();
 }
-
-?>