rework remote deletion

This commit is contained in:
Friendika 2011-02-08 04:25:27 -08:00
parent d280184b87
commit d8cd693f11
2 changed files with 95 additions and 77 deletions

View file

@ -1031,25 +1031,18 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
} }
// Now process the feed
if($feed->get_item_quantity()) {
// in inverse date order // process any deleted entries
if ($datedir)
$items = array_reverse($feed->get_items());
else
$items = $feed->get_items();
foreach($items as $item) {
$del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
if(is_array($del_entries) && count($del_entries)) {
foreach($del_entries as $dentry) {
$deleted = false; $deleted = false;
if(isset($dentry['attribs']['']['ref'])) {
$rawdelete = $item->get_item_tags( NAMESPACE_TOMB, 'deleted-entry'); $uri = $dentry['attribs']['']['ref'];
if(isset($rawdelete[0]['attribs']['']['ref'])) {
$uri = $rawthread[0]['attribs']['']['ref'];
$deleted = true; $deleted = true;
if(isset($rawdelete[0]['attribs']['']['when'])) { if(isset($dentry['attribs']['']['when'])) {
$when = $rawthread[0]['attribs']['']['when']; $when = $dentry['attribs']['']['when'];
$when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s'); $when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s');
} }
else else
@ -1063,6 +1056,10 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
); );
if(count($r)) { if(count($r)) {
$item = $r[0]; $item = $r[0];
if(! $item['deleted'])
logger('dfrn_notify: deleting item ' . $item['id'] . ' uri=' . $item['uri'], LOGGER_DEBUG);
if($item['uri'] == $item['parent-uri']) { if($item['uri'] == $item['parent-uri']) {
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s',
`body` = '', `title` = '' `body` = '', `title` = ''
@ -1103,9 +1100,24 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
} }
} }
} }
continue; }
}
} }
// Now process the feed
if($feed->get_item_quantity()) {
logger('consume_feed: feed item count = ' . $feed->get_item_quantity());
// in inverse date order
if ($datedir)
$items = array_reverse($feed->get_items());
else
$items = $feed->get_items();
foreach($items as $item) {
$is_reply = false; $is_reply = false;
$item_id = $item->get_id(); $item_id = $item->get_id();
@ -1115,7 +1127,6 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0) {
$parent_uri = $rawthread[0]['attribs']['']['ref']; $parent_uri = $rawthread[0]['attribs']['']['ref'];
} }
if(($is_reply) && is_array($contact)) { if(($is_reply) && is_array($contact)) {
// Have we seen it? If not, import it. // Have we seen it? If not, import it.

View file

@ -200,16 +200,17 @@ function dfrn_notify_post(&$a) {
logger('dfrn_notify: feed item count = ' . $feed->get_item_quantity()); logger('dfrn_notify: feed item count = ' . $feed->get_item_quantity());
foreach($feed->get_items() as $item) { // process any deleted entries
$del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
if(is_array($del_entries) && count($del_entries)) {
foreach($del_entries as $dentry) {
$deleted = false; $deleted = false;
if(isset($dentry['attribs']['']['ref'])) {
$rawdelete = $item->get_item_tags( NAMESPACE_TOMB , 'deleted-entry'); $uri = $dentry['attribs']['']['ref'];
if(isset($rawdelete[0]['attribs']['']['ref'])) {
$uri = $rawthread[0]['attribs']['']['ref'];
$deleted = true; $deleted = true;
if(isset($rawdelete[0]['attribs']['']['when'])) { if(isset($dentry['attribs']['']['when'])) {
$when = $rawthread[0]['attribs']['']['when']; $when = $dentry['attribs']['']['when'];
$when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s'); $when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s');
} }
else else
@ -222,6 +223,10 @@ function dfrn_notify_post(&$a) {
); );
if(count($r)) { if(count($r)) {
$item = $r[0]; $item = $r[0];
if(! $item['deleted'])
logger('dfrn_notify: deleting item ' . $item['id'] . ' uri=' . $item['uri'], LOGGER_DEBUG);
if($item['uri'] == $item['parent-uri']) { if($item['uri'] == $item['parent-uri']) {
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s'
WHERE `parent-uri` = '%s' AND `uid` = %d", WHERE `parent-uri` = '%s' AND `uid` = %d",
@ -260,8 +265,12 @@ function dfrn_notify_post(&$a) {
} }
} }
} }
continue;
} }
}
}
foreach($feed->get_items() as $item) {
$is_reply = false; $is_reply = false;
$item_id = $item->get_id(); $item_id = $item->get_id();
@ -337,7 +346,6 @@ function dfrn_notify_post(&$a) {
$email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() ); $email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() );
} }
} }
xml_status(0); xml_status(0);
// NOTREACHED // NOTREACHED
} }
@ -372,7 +380,6 @@ function dfrn_notify_post(&$a) {
$datarray['type'] = 'activity'; $datarray['type'] = 'activity';
$datarray['gravity'] = GRAVITY_LIKE; $datarray['gravity'] = GRAVITY_LIKE;
} }
$r = item_store($datarray); $r = item_store($datarray);
// find out if our user is involved in this conversation and wants to be notified. // find out if our user is involved in this conversation and wants to be notified.