diff options
-rw-r--r-- | include/identity.php | 42 | ||||
-rw-r--r-- | mod/oep.php | 44 | ||||
-rw-r--r-- | mod/profile.php | 1 |
3 files changed, 87 insertions, 0 deletions
diff --git a/include/identity.php b/include/identity.php index 11b80a46d..037cf5061 100644 --- a/include/identity.php +++ b/include/identity.php @@ -1781,3 +1781,45 @@ function get_cover_photo($channel_id,$format = 'bbcode', $res = PHOTO_RES_COVER_ return $output; } + +function get_zcard($channel,$observer_hash = '',$args = array()) { + + logger('get_zcard'); + + $channel['channel_addr'] = $channel['channel_address'] . '@' . get_app()->get_hostname(); + + $r = q("select height, width, resource_id, scale, type from photo where uid = %d and scale = %d and photo_usage = %d", + intval($channel['channel_id']), + intval(PHOTO_RES_COVER_1200), + intval(PHOTO_COVER) + ); + + if($r) { + $cover = $r[0]; + $cover['href'] = z_root() . '/photo/' . $r[0]['resource_id'] . '-' . $r[0]['scale']; + } + + $pphoto = array('type' => $channel['xchan_photo_mimetype'], + 'width' => 300 , 'height' => 300, 'href' => $channel['xchan_photo_l']); + + $maxwidth = (($args['width']) ? intval($args['width']) : 0); + $maxheight = (($args['height']) ? intval($args['height']) : 0); + + $zcard = array('chan' => $channel); + if(($maxwidth > 1200) || ($maxwidth < 1)) + $maxwidth = 1200; + $scale = (float) $maxwidth / 1200; + + $translate = intval(($scale / 1.0) * 100); + + $o .= replace_macros(get_markup_template('zcard.tpl'),array( + '$scale' => $scale, + '$translate' => $translate, + '$cover' => $cover, + '$pphoto' => $pphoto, + '$zcard' => $zcard + )); + + return $o; + +}
\ No newline at end of file diff --git a/mod/oep.php b/mod/oep.php index 38b3a5c1b..8d959c3e2 100644 --- a/mod/oep.php +++ b/mod/oep.php @@ -165,6 +165,50 @@ function oep_mid_reply($args) { function oep_profile_reply($args) { + + require_once('include/identity.php'); + require_once('include/Contact.php'); + $url = $args['url']; + + if(preg_match('#//(.*?)/(.*?)/(.*?)(/|\?|&|$)#',$url,$matches)) { + $chn = $matches[3]; + } + + if(! $chn) + return; + + $c = channelx_by_nick($chn); + + if(! $c) + return; + + + $maxwidth = intval($args['maxwidth']); + $maxheight = intval($args['maxheight']); + + $width = 800; + $height = 375; + + if($maxwidth) { + $width = $maxwidth; + $height = (375 / 800) * $width; + } + if($maxheight) { + if($maxheight < $height) { + $width = (800 / 375) * $maxheight; + $height = $maxheight; + } + } + $ret = array(); + + $ret['type'] = 'rich'; + $ret['width'] = intval($width); + $ret['height'] = intval($height); + + $ret['html'] = get_zcard($c,get_observer_hash(),array('width' => $width, 'height' => $height)); + + return $ret; + } function oep_album_reply($args) { diff --git a/mod/profile.php b/mod/profile.php index 430d039e9..7ee03a77b 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -75,6 +75,7 @@ function profile_content(&$a, $update = 0) { $o .= profile_tabs($a, $is_owner, $a->profile['channel_address']); + $a->page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . $a->query_string) . '" title="oembed" />' . "\r\n"; $o .= advanced_profile($a); call_hooks('profile_advanced',$o); |