ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 6889


Ignore:
Timestamp:
May 1, 2008, 2:59:59 AM (11 years ago)
Author:
ebihara
Message:

キャッシュ関連のメソッド、プロパティをOpenPNE_Img_Generatorに引き上げ

Location:
OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE/Img.php

    r6888 r6889  
    2121    var $requests;
    2222
    23     // options
    24     var $cache_dir;
    25 
    2623    var $source_filename;
    27 
    28     var $cache_fullpath;
    2924
    3025    var $generator;
     
    4035    function OpenPNE_Img($options = array())
    4136    {
    42         foreach ($options as $key => $value) {
    43             switch ($key) {
    44             case 'cache_dir':
    45                 $this->cache_dir = realpath($value);
    46                 break;
    47             }
    48         }
    49 
    5037        $this->generator = new OpenPNE_Img_Generator($options);
    5138        $this->storage = new OpenPNE_Img_Storage($options);
     
    115102        $this->set_source_filename();
    116103        $this->generator->setOutputFormat($this->requests['f']);
    117         $this->set_cache_filename();
     104        $this->generator->setCacheFilename($this->source_filename, $w, $h);
    118105
    119         if ($this->check_cache()) {
     106        if ($this->generator->isCacheReadable()) {
    120107            return true;
    121108        }
     
    125112        }
    126113
    127         return $this->generator->createImage($this->cache_fullpath, $this->cache_dir, $raw_img, $w, $h, $this->requests['f']);
     114        return $this->generator->createImage($raw_img, $w, $h, $this->requests['f']);
    128115    }
    129116
     
    136123    {
    137124        $this->send_content_type();
     125        $cache_fullpath = $this->generator->getCacheFullpath();
    138126
    139         if ($mtime = filemtime($this->cache_fullpath)) {
     127        if ($mtime = filemtime($cache_fullpath)) {
    140128            // Etag
    141129            include_once 'Etag.php';
    142             $etag = new Etag($this->cache_fullpath.$mtime, $mtime);
     130            $etag = new Etag($cache_fullpath.$mtime, $mtime);
    143131            if ($etag->etagCheck()) {
    144132                exit;
    145133            }
    146134        }
    147         @readfile($this->cache_fullpath);
    148     }
    149 
    150     /**
    151      * キャッシュが残っているかどうかチェックする
    152      *
    153      * @access protected
    154      * @return boolean
    155      */
    156     function check_cache()
    157     {
    158         return is_readable($this->cache_fullpath);
     135        @readfile($cache_fullpath);
    159136    }
    160137
     
    195172        $this->generator->setSourceFormat($this->generator->checkFormatString(array_pop($pieces)));
    196173    }
    197 
    198     /**
    199      * @access protected
    200      */
    201     function set_cache_filename()
    202     {
    203         $filename = $this->source_filename;
    204         $w = $this->requests['w'];
    205         $h = $this->requests['h'];
    206         $f = $this->generator->getOutputFormat();
    207 
    208         $this->cache_fullpath =
    209                  $this->cache_dir . '/' .
    210                  $this->get_cache_path($filename, $w, $h, $f);
    211     }
    212 
    213     /**
    214      * static
    215      */
    216     function get_cache_path($filename, $w, $h, $f)
    217     {
    218         $prefix = OPENPNE_IMG_CACHE_PREFIX;
    219 
    220         if (!$w) $w = '';
    221         if (!$h) $h = '';
    222         $file = str_replace('.', '_', $filename) . '.' . $f;
    223 
    224         $path = "{$f}/w{$w}_h{$h}/{$prefix}{$file}";
    225         return $path;
    226     }
    227174}
    228175
  • OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE/Img/Generator.php

    r6887 r6889  
    1818    var $output_format;
    1919
     20    var $cache_dir;
     21    var $cache_fullpath;
     22
    2023    function OpenPNE_Img_Generator($options = array())
    2124    {
     
    2326            $this->jpeg_quality = $options['jpeg_quality'];
    2427        }
    25     }
    26 
    27     function createImage($cache_fullpath, $cache_dir, $raw_img, $w, $h, $format)
     28
     29        if (!empty($options['cache_dir'])) {
     30            $this->cache_dir = $options['cache_dir'];
     31        }
     32    }
     33
     34    function createImage($raw_img, $w, $h, $format)
    2835    {
    2936        // サイズ指定がなく、かつ、形式変換しない場合(GDに変換する必要なし)
    3037        if (!$w && !$h && ($this->getSourceFormat() == $this->getOutputFormat())) {
    31             $this->createCacheFromRawImage($cache_fullpath, $cache_dir, $raw_img);
     38            $this->createCacheFromRawImage($this->cache_fullpath, $this->cache_dir, $raw_img);
    3239            return true;
    3340        }
     
    4855        // キャッシュを生成
    4956        if ($output_img) {
    50             $this->createCache($cache_fullpath, $cache_dir, $output_img);
     57            $this->createCache($this->cache_fullpath, $this->cache_dir, $output_img);
    5158        } else {
    52             $this->createCacheFromRawImage($cache_fullpath, $cache_dir, $raw_img);
     59            $this->createCacheFromRawImage($this->cache_fullpath, $this->cache_dir, $raw_img);
    5360        }
    5461
     
    199206    }
    200207
     208    function setCacheFileName($source_filename, $w, $h)
     209    {
     210        $f = $this->getOutputFormat();
     211
     212        $this->cache_fullpath =
     213                 $this->cache_dir . '/' .
     214                 $this->getCachePath($source_filename, $w, $h, $f);
     215    }
     216
    201217    function setOutputFormat($output_format = '')
    202218    {
     
    222238        return $this->source_format;
    223239    }
     240
     241    function getCacheFullpath()
     242    {
     243        return $this->cache_fullpath;
     244    }
     245
     246    function getCachePath($filename, $w, $h, $f)
     247    {
     248        $prefix = OPENPNE_IMG_CACHE_PREFIX;
     249
     250        if (!$w) $w = '';
     251        if (!$h) $h = '';
     252        $file = str_replace('.', '_', $filename) . '.' . $f;
     253
     254        $path = "{$f}/w{$w}_h{$h}/{$prefix}{$file}";
     255        return $path;
     256    }
     257
     258    function isCacheReadable()
     259    {
     260        return is_readable($this->cache_fullpath);
     261    }
    224262}
    225263
Note: See TracChangeset for help on using the changeset viewer.