Add App::poi to store the "person of interest" for a given page. This is so we can comanchificate the vcard_from_xchan widget -- it will pick up the target xchan from the page environment.

This commit is contained in:
friendica 2013-12-18 14:53:18 -08:00
parent 38fd8410eb
commit 1a4c91ccf5
4 changed files with 31 additions and 32 deletions

View File

@ -572,11 +572,12 @@ function startup() {
class App { class App {
public $account = null; // account record public $account = null; // account record of the logged-in account
public $channel = null; // channel record public $channel = null; // channel record of the current channel of the logged-in account
public $observer = null; // xchan record public $observer = null; // xchan record of the page observer
public $profile_uid = 0; // If applicable, the uid of the person whose stuff this is. public $profile_uid = 0; // If applicable, the channel_id of the "page owner"
public $layout = array(); // Comanche parsed template public $poi = null; // "person of interest", generally a referenced connection
public $layout = array(); // Comanche parsed template
private $perms = null; // observer permissions private $perms = null; // observer permissions

View File

@ -38,17 +38,16 @@ function chanview_content(&$a) {
); );
} }
if($r) { if($r) {
$xchan = $r[0]; $a->poi = $r[0];
} }
// Here, let's see if we have an xchan. If we don't, how we proceed is determined by what // Here, let's see if we have an xchan. If we don't, how we proceed is determined by what
// info we do have. If it's a URL, we can offer to visit it directly. If it's a webbie or // info we do have. If it's a URL, we can offer to visit it directly. If it's a webbie or
// address, we can and should try to import it. If it's just a hash, we can't continue, but we // address, we can and should try to import it. If it's just a hash, we can't continue, but we
// probably wouldn't have a hash if we don't already have an xchan for this channel. // probably wouldn't have a hash if we don't already have an xchan for this channel.
if(! $xchan) { if(! $a->poi) {
logger('mod_chanview: fallback'); logger('mod_chanview: fallback');
// This is hackish - construct a zot address from the url // This is hackish - construct a zot address from the url
if($_REQUEST['url']) { if($_REQUEST['url']) {
@ -68,20 +67,20 @@ function chanview_content(&$a) {
dbesc($_REQUEST['address']) dbesc($_REQUEST['address'])
); );
if($r) if($r)
$xchan = $r[0]; $a->poi = $r[0];
} }
} }
} }
if(! $xchan) { if(! $a->poi) {
notice( t('Channel not found.') . EOL); notice( t('Channel not found.') . EOL);
return; return;
} }
$url = (($observer) $url = (($observer)
? z_root() . '/magic?f=&dest=' . $xchan['xchan_url'] . '&addr=' . $xchan['xchan_addr'] ? z_root() . '/magic?f=&dest=' . $a->poi['xchan_url'] . '&addr=' . $a->poi['xchan_addr']
: $xchan['xchan_url'] : $a->poi['xchan_url']
); );
// let somebody over-ride the iframed viewport presentation // let somebody over-ride the iframed viewport presentation
@ -90,8 +89,8 @@ function chanview_content(&$a) {
goaway($url); goaway($url);
if($xchan['xchan_hash']) if($a->poi['xchan_hash'])
$a->set_widget('vcard',vcard_from_xchan($xchan,$observer,'chanview')); $a->set_widget('vcard',vcard_from_xchan($a->poi,$observer,'chanview'));
$o = replace_macros(get_markup_template('chanview.tpl'),array( $o = replace_macros(get_markup_template('chanview.tpl'),array(
'$url' => $url, '$url' => $url,

View File

@ -21,7 +21,7 @@ function connedit_init(&$a) {
intval(argv(1)) intval(argv(1))
); );
if($r) { if($r) {
$a->data['abook'] = $r[0]; $a->poi = $r[0];
} }
} }
@ -37,9 +37,9 @@ function connedit_aside(&$a) {
if (! local_user()) if (! local_user())
return; return;
if(x($a->data,'abook')) { if($a->poi) {
$a->set_widget('vcard',vcard_from_xchan($a->data['abook'],$a->get_observer())); $a->set_widget('vcard',vcard_from_xchan($a->poi,$a->get_observer()));
$a->set_widget('collections', group_side('connections','group',false,0,$a->data['abook']['abook_xchan'])); $a->set_widget('collections', group_side('connections','group',false,0,$a->poi['abook_xchan']));
} }
$a->set_widget('suggest',widget_suggestions(array())); $a->set_widget('suggest',widget_suggestions(array()));
@ -123,8 +123,8 @@ function connedit_post(&$a) {
else else
notice( t('Failed to update connection record.') . EOL); notice( t('Failed to update connection record.') . EOL);
if((x($a->data,'abook')) && $a->data['abook']['abook_my_perms'] != $abook_my_perms if($a->poi && $a->poi['abook_my_perms'] != $abook_my_perms
&& (! ($a->data['abook']['abook_flags'] & ABOOK_FLAG_SELF))) { && (! ($a->poi['abook_flags'] & ABOOK_FLAG_SELF))) {
proc_run('php', 'include/notifier.php', 'permission_update', $contact_id); proc_run('php', 'include/notifier.php', 'permission_update', $contact_id);
} }
@ -135,7 +135,7 @@ function connedit_post(&$a) {
require_once('include/group.php'); require_once('include/group.php');
$g = group_rec_byhash(local_user(),$default_group); $g = group_rec_byhash(local_user(),$default_group);
if($g) if($g)
group_add_member(local_user(),'',$a->data['abook_xchan'],$g['id']); group_add_member(local_user(),'',$a->poi['abook_xchan'],$g['id']);
} }
@ -159,11 +159,11 @@ function connedit_post(&$a) {
intval($contact_id) intval($contact_id)
); );
if($r) { if($r) {
$a->data['abook'] = $r[0]; $a->poi = $r[0];
} }
if($new_friend) { if($new_friend) {
$arr = array('channel_id' => local_user(), 'abook' => $a->data['abook']); $arr = array('channel_id' => local_user(), 'abook' => $a->poi);
call_hooks('accept_follow', $arr); call_hooks('accept_follow', $arr);
} }
@ -175,9 +175,9 @@ function connedit_post(&$a) {
function connedit_clone(&$a) { function connedit_clone(&$a) {
if(! array_key_exists('abook',$a->data)) if(! $a->poi)
return; return;
$clone = $a->data['abook']; $clone = $a->poi;
unset($clone['abook_id']); unset($clone['abook_id']);
unset($clone['abook_account']); unset($clone['abook_account']);
@ -315,10 +315,10 @@ function connedit_content(&$a) {
} }
} }
if((x($a->data,'abook')) && (is_array($a->data['abook']))) { if($a->poi) {
$contact_id = $a->data['abook']['abook_id']; $contact_id = $a->poi['abook_id'];
$contact = $a->data['abook']; $contact = $a->poi;
$tabs = array( $tabs = array(

View File

@ -374,15 +374,14 @@ function message_content(&$a) {
return $o; return $o;
} }
$other_channel = null;
if($messages[0]['to_xchan'] === $channel['channel_hash']) if($messages[0]['to_xchan'] === $channel['channel_hash'])
$other_channel = $messages[0]['from']; $a->poi = $messages[0]['from'];
else else
$other_channel = $messages[0]['to']; $a->poi = $messages[0]['to'];
require_once('include/Contact.php'); require_once('include/Contact.php');
$a->set_widget('mail_conversant',vcard_from_xchan($other_channel,$get_observer_hash,'mail')); $a->set_widget('mail_conversant',vcard_from_xchan($a->poi,$get_observer_hash,'mail'));
$tpl = get_markup_template('msg-header.tpl'); $tpl = get_markup_template('msg-header.tpl');