From 6b5a83b9b8c3c4fe0e58c92994c3a53e8f3cb175 Mon Sep 17 00:00:00 2001
From: Friendika <info@friendika.com>
Date: Sat, 11 Dec 2010 04:16:58 -0800
Subject: [PATCH] profile load optimisation

---
 boot.php              | 75 +++++++++++++++++++++++++++++++++++++++++--
 mod/dfrn_request.php  |  1 -
 mod/display.php       |  1 -
 mod/profile.php       | 48 ---------------------------
 mod/profile_photo.php |  1 -
 mod/profiles.php      |  1 -
 mod/settings.php      |  1 -
 mod/viewcontacts.php  |  1 -
 8 files changed, 73 insertions(+), 56 deletions(-)

diff --git a/boot.php b/boot.php
index a526dd0d14..4625f64f0f 100644
--- a/boot.php
+++ b/boot.php
@@ -7,7 +7,8 @@ define ( 'DFRN_PROTOCOL_VERSION',  '2.0'  );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
-
+define ( 'DOWN_ARROW',             '&#x21e9;'       );
+         
 /**
  * log levels
  */
@@ -1678,4 +1679,74 @@ function smilies($s) {
 		'<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt="8-|" />',
 		'<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt="8-O" />'
 	), $s);
-}}
\ No newline at end of file
+}}
+
+
+/**
+ *
+ * Function : profile_load
+ * @parameter App    $a
+ * @parameter string $nickname
+ * @parameter int    $profile
+ *
+ * Summary: Loads a profile into the page sidebar. 
+ * The function requires a writeable copy of the main App structure, and the nickname
+ * of a registered local account.
+ *
+ * If the viewer is an authenticated remote viewer, the profile displayed is the
+ * one that has been configured for his/her viewing in the Contact manager.
+ * Passing a non-zero profile ID can also allow a preview of a selected profile
+ * by the owner.
+ *
+ * Profile information is placed in the App structure for later retrieval.
+ * Honours the owner's chosen theme for display. 
+ *
+ */
+
+if(! function_exists('profile_load')) {
+function profile_load(&$a, $nickname, $profile = 0) {
+	if(remote_user()) {
+		$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
+			intval($_SESSION['visitor_id']));
+		if(count($r))
+			$profile = $r[0]['profile-id'];
+	} 
+
+	$r = null;
+
+	if($profile) {
+		$profile_int = intval($profile);
+		$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` 
+			LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+			WHERE `user`.`nickname` = '%s' AND `profile`.`id` = %d LIMIT 1",
+			dbesc($nickname),
+			intval($profile_int)
+		);
+	}
+	if(! count($r)) {	
+		$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` 
+			LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
+			WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 LIMIT 1",
+			dbesc($nickname)
+		);
+	}
+
+	if(($r === false) || (! count($r))) {
+		notice( t('No profile') . EOL );
+		$a->error = 404;
+		return;
+	}
+
+	$a->profile = $r[0];
+
+	$a->page['template'] = 'profile';
+
+	$a->page['title'] = $a->profile['name'];
+	$_SESSION['theme'] = $a->profile['theme'];
+
+	if(! (x($a->page,'aside')))
+		$a->page['aside'] = '';
+	$a->page['aside'] .= contact_block();
+
+	return;
+}}
diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php
index 60106661cb..ce422aa9f9 100644
--- a/mod/dfrn_request.php
+++ b/mod/dfrn_request.php
@@ -6,7 +6,6 @@ function dfrn_request_init(&$a) {
 	if($a->argc > 1)
 		$which = $a->argv[1];
 
-	require_once('mod/profile.php');
 	profile_init($a,$which);
 
 	return;
diff --git a/mod/display.php b/mod/display.php
index 3691616192..1049b28a09 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -5,7 +5,6 @@ function display_content(&$a) {
 
 	$o = '<div id="live-display"></div>' . "\r\n";
 
-	require_once('mod/profile.php');
 	profile_init($a);
 
 	$item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);
diff --git a/mod/profile.php b/mod/profile.php
index a431f4bdd8..b40617d03b 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -1,53 +1,5 @@
 <?php
 
-if(! function_exists('profile_load')) {
-function profile_load(&$a, $username, $profile = 0) {
-	if(remote_user()) {
-		$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
-			intval($_SESSION['visitor_id']));
-		if(count($r))
-			$profile = $r[0]['profile-id'];
-	} 
-
-	$r = null;
-
-	if($profile) {
-		$profile_int = intval($profile);
-		$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` 
-			LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
-			WHERE `user`.`nickname` = '%s' AND `profile`.`id` = %d LIMIT 1",
-			dbesc($username),
-			intval($profile_int)
-		);
-	}
-	if(! count($r)) {	
-		$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `user`.* FROM `profile` 
-			LEFT JOIN `user` ON `profile`.`uid` = `user`.`uid`
-			WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 LIMIT 1",
-			dbesc($username)
-		);
-	}
-
-	if(($r === false) || (! count($r))) {
-		notice( t('No profile') . EOL );
-		$a->error = 404;
-		return;
-	}
-
-	$a->profile = $r[0];
-
-	$a->page['template'] = 'profile';
-
-	$a->page['title'] = $a->profile['name'];
-	$_SESSION['theme'] = $a->profile['theme'];
-
-	if(! (x($a->page,'aside')))
-		$a->page['aside'] = '';
-	$a->page['aside'] .= contact_block();
-
-	return;
-}}
-
 function profile_init(&$a) {
 
 	if($a->argc > 1)
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index 39808776b7..64093b2de0 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -8,7 +8,6 @@ function profile_photo_init(&$a) {
 		return;
 	}
 
-	require_once("mod/profile.php");
 	profile_load($a,$a->user['nickname']);
 
 }
diff --git a/mod/profiles.php b/mod/profiles.php
index 604eb2f62c..e675af2e48 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -327,7 +327,6 @@ function profiles_content(&$a) {
 			return;
 		}
 
-		require_once('mod/profile.php');
 		profile_load($a,$a->user['nickname'],$r[0]['id']);
 
 		require_once('include/profile_selectors.php');
diff --git a/mod/settings.php b/mod/settings.php
index 7ed7ad32e8..a8e02ea400 100644
--- a/mod/settings.php
+++ b/mod/settings.php
@@ -3,7 +3,6 @@
 
 function settings_init(&$a) {
 	if(local_user()) {
-		require_once("mod/profile.php");
 		profile_load($a,$a->user['nickname']);
 	}
 }
diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php
index 562b60c25c..bd73b2ffbe 100644
--- a/mod/viewcontacts.php
+++ b/mod/viewcontacts.php
@@ -2,7 +2,6 @@
 
 function viewcontacts_init(&$a) {
 
-	require_once("mod/profile.php");
 	profile_load($a,$a->argv[1]);
 
 }
-- 
2.39.5