preferred item image size for theme, get smallest photo near scale requested
themes can declare preferred image size for images in items, with $a->theme_info = array( "item_image_size" => 1 ); 0: original, 1:640px, 2:320px mod/photo.php returns the nearest scaled image near requested one if it doesn't exists, instead of nothing
This commit is contained in:
parent
8cd749bd66
commit
27024e3b1d
2 changed files with 145 additions and 149 deletions
|
@ -1471,6 +1471,13 @@ function prepare_body(&$item,$attach = false, $preview = false) {
|
||||||
$s = substr($s, 0, $pos).$authorreplace.substr($s, $pos+strlen($authorsearch));
|
$s = substr($s, 0, $pos).$authorreplace.substr($s, $pos+strlen($authorsearch));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// replace friendica image url size with theme preference
|
||||||
|
if (x($a->theme_info,'item_image_size')){
|
||||||
|
$ps = $a->theme_info['item_image_size'];
|
||||||
|
|
||||||
|
$s = preg_replace('|(<img[^>]+src="[^"]+/photo/[0-9a-f]+)-[0-9]|',"$1-".$ps, $s);
|
||||||
|
}
|
||||||
|
|
||||||
$prep_arr = array('item' => $item, 'html' => $s);
|
$prep_arr = array('item' => $item, 'html' => $s);
|
||||||
call_hooks('prepare_body_final', $prep_arr);
|
call_hooks('prepare_body_final', $prep_arr);
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,8 @@ function photo_init(&$a) {
|
||||||
$photo = substr($photo,0,-2);
|
$photo = substr($photo,0,-2);
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("SELECT `uid` FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d LIMIT 1",
|
// check if the photo exists and get the owner of the photo
|
||||||
|
$r = q("SELECT `uid` FROM `photo` WHERE `resource-id` = '%s' LIMIT 1",
|
||||||
dbesc($photo),
|
dbesc($photo),
|
||||||
intval($resolution)
|
intval($resolution)
|
||||||
);
|
);
|
||||||
|
@ -111,7 +112,7 @@ function photo_init(&$a) {
|
||||||
|
|
||||||
// Now we'll see if we can access the photo
|
// Now we'll see if we can access the photo
|
||||||
|
|
||||||
$r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d $sql_extra LIMIT 1",
|
$r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` <= %d $sql_extra ORDER BY scale DESC LIMIT 1",
|
||||||
dbesc($photo),
|
dbesc($photo),
|
||||||
intval($resolution)
|
intval($resolution)
|
||||||
);
|
);
|
||||||
|
@ -119,28 +120,16 @@ function photo_init(&$a) {
|
||||||
$public = ($r[0]['allow_cid'] == '') AND ($r[0]['allow_gid'] == '') AND ($r[0]['deny_cid'] == '') AND ($r[0]['deny_gid'] == '');
|
$public = ($r[0]['allow_cid'] == '') AND ($r[0]['allow_gid'] == '') AND ($r[0]['deny_cid'] == '') AND ($r[0]['deny_gid'] == '');
|
||||||
|
|
||||||
if(count($r)) {
|
if(count($r)) {
|
||||||
|
$resolution = $r[0]['scale'];
|
||||||
$data = $r[0]['data'];
|
$data = $r[0]['data'];
|
||||||
$mimetype = $r[0]['type'];
|
$mimetype = $r[0]['type'];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
// The picure exists. We already checked with the first query.
|
||||||
// Does the picture exist? It may be a remote person with no credentials,
|
// obviously, this is not an authorized viev!
|
||||||
// but who should otherwise be able to view it. Show a default image to let
|
$data = file_get_contents('images/nosign.jpg');
|
||||||
// them know permissions was denied. It may be possible to view the image
|
$mimetype = 'image/jpeg';
|
||||||
// through an authenticated profile visit.
|
$prvcachecontrol = true;
|
||||||
// There won't be many completely unauthorised people seeing this because
|
|
||||||
// they won't have the photo link, so there's a reasonable chance that the person
|
|
||||||
// might be able to obtain permission to view it.
|
|
||||||
|
|
||||||
$r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d LIMIT 1",
|
|
||||||
dbesc($photo),
|
|
||||||
intval($resolution)
|
|
||||||
);
|
|
||||||
if(count($r)) {
|
|
||||||
$data = file_get_contents('images/nosign.jpg');
|
|
||||||
$mimetype = 'image/jpeg';
|
|
||||||
$prvcachecontrol = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue