diff --git a/include/items.php b/include/items.php index 9c11a1f390..c4555e82da 100644 --- a/include/items.php +++ b/include/items.php @@ -2598,68 +2598,7 @@ 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. - - if($contact['remote_self'] AND (($contact['network'] === NETWORK_FEED) OR !$datarray['private'])) { - logger('remote-self start - Contact '.$contact['url'].' - '.$contact['remote_self'].' Item '.print_r($datarray, true), LOGGER_DEBUG); - if ($contact['remote_self'] == 1) { - // Prevent that forwarded posts will be forwarded again - $notify = (normalise_link($datarray['author-link']) == normalise_link($datarray['owner-link'])); - if ($datarray["app"] == $a->get_hostname()) - $notify = false; - } 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]["avatar"]; - - $datarray['author-name'] = $datarray['owner-name']; - $datarray['author-link'] = $datarray['owner-link']; - $datarray['author-avatar'] = $datarray['owner-avatar']; - } - $notify = true; - } - - 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; - - // Create a new guid and uri and post it as a forwarded post - $datarray2["guid"] = get_guid(32); - unset($datarray2["plink"]); - $datarray2["uri"] = item_new_uri($a->get_hostname(),$importer['uid']); - $datarray2["parent-uri"] = $datarray2["uri"]; - $datarray2["extid"] = NETWORK_DFRN; - $urlpart = parse_url($datarray['author-link']); - $datarray2["app"] = $urlpart["host"]; - $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"]; - - $datarray2['owner-name'] = $r[0]["name"]; - $datarray2['owner-link'] = $r[0]["url"]; - $datarray2['owner-avatar'] = $r[0]["avatar"]; - - $datarray2['author-name'] = $datarray2['owner-name']; - $datarray2['author-link'] = $datarray2['owner-link']; - $datarray2['author-avatar'] = $datarray2['owner-avatar']; - } - - // Store the forwarded post - $r = item_store($datarray2, false, true); - logger('remote-self forwarded post - Contact '.$contact['url'].' return '.$r.' Item '.print_r($datarray2, true), LOGGER_DEBUG); - - // Let the original item just be a regular item - $notify = false; - } - } else - $notify = false; + $notify = item_is_remote_self($contact, $datarray); $r = item_store($datarray, false, $notify); logger('Stored - Contact '.$contact['url'].' Notify '.$notify.' return '.$r.' Item '.print_r($datarray, true), LOGGER_DEBUG); @@ -2670,6 +2609,61 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) } } +function item_is_remote_self($contact, &$datarray) { + $a = get_app(); + + if (!$contact['remote_self']) + return false; + + // Prevent to forward already forwarded posts + if ($datarray["app"] == $a->get_hostname()) + return false; + + if (($contact['network'] != NETWORK_FEED) AND $datarray['private']) + return false; + + $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(); @@ -3751,68 +3745,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'] AND (($importer['network'] === NETWORK_FEED) OR !$datarray['private'])) { - logger('remote-self start - Contact '.$importer['url'].' - '.$importer['remote_self'].' Item '.print_r($datarray, true), LOGGER_DEBUG); - if ($importer['remote_self'] == 1) { - // Prevent that forwarded posts will be forwarded again - $notify = (normalise_link($datarray['author-link']) == normalise_link($datarray['owner-link'])); - if ($datarray["app"] == $a->get_hostname()) - $notify = false; - } elseif ($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]["avatar"]; - - $datarray['author-name'] = $datarray['owner-name']; - $datarray['author-link'] = $datarray['owner-link']; - $datarray['author-avatar'] = $datarray['owner-avatar']; - } - $notify = true; - } - - //if (!isset($datarray["app"]) OR ($datarray["app"] == "")) - // $datarray["app"] = network_to_name($importer['network']); - - if ($importer['network'] === NETWORK_FEED) - $datarray['private'] = 0; - elseif ($notify) { - $datarray2 = $datarray; - // Create a new guid and uri and post it as a forwarded post - $datarray2["guid"] = get_guid(32); - unset($datarray2["plink"]); - $datarray2["uri"] = item_new_uri($a->get_hostname(),$importer['uid']); - $datarray2["parent-uri"] = $datarray2["uri"]; - $datarray2["extid"] = NETWORK_DFRN; - $urlpart = parse_url($datarray['author-link']); - $datarray2["app"] = $urlpart["host"]; - $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"]; - - $datarray2['owner-name'] = $r[0]["name"]; - $datarray2['owner-link'] = $r[0]["url"]; - $datarray2['owner-avatar'] = $r[0]["avatar"]; - - $datarray2['author-name'] = $datarray2['owner-name']; - $datarray2['author-link'] = $datarray2['owner-link']; - $datarray2['author-avatar'] = $datarray2['owner-avatar']; - } - - // Store the forwarded post - $r = item_store($datarray2, false, true); - logger('remote-self forwarded post - Contact '.$importer['url'].' return '.$r.' Item '.print_r($datarray2, true), LOGGER_DEBUG); - - // Let the original item just be a regular item - $notify = false; - } - } else - $notify = false; + $notify = item_is_remote_self($importer, $datarray); $posted_id = item_store($datarray, false, $notify); diff --git a/mod/crepair.php b/mod/crepair.php index 23f833c5b9..aba71232c5 100644 --- a/mod/crepair.php +++ b/mod/crepair.php @@ -157,8 +157,8 @@ function crepair_content(&$a) { if ($contact['network'] == NETWORK_FEED) $remote_self_options = array('0'=>t('No mirroring'), '1'=>t('Mirror as forwarded posting'), '2'=>t('Mirror as my own posting')); - elseif ($contact['network'] == NETWORK_DFRN) - $remote_self_options = array('0'=>t('No mirroring'), '1'=>t('Mirror as forwarded posting')); + elseif ($contact['network'] == NETWORK_DFRN) + $remote_self_options = array('0'=>t('No mirroring'), '2'=>t('Mirror as my own posting')); $tpl = get_markup_template('crepair.tpl'); $o .= replace_macros($tpl, array(