aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-01-31 15:55:27 -0800
committerredmatrix <git@macgirvin.com>2016-01-31 15:55:27 -0800
commita341c889b751055e90eba9b7a14da5b7cd0e8032 (patch)
treec42867ffbcac204c664522cb1559b7169c797cc1 /mod
parent1f87fef9684a29da91fcb41a5d1d3bd4fb9a4619 (diff)
downloadvolse-hubzilla-a341c889b751055e90eba9b7a14da5b7cd0e8032.tar.gz
volse-hubzilla-a341c889b751055e90eba9b7a14da5b7cd0e8032.tar.bz2
volse-hubzilla-a341c889b751055e90eba9b7a14da5b7cd0e8032.zip
add oembed provider for photos
Diffstat (limited to 'mod')
-rw-r--r--mod/oep.php93
-rw-r--r--mod/photos.php2
2 files changed, 95 insertions, 0 deletions
diff --git a/mod/oep.php b/mod/oep.php
new file mode 100644
index 000000000..d0f4bd193
--- /dev/null
+++ b/mod/oep.php
@@ -0,0 +1,93 @@
+<?php
+
+// oembed provider
+
+
+
+function oep_init(&$a) {
+
+
+
+ $url = $_REQUEST['url'];
+ if(! $url)
+ http_status_exit(404, 'Not found');
+
+ $maxwidth = $_REQUEST['maxwidth'];
+ $maxheight = $_REQUEST['maxheight'];
+ $format = $_REQUEST['format'];
+ if($format && $format !== 'json')
+ http_status_exit(501, 'Not implemented');
+
+ if(fnmatch('*/photos/*/album/*',$url))
+ $arr = oep_album_reply($_REQUEST);
+ elseif(fnmatch('*/photos/*',$url))
+ $arr = oep_photo_reply($_REQUEST);
+
+
+ if($arr) {
+ header('Content-Type: application/json+oembed');
+ echo json_encode($arr);
+ killme();
+ }
+
+ http_status_exit(404,'Not found');
+
+}
+
+
+function oep_album_reply() {
+
+}
+
+function oep_photo_reply($args) {
+
+ $ret = array();
+ $url = $args['url'];
+ $maxwidth = intval($args['maxwidth']);
+ $maxheight = intval($args['maxheight']);
+
+ if(preg_match('|//(.*?)/(.*?)/(.*?)/image/|',$url,$matches)) {
+ $chn = $matches[3];
+ $res = basename($url);
+ }
+
+ if(! ($chn && $res))
+ return;
+ $c = q("select * from channel where channel_address = '%s' limit 1",
+ dbesc($chn)
+ );
+
+ if(! $c)
+ return;
+
+ $sql_extra = permissions_sql($c[0]['channel_id']);
+
+
+ $r = q("select height, width, scale, resource_id from photo where uid = %d and resource_id = '%s' $sql_extra order by scale asc",
+ intval($c[0]['channel_id']),
+ dbesc($res)
+ );
+
+ if($r) {
+ foreach($r as $rr) {
+ $foundres = false;
+ if($maxheight && $rr['height'] > $maxheight)
+ continue;
+ if($maxwidth && $rr['width'] > $maxwidth)
+ continue;
+ $foundres = true;
+ break;
+ }
+
+ if($foundres) {
+ $ret['type'] = 'link';
+ $ret['thumbnail_url'] = z_root() . '/photo/' . '/' . $rr['resource_id'] . '-' . $rr['scale'];
+ $ret['thumbnail_width'] = $rr['width'];
+ $ret['thumbnail_height'] = $rr['height'];
+ }
+
+
+ }
+ return $ret;
+
+} \ No newline at end of file
diff --git a/mod/photos.php b/mod/photos.php
index f1b7aceed..d187e1d45 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -804,6 +804,8 @@ function photos_content(&$a) {
if($datatype === 'image') {
+ $a->page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . $a->cmd) . '" title="oembed" />' . "\r\n";
+
// fetch image, item containing image, then comments
$ph = q("SELECT id,aid,uid,xchan,resource_id,created,edited,title,`description`,album,filename,`type`,height,width,`size`,scale,photo_usage,is_nsfw,allow_cid,allow_gid,deny_cid,deny_gid FROM `photo` WHERE `uid` = %d AND `resource_id` = '%s'