]> git.mxchange.org Git - friendica.git/commitdiff
improved rw notifications
authorfriendica <info@friendica.com>
Thu, 29 Mar 2012 00:21:56 +0000 (17:21 -0700)
committerfriendica <info@friendica.com>
Thu, 29 Mar 2012 00:21:56 +0000 (17:21 -0700)
include/items.php
mod/dfrn_notify.php

index 2eecadad108530e0b01b6c000f8b58dd3dbda914..9f7eb84d96398e07caf413febdd79555af52ae95 100755 (executable)
@@ -1090,12 +1090,23 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
        $postvars     = array();
        $sent_dfrn_id = hex2bin((string) $res->dfrn_id);
        $challenge    = hex2bin((string) $res->challenge);
+       $perm         = (($res->perm) ? $res->perm : null);
        $dfrn_version = (float) (($res->dfrn_version) ? $res->dfrn_version : 2.0);
        $rino_allowed = ((intval($res->rino) === 1) ? 1 : 0);
        $page         = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0);
 
        $final_dfrn_id = '';
 
+       if($perm) {
+               if((($perm == 'rw') && (! intval($contact['writable']))) 
+               || (($perm == 'r') && (intval($contact['writable'])))) {
+                       q("update contact set writable = %d where id = %d limit 1",
+                               intval(($perm == 'rw') ? 1 : 0),
+                               intval($contact['id'])
+                       );
+                       $contact['writable'] = (string) 1 - intval($contact['writable']);                       
+               }
+       }
 
        if(($contact['duplex'] && strlen($contact['pubkey'])) 
                || ($owner['page-flags'] == PAGE_COMMUNITY && strlen($contact['pubkey']))
index 71860ac3b13e50d8eccdba825248758df4a6f2bc..8e4ce067190a556f09a0b9efad40760bdb161dbd 100755 (executable)
@@ -158,6 +158,7 @@ function dfrn_notify_post(&$a) {
                );
        }
                        
+
        logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
        logger('dfrn_notify: data: ' . $data, LOGGER_DATA);
 
@@ -174,6 +175,13 @@ 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);
+
+
        if(strlen($key)) {
                $rawkey = hex2bin(trim($key));
                logger('rino: md5 raw key: ' . md5($rawkey));
@@ -261,7 +269,7 @@ function dfrn_notify_content(&$a) {
                                break; // NOTREACHED
                }
 
-               $r = q("SELECT `contact`.*, `user`.`nickname` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` 
+               $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`page-flags` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` 
                                WHERE `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `user`.`nickname` = '%s' 
                                AND `user`.`account_expired` = 0 $sql_extra LIMIT 1",
                                dbesc($a->argv[1])
@@ -299,6 +307,12 @@ function dfrn_notify_content(&$a) {
                if(! $rino_enable)
                        $rino = 0;
 
+               if((($r[0]['rel']) && ($r[0]['rel'] != CONTACT_IS_SHARING)) || ($r[0]['page-flags'] == PAGE_COMMUNITY)) {
+                       $perm = 'rw';
+               }
+               else {
+                       $perm = 'r';
+               }
 
                header("Content-type: text/xml");
 
@@ -306,7 +320,8 @@ function dfrn_notify_content(&$a) {
                        . '<dfrn_notify>' . "\r\n"
                        . "\t" . '<status>' . $status . '</status>' . "\r\n"
                        . "\t" . '<dfrn_version>' . DFRN_PROTOCOL_VERSION . '</dfrn_version>' . "\r\n"
-                       . "\t" . '<rino>' . $rino . '</rino>' . "\r\n" 
+                       . "\t" . '<rino>' . $rino . '</rino>' . "\r\n"
+                       . "\t" . '<perm>' . $perm . '</perm>' . "\r\n" 
                        . "\t" . '<dfrn_id>' . $encrypted_id . '</dfrn_id>' . "\r\n" 
                        . "\t" . '<challenge>' . $challenge . '</challenge>' . "\r\n"
                        . '</dfrn_notify>' . "\r\n" ;