Ignore:
Timestamp:
Dec 21, 2011, 2:51:44 PM (12 years ago)
Author:
rvelices
Message:

derivatives - can display several sizes on picture page

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/derivatives/include/derivative_std_params.inc.php

    r12770 r12775  
    11<?php
    22
    3 define('IMG_TINY', 'tiny');
     3define('IMG_SQUARE', 'square');
    44define('IMG_THUMB', 'thumb');
    55define('IMG_SMALL', 'small');
     
    1212final class ImageStdParams
    1313{
    14   private static $all_types = array();
     14  private static $all_types = array(IMG_SQUARE,IMG_THUMB,IMG_SMALL,IMG_MEDIUM,IMG_LARGE,IMG_XLARGE,IMG_XXLARGE);
     15  private static $all_type_map = array();
    1516  private static $type_map = array();
     17  private static $undefined_type_map = array();
    1618 
    1719  static function get_all_types()
     
    2022  }
    2123 
     24  static function get_all_type_map()
     25  {
     26    return self::$all_type_map;
     27  }
     28
     29  static function get_defined_type_map()
     30  {
     31    return self::$type_map;
     32  }
     33
     34  static function get_undefined_type_map()
     35  {
     36    return self::$undefined_type_map;
     37  }
     38 
    2239  static function get_by_type($type)
    2340  {
    24     return self::$type_map[$type];
     41    return self::$all_type_map[$type];
    2542  }
    2643 
     
    2845  {
    2946    self::make_default();
     47    self::build_maps();
    3048  }
    3149
     
    3351  {
    3452    self::make_default();
     53    self::build_maps();
    3554  }
    3655
     
    3857  {
    3958    //todo
    40     self::$type_map[IMG_TINY] = new ImageParams( SizingParams::square(100,100) );
     59    self::$type_map[IMG_SQUARE] = new ImageParams( SizingParams::square(100,100) );
    4160    self::$type_map[IMG_THUMB] = new ImageParams( SizingParams::classic(144,144) );
    4261    self::$type_map[IMG_SMALL] = new ImageParams( SizingParams::classic(240,240) );
    4362    self::$type_map[IMG_MEDIUM] = new ImageParams( SizingParams::classic(432,432) );
    4463    self::$type_map[IMG_LARGE] = new ImageParams( SizingParams::classic(864,648) );
    45     self::$all_types = array_keys(self::$type_map);
     64    self::$type_map[IMG_XLARGE] = new ImageParams( SizingParams::classic(1200,900) );
    4665  }
     66 
     67  private static function build_maps()
     68  {
     69    foreach (self::$type_map as $type=>$params)
     70    {
     71      $params->type = $type;
     72    }
     73    self::$all_type_map = self::$type_map;
     74
     75    for ($i=0; $i<count(self::$all_types); $i++)
     76    {
     77      $tocheck = self::$all_types[$i];
     78      if (!isset(self::$type_map[$tocheck]))
     79      {
     80        for ($j=$i-1; $j>=0; $j--)
     81        {
     82          $target = self::$all_types[$j];
     83          if (isset(self::$type_map[$target]))
     84          {
     85            self::$all_type_map[$tocheck] = self::$type_map[$target];
     86            self::$undefined_type_map[$tocheck] = $target;
     87            break;
     88          }
     89        }
     90      }
     91    }
     92  }
     93 
    4794}
    4895
Note: See TracChangeset for help on using the changeset viewer.