Skip to content

Commit

Permalink
bug 2615 php notice in calendar amd web service
Browse files Browse the repository at this point in the history
multisize improve handling of cases where the original is smaller than a requested derivative, but rotation/watermarking is required

git-svn-id: http://piwigo.org/svn/trunk@14143 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information
rvelices committed Apr 14, 2012
1 parent 10bf036 commit 1b54eb8
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 8 deletions.
2 changes: 1 addition & 1 deletion admin/batch_manager_global.php
Expand Up @@ -734,7 +734,7 @@


$query = '
SELECT id,path,representative_ext,file,filesize,level,name
SELECT id,path,representative_ext,file,filesize,level,name,width,height,rotation
FROM '.IMAGES_TABLE;

if ($is_category)
Expand Down
6 changes: 5 additions & 1 deletion include/calendar_monthly.class.php
Expand Up @@ -350,7 +350,7 @@ function build_month_calendar(&$tpl_var)
{
$page['chronology_date'][CDAY]=$day;
$query = '
SELECT id, file,representative_ext,path,width, height, '.pwg_db_get_dayofweek($this->date_field).'-1 as dow';
SELECT id, file,representative_ext,path,width,height,rotation, '.pwg_db_get_dayofweek($this->date_field).'-1 as dow';
$query.= $this->inner_sql;
$query.= $this->get_date_where();
$query.= '
Expand Down Expand Up @@ -392,6 +392,10 @@ function build_month_calendar(&$tpl_var)
}

list($cell_width, $cell_height) = ImageStdParams::get_by_type(IMG_SQUARE)->sizing->ideal_size;
if ($cell_width>120)
{
$cell_width = $cell_height = 120;
}

$tpl_weeks = array();
$tpl_crt_week = array();
Expand Down
32 changes: 27 additions & 5 deletions include/derivative.inc.php
Expand Up @@ -26,6 +26,7 @@ final class SrcImage

public $id;
public $rel_path;
public $rotation = 0;

private $size=null;
private $flags=0;
Expand Down Expand Up @@ -58,9 +59,10 @@ function __construct($infos)
$width = $infos['width'];
$height = $infos['height'];

$this->rotation = intval($infos['rotation']) % 4;
// 1 or 5 => 90 clockwise
// 3 or 7 => 270 clockwise
if ($infos['rotation'] % 2 != 0)
if ($this->rotation % 2)
{
$width = $infos['height'];
$height = $infos['width'];
Expand Down Expand Up @@ -173,10 +175,30 @@ private static function build($src, &$params, &$rel_path, &$rel_url, &$is_cached
{
if ( $src->has_size() && $params->is_identity( $src->get_size() ) )
{
// todo - what if we have a watermark maybe return a smaller size?
$params = null;
$rel_path = $rel_url = $src->rel_path;
return;
if (!$params->use_watermark && !$src->rotation)
{
$params = null;
$rel_path = $rel_url = $src->rel_path;
return;
}
$defined_types = array_keys(ImageStdParams::get_defined_type_map());
for ($i=0; $i<count($defined_types); $i++)
{
if ($defined_types[$i] == $params->type)
{
for ($i--; $i>=0; $i--)
{
$smaller = ImageStdParams::get_by_type($defined_types[$i]);
if ($smaller->sizing->max_crop==$params->sizing->max_crop && $smaller->is_identity( $src->get_size() ))
{
$params = $smaller;
self::build($src, $params, $rel_path, $rel_url, $is_cached);
return;
}
}
break;
}
}
}

$tokens=array();
Expand Down
2 changes: 1 addition & 1 deletion include/ws_functions.inc.php
Expand Up @@ -224,7 +224,7 @@ function ws_getMissingDerivatives($params, &$service)
$where_clauses[] = 'id IN ('.implode(',',$params['ids']).')';
}

$query_model = 'SELECT id, path, representative_ext, width, height
$query_model = 'SELECT id, path, representative_ext, width,height,rotation
FROM '.IMAGES_TABLE.'
WHERE '.implode(' AND ', $where_clauses).'
ORDER BY id DESC
Expand Down

0 comments on commit 1b54eb8

Please sign in to comment.