diff options
Diffstat (limited to 'mod/chanview.php')
-rw-r--r-- | mod/chanview.php | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/mod/chanview.php b/mod/chanview.php index 8de59b92e..ca3410c8f 100644 --- a/mod/chanview.php +++ b/mod/chanview.php @@ -29,22 +29,25 @@ function chanview_content(&$a) { ); } elseif($_REQUEST['url']) { - $r = q("select * from xchan where xchan_url = '%s' limit 1", + + // if somebody re-installed they will have more than one xchan, use the most recent name date as this is + // the most useful consistently ascending table item we have. + + $r = q("select * from xchan where xchan_url = '%s' order by xchan_name_date desc limit 1", dbesc($_REQUEST['url']) ); } 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 // 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 // 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'); // This is hackish - construct a zot address from the url if($_REQUEST['url']) { @@ -64,26 +67,26 @@ function chanview_content(&$a) { dbesc($_REQUEST['address']) ); if($r) - $xchan = $r[0]; + $a->poi = $r[0]; } } } - if(! $xchan) { + if(! $a->poi) { notice( t('Channel not found.') . EOL); return; } - if($xchan['xchan_hash']) - $a->set_widget('vcard',vcard_from_xchan($xchan,$observer,'chanview')); - - $url = (($observer) - ? z_root() . '/magic?f=&dest=' . $xchan['xchan_url'] . '&addr=' . $xchan['xchan_addr'] - : $xchan['xchan_url'] - ); - + $url = $a->poi['xchan_url']; + if($observer) + $url = zid($url); + + // let somebody over-ride the iframed viewport presentation + + if((! local_user()) || (get_pconfig(local_user(),'system','chanview_full'))) + goaway($url); $o = replace_macros(get_markup_template('chanview.tpl'),array( '$url' => $url, |