From dd02b7bd00824f5282023480b3485fe6db5942c7 Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Fri, 19 Apr 2013 09:55:07 -0400 Subject: [PATCH] drop items to group pages if no mentions in it. should fix bug 557 --- include/items.php | 52 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/include/items.php b/include/items.php index 210e66bf7..194e19b5c 100755 --- a/include/items.php +++ b/include/items.php @@ -1180,19 +1180,23 @@ function item_store($arr,$force_parent = false) { ); } - tag_deliver($arr['uid'],$current_post); + $deleted = tag_deliver($arr['uid'],$current_post); - // Store the fresh generated item into the cache - $cachefile = get_cachefile($arr["guid"]."-".hash("md5", $arr['body'])); + // current post can be deleted if is for a communuty page and no mention are + // in it. + if (!$deleted) { + + // Store the fresh generated item into the cache + $cachefile = get_cachefile($arr["guid"]."-".hash("md5", $arr['body'])); - if (($cachefile != '') AND !file_exists($cachefile)) { - $s = prepare_text($arr['body']); - $a = get_app(); - $stamp1 = microtime(true); - file_put_contents($cachefile, $s); - $a->save_timestamp($stamp1, "file"); - logger('item_store: put item '.$current_post.' into cachefile '.$cachefile); - } + if (($cachefile != '') AND !file_exists($cachefile)) { + $s = prepare_text($arr['body']); + $a = get_app(); + $stamp1 = microtime(true); + file_put_contents($cachefile, $s); + $a->save_timestamp($stamp1, "file"); + logger('item_store: put item '.$current_post.' into cachefile '.$cachefile); + } $r = q('SELECT * FROM `item` WHERE id = %d', intval($current_post)); if (count($r) == 1) { @@ -1201,7 +1205,7 @@ function item_store($arr,$force_parent = false) { else { logger('item_store: new item not found in DB, id ' . $current_post); } - + } return $current_post; } @@ -1217,10 +1221,15 @@ function get_item_contact($item,$contacts) { return false; } - +/** + * look for mention tags and setup a second delivery chain for forum/community posts if appropriate + * @param int $uid + * @param int $item_id + * @return bool true if item was deleted, else false + */ function tag_deliver($uid,$item_id) { - // look for mention tags and setup a second delivery chain for forum/community posts if appropriate + // $a = get_app(); @@ -1262,8 +1271,21 @@ function tag_deliver($uid,$item_id) { } } - if(! $mention) + if(! $mention){ + if ( ($community_page || $prvgroup) && + (!$item['wall']) && (!$item['origin']) && ($item['id'] == $item['parent'])){ + // mmh.. no mention.. community page or private group... no wall.. no origin.. top-post (not a comment) + // delete it! + logger("tag_deliver: no-mention top-level post to communuty or private group. delete."); + q("DELETE FROM item WHERE id = %d and uid = %d limit 1", + intval($item_id), + intval($uid) + ); + return true; + } return; + } + // send a notification