]> git.mxchange.org Git - friendica.git/commitdiff
Soapbox-Improvements
authorMichael Vogel <icarus@dabo.de>
Sun, 30 Aug 2015 17:07:30 +0000 (19:07 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 30 Aug 2015 17:07:30 +0000 (19:07 +0200)
include/diaspora.php
mod/dfrn_notify.php
mod/follow.php

index 5b242fe3b831936c7299915785ee9df5dc93862e..c874ded4a75fa20708fd4614f290444992fb7c2a 100644 (file)
@@ -590,7 +590,7 @@ function diaspora_request($importer,$xml) {
                // perhaps we were already sharing with this person. Now they're sharing with us.
                // That makes us friends.
 
-               if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
+               if($contact['rel'] == CONTACT_IS_FOLLOWER && !in_array($importer['page-flags'], array(PAGE_COMMUNITY, PAGE_SOAPBOX))) {
                        q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
                                intval(CONTACT_IS_FRIEND),
                                intval($contact['id']),
@@ -767,12 +767,12 @@ function diaspora_request($importer,$xml) {
        return;
 }
 
-function diaspora_post_allow($importer,$contact) {
+function diaspora_post_allow($importer,$contact, $is_comment = false) {
 
        // perhaps we were already sharing with this person. Now they're sharing with us.
        // That makes us friends.
        // Normally this should have handled by getting a request - but this could get lost
-       if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
+       if($contact['rel'] == CONTACT_IS_FOLLOWER && !in_array($importer['page-flags'], array(PAGE_COMMUNITY, PAGE_SOAPBOX))) {
                q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d",
                        intval(CONTACT_IS_FRIEND),
                        intval($contact['id']),
@@ -787,7 +787,7 @@ function diaspora_post_allow($importer,$contact) {
        if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND)
                return true;
        if($contact['rel'] == CONTACT_IS_FOLLOWER)
-               if($importer['page-flags'] == PAGE_COMMUNITY)
+               if(($importer['page-flags'] == PAGE_COMMUNITY) OR $is_comment)
                        return true;
 
        // Messages for the global users are always accepted
@@ -840,7 +840,7 @@ function diaspora_post($importer,$xml,$msg) {
                return 203;
        }
 
-       if(! diaspora_post_allow($importer,$contact)) {
+       if(! diaspora_post_allow($importer,$contact, false)) {
                logger('diaspora_post: Ignoring this author.');
                return 202;
        }
@@ -1117,7 +1117,7 @@ function diaspora_reshare($importer,$xml,$msg) {
        if(! $contact)
                return;
 
-       if(! diaspora_post_allow($importer,$contact)) {
+       if(! diaspora_post_allow($importer,$contact, false)) {
                logger('diaspora_reshare: Ignoring this author: ' . $diaspora_handle . ' ' . print_r($xml,true));
                return 202;
        }
@@ -1303,7 +1303,7 @@ function diaspora_asphoto($importer,$xml,$msg) {
        if(! $contact)
                return;
 
-       if(! diaspora_post_allow($importer,$contact)) {
+       if(! diaspora_post_allow($importer,$contact, false)) {
                logger('diaspora_asphoto: Ignoring this author.');
                return 202;
        }
@@ -1399,7 +1399,7 @@ function diaspora_comment($importer,$xml,$msg) {
                return;
        }
 
-       if(! diaspora_post_allow($importer,$contact)) {
+       if(! diaspora_post_allow($importer,$contact, true)) {
                logger('diaspora_comment: Ignoring this author.');
                return 202;
        }
@@ -1903,7 +1903,7 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
                return;
        }
 
-       if(! diaspora_post_allow($importer,$contact)) {
+       if(! diaspora_post_allow($importer,$contact, false)) {
                logger('diaspora_photo: Ignoring this author.');
                return 202;
        }
@@ -1990,7 +1990,7 @@ function diaspora_like($importer,$xml,$msg) {
                return;
        }
 
-       if(! diaspora_post_allow($importer,$contact)) {
+       if(! diaspora_post_allow($importer,$contact, false)) {
                logger('diaspora_like: Ignoring this author.');
                return 202;
        }
index edf419e92907a5a1430b5327f9850872af46e691..fe7adca4134d69e882da3feef4d4c9de28ae176a 100644 (file)
@@ -130,9 +130,10 @@ function dfrn_notify_post(&$a) {
 
 
        // If we are setup as a soapbox we aren't accepting input from this person
-
-       if($importer['page-flags'] == PAGE_SOAPBOX)
-               xml_status(0);
+       // This behaviour is deactivated since it really doesn't make sense to even disallow comments
+       // The check if someone is a friend or simply a follower is done in a later place so it needn't to be done here
+       //if($importer['page-flags'] == PAGE_SOAPBOX)
+       //      xml_status(0);
 
        $rino = get_config('system','rino_encrypt');
        $rino = intval($rino);
index 95f95d024f728754ebcd5fbb5c174c1b3279d7ad..9b5b39545fe6245eea53483a25f5e6446fa0ca7a 100755 (executable)
@@ -14,10 +14,12 @@ function follow_content(&$a) {
        $uid = local_user();
        $url = notags(trim($_REQUEST['url']));
 
-       $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND
+       // There is a current issue. It seems as if you can't start following a Friendica that is following you
+       // With Diaspora this works - but Friendica is special, it seems ...
+       $r = q("SELECT `url` FROM `contact` WHERE `uid` = %d AND ((`rel` != %d) OR (`network` = '%s')) AND
                (`nurl` = '%s' OR `alias` = '%s' OR `alias` = '%s') AND
                `network` != '%s' LIMIT 1",
-               intval(local_user()), dbesc(normalise_link($url)),
+               intval(local_user()), dbesc(CONTACT_IS_FOLLOWER), dbesc(NETWORK_DFRN), dbesc(normalise_link($url)),
                dbesc(normalise_link($url)), dbesc($url), dbesc(NETWORK_STATUSNET));
 
        if ($r) {