From a5aa43469b2299baae05d63327ecf23b31f115e8 Mon Sep 17 00:00:00 2001
From: Michael <heluecht@pirati.ca>
Date: Fri, 24 Apr 2020 13:41:11 +0000
Subject: [PATCH] Some more places with owner-view

---
 mod/poco.php             | 53 +++++++++-------------------------------
 src/Protocol/DFRN.php    | 27 +++++---------------
 static/dbview.config.php |  6 ++++-
 3 files changed, 22 insertions(+), 64 deletions(-)

diff --git a/mod/poco.php b/mod/poco.php
index edbe73dce..ef77c9c99 100644
--- a/mod/poco.php
+++ b/mod/poco.php
@@ -144,16 +144,7 @@ function poco_init(App $a) {
 		);
 	} elseif ($system_mode) {
 		Logger::log("Start system mode query", Logger::DEBUG);
-		$contacts = q("SELECT `contact`.*, `profile`.`about` AS `pabout`, `profile`.`locality` AS `plocation`, `profile`.`pub_keywords`,
-				`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`.`net-publish`
-			LIMIT %d, %d",
-			intval($startIndex),
-			intval($itemsPerPage)
-		);
+		$contacts = DBA::selectToArray('owner-view', [], ['net-publish' => true], ['limit' => [$startIndex, $itemsPerPage]]);
 	} else {
 		Logger::log("Start query for user " . $user['nickname'], Logger::DEBUG);
 		$contacts = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 AND `archive` = 0
@@ -230,28 +221,6 @@ function poco_init(App $a) {
 					}
 				}
 
-				if (($contact['about'] == "") && isset($contact['pabout'])) {
-					$contact['about'] = $contact['pabout'];
-				}
-				if ($contact['location'] == "") {
-					if (isset($contact['plocation'])) {
-						$contact['location'] = $contact['plocation'];
-					}
-					if (isset($contact['pregion']) && ( $contact['pregion'] != "")) {
-						if ($contact['location'] != "") {
-							$contact['location'] .= ", ";
-						}
-						$contact['location'] .= $contact['pregion'];
-					}
-
-					if (isset($contact['pcountry']) && ( $contact['pcountry'] != "")) {
-						if ($contact['location'] != "") {
-							$contact['location'] .= ", ";
-						}
-						$contact['location'] .= $contact['pcountry'];
-					}
-				}
-
 				if (($contact['keywords'] == "") && isset($contact['pub_keywords'])) {
 					$contact['keywords'] = $contact['pub_keywords'];
 				}
@@ -343,21 +312,21 @@ function poco_init(App $a) {
 					$entry['address'] = [];
 
 					// Deactivated. It just reveals too much data. (Although its from the default profile)
-					//if (isset($rr['paddress']))
-					//	 $entry['address']['streetAddress'] = $rr['paddress'];
+					//if (isset($rr['address']))
+					//	 $entry['address']['streetAddress'] = $rr['address'];
 
-					if (isset($contact['plocation'])) {
-						$entry['address']['locality'] = $contact['plocation'];
+					if (isset($contact['locality'])) {
+						$entry['address']['locality'] = $contact['locality'];
 					}
-					if (isset($contact['pregion'])) {
-						$entry['address']['region'] = $contact['pregion'];
+					if (isset($contact['region'])) {
+						$entry['address']['region'] = $contact['region'];
 					}
 					// See above
-					//if (isset($rr['ppostalcode']))
-					//	 $entry['address']['postalCode'] = $rr['ppostalcode'];
+					//if (isset($rr['postal-code']))
+					//	 $entry['address']['postalCode'] = $rr['postal-code'];
 
-					if (isset($contact['pcountry'])) {
-						$entry['address']['country'] = $contact['pcountry'];
+					if (isset($contact['country'])) {
+						$entry['address']['country'] = $contact['country'];
 					}
 				}
 
diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php
index 83010f811..f65a202f4 100644
--- a/src/Protocol/DFRN.php
+++ b/src/Protocol/DFRN.php
@@ -183,19 +183,12 @@ class DFRN
 
 		$sql_extra = sprintf(" AND `item`.`private` != %s ", Item::PRIVATE);
 
-		$r = q(
-			"SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`, `user`.`account-type`
-			FROM `contact` INNER JOIN `user` ON `user`.`uid` = `contact`.`uid`
-			WHERE `contact`.`self` AND `user`.`nickname` = '%s' LIMIT 1",
-			DBA::escape($owner_nick)
-		);
-
-		if (! DBA::isResult($r)) {
+		$owner = DBA::selectFirst('owner-view', [], ['nickname' => $owner_nick]);
+		if (!DBA::isResult($owner)) {
 			Logger::log(sprintf('No contact found for nickname=%d', $owner_nick), Logger::WARNING);
 			exit();
 		}
 
-		$owner = $r[0];
 		$owner_id = $owner['uid'];
 
 		$sql_post_table = "";
@@ -684,18 +677,10 @@ class DFRN
 		}
 
 		// Only show contact details when we are allowed to
-		$r = q(
-			"SELECT `profile`.`about`, `profile`.`name`, `profile`.`homepage`, `user`.`nickname`,
-				`user`.`timezone`, `profile`.`locality`, `profile`.`region`, `profile`.`country-name`,
-				`profile`.`pub_keywords`, `profile`.`xmpp`, `profile`.`dob`
-			FROM `profile`
-				INNER JOIN `user` ON `user`.`uid` = `profile`.`uid`
-				WHERE NOT `user`.`hidewall` AND `user`.`uid` = %d",
-			intval($owner['uid'])
-		);
-		if (DBA::isResult($r)) {
-			$profile = $r[0];
-
+		$profile = DBA::selectFirst('owner-view',
+			['about', 'name', 'homepage', 'nickname', 'timezone', 'locality', 'region', 'country-name', 'pub_keywords', 'xmpp', 'dob'],
+			['uid' => $owner['uid'], 'hidewall' => false]);
+		if (DBA::isResult($profile)) {
 			XML::addElement($doc, $author, "poco:displayName", $profile["name"]);
 			XML::addElement($doc, $author, "poco:updated", $namdate);
 
diff --git a/static/dbview.config.php b/static/dbview.config.php
index 06f7d3aa9..4363c7886 100755
--- a/static/dbview.config.php
+++ b/static/dbview.config.php
@@ -133,11 +133,15 @@ return [
 			"notify_new_posts" => ["notify_new_posts"],
 			"fetch_further_information" => ["fetch_further_information"],
 			"ffi_keyword_blacklist" => ["ffi_keyword_blacklist"],
+			"guid" => ["user", "guid"],
+			"theme" => ["user", "theme"],
+			"language" => ["user", "language"],
 			"email" => ["user", "email"],
 			"uprvkey" => ["user", "prvkey"],
 			"upubkey" => ["user", "pubkey"],
 			"timezone" => ["user", "timezone"],
-			"nickname" => ["user", "nickname"], /// @todo Remove duplicate
+			"nickname" => ["user", "nickname"], /// @todo Replaces all uses of "nickname" with "nick"
+			"username" => ["user", "username"], /// @todo Replaces all uses of "username" with "name"
 			"sprvkey" => ["user", "sprvkey"],
 			"spubkey" => ["user", "spubkey"],
 			"page-flags" => ["user", "page-flags"],