profile load optimisation

This commit is contained in:
Friendika 2010-12-11 04:16:58 -08:00
parent 18823fe546
commit 6b5a83b9b8
8 changed files with 73 additions and 56 deletions

View File

@ -7,7 +7,8 @@ define ( 'DFRN_PROTOCOL_VERSION', '2.0' );
define ( 'EOL', "<br />\r\n" ); define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
define ( 'DOWN_ARROW', '&#x21e9;' );
/** /**
* log levels * 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-|" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt="8-O" />' '<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt="8-O" />'
), $s); ), $s);
}} }}
/**
*
* 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;
}}

View File

@ -6,7 +6,6 @@ function dfrn_request_init(&$a) {
if($a->argc > 1) if($a->argc > 1)
$which = $a->argv[1]; $which = $a->argv[1];
require_once('mod/profile.php');
profile_init($a,$which); profile_init($a,$which);
return; return;

View File

@ -5,7 +5,6 @@ function display_content(&$a) {
$o = '<div id="live-display"></div>' . "\r\n"; $o = '<div id="live-display"></div>' . "\r\n";
require_once('mod/profile.php');
profile_init($a); profile_init($a);
$item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0); $item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);

View File

@ -1,53 +1,5 @@
<?php <?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) { function profile_init(&$a) {
if($a->argc > 1) if($a->argc > 1)

View File

@ -8,7 +8,6 @@ function profile_photo_init(&$a) {
return; return;
} }
require_once("mod/profile.php");
profile_load($a,$a->user['nickname']); profile_load($a,$a->user['nickname']);
} }

View File

@ -327,7 +327,6 @@ function profiles_content(&$a) {
return; return;
} }
require_once('mod/profile.php');
profile_load($a,$a->user['nickname'],$r[0]['id']); profile_load($a,$a->user['nickname'],$r[0]['id']);
require_once('include/profile_selectors.php'); require_once('include/profile_selectors.php');

View File

@ -3,7 +3,6 @@
function settings_init(&$a) { function settings_init(&$a) {
if(local_user()) { if(local_user()) {
require_once("mod/profile.php");
profile_load($a,$a->user['nickname']); profile_load($a,$a->user['nickname']);
} }
} }

View File

@ -2,7 +2,6 @@
function viewcontacts_init(&$a) { function viewcontacts_init(&$a) {
require_once("mod/profile.php");
profile_load($a,$a->argv[1]); profile_load($a,$a->argv[1]);
} }