aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-04-10 19:29:21 -0700
committerFriendika <info@friendika.com>2011-04-10 19:29:21 -0700
commit3d51518a13fd44da3fa9a01b9ae1f1baa5d41848 (patch)
tree70828f278ca87308c2c3718031a53dd0c15b1b2a
parent63030ca51e9e7f6fbd50aed6b9f6a3cf10084a3f (diff)
downloadvolse-hubzilla-3d51518a13fd44da3fa9a01b9ae1f1baa5d41848.tar.gz
volse-hubzilla-3d51518a13fd44da3fa9a01b9ae1f1baa5d41848.tar.bz2
volse-hubzilla-3d51518a13fd44da3fa9a01b9ae1f1baa5d41848.zip
set writable flag on dfrn_poll
-rw-r--r--include/poller.php11
-rw-r--r--mod/dfrn_notify.php10
-rw-r--r--mod/dfrn_poll.php18
3 files changed, 34 insertions, 5 deletions
diff --git a/include/poller.php b/include/poller.php
index 9362c28b3..cb2461584 100644
--- a/include/poller.php
+++ b/include/poller.php
@@ -165,11 +165,15 @@ function poller_run($argv, $argc){
if(intval($contact['duplex']) && $contact['dfrn-id'])
$idtosend = '0:' . $orig_id;
if(intval($contact['duplex']) && $contact['issued-id'])
- $idtosend = '1:' . $orig_id;
+ $idtosend = '1:' . $orig_id;
+
+ // they have permission to write to us. We already filtered this in the contact query.
+ $perm = 'rw';
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
- . '&type=data&last_update=' . $last_update ;
+ . '&type=data&last_update=' . $last_update
+ . '&perm=' . $perm ;
$xml = fetch_url($url);
@@ -250,13 +254,14 @@ function poller_run($argv, $argc){
$final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) {
-
+ logger('poller: ID did not decode: ' . $contact['id'] . ' orig: ' . $orig_id . ' final: ' . $final_dfrn_id);
// did not decode properly - cannot trust this site
continue;
}
$postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
+ $postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars);
}
diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php
index dd6866b38..f6f68d348 100644
--- a/mod/dfrn_notify.php
+++ b/mod/dfrn_notify.php
@@ -80,6 +80,14 @@ function dfrn_notify_post(&$a) {
$importer = $r[0];
+ if(($writable != (-1)) && ($writable != $importer['writable'])) {
+ q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
+ intval($writable),
+ intval($importer['id'])
+ );
+ $importer['writable'] = $writable;
+ }
+
logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
logger('dfrn_notify: data: ' . $data, LOGGER_DATA);
@@ -124,8 +132,6 @@ function dfrn_notify_post(&$a) {
}
-
-
if($importer['readonly']) {
// We aren't receiving stuff from this person. But we will quietly ignore them
// rather than a blatant "go away" message.
diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php
index a2fdb9ee1..d68841d05 100644
--- a/mod/dfrn_poll.php
+++ b/mod/dfrn_poll.php
@@ -297,6 +297,7 @@ function dfrn_poll_post(&$a) {
if(! count($r))
killme();
+ $contact = $r[0];
$owner_uid = $r[0]['uid'];
$contact_id = $r[0]['id'];
@@ -330,6 +331,23 @@ function dfrn_poll_post(&$a) {
// NOTREACHED
}
else {
+
+ // Update the writable flag if it changed
+
+ if($dfrn_version >= 2.21) {
+ if($perm === 'rw')
+ $writable = 1;
+ else
+ $writable = 0;
+
+ if($writable != $contact['writable]) {
+ q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1",
+ intval($writable),
+ intval($contact_id)
+ );
+ }
+ }
+
header("Content-type: application/atom+xml");
$o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction);
echo $o;