From 53876abfda3577636527fe6f1b7d27741d80dc80 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 23 Jul 2018 13:43:18 +0200 Subject: [PATCH] And some more removed notices in the core (#5465) --- boot.php | 2 +- mod/hovercard.php | 2 ++ src/Protocol/DFRN.php | 11 ++++-- src/Protocol/Diaspora.php | 61 +++++++++++++------------------- src/Protocol/PortableContact.php | 18 ++++++---- 5 files changed, 48 insertions(+), 46 deletions(-) diff --git a/boot.php b/boot.php index 7654d261c3..ade27341ed 100644 --- a/boot.php +++ b/boot.php @@ -1108,7 +1108,7 @@ function explode_querystring($query) function curPageURL() { $pageURL = 'http'; - if ($_SERVER["HTTPS"] == "on") { + if (!empty($_SERVER["HTTPS"]) && ($_SERVER["HTTPS"] == "on")) { $pageURL .= "s"; } diff --git a/mod/hovercard.php b/mod/hovercard.php index f0dbe4873c..40d32be7ad 100644 --- a/mod/hovercard.php +++ b/mod/hovercard.php @@ -65,6 +65,8 @@ function hovercard_content() // Get the photo_menu - the menu if possible contact actions if (local_user()) { $actions = Contact::photoMenu($contact); + } else { + $actions = []; } // Move the contact data to the profile array so we can deliver it to diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 3e8d99e7cb..248203f387 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1218,9 +1218,16 @@ class DFRN $res = XML::parseString($xml); - if ((intval($res->status) != 0) || !strlen($res->challenge) || !strlen($res->dfrn_id)) { + if (!is_object($res) || (intval($res->status) != 0) || !strlen($res->challenge) || !strlen($res->dfrn_id)) { Contact::markForArchival($contact); - return ($res->status ? $res->status : 3); + + if (empty($res->status)) { + $status = 3; + } else { + $status = $res->status; + } + + return $status; } $postvars = []; diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 341d3d2a89..cafc112ef4 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -1040,46 +1040,26 @@ class Diaspora */ private static function contactByHandle($uid, $handle) { - // First do a direct search on the contact table - $r = q( - "SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", - intval($uid), - dbesc($handle) - ); - - if (DBM::is_result($r)) { - return $r[0]; - } else { - /* - * We haven't found it? - * We use another function for it that will possibly create a contact entry. - */ - $cid = Contact::getIdForURL($handle, $uid); - - if ($cid > 0) { - /// @TODO Contact retrieval should be encapsulated into an "entity" class like `Contact` - $r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid)); - - if (DBM::is_result($r)) { - return $r[0]; - } - } + $cid = Contact::getIdForURL($handle, $uid); + if (!$cid) { + $handle_parts = explode("@", $handle); + $nurl_sql = "%%://" . $handle_parts[1] . "%%/profile/" . $handle_parts[0]; + $cid = Contact::getIdForURL($nurl_sql, $uid); } - $handle_parts = explode("@", $handle); - $nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0]; - $r = q( - "SELECT * FROM `contact` WHERE `network` = '%s' AND `uid` = %d AND `nurl` LIKE '%s' LIMIT 1", - dbesc(NETWORK_DFRN), - intval($uid), - dbesc($nurl_sql) - ); - if (DBM::is_result($r)) { - return $r[0]; + if (!$cid) { + logger("Haven't found a contact for user " . $uid . " and handle " . $handle, LOGGER_DEBUG); + return false; } - logger("Haven't found contact for user ".$uid." and handle ".$handle, LOGGER_DEBUG); - return false; + $contact = dba::selectFirst('contact', [], ['id' => $cid]); + if (!DBM::is_result($contact)) { + // This here shouldn't happen at all + logger("Haven't found a contact for user " . $uid . " and handle " . $handle, LOGGER_DEBUG); + return false; + } + + return $contact; } /** @@ -1147,7 +1127,9 @@ class Diaspora if (!$contact) { logger("A Contact for handle ".$handle." and user ".$importer["uid"]." was not found"); // If a contact isn't found, we accept it anyway if it is a comment - if ($is_comment) { + if ($is_comment && ($importer["uid"] != 0)) { + return self::contactByHandle(0, $handle); + } elseif ($is_comment) { return $importer; } else { return false; @@ -1268,6 +1250,11 @@ class Diaspora private static function storeByGuid($guid, $server, $uid = 0) { $serverparts = parse_url($server); + + if (empty($serverparts["host"]) || empty($serverparts["scheme"])) { + return false; + } + $server = $serverparts["scheme"]."://".$serverparts["host"]; logger("Trying to fetch item ".$guid." from ".$server, LOGGER_DEBUG); diff --git a/src/Protocol/PortableContact.php b/src/Protocol/PortableContact.php index 85b23f5699..570d29c1ee 100644 --- a/src/Protocol/PortableContact.php +++ b/src/Protocol/PortableContact.php @@ -1229,19 +1229,25 @@ class PortableContact $site_name = $data->site->name; - $data->site->closed = self::toBoolean($data->site->closed); + $private = false; + $inviteonly = false; + $closed = false; + + if (!empty($data->site->closed)) { + $closed = self::toBoolean($data->site->closed); + } if (!empty($data->site->private)) { - $data->site->private = self::toBoolean($data->site->private); + $private = self::toBoolean($data->site->private); } if (!empty($data->site->inviteonly)) { - $data->site->inviteonly = self::toBoolean($data->site->inviteonly); + $inviteonly = self::toBoolean($data->site->inviteonly); } - if (!$data->site->closed && !$data->site->private and $data->site->inviteonly) { + if (!$closed && !$private and $inviteonly) { $register_policy = REGISTER_APPROVE; - } elseif (!$data->site->closed && !$data->site->private) { + } elseif (!$closed && !$private) { $register_policy = REGISTER_OPEN; } else { $register_policy = REGISTER_CLOSED; @@ -1649,7 +1655,7 @@ class PortableContact } $last_update = date("c", time() - (60 * 60 * 24 * $requery_days)); - $r = q("SELECT `id`, `url`, `network` FROM `gserver` WHERE `last_contact` >= `last_failure` AND `poco` != '' AND `last_poco_query` < '%s' ORDER BY RAND()", dbesc($last_update)); + $r = q("SELECT `id`, `url`, `nurl`, `network` FROM `gserver` WHERE `last_contact` >= `last_failure` AND `poco` != '' AND `last_poco_query` < '%s' ORDER BY RAND()", dbesc($last_update)); if (DBM::is_result($r)) { foreach ($r as $server) { if (!self::checkServer($server["url"], $server["network"])) {