rework remote deletion
This commit is contained in:
parent
d280184b87
commit
d8cd693f11
|
@ -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.
|
||||||
|
|
|
@ -200,68 +200,77 @@ 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
|
||||||
|
|
||||||
$deleted = false;
|
$del_entries = $feed->get_feed_tags(NAMESPACE_TOMB, 'deleted-entry');
|
||||||
|
if(is_array($del_entries) && count($del_entries)) {
|
||||||
$rawdelete = $item->get_item_tags( NAMESPACE_TOMB , 'deleted-entry');
|
foreach($del_entries as $dentry) {
|
||||||
if(isset($rawdelete[0]['attribs']['']['ref'])) {
|
$deleted = false;
|
||||||
$uri = $rawthread[0]['attribs']['']['ref'];
|
if(isset($dentry['attribs']['']['ref'])) {
|
||||||
$deleted = true;
|
$uri = $dentry['attribs']['']['ref'];
|
||||||
if(isset($rawdelete[0]['attribs']['']['when'])) {
|
$deleted = true;
|
||||||
$when = $rawthread[0]['attribs']['']['when'];
|
if(isset($dentry['attribs']['']['when'])) {
|
||||||
$when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s');
|
$when = $dentry['attribs']['']['when'];
|
||||||
|
$when = datetime_convert('UTC','UTC', $when, 'Y-m-d H:i:s');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
|
||||||
}
|
}
|
||||||
else
|
if($deleted) {
|
||||||
$when = datetime_convert('UTC','UTC','now','Y-m-d H:i:s');
|
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||||
}
|
dbesc($uri),
|
||||||
if($deleted) {
|
intval($importer['importer_uid'])
|
||||||
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
);
|
||||||
dbesc($uri),
|
if(count($r)) {
|
||||||
intval($importer['importer_uid'])
|
$item = $r[0];
|
||||||
);
|
|
||||||
if(count($r)) {
|
if(! $item['deleted'])
|
||||||
$item = $r[0];
|
logger('dfrn_notify: deleting item ' . $item['id'] . ' uri=' . $item['uri'], LOGGER_DEBUG);
|
||||||
if($item['uri'] == $item['parent-uri']) {
|
|
||||||
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s'
|
if($item['uri'] == $item['parent-uri']) {
|
||||||
WHERE `parent-uri` = '%s' AND `uid` = %d",
|
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s'
|
||||||
dbesc($when),
|
WHERE `parent-uri` = '%s' AND `uid` = %d",
|
||||||
dbesc(datetime_convert()),
|
dbesc($when),
|
||||||
dbesc($item['uri']),
|
|
||||||
intval($importer['importer_uid'])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s'
|
|
||||||
WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
|
||||||
dbesc($when),
|
|
||||||
dbesc(datetime_convert()),
|
|
||||||
dbesc($uri),
|
|
||||||
intval($importer['importer_uid'])
|
|
||||||
);
|
|
||||||
if($item['last-child']) {
|
|
||||||
// ensure that last-child is set in case the comment that had it just got wiped.
|
|
||||||
$q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ",
|
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
dbesc($item['parent-uri']),
|
dbesc($item['uri']),
|
||||||
intval($item['uid'])
|
intval($importer['importer_uid'])
|
||||||
);
|
);
|
||||||
// who is the last child now?
|
|
||||||
$r = q("SELECT `id` FROM `item` WHERE `parent-uri` = '%s' AND `type` != 'activity' AND `deleted` = 0 AND `uid` = %d
|
|
||||||
ORDER BY `created` DESC LIMIT 1",
|
|
||||||
dbesc($item['parent-uri']),
|
|
||||||
intval($importer['importer_uid'])
|
|
||||||
);
|
|
||||||
if(count($r)) {
|
|
||||||
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
|
|
||||||
intval($r[0]['id'])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
$r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s'
|
||||||
|
WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||||
|
dbesc($when),
|
||||||
|
dbesc(datetime_convert()),
|
||||||
|
dbesc($uri),
|
||||||
|
intval($importer['importer_uid'])
|
||||||
|
);
|
||||||
|
if($item['last-child']) {
|
||||||
|
// ensure that last-child is set in case the comment that had it just got wiped.
|
||||||
|
$q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d ",
|
||||||
|
dbesc(datetime_convert()),
|
||||||
|
dbesc($item['parent-uri']),
|
||||||
|
intval($item['uid'])
|
||||||
|
);
|
||||||
|
// who is the last child now?
|
||||||
|
$r = q("SELECT `id` FROM `item` WHERE `parent-uri` = '%s' AND `type` != 'activity' AND `deleted` = 0 AND `uid` = %d
|
||||||
|
ORDER BY `created` DESC LIMIT 1",
|
||||||
|
dbesc($item['parent-uri']),
|
||||||
|
intval($importer['importer_uid'])
|
||||||
|
);
|
||||||
|
if(count($r)) {
|
||||||
|
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
|
||||||
|
intval($r[0]['id'])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach($feed->get_items() as $item) {
|
||||||
|
|
||||||
$is_reply = false;
|
$is_reply = false;
|
||||||
$item_id = $item->get_id();
|
$item_id = $item->get_id();
|
||||||
|
@ -298,7 +307,7 @@ function dfrn_notify_post(&$a) {
|
||||||
);
|
);
|
||||||
if(count($r))
|
if(count($r))
|
||||||
$parent = $r[0]['parent'];
|
$parent = $r[0]['parent'];
|
||||||
|
|
||||||
if(! $is_like) {
|
if(! $is_like) {
|
||||||
$r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d",
|
$r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d",
|
||||||
dbesc(datetime_convert()),
|
dbesc(datetime_convert()),
|
||||||
|
@ -332,12 +341,11 @@ function dfrn_notify_post(&$a) {
|
||||||
'$from' => $from,
|
'$from' => $from,
|
||||||
'$body' => strip_tags(bbcode(stripslashes($datarray['body'])))
|
'$body' => strip_tags(bbcode(stripslashes($datarray['body'])))
|
||||||
));
|
));
|
||||||
|
|
||||||
$res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'],
|
$res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'],
|
||||||
$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.
|
||||||
|
@ -389,7 +396,7 @@ function dfrn_notify_post(&$a) {
|
||||||
continue;
|
continue;
|
||||||
require_once('bbcode.php');
|
require_once('bbcode.php');
|
||||||
$from = stripslashes($datarray['author-name']);
|
$from = stripslashes($datarray['author-name']);
|
||||||
$tpl = load_view_file('view/cmnt_received_eml.tpl');
|
$tpl = load_view_file('view/cmnt_received_eml.tpl');
|
||||||
$email_tpl = replace_macros($tpl, array(
|
$email_tpl = replace_macros($tpl, array(
|
||||||
'$sitename' => $a->config['sitename'],
|
'$sitename' => $a->config['sitename'],
|
||||||
'$siteurl' => $a->get_baseurl(),
|
'$siteurl' => $a->get_baseurl(),
|
||||||
|
|
Loading…
Reference in a new issue