mirror of
https://github.com/friendica/friendica
synced 2024-11-20 08:23:41 +00:00
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));
|
||||
}
|
||||
|
||||
// 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);
|
||||
call_hooks('prepare_body_final', $prep_arr);
|
||||
|
||||
|
|
|
@ -101,7 +101,8 @@ function photo_init(&$a) {
|
|||
$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),
|
||||
intval($resolution)
|
||||
);
|
||||
|
@ -111,7 +112,7 @@ function photo_init(&$a) {
|
|||
|
||||
// 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),
|
||||
intval($resolution)
|
||||
);
|
||||
|
@ -119,31 +120,19 @@ function photo_init(&$a) {
|
|||
$public = ($r[0]['allow_cid'] == '') AND ($r[0]['allow_gid'] == '') AND ($r[0]['deny_cid'] == '') AND ($r[0]['deny_gid'] == '');
|
||||
|
||||
if(count($r)) {
|
||||
$resolution = $r[0]['scale'];
|
||||
$data = $r[0]['data'];
|
||||
$mimetype = $r[0]['type'];
|
||||
}
|
||||
else {
|
||||
|
||||
// Does the picture exist? It may be a remote person with no credentials,
|
||||
// but who should otherwise be able to view it. Show a default image to let
|
||||
// them know permissions was denied. It may be possible to view the image
|
||||
// through an authenticated profile visit.
|
||||
// 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)) {
|
||||
// The picure exists. We already checked with the first query.
|
||||
// obviously, this is not an authorized viev!
|
||||
$data = file_get_contents('images/nosign.jpg');
|
||||
$mimetype = 'image/jpeg';
|
||||
$prvcachecontrol = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(! isset($data)) {
|
||||
if(isset($resolution)) {
|
||||
|
|
Loading…
Reference in a new issue