aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mod/oep.php68
-rw-r--r--mod/photos.php3
2 files changed, 68 insertions, 3 deletions
diff --git a/mod/oep.php b/mod/oep.php
index 1cea83e95..9bc0de98f 100644
--- a/mod/oep.php
+++ b/mod/oep.php
@@ -20,9 +20,10 @@ function oep_init(&$a) {
if(fnmatch('*/photos/*/album/*',$url))
$arr = oep_album_reply($_REQUEST);
- elseif(fnmatch('*/photos/*',$url))
+ elseif(fnmatch('*/photos/*/image/*',$url))
$arr = oep_photo_reply($_REQUEST);
-
+ elseif(fnmatch('*/photos*',$url))
+ $arr = oep_phototop_reply($_REQUEST);
if($arr) {
header('Content-Type: application/json+oembed');
@@ -58,7 +59,7 @@ function oep_album_reply($args) {
$sql_extra = permissions_sql($c[0]['channel_id']);
- $p = q("select resource_id from photo where album = '%s' and uid = %d group by resource_id $sql_extra order by created desc",
+ $p = q("select resource_id from photo where album = '%s' and uid = %d and scale = 0 $sql_extra order by created desc limit 1",
dbesc($res),
intval($c[0]['channel_id'])
);
@@ -96,6 +97,67 @@ function oep_album_reply($args) {
}
+
+function oep_phototop_reply($args) {
+
+ $ret = array();
+ $url = $args['url'];
+ $maxwidth = intval($args['maxwidth']);
+ $maxheight = intval($args['maxheight']);
+
+ if(preg_match('|//(.*?)/(.*?)/(.*?)$|',$url,$matches)) {
+ $chn = $matches[3];
+ }
+
+ if(! $chn)
+ 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']);
+
+ $p = q("select resource_id from photo where uid = %d and scale = 0 $sql_extra order by created desc limit 1",
+ intval($c[0]['channel_id'])
+ );
+ if(! $p)
+ return;
+
+ $res = $p[0]['resource_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;
+
+}
+
+
function oep_photo_reply($args) {
$ret = array();
diff --git a/mod/photos.php b/mod/photos.php
index 7864b9a18..d6105c580 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -1232,6 +1232,9 @@ function photos_content(&$a) {
// Default - show recent photos with upload link (if applicable)
//$o = '';
+ $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";
+
+
$r = q("SELECT `resource_id`, max(`scale`) AS `scale` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s'
and photo_usage in ( %d, %d ) and is_nsfw = %d $sql_extra GROUP BY `resource_id`",
intval($a->data['channel']['channel_id']),