X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fitems.php;h=37532eaf9adc8c00c05db48ea1e52160a75057cd;hb=ac29e831b2538e5b8982a9cc0189b9c67ebc6961;hp=d9b4212f7489bb5e653cb72c53759f2d50a5d1b8;hpb=f4860d3fd0d3e4f437a82a1b0c8bb00328c51c66;p=friendica.git diff --git a/include/items.php b/include/items.php index d9b4212f74..37532eaf9a 100644 --- a/include/items.php +++ b/include/items.php @@ -872,7 +872,7 @@ function get_atom_elements($feed, $item, $contact = array()) { } if (isset($contact["network"]) AND ($contact["network"] == NETWORK_FEED) AND $contact['fetch_further_information']) { - $res["body"] = $res["title"].add_page_info($res['plink'], false, "", ($contact['fetch_further_information'] == 2)); + $res["body"] = $res["title"].add_page_info($res['plink'], false, "", ($contact['fetch_further_information'] == 2), $contact['ffi_keyword_blacklist']); $res["title"] = ""; $res["object-type"] = ACTIVITY_OBJ_BOOKMARK; } elseif (isset($contact["network"]) AND ($contact["network"] == NETWORK_OSTATUS)) @@ -921,7 +921,8 @@ function add_page_info_data($data) { $a = get_app(); $hashtags = "\n"; foreach ($data["keywords"] AS $keyword) { - $hashtag = str_replace(" ", "", $keyword); + $hashtag = str_replace(array(" ", "+", "/", ".", "#", "'"), + array("","", "", "", "", ""), $keyword); $hashtags .= "#[url=".$a->get_baseurl()."/search?tag=".rawurlencode($hashtag)."]".$hashtag."[/url] "; } } @@ -929,7 +930,7 @@ function add_page_info_data($data) { return("\n[class=type-".$data["type"]."]".$text."[/class]".$hashtags); } -function add_page_info($url, $no_photos = false, $photo = "", $keywords = false) { +function add_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") { require_once("mod/parse_url.php"); $data = parseurl_getsiteinfo($url, true); @@ -939,6 +940,16 @@ function add_page_info($url, $no_photos = false, $photo = "", $keywords = false) if (!$keywords AND isset($data["keywords"])) unset($data["keywords"]); + if (($keyword_blacklist != "") AND isset($data["keywords"])) { + $list = explode(",", $keyword_blacklist); + foreach ($list AS $keyword) { + $keyword = trim($keyword); + $index = array_search($keyword, $data["keywords"]); + if ($index !== false) + unset($data["keywords"][$index]); + } + } + $text = add_page_info_data($data); return($text); @@ -2598,68 +2609,80 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) // This is my contact on another system, but it's really me. // Turn this into a wall post. + $notify = item_is_remote_self($contact, $datarray); - if($contact['remote_self'] AND (($contact['network'] === NETWORK_FEED) OR !$datarray['private'])) { - if ($contact['remote_self'] == 1) - // Prevent that forwarded posts will be forwarded again - $notify = (normalise_link($datarray['author-link']) == normalise_link($datarray['owner-link'])); - elseif ($contact['remote_self'] == 2) { - $r = q("SELECT `id`,`url`,`name`,`photo`,`network` FROM `contact` WHERE `uid` = %d AND `self`", intval($importer['uid'])); - if (count($r)) { - $datarray['contact-id'] = $r[0]["id"]; - - $datarray['owner-name'] = $r[0]["name"]; - $datarray['owner-link'] = $r[0]["url"]; - $datarray['owner-avatar'] = $r[0]["photo"]; - - $datarray['author-name'] = $datarray['owner-name']; - $datarray['author-link'] = $datarray['owner-link']; - $datarray['author-avatar'] = $datarray['owner-avatar']; - } - $notify = true; - } + $r = item_store($datarray, false, $notify); + logger('Stored - Contact '.$contact['url'].' Notify '.$notify.' return '.$r.' Item '.print_r($datarray, true), LOGGER_DEBUG); + continue; - if (!isset($datarray["app"]) OR ($datarray["app"] == "")) - $datarray["app"] = network_to_name($contact['network']); + } + } + } +} - if ($contact['network'] === NETWORK_FEED) - $datarray['private'] = 0; - elseif ($notify) { - $datarray2 = $datarray; +function item_is_remote_self($contact, &$datarray) { + $a = get_app(); - // Create a new guid and uri and post it as a forwarded post - $datarray2["guid"] = get_guid(32); - $datarray2["uri"] = item_new_uri($a->get_hostname(),$importer['uid']); - $r = q("SELECT `id`,`url`,`name`,`photo`,`network` FROM `contact` WHERE `uid` = %d AND `self`", intval($importer['uid'])); - if (count($r)) { - $datarray2['contact-id'] = $r[0]["id"]; + if (!$contact['remote_self']) + return false; - $datarray2['owner-name'] = $r[0]["name"]; - $datarray2['owner-link'] = $r[0]["url"]; - $datarray2['owner-avatar'] = $r[0]["photo"]; - } + // Prevent the forwarding of posts that are forwarded + if ($datarray["extid"] == NETWORK_DFRN) + return false; - // Store the forwarded post - $r = item_store($datarray2, false, true); + // Prevent to forward already forwarded posts + if ($datarray["app"] == $a->get_hostname()) + return false; - // Let the original item just be a regular item - $notify = false; - } - } else - $notify = false; + if (($contact['network'] != NETWORK_FEED) AND $datarray['private']) + return false; - $r = item_store($datarray, false, $notify); - continue; + $datarray2 = $datarray; + logger('remote-self start - Contact '.$contact['url'].' - '.$contact['remote_self'].' Item '.print_r($datarray, true), LOGGER_DEBUG); + if ($contact['remote_self'] == 2) { + $r = q("SELECT `id`,`url`,`name`,`photo`,`network` FROM `contact` WHERE `uid` = %d AND `self`", + intval($contact['uid'])); + if (count($r)) { + $datarray['contact-id'] = $r[0]["id"]; - } + $datarray['owner-name'] = $r[0]["name"]; + $datarray['owner-link'] = $r[0]["url"]; + $datarray['owner-avatar'] = $r[0]["avatar"]; + + $datarray['author-name'] = $datarray['owner-name']; + $datarray['author-link'] = $datarray['owner-link']; + $datarray['author-avatar'] = $datarray['owner-avatar']; } + + if ($contact['network'] != NETWORK_FEED) { + $datarray["guid"] = get_guid(32); + unset($datarray["plink"]); + $datarray["uri"] = item_new_uri($a->get_hostname(),$contact['uid']); + $datarray["parent-uri"] = $datarray["uri"]; + $datarray["extid"] = $contact['network']; + $urlpart = parse_url($datarray2['author-link']); + $datarray["app"] = $urlpart["host"]; + } else + $datarray['private'] = 0; } + + //if (!isset($datarray["app"]) OR ($datarray["app"] == "")) + // $datarray["app"] = network_to_name($contact['network']); + + if ($contact['network'] != NETWORK_FEED) { + // Store the original post + $r = item_store($datarray2, false, false); + logger('remote-self post original item - Contact '.$contact['url'].' return '.$r.' Item '.print_r($datarray2, true), LOGGER_DEBUG); + } else + $datarray["app"] = "Feed"; + + return true; } function local_delivery($importer,$data) { $a = get_app(); - logger(__function__, LOGGER_TRACE); + logger(__function__, LOGGER_TRACE); if($importer['readonly']) { // We aren't receiving stuff from this person. But we will quietly ignore them @@ -3737,27 +3760,7 @@ function local_delivery($importer,$data) { // This is my contact on another system, but it's really me. // Turn this into a wall post. - - if($importer['remote_self']) { - if ($importer['remote_self'] == 2) { - $r = q("SELECT `id`,`url`,`name`,`photo`,`network` FROM `contact` WHERE `uid` = %d AND `self`", - intval($importer['importer_uid'])); - if (count($r)) { - $datarray['contact-id'] = $r[0]["id"]; - - $datarray['owner-name'] = $r[0]["name"]; - $datarray['owner-link'] = $r[0]["url"]; - $datarray['owner-avatar'] = $r[0]["photo"]; - - $datarray['author-name'] = $datarray['owner-name']; - $datarray['author-link'] = $datarray['owner-link']; - $datarray['author-avatar'] = $datarray['owner-avatar']; - } - } - - $notify = true; - } else - $notify = false; + $notify = item_is_remote_self($importer, $datarray); $posted_id = item_store($datarray, false, $notify);