set writable flag on dfrn_poll

This commit is contained in:
Friendika 2011-04-10 19:29:21 -07:00
parent 63030ca51e
commit 3d51518a13
3 changed files with 34 additions and 5 deletions

View file

@ -167,9 +167,13 @@ function poller_run($argv, $argc){
if(intval($contact['duplex']) && $contact['issued-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 $url = $contact['poll'] . '?dfrn_id=' . $idtosend
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION . '&dfrn_version=' . DFRN_PROTOCOL_VERSION
. '&type=data&last_update=' . $last_update ; . '&type=data&last_update=' . $last_update
. '&perm=' . $perm ;
$xml = fetch_url($url); $xml = fetch_url($url);
@ -250,13 +254,14 @@ function poller_run($argv, $argc){
$final_dfrn_id = substr($final_dfrn_id,2); $final_dfrn_id = substr($final_dfrn_id,2);
if($final_dfrn_id != $orig_id) { 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 // did not decode properly - cannot trust this site
continue; continue;
} }
$postvars['dfrn_id'] = $idtosend; $postvars['dfrn_id'] = $idtosend;
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION; $postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
$postvars['perm'] = 'rw';
$xml = post_url($contact['poll'],$postvars); $xml = post_url($contact['poll'],$postvars);
} }

View file

@ -80,6 +80,14 @@ function dfrn_notify_post(&$a) {
$importer = $r[0]; $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: received notify from ' . $importer['name'] . ' for ' . $importer['username']);
logger('dfrn_notify: data: ' . $data, LOGGER_DATA); logger('dfrn_notify: data: ' . $data, LOGGER_DATA);
@ -124,8 +132,6 @@ function dfrn_notify_post(&$a) {
} }
if($importer['readonly']) { if($importer['readonly']) {
// We aren't receiving stuff from this person. But we will quietly ignore them // We aren't receiving stuff from this person. But we will quietly ignore them
// rather than a blatant "go away" message. // rather than a blatant "go away" message.

View file

@ -297,6 +297,7 @@ function dfrn_poll_post(&$a) {
if(! count($r)) if(! count($r))
killme(); killme();
$contact = $r[0];
$owner_uid = $r[0]['uid']; $owner_uid = $r[0]['uid'];
$contact_id = $r[0]['id']; $contact_id = $r[0]['id'];
@ -330,6 +331,23 @@ function dfrn_poll_post(&$a) {
// NOTREACHED // NOTREACHED
} }
else { 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"); header("Content-type: application/atom+xml");
$o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction); $o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction);
echo $o; echo $o;