From d8cd693f1149dc2fb14a7527553b45e8a3b1b62f Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 8 Feb 2011 04:25:27 -0800 Subject: rework remote deletion --- mod/dfrn_notify.php | 125 +++++++++++++++++++++++++++------------------------- 1 file changed, 66 insertions(+), 59 deletions(-) (limited to 'mod/dfrn_notify.php') diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 142d13284..cd0f58753 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -200,68 +200,77 @@ function dfrn_notify_post(&$a) { 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; + if(isset($dentry['attribs']['']['ref'])) { + $uri = $dentry['attribs']['']['ref']; + $deleted = true; + if(isset($dentry['attribs']['']['when'])) { + $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'); + } + if($deleted) { + $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + dbesc($uri), + intval($importer['importer_uid']) + ); + if(count($r)) { + $item = $r[0]; - $deleted = false; + if(! $item['deleted']) + logger('dfrn_notify: deleting item ' . $item['id'] . ' uri=' . $item['uri'], LOGGER_DEBUG); - $rawdelete = $item->get_item_tags( NAMESPACE_TOMB , 'deleted-entry'); - if(isset($rawdelete[0]['attribs']['']['ref'])) { - $uri = $rawthread[0]['attribs']['']['ref']; - $deleted = true; - if(isset($rawdelete[0]['attribs']['']['when'])) { - $when = $rawthread[0]['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'); - } - if($deleted) { - $r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", - dbesc($uri), - intval($importer['importer_uid']) - ); - if(count($r)) { - $item = $r[0]; - if($item['uri'] == $item['parent-uri']) { - $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' - WHERE `parent-uri` = '%s' AND `uid` = %d", - dbesc($when), - dbesc(datetime_convert()), - 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 ", + if($item['uri'] == $item['parent-uri']) { + $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' + WHERE `parent-uri` = '%s' AND `uid` = %d", + dbesc($when), dbesc(datetime_convert()), - dbesc($item['parent-uri']), - intval($item['uid']) + dbesc($item['uri']), + 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']) + } + 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(count($r)) { - q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1", - intval($r[0]['id']) + 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; $item_id = $item->get_id(); @@ -298,7 +307,7 @@ function dfrn_notify_post(&$a) { ); if(count($r)) $parent = $r[0]['parent']; - + if(! $is_like) { $r1 = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `uid` = %d AND `parent` = %d", dbesc(datetime_convert()), @@ -332,12 +341,11 @@ function dfrn_notify_post(&$a) { '$from' => $from, '$body' => strip_tags(bbcode(stripslashes($datarray['body']))) )); - + $res = mail($importer['email'], $from . t(' commented on an item at ') . $a->config['sitename'], $email_tpl, "From: " . t('Administrator') . '@' . $a->get_hostname() ); } } - xml_status(0); // NOTREACHED } @@ -372,7 +380,6 @@ function dfrn_notify_post(&$a) { $datarray['type'] = 'activity'; $datarray['gravity'] = GRAVITY_LIKE; } - $r = item_store($datarray); // 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; require_once('bbcode.php'); $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( '$sitename' => $a->config['sitename'], '$siteurl' => $a->get_baseurl(), -- cgit v1.2.3