X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fitems.php;h=fb7f488f4d11134730388187e901500644750363;hb=d1a0206cdd1a65b08feb16197fe2236c8e1a8037;hp=29f4d7256feb548d292539b68490233102964fdf;hpb=ee70e02d0dc823b43cb07792e21c0d0ccbe75692;p=friendica.git diff --git a/include/items.php b/include/items.php index 29f4d7256f..fb7f488f4d 100755 --- a/include/items.php +++ b/include/items.php @@ -294,7 +294,7 @@ function construct_activity_target($item) { if(! function_exists('limit_body_size')) { function limit_body_size($body) { - logger('limit_body_size: start', LOGGER_DEBUG); +// logger('limit_body_size: start', LOGGER_DEBUG); $maxlen = get_max_import_size(); @@ -811,7 +811,7 @@ function get_atom_elements($feed,$item) { if (($name != "") and ($uri != "") and ($avatar != "") and ($message != "")) { logger('get_atom_elements: fixing sender of repeated message.'); - if (intval(get_config('system','new_share'))) { + if (!intval(get_config('system','wall-to-wall_share'))) { $prefix = "[share author='".str_replace("'", "'",$name). "' profile='".$uri. "' avatar='".$avatar. @@ -1149,7 +1149,6 @@ function item_store($arr,$force_parent = false) { $arr['deny_gid'] = $deny_gid; $arr['private'] = $private; $arr['deleted'] = $parent_deleted; - call_hooks('post_remote_end',$arr); // update the commented timestamp on the parent @@ -1181,20 +1180,32 @@ 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) { + call_hooks('post_remote_end', $r[0]); + } + else { + logger('item_store: new item not found in DB, id ' . $current_post); + } + } return $current_post; } @@ -1210,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(); @@ -1255,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 @@ -1582,6 +1611,26 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { } +/* + This function returns true if $update has an edited timestamp newer + than $existing, i.e. $update contains new data which should override + what's already there. If there is no timestamp yet, the update is + assumed to be newer. If the update has no timestamp, the existing + item is assumed to be up-to-date. If the timestamps are equal it + assumes the update has been seen before and should be ignored. + */ +function edited_timestamp_is_newer($existing, $update) { + if (!x($existing,'edited') || !$existing['edited']) { + return true; + } + if (!x($update,'edited') || !$update['edited']) { + return false; + } + $existing_edited = datetime_convert('UTC', 'UTC', $existing['edited']); + $update_edited = datetime_convert('UTC', 'UTC', $update['edited']); + return (strcmp($existing_edited, $update_edited) < 0); +} + /** * * consume_feed - process atom feed and update anything/everything we might need to update @@ -1995,7 +2044,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) // Update content if 'updated' changes if(count($r)) { - if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { + if (edited_timestamp_is_newer($r[0], $datarray)) { // do not accept (ignore) an earlier edit than one we currently have. if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited']) @@ -2144,7 +2193,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) // Update content if 'updated' changes if(count($r)) { - if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { + if (edited_timestamp_is_newer($r[0], $datarray)) { // do not accept (ignore) an earlier edit than one we currently have. if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited']) @@ -2898,7 +2947,7 @@ function local_delivery($importer,$data) { if(count($r)) { $iid = $r[0]['id']; - if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { + if (edited_timestamp_is_newer($r[0], $datarray)) { // do not accept (ignore) an earlier edit than one we currently have. if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited']) @@ -3073,7 +3122,7 @@ function local_delivery($importer,$data) { // Update content if 'updated' changes if(count($r)) { - if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { + if (edited_timestamp_is_newer($r[0], $datarray)) { // do not accept (ignore) an earlier edit than one we currently have. if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited']) @@ -3249,7 +3298,7 @@ function local_delivery($importer,$data) { // Update content if 'updated' changes if(count($r)) { - if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { + if (edited_timestamp_is_newer($r[0], $datarray)) { // do not accept (ignore) an earlier edit than one we currently have. if(datetime_convert('UTC','UTC',$datarray['edited']) < $r[0]['edited'])