Contact Type is now transmitted via poco
This commit is contained in:
		
					parent
					
						
							
								32f49b4de2
							
						
					
				
			
			
				commit
				
					
						095fa872ed
					
				
			
		
					 4 changed files with 62 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -686,6 +686,7 @@ function db_definition($charset) {
 | 
			
		|||
					"gender" => array("type" => "varchar(32)", "not null" => "1", "default" => ""),
 | 
			
		||||
					"birthday" => array("type" => "varchar(32)", "not null" => "1", "default" => "0000-00-00"),
 | 
			
		||||
					"community" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
 | 
			
		||||
					"contact-type" => array("type" => "tinyint(1)", "not null" => "1", "default" => "-1"),
 | 
			
		||||
					"hide" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
 | 
			
		||||
					"nsfw" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0"),
 | 
			
		||||
					"network" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
 | 
			
		||||
| 
						 | 
				
			
			@ -1492,6 +1493,22 @@ function dbstructure_run(&$argv, &$argc) {
 | 
			
		|||
		switch ($argv[1]) {
 | 
			
		||||
			case "update":
 | 
			
		||||
				update_structure(true, true);
 | 
			
		||||
 | 
			
		||||
				$build = get_config('system','build');
 | 
			
		||||
				if (!x($build)) {
 | 
			
		||||
					set_config('system','build',DB_UPDATE_VERSION);
 | 
			
		||||
					$build = DB_UPDATE_VERSION;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				$stored = intval($build);
 | 
			
		||||
				$current = intval(DB_UPDATE_VERSION);
 | 
			
		||||
 | 
			
		||||
				// run any left update_nnnn functions in update.php
 | 
			
		||||
				for($x = $stored; $x < $current; $x ++) {
 | 
			
		||||
					$r = run_update_function($x);
 | 
			
		||||
					if (!$r) break;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				set_config('system','build',DB_UPDATE_VERSION);
 | 
			
		||||
				return;
 | 
			
		||||
			case "dumpsql":
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1147,7 +1147,7 @@ class dfrn {
 | 
			
		|||
		$author["link"] = $xpath->evaluate($element."/atom:uri/text()", $context)->item(0)->nodeValue;
 | 
			
		||||
 | 
			
		||||
		$r = q("SELECT `id`, `uid`, `url`, `network`, `avatar-date`, `name-date`, `uri-date`, `addr`,
 | 
			
		||||
				`name`, `nick`, `about`, `location`, `keywords`, `xmpp`, `bdyear`, `bd`, `hidden`
 | 
			
		||||
				`name`, `nick`, `about`, `location`, `keywords`, `xmpp`, `bdyear`, `bd`, `hidden`, `contact-type`
 | 
			
		||||
				FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` != '%s'",
 | 
			
		||||
			intval($importer["uid"]), dbesc(normalise_link($author["link"])), dbesc(NETWORK_STATUSNET));
 | 
			
		||||
		if ($r) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1336,6 +1336,7 @@ class dfrn {
 | 
			
		|||
			$poco["generation"] = 2;
 | 
			
		||||
			$poco["photo"] = $author["avatar"];
 | 
			
		||||
			$poco["hide"] = $hide;
 | 
			
		||||
			$poco["contact-type"] = $contact["contact-type"];
 | 
			
		||||
			update_gcontact($poco);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) {
 | 
			
		|||
	if(! $url)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	$url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,generation' : '?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,generation') ;
 | 
			
		||||
	$url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation' : '?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation') ;
 | 
			
		||||
 | 
			
		||||
	logger('poco_load: ' . $url, LOGGER_DEBUG);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +86,7 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) {
 | 
			
		|||
		$about = '';
 | 
			
		||||
		$keywords = '';
 | 
			
		||||
		$gender = '';
 | 
			
		||||
		$contact_type = -1;
 | 
			
		||||
		$generation = 0;
 | 
			
		||||
 | 
			
		||||
		$name = $entry->displayName;
 | 
			
		||||
| 
						 | 
				
			
			@ -133,6 +134,9 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) {
 | 
			
		|||
			foreach($entry->tags as $tag)
 | 
			
		||||
				$keywords = implode(", ", $tag);
 | 
			
		||||
 | 
			
		||||
		if(isset($entry->contactType) AND ($entry->contactType >= 0))
 | 
			
		||||
			$contact_type = $entry->contactType;
 | 
			
		||||
 | 
			
		||||
		// If you query a Friendica server for its profiles, the network has to be Friendica
 | 
			
		||||
		/// TODO It could also be a Redmatrix server
 | 
			
		||||
		//if ($uid == 0)
 | 
			
		||||
| 
						 | 
				
			
			@ -140,6 +144,9 @@ function poco_load($cid,$uid = 0,$zcid = 0,$url = null) {
 | 
			
		|||
 | 
			
		||||
		poco_check($profile_url, $name, $network, $profile_photo, $about, $location, $gender, $keywords, $connect_url, $updated, $generation, $cid, $uid, $zcid);
 | 
			
		||||
 | 
			
		||||
		$gcontact = array("url" => $profile_url, "contact-type" => $contact_type, "generation" => $generation);
 | 
			
		||||
		update_gcontact($gcontact);
 | 
			
		||||
 | 
			
		||||
		// Update the Friendica contacts. Diaspora is doing it via a message. (See include/diaspora.php)
 | 
			
		||||
		// Deactivated because we now update Friendica contacts in dfrn.php
 | 
			
		||||
		//if (($location != "") OR ($about != "") OR ($keywords != "") OR ($gender != ""))
 | 
			
		||||
| 
						 | 
				
			
			@ -1236,7 +1243,7 @@ function poco_discover($complete = false) {
 | 
			
		|||
			}
 | 
			
		||||
 | 
			
		||||
			// Fetch all users from the other server
 | 
			
		||||
			$url = $server["poco"]."/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,generation";
 | 
			
		||||
			$url = $server["poco"]."/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation";
 | 
			
		||||
 | 
			
		||||
			logger("Fetch all users from the server ".$server["nurl"], LOGGER_DEBUG);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1255,7 +1262,7 @@ function poco_discover($complete = false) {
 | 
			
		|||
					$updatedSince = date("Y-m-d H:i:s", time() - $timeframe * 86400);
 | 
			
		||||
 | 
			
		||||
					// Fetch all global contacts from the other server (Not working with Redmatrix and Friendica versions before 3.3)
 | 
			
		||||
					$url = $server["poco"]."/@global?updatedSince=".$updatedSince."&fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,generation";
 | 
			
		||||
					$url = $server["poco"]."/@global?updatedSince=".$updatedSince."&fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation";
 | 
			
		||||
 | 
			
		||||
					$success = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1303,7 +1310,7 @@ function poco_discover_server_users($data, $server) {
 | 
			
		|||
			logger("Fetch contacts for the user ".$username." from the server ".$server["nurl"], LOGGER_DEBUG);
 | 
			
		||||
 | 
			
		||||
			// Fetch all contacts from a given user from the other server
 | 
			
		||||
			$url = $server["poco"]."/".$username."/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,generation";
 | 
			
		||||
			$url = $server["poco"]."/".$username."/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation";
 | 
			
		||||
 | 
			
		||||
			$retdata = z_fetch_url($url);
 | 
			
		||||
			if ($retdata["success"])
 | 
			
		||||
| 
						 | 
				
			
			@ -1330,6 +1337,7 @@ function poco_discover_server($data, $default_generation = 0) {
 | 
			
		|||
		$about = '';
 | 
			
		||||
		$keywords = '';
 | 
			
		||||
		$gender = '';
 | 
			
		||||
		$contact_type = -1;
 | 
			
		||||
		$generation = $default_generation;
 | 
			
		||||
 | 
			
		||||
		$name = $entry->displayName;
 | 
			
		||||
| 
						 | 
				
			
			@ -1374,6 +1382,9 @@ function poco_discover_server($data, $default_generation = 0) {
 | 
			
		|||
		if(isset($entry->generation) AND ($entry->generation > 0))
 | 
			
		||||
			$generation = ++$entry->generation;
 | 
			
		||||
 | 
			
		||||
		if(isset($entry->contactType) AND ($entry->contactType >= 0))
 | 
			
		||||
			$contact_type = $entry->contactType;
 | 
			
		||||
 | 
			
		||||
		if(isset($entry->tags))
 | 
			
		||||
			foreach($entry->tags as $tag)
 | 
			
		||||
				$keywords = implode(", ", $tag);
 | 
			
		||||
| 
						 | 
				
			
			@ -1383,6 +1394,10 @@ function poco_discover_server($data, $default_generation = 0) {
 | 
			
		|||
 | 
			
		||||
			logger("Store profile ".$profile_url, LOGGER_DEBUG);
 | 
			
		||||
			poco_check($profile_url, $name, $network, $profile_photo, $about, $location, $gender, $keywords, $connect_url, $updated, $generation, 0, 0, 0);
 | 
			
		||||
 | 
			
		||||
			$gcontact = array("url" => $profile_url, "contact-type" => $contact_type, "generation" => $generation);
 | 
			
		||||
			update_gcontact($gcontact);
 | 
			
		||||
 | 
			
		||||
			logger("Done for profile ".$profile_url, LOGGER_DEBUG);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -1534,7 +1549,7 @@ function update_gcontact($contact) {
 | 
			
		|||
		return false;
 | 
			
		||||
 | 
			
		||||
	$r = q("SELECT `name`, `nick`, `photo`, `location`, `about`, `addr`, `generation`, `birthday`, `gender`, `keywords`,
 | 
			
		||||
			`hide`, `nsfw`, `network`, `alias`, `notify`, `server_url`, `connect`, `updated`, `url`
 | 
			
		||||
			`contact-type`, `hide`, `nsfw`, `network`, `alias`, `notify`, `server_url`, `connect`, `updated`, `url`
 | 
			
		||||
		FROM `gcontact` WHERE `id` = %d LIMIT 1",
 | 
			
		||||
		intval($gcontact_id));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1614,20 +1629,20 @@ function update_gcontact($contact) {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	if ($update) {
 | 
			
		||||
		logger("Update gcontact for ".$contact["url"]." Callstack: ".App::callstack(), LOGGER_DEBUG);
 | 
			
		||||
		logger("Update gcontact for ".$contact["url"], LOGGER_DEBUG);
 | 
			
		||||
 | 
			
		||||
		q("UPDATE `gcontact` SET `photo` = '%s', `name` = '%s', `nick` = '%s', `addr` = '%s', `network` = '%s',
 | 
			
		||||
					`birthday` = '%s', `gender` = '%s', `keywords` = '%s', `hide` = %d, `nsfw` = %d,
 | 
			
		||||
					`alias` = '%s', `notify` = '%s', `url` = '%s',
 | 
			
		||||
					`contact-type` = %d, `alias` = '%s', `notify` = '%s', `url` = '%s',
 | 
			
		||||
					`location` = '%s', `about` = '%s', `generation` = %d, `updated` = '%s',
 | 
			
		||||
					`server_url` = '%s', `connect` = '%s'
 | 
			
		||||
				WHERE `nurl` = '%s' AND (`generation` = 0 OR `generation` >= %d)",
 | 
			
		||||
			dbesc($contact["photo"]), dbesc($contact["name"]), dbesc($contact["nick"]),
 | 
			
		||||
			dbesc($contact["addr"]), dbesc($contact["network"]), dbesc($contact["birthday"]),
 | 
			
		||||
			dbesc($contact["gender"]), dbesc($contact["keywords"]), intval($contact["hide"]),
 | 
			
		||||
			intval($contact["nsfw"]), dbesc($contact["alias"]), dbesc($contact["notify"]),
 | 
			
		||||
			dbesc($contact["url"]), dbesc($contact["location"]), dbesc($contact["about"]),
 | 
			
		||||
			intval($contact["generation"]), dbesc($contact["updated"]),
 | 
			
		||||
			intval($contact["nsfw"]), intval($contact["contact-type"]), dbesc($contact["alias"]),
 | 
			
		||||
			dbesc($contact["notify"]), dbesc($contact["url"]), dbesc($contact["location"]),
 | 
			
		||||
			dbesc($contact["about"]), intval($contact["generation"]), dbesc($contact["updated"]),
 | 
			
		||||
			dbesc($contact["server_url"]), dbesc($contact["connect"]),
 | 
			
		||||
			dbesc(normalise_link($contact["url"])), intval($contact["generation"]));
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1644,13 +1659,14 @@ function update_gcontact($contact) {
 | 
			
		|||
 | 
			
		||||
			q("UPDATE `contact` SET `name` = '%s', `nick` = '%s', `addr` = '%s',
 | 
			
		||||
						`network` = '%s', `bd` = '%s', `gender` = '%s',
 | 
			
		||||
						`keywords` = '%s', `alias` = '%s', `url` = '%s',
 | 
			
		||||
						`location` = '%s', `about` = '%s'
 | 
			
		||||
						`keywords` = '%s', `alias` = '%s', `contact-type` = %d,
 | 
			
		||||
						`url` = '%s', `location` = '%s', `about` = '%s'
 | 
			
		||||
					WHERE `id` = %d",
 | 
			
		||||
				dbesc($contact["name"]), dbesc($contact["nick"]), dbesc($contact["addr"]),
 | 
			
		||||
				dbesc($contact["network"]), dbesc($contact["birthday"]), dbesc($contact["gender"]),
 | 
			
		||||
				dbesc($contact["keywords"]), dbesc($contact["alias"]), dbesc($contact["url"]),
 | 
			
		||||
				dbesc($contact["location"]), dbesc($contact["about"]), intval($r[0]["id"]));
 | 
			
		||||
				dbesc($contact["keywords"]), dbesc($contact["alias"]), intval($contact["contact-type"]),
 | 
			
		||||
				dbesc($contact["url"]), dbesc($contact["location"]), dbesc($contact["about"]),
 | 
			
		||||
				intval($r[0]["id"]));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										15
									
								
								mod/poco.php
									
										
									
									
									
								
							
							
						
						
									
										15
									
								
								mod/poco.php
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
<?php
 | 
			
		||||
// See here for a documentation for portable contacts:
 | 
			
		||||
// https://web.archive.org/web/20160405005550/http://portablecontacts.net/draft-spec.html
 | 
			
		||||
 | 
			
		||||
function poco_init(&$a) {
 | 
			
		||||
	require_once("include/bbcode.php");
 | 
			
		||||
| 
						 | 
				
			
			@ -104,9 +106,11 @@ function poco_init(&$a) {
 | 
			
		|||
		);
 | 
			
		||||
	} elseif($system_mode) {
 | 
			
		||||
		logger("Start system mode query", LOGGER_DEBUG);
 | 
			
		||||
		$r = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`, `profile`.`gender` AS `pgender`,
 | 
			
		||||
			`profile`.`address` AS `paddress`, `profile`.`region` AS `pregion`, `profile`.`postal-code` AS `ppostalcode`, `profile`.`country-name` AS `pcountry`
 | 
			
		||||
		$r = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`,
 | 
			
		||||
				`profile`.`gender` AS `pgender`, `profile`.`address` AS `paddress`, `profile`.`region` AS `pregion`,
 | 
			
		||||
				`profile`.`postal-code` AS `ppostalcode`, `profile`.`country-name` AS `pcountry`, `user`.`account-type`
 | 
			
		||||
			FROM `contact` INNER JOIN `profile` ON `profile`.`uid` = `contact`.`uid`
 | 
			
		||||
				INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
 | 
			
		||||
			WHERE `self` = 1 AND `profile`.`is-default`
 | 
			
		||||
			AND `contact`.`uid` IN (SELECT `uid` FROM `pconfig` WHERE `cat` = 'system' AND `k` = 'suggestme' AND `v` = 1) LIMIT %d, %d",
 | 
			
		||||
			intval($startIndex),
 | 
			
		||||
| 
						 | 
				
			
			@ -155,6 +159,7 @@ function poco_init(&$a) {
 | 
			
		|||
		'gender' => false,
 | 
			
		||||
		'tags' => false,
 | 
			
		||||
		'address' => false,
 | 
			
		||||
		'contactType' => false,
 | 
			
		||||
		'generation' => false
 | 
			
		||||
	);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -207,6 +212,9 @@ function poco_init(&$a) {
 | 
			
		|||
				if (($rr['keywords'] == "") AND isset($rr['pub_keywords']))
 | 
			
		||||
					$rr['keywords'] = $rr['pub_keywords'];
 | 
			
		||||
 | 
			
		||||
				if (isset($rr['account-type']))
 | 
			
		||||
					$rr['contact-type'] = $rr['account-type'];
 | 
			
		||||
 | 
			
		||||
				$about = Cache::get("about:".$rr['updated'].":".$rr['nurl']);
 | 
			
		||||
				if (is_null($about)) {
 | 
			
		||||
					$about = bbcode($rr['about'], false, false);
 | 
			
		||||
| 
						 | 
				
			
			@ -300,6 +308,9 @@ function poco_init(&$a) {
 | 
			
		|||
						 $entry['address']['country'] = $rr['pcountry'];
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if($fields_ret['contactType'])
 | 
			
		||||
					$entry['contactType'] = intval($rr['contact-type']);
 | 
			
		||||
 | 
			
		||||
				$ret['entry'][] = $entry;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue