From c4f31ec65a4eb8fdac31e7b711dd66edf1f2bac1 Mon Sep 17 00:00:00 2001 From: Mike Macgirvin Date: Tue, 13 Jul 2010 16:09:53 -0700 Subject: [PATCH] child conversations inherit ACL's from parent --- include/notifier.php | 2 +- mod/item.php | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/include/notifier.php b/include/notifier.php index 89b0964b49..f1231839b8 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -36,7 +36,7 @@ if($argc < 3) $recipients = array(); - // fetch requested item + // fetch requested item(s) $r = q("SELECT `item`.*, `contact`.*,`item`.`id` AS `item_id` FROM `item` LEFT JOIN `contact` ON `item`.`contact-id` = `contact`.`id` WHERE `item`.`id` = %d LIMIT 1", diff --git a/mod/item.php b/mod/item.php index ff3f411388..e4551ac570 100644 --- a/mod/item.php +++ b/mod/item.php @@ -13,6 +13,20 @@ function item_post(&$a) { $uid = $_SESSION['uid']; $parent = ((x($_POST,'parent')) ? intval($_POST['parent']) : 0); + + $parent_item = null; + + if($parent) { + $r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1", + intval($parent) + ); + if(! count($r)) { + notice("Unable to locate original post." . EOL); + goaway($a->get_baseurl() . "/profile/$profile_uid"); + } + $parent_item = $r[0]; + } + $profile_uid = ((x($_POST,'profile_uid')) ? intval($_POST['profile_uid']) : 0); if(! can_write_wall($a,$profile_uid)) { @@ -99,10 +113,25 @@ function item_post(&$a) { dbesc($hash)); if(count($r)) { $post_id = $r[0]['id']; + if($parent) { + + // This item is the last leaf and gets the comment box, clear any ancestors $r = q("UPDATE `item` SET `last-child` = 0 WHERE `parent` = %d ", intval($parent) ); + + // Inherit ACL's from the parent item. + // TODO merge with subsequent UPDATE operation and save a db write + + $r = q("UPDATE `item` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' + WHERE `id` = %d LIMIT 1", + intval($parent_item['allow_cid']), + intval($parent_item['allow_gid']), + intval($parent_item['deny_cid']), + intval($parent_item['deny_gid']), + intval($post_id) + ); } else { $parent = $post_id;