From 2d76a5c76b173b5cc174763514127ef4de0cef62 Mon Sep 17 00:00:00 2001 From: Mike Macgirvin Date: Sun, 29 Aug 2010 21:55:57 -0700 Subject: [PATCH] fix last-child in face of deletions --- include/poller.php | 23 +++++++++++++++++++++-- mod/dfrn_notify.php | 23 +++++++++++++++++++++-- mod/item.php | 18 +++++++++++++++++- 3 files changed, 59 insertions(+), 5 deletions(-) diff --git a/include/poller.php b/include/poller.php index 80b6f35129..f771a3af4b 100644 --- a/include/poller.php +++ b/include/poller.php @@ -190,13 +190,14 @@ echo "Length:" . strlen($xml) . "\r\n"; intval($importer['uid']) ); if(count($r)) { - if($r[0]['uri'] == $r[0]['parent-uri']) { + $item = $r[0]; + if($item['uri'] == $item['parent-uri']) { $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '', `title` = '' WHERE `parent-uri` = '%s'", dbesc($when), dbesc(datetime_convert()), - dbesc($r[0]['uri']) + dbesc($item['uri']) ); } else { @@ -208,6 +209,24 @@ echo "Length:" . strlen($xml) . "\r\n"; dbesc($uri), intval($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 + ORDER BY `edited` DESC LIMIT 1", + dbesc($item['parent-uri']) + ); + if(count($r)) { + q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1", + intval($r[0]['id']) + ); + } + } } } continue; diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 089e508ad3..3e98377e88 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -123,12 +123,13 @@ function dfrn_notify_post(&$a) { intval($importer['importer_uid']) ); if(count($r)) { - if($r[0]['uri'] == $r[0]['parent-uri']) { + $item = $r[0]; + if($item['uri'] == $item['parent-uri']) { $r = q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `parent-uri` = '%s'", dbesc($when), dbesc(datetime_convert()), - dbesc($r[0]['uri']) + dbesc($item['uri']) ); } else { @@ -139,6 +140,24 @@ function dfrn_notify_post(&$a) { 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 + ORDER BY `edited` DESC LIMIT 1", + dbesc($item['parent-uri']) + ); + if(count($r)) { + q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1", + intval($r[0]['id']) + ); + } + } } } continue; diff --git a/mod/item.php b/mod/item.php index 812216426b..c790d31dac 100644 --- a/mod/item.php +++ b/mod/item.php @@ -313,7 +313,23 @@ function item_content(&$a) { ); // ignore the result } - + else { + // 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 ORDER BY `edited` DESC LIMIT 1", + dbesc($item['parent-uri']) + ); + if(count($r)) { + q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1", + intval($r[0]['id']) + ); + } + } $drop_id = intval($item['id']); $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');