Review: Ensure $arr['network'] is populated in item_store

This commit is contained in:
Hypolite Petovan 2018-01-02 08:32:53 -05:00
parent 3dab04e6cc
commit 9ea4fad46c

View File

@ -479,8 +479,8 @@ function store_conversation($arr) {
} }
/// @TODO add type-hint array /// @TODO add type-hint array
function item_store($arr, $force_parent = false, $notify = false, $dontcache = false) { function item_store($arr, $force_parent = false, $notify = false, $dontcache = false)
{
$a = get_app(); $a = get_app();
// If it is a posting where users should get notifications, then define it as wall posting // If it is a posting where users should get notifications, then define it as wall posting
@ -502,6 +502,8 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
$arr['guid'] = uri_to_guid($arr['uri'], $a->get_hostname()); $arr['guid'] = uri_to_guid($arr['uri'], $a->get_hostname());
} }
} }
} else {
$arr['network'] = trim(defaults($arr, 'network', NETWORK_PHANTOM));
} }
if ($notify) { if ($notify) {
@ -535,7 +537,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
// Converting the plink // Converting the plink
/// @todo Check if this is really still needed /// @todo Check if this is really still needed
if (defaults($arr, 'network', NETWORK_PHANTOM) == NETWORK_OSTATUS) { if ($arr['network'] == NETWORK_OSTATUS) {
if (isset($arr['plink'])) { if (isset($arr['plink'])) {
$arr['plink'] = OStatus::convertHref($arr['plink']); $arr['plink'] = OStatus::convertHref($arr['plink']);
} elseif (isset($arr['uri'])) { } elseif (isset($arr['uri'])) {
@ -581,7 +583,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
* We have to check several networks since Friendica posts could be repeated * We have to check several networks since Friendica posts could be repeated
* via OStatus (maybe Diasporsa as well) * via OStatus (maybe Diasporsa as well)
*/ */
if (in_array(trim(defaults($arr, 'network', NETWORK_PHANTOM)), array(NETWORK_DIASPORA, NETWORK_DFRN, NETWORK_OSTATUS, ""))) { if (in_array($arr['network'], array(NETWORK_DIASPORA, NETWORK_DFRN, NETWORK_OSTATUS, ""))) {
$r = q("SELECT `id`, `network` FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `network` IN ('%s', '%s', '%s') LIMIT 1", $r = q("SELECT `id`, `network` FROM `item` WHERE `uri` = '%s' AND `uid` = %d AND `network` IN ('%s', '%s', '%s') LIMIT 1",
dbesc(trim($arr['uri'])), dbesc(trim($arr['uri'])),
intval($uid), intval($uid),
@ -644,7 +646,6 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
$arr['attach'] = ((x($arr, 'attach')) ? notags(trim($arr['attach'])) : ''); $arr['attach'] = ((x($arr, 'attach')) ? notags(trim($arr['attach'])) : '');
$arr['app'] = ((x($arr, 'app')) ? notags(trim($arr['app'])) : ''); $arr['app'] = ((x($arr, 'app')) ? notags(trim($arr['app'])) : '');
$arr['origin'] = ((x($arr, 'origin')) ? intval($arr['origin']) : 0 ); $arr['origin'] = ((x($arr, 'origin')) ? intval($arr['origin']) : 0 );
$arr['network'] = ((x($arr, 'network')) ? trim($arr['network']) : '');
$arr['postopts'] = ((x($arr, 'postopts')) ? trim($arr['postopts']) : ''); $arr['postopts'] = ((x($arr, 'postopts')) ? trim($arr['postopts']) : '');
$arr['resource-id'] = ((x($arr, 'resource-id')) ? trim($arr['resource-id']) : ''); $arr['resource-id'] = ((x($arr, 'resource-id')) ? trim($arr['resource-id']) : '');
$arr['event-id'] = ((x($arr, 'event-id')) ? intval($arr['event-id']) : 0 ); $arr['event-id'] = ((x($arr, 'event-id')) ? intval($arr['event-id']) : 0 );
@ -674,18 +675,19 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
$arr['plink'] = System::baseUrl() . '/display/' . urlencode($arr['guid']); $arr['plink'] = System::baseUrl() . '/display/' . urlencode($arr['guid']);
} }
if ($arr['network'] == "") { if ($arr['network'] == NETWORK_PHANTOM) {
$r = q("SELECT `network` FROM `contact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' AND `uid` = %d LIMIT 1", $r = q("SELECT `network` FROM `contact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' AND `uid` = %d LIMIT 1",
dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS),
dbesc(normalise_link($arr['author-link'])), dbesc(normalise_link($arr['author-link'])),
intval($arr['uid']) intval($arr['uid'])
); );
if (!DBM::is_result($r)) if (!DBM::is_result($r)) {
$r = q("SELECT `network` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' LIMIT 1", $r = q("SELECT `network` FROM `gcontact` WHERE `network` IN ('%s', '%s', '%s') AND `nurl` = '%s' LIMIT 1",
dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS),
dbesc(normalise_link($arr['author-link'])) dbesc(normalise_link($arr['author-link']))
); );
}
if (!DBM::is_result($r)) { if (!DBM::is_result($r)) {
$r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", $r = q("SELECT `network` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
@ -733,7 +735,7 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
logger("Contact-id was missing for post ".$arr["guid"]." from user id ".$uid." - now set to ".$arr["contact-id"], LOGGER_DEBUG); logger("Contact-id was missing for post ".$arr["guid"]." from user id ".$uid." - now set to ".$arr["contact-id"], LOGGER_DEBUG);
} }
if (defaults($arr, "gcontact-id", 0) === 0) { if (!x($arr, "gcontact-id")) {
/* /*
* The gcontact should mostly behave like the contact. But is is supposed to be global for the system. * The gcontact should mostly behave like the contact. But is is supposed to be global for the system.
* This means that wall posts, repeated posts, etc. should have the gcontact id of the owner. * This means that wall posts, repeated posts, etc. should have the gcontact id of the owner.