From 0434b0485a0a7f2cfc8d1ea24a0fd2b6ca27ff7a Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Wed, 20 Apr 2016 21:47:57 +0200
Subject: [PATCH] Start a gcontact probing for new gcontacts

---
 include/socgraph.php |  9 ++++++++-
 index.php            | 12 +++++++++---
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/include/socgraph.php b/include/socgraph.php
index b7d6f29344..c1648fbbfa 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -1448,8 +1448,15 @@ function get_gcontact_id($contact) {
 		$r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s' ORDER BY `id` LIMIT 2",
 			dbesc(normalise_link($contact["url"])));
 
-		if ($r)
+		if ($r) {
 			$gcontact_id = $r[0]["id"];
+
+			// Complete newly added contacts from "probable" accounts
+			if (in_array($contact["network"], array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA, NETWORK_FEED))) {
+				logger("Probing ".$contact["url"], LOGGER_DEBUG);
+				proc_run('php', 'include/gprobe.php', bin2hex($contact["url"]));
+			}
+		}
 	}
 
 	if ((count($r) > 1) AND ($gcontact_id > 0) AND ($contact["url"] != ""))
diff --git a/index.php b/index.php
index 625c2d82dc..a69a8d0c36 100644
--- a/index.php
+++ b/index.php
@@ -117,9 +117,15 @@ if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) {
 }
 
 if((x($_GET,'zrl')) && (!$install && !$maintenance)) {
-	$_SESSION['my_url'] = $_GET['zrl'];
-	$a->query_string = preg_replace('/[\?&]zrl=(.*?)([\?&]|$)/is','',$a->query_string);
-	zrl_init($a);
+	// Only continue when the given profile link seems valid
+	// Valid profile links contain a path and no query parameters
+	if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == "") AND
+		(parse_url($_GET['zrl'],  PHP_URL_PATH) != "")) {
+		$_SESSION['my_url'] = $_GET['zrl'];
+		$a->query_string = preg_replace('/[\?&]zrl=(.*?)([\?&]|$)/is','',$a->query_string);
+		zrl_init($a);
+	} else
+		logger("Invalid ZRL parameter ".$_GET['zrl'], LOGGER_DEBUG);
 }
 
 /**