From 1cc50a80f4e2fc76cfbb64ac8b0c1deb5ac4088b Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Wed, 30 Aug 2017 19:33:16 +0000
Subject: [PATCH] Only update if there is a change

---
 include/socgraph.php  |  4 ++++
 src/Network/Probe.php | 24 ++++++++++++++++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/include/socgraph.php b/include/socgraph.php
index ac7f01bc34..621085b0ee 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -2200,6 +2200,10 @@ function update_gcontact($contact) {
 		$contact["updated"] = dbm::date();
 	}
 
+	if ($contact["network"] == NETWORK_TWITTER) {
+		$contact["server_url"] = 'http://twitter.com';
+	}
+
 	if ($contact["server_url"] == "") {
 		$data = Probe::uri($contact["url"]);
 		if ($data["network"] != NETWORK_PHANTOM) {
diff --git a/src/Network/Probe.php b/src/Network/Probe.php
index af0895a8f4..f36cdf08ed 100644
--- a/src/Network/Probe.php
+++ b/src/Network/Probe.php
@@ -392,16 +392,25 @@ class Probe {
 						'about' => $data['about'],
 						'notify' => $data['notify'],
 						'network' => $data['network'],
-						'server_url' => $data['baseurl'],
-						'updated' => dbm::date());
+						'server_url' => $data['baseurl']);
+
+				$fieldnames = array();
 
 				foreach ($fields AS $key => $val) {
 					if (empty($val)) {
 						unset($fields[$key]);
+					} else {
+						$fieldnames[] = $key;
 					}
 				}
 
-				dba::update('gcontact', $fields, array('nurl' => normalise_link($data["url"])));
+				$fields['updated'] = dbm::date();
+
+				$condition = array('nurl' => normalise_link($data["url"]));
+
+				$old_fields = dba::select('gcontact', $fieldnames, $condition, array('limit' => 1));
+
+				dba::update('gcontact', $fields, $condition, $old_fields);
 
 				$fields = array('name' => $data['name'],
 						'nick' => $data['nick'],
@@ -420,14 +429,21 @@ class Probe {
 						'network' => $data['network'],
 						'success_update' => dbm::date());
 
+				$fieldnames = array();
+
 				foreach ($fields AS $key => $val) {
 					if (empty($val)) {
 						unset($fields[$key]);
+					} else {
+						$fieldnames[] = $key;
 					}
 				}
 
 				$condition = array('nurl' => normalise_link($data["url"]), 'self' => false, 'uid' => 0);
-				dba::update('contact', $fields, $condition);
+
+				$old_fields = dba::select('contact', $fieldnames, $condition, array('limit' => 1));
+
+				dba::update('contact', $fields, $condition, $old_fields);
 			}
 		}