Changeset 13038
- Timestamp:
- Feb 6, 2012, 9:59:20 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 7 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/admin/picture_modify.php
r13013 r13038 304 304 ); 305 305 306 if (in_array(get_extension($row['path']),$conf['picture_ext'])) 307 { 308 $template->assign('U_COI', get_root_url().'admin.php?page=picture_coi&image_id='.$_GET['image_id']); 309 } 310 306 311 // image level options 307 312 $selected_level = isset($_POST['level']) ? $_POST['level'] : $row['level']; -
trunk/admin/themes/default/template/picture_modify.tpl
r12855 r13038 84 84 </tr> 85 85 {/if} 86 86 {if isset($U_COI)} 87 <tr> 88 <td></td> 89 <td><a href="{$U_COI}">{'Not cropped correctly?'|@translate}</a></td> 90 </tr> 91 {/if} 87 92 </table> 88 93 -
trunk/i.php
r13021 r13038 233 233 } 234 234 array_shift($deriv); 235 $page['coi'] = '';236 if (count($deriv) && $deriv[0][0]=='c' && $deriv[0][1]=='i')237 {238 $page['coi'] = substr(array_shift($deriv), 2);239 preg_match('#^[a-zA-Z]{4}$#', $page['coi']) or ierror('Invalid center of interest', 400);240 }241 235 242 236 if ($page['derivative_type'] == IMG_CUSTOM) … … 257 251 ierror('Too big', 403); 258 252 } 259 253 260 254 $key = array(); 261 255 $params->add_url_tokens($key); … … 267 261 } 268 262 269 if (!is_file(PHPWG_ROOT_PATH.$req.$ext) and 270 is_file(PHPWG_ROOT_PATH.'../'.$req.$ext) ) 263 if (is_file(PHPWG_ROOT_PATH.$req.$ext)) 264 { 265 $req = './'.$req; // will be used to match #iamges.path 266 } 267 elseif (is_file(PHPWG_ROOT_PATH.'../'.$req.$ext)) 268 { 271 269 $req = '../'.$req; 270 } 272 271 273 272 $page['src_location'] = $req.$ext; … … 276 275 } 277 276 277 function try_switch_source(DerivativeParams $params, $original_mtime) 278 { 279 global $page; 280 $candidates = array(); 281 foreach(ImageStdParams::get_defined_type_map() as $candidate) 282 { 283 if ($candidate->type == $params->type) 284 continue; 285 if ($candidate->use_watermark != $params->use_watermark) 286 continue; 287 if ($candidate->max_width() < $params->max_width() || $candidate->max_height() < $params->max_height()) 288 continue; 289 if ($params->sizing->max_crop==0) 290 { 291 if ($candidate->sizing->max_crop!=0) 292 continue; 293 } 294 else 295 { 296 if ($candidate->sizing->max_crop!=0) 297 continue; // this could be optimized 298 if (!isset($page['original_size'])) 299 continue; 300 $candidate_size = $candidate->compute_final_size($page['original_size']); 301 if ($candidate_size[0] < $params->sizing->min_size[0] || $candidate_size[1] < $params->sizing->min_size[1] ) 302 continue; 303 } 304 $candidates[] = $candidate; 305 } 306 307 foreach( array_reverse($candidates) as $candidate) 308 { 309 $candidate_path = $page['derivative_path']; 310 $candidate_path = str_replace( '-'.derivative_to_url($params->type), '-'.derivative_to_url($candidate->type), $candidate_path); 311 $candidate_mtime = @filemtime($candidate_path); 312 if ($candidate_mtime === false 313 || $candidate_mtime < $original_mtime 314 || $candidate_mtime < $candidate->last_mod_time) 315 continue; 316 $params->use_watermark = false; 317 $params->sharpen = min(1, $params->sharpen); 318 $page['src_path'] = $candidate_path; 319 $page['src_url'] = $page['root_path'] . substr($candidate_path, strlen(PHPWG_ROOT_PATH)); 320 } 321 } 278 322 279 323 function send_derivative($expires) … … 362 406 send_derivative($expires); 363 407 } 408 409 $page['coi'] = null; 410 if (strpos($page['src_location'], '/pwg_representative/')===false 411 && strpos($page['src_location'], 'themes/')===false 412 && strpos($page['src_location'], 'plugins/')===false) 413 { 414 @include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php'); 415 include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php'); 416 try 417 { 418 $pwg_db_link = pwg_db_connect($conf['db_host'], $conf['db_user'], 419 $conf['db_password'], $conf['db_base']); 420 $query = 'SELECT coi, width, height FROM '.$prefixeTable.'images WHERE path=\''.$page['src_location'].'\''; 421 if ( ($row=pwg_db_fetch_assoc(pwg_query($query))) ) 422 { 423 if (isset($row['width'])) 424 { 425 $page['original_size'] = array($row['width'],$row['height']); 426 } 427 $page['coi'] = $row['coi']; 428 } 429 mysql_close($pwg_db_link); 430 if (!$row) 431 { 432 ierror('Db file path not found', 404); 433 } 434 } 435 catch (Exception $e) 436 { 437 ilog("db error", $e->getMessage()); 438 } 439 } 440 441 try_switch_source($params, $src_mtime); 364 442 365 443 if (!mkgetdir(dirname($page['derivative_path']))) -
trunk/include/dblayer/functions_mysql.inc.php
r12922 r13038 85 85 global $conf,$page,$debug,$t2; 86 86 87 $start = get_moment();87 $start = microtime(true); 88 88 ($result = mysql_query($query)) or my_error($query, $conf['die_on_sql_error']); 89 89 90 $time = get_moment() - $start;90 $time = microtime(true) - $start; 91 91 92 92 if (!isset($page['count_queries'])) … … 200 200 while ($row = mysql_fetch_assoc($result)) 201 201 { 202 array_push($array, $row[$fieldname]);202 $array[] = $row[$fieldname]; 203 203 } 204 204 -
trunk/include/derivative.inc.php
r12954 r13038 28 28 public $rel_path; 29 29 30 public $coi=null;31 30 private $size=null; 32 31 private $flags=0; … … 35 34 { 36 35 global $conf; 37 36 38 37 $this->id = $infos['id']; 39 38 $ext = get_extension($infos['path']); … … 55 54 } 56 55 57 $this->coi = @$infos['coi'];58 56 if (!$this->size && isset($infos['width']) && isset($infos['height'])) 59 57 { … … 168 166 $tokens=array(); 169 167 $tokens[] = substr($params->type,0,2); 170 171 if ($params->sizing->max_crop != 0 and !empty($src->coi))172 {173 $tokens[] = 'ci'.$src->coi;174 }175 168 176 169 if ($params->type==IMG_CUSTOM) … … 258 251 return $this->src_image->get_size(); 259 252 } 260 return $this->params->compute_final_size($this->src_image->get_size() , $this->src_image->coi);253 return $this->params->compute_final_size($this->src_image->get_size()); 261 254 } 262 255 -
trunk/include/derivative_params.inc.php
r13035 r13038 46 46 function fraction_to_char($f) 47 47 { 48 return ord('a') + round($f*25);48 return chr(ord('a') + round($f*25)); 49 49 } 50 50 … … 258 258 } 259 259 260 function compute_final_size($in_size , $coi)261 { 262 $this->sizing->compute( $in_size, $coi, $crop_rect, $scale_size );260 function compute_final_size($in_size) 261 { 262 $this->sizing->compute( $in_size, null, $crop_rect, $scale_size ); 263 263 return $scale_size != null ? $scale_size : $in_size; 264 264 } -
trunk/include/derivative_std_params.inc.php
r13021 r13038 73 73 return self::$all_type_map[$type]; 74 74 } 75 75 76 76 static function get_custom($w, $h, $crop=0, $minw=null, $minh=null) 77 77 { … … 99 99 global $conf; 100 100 $arr = @unserialize($conf['derivatives']); 101 if (false!==$arr)102 {103 self::$type_map = $arr['d'];104 self::$watermark = @$arr['w'];105 if (!self::$watermark) self::$watermark = new WatermarkParams();106 }107 else108 {109 self::make_default();110 }111 self::build_maps();112 }113 114 static function load_from_file()115 {116 global $conf;117 $arr = @unserialize(@file_get_contents(PHPWG_ROOT_PATH.$conf['data_location'].'derivatives.dat'));118 101 if (false!==$arr) 119 102 { … … 131 114 } 132 115 116 static function load_from_file() 117 { 118 global $conf; 119 $arr = @unserialize(@file_get_contents(PHPWG_ROOT_PATH.$conf['data_location'].'derivatives.dat')); 120 if (false!==$arr) 121 { 122 self::$type_map = $arr['d']; 123 self::$watermark = @$arr['w']; 124 if (!self::$watermark) self::$watermark = new WatermarkParams(); 125 self::$custom = @$arr['c']; 126 if (!self::$custom) self::$custom = array(); 127 } 128 else 129 { 130 self::make_default(); 131 } 132 self::build_maps(); 133 } 134 133 135 static function set_watermark($watermark) 134 136 { 135 137 self::$watermark = $watermark; 136 138 } 137 139 138 140 static function set_and_save($map) 139 141 { … … 177 179 } 178 180 } 179 181 180 182 private static function build_maps() 181 183 { -
trunk/install/piwigo_structure-mysql.sql
r11992 r13038 186 186 `width` smallint(9) unsigned default NULL, 187 187 `height` smallint(9) unsigned default NULL, 188 `coi` char(4) default NULL COMMENT 'center of interest', 188 189 `representative_ext` varchar(4) default NULL, 189 190 `date_metadata_update` date default NULL,
Note: See TracChangeset
for help on using the changeset viewer.