aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/identity.php42
-rw-r--r--mod/oep.php44
-rw-r--r--mod/profile.php1
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);