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

Changeset 7589


Ignore:
Timestamp:
Jun 16, 2008, 2:18:34 AM (11 years ago)
Author:
ebihara
Message:

OpenPNE_Img_Storage のメンバを OpenPNE_Img_Storage_DB に移動(メソッドについては空のメソッドとして定義した)

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

Legend:

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

    r6940 r7589  
    44 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
    55 */
    6 
    7 include_once 'OpenPNE/DB.php';
    86
    97/**
     
    1513class OpenPNE_Img_Storage
    1614{
    17     var $dsn;
    18 
    19     /**
    20      * @var OpenPNE_DB
    21      */
    22     var $db;
    23 
    2415    /**
    2516     * constructor
     
    3021    function OpenPNE_Img_Storage($options = array())
    3122    {
    32         $this->dsn = $GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn'];
    33         if (!empty($options['dsn'])) {
    34             $this->dsn = $options['dsn'];
    35         }
    36 
    37         if ($this->dsn) {
    38             $this->db =& new OpenPNE_DB($this->dsn);
    39         }
    4023    }
    4124
     
    4427     *
    4528     * @param string $filename
    46      * @return mixed
    4729     */
    4830    function deleteImage($filename)
    4931    {
    50         $sql = 'DELETE FROM c_image WHERE filename = ?';
    51         $params = array($filename);
    52         return $this->db->query($sql, $params);
    5332    }
    5433
     
    5938     * @param string $bin
    6039     * @param string $type
    61      * @return int
    6240     */
    6341    function storeImage($filename, $bin, $type = '')
    6442    {
    65         $data = array(
    66             'filename'   => $filename,
    67             'bin'        => base64_encode($bin),
    68             'type'       => $type,
    69             'r_datetime' => db_now(),
    70         );
    71         return $this->db->insert('c_image', $data);
    7243    }
    7344
     
    7748     * @param string $filename
    7849     * @param string $filepath
    79      * @return int
    8050     */
    8151    function storeImageFromFile($filename, $filepath)
    8252    {
    83         if (!is_readable($filepath)) return false;
    84 
    85         $fp = fopen($filepath, 'rb');
    86         $image_data = fread($fp, filesize($filepath));
    87         fclose($fp);
    88 
    89         // 画像かどうかのチェック
    90         if (!@imagecreatefromstring($image_data)) {
    91             return false;
    92         }
    93 
    94         return $this->storeImage($filename, $image_data);
    9553    }
    9654
     
    9957     *
    10058     * @param string $filename
    101      * @return string
    10259     */
    10360    function getRawImage($filename)
    10461    {
    105         $sql = 'SELECT bin, type FROM c_image WHERE filename = ?';
    106         $params = array($filename);
    107 
    108         if ($c_image = $this->db->get_row($sql, $params)) {
    109             return base64_decode($c_image['bin']);
    110         } else {
    111             return false;
    112         }
    11362    }
    11463
     
    11867     * @param int $page
    11968     * @param int $page_size
    120      * @return array
    12169     */
    12270    function getImageList($page, $page_size)
    12371    {
    124         $sql = 'SELECT c_image_id FROM c_image ORDER BY c_image_id DESC';
    125         $id_list = $this->db->get_col_page($sql, $page, $page_size);
    126 
    127         $c_image_list = array();
    128         foreach ($id_list as $c_image_id) {
    129             $sql = 'SELECT c_image_id, filename, r_datetime FROM c_image WHERE c_image_id = ?';
    130             $params = array(intval($c_image_id));
    131             $c_image_list[] = $this->db->get_row($sql, $params);
    132         }
    133 
    134         return $c_image_list;
    13572    }
    13673
    13774    /**
    13875     * アップロードされている画像の総数を取得する
    139      *
    140      * @return int
    14176     */
    14277    function getTotalImageCount()
    14378    {
    144         $sql = 'SELECT COUNT(*) FROM c_image';
    145         return $this->db->get_one($sql);
    14679    }
    14780
     
    15083     *
    15184     * @param string $filename
    152      * @return int
    15385     */
    15486    function isImageExists($filename)
    15587    {
    156         $sql = 'SELECT c_image_id FROM c_image WHERE filename = ?';
    157         $params = array($filename);
    158         return (bool)$this->db->get_one($sql, $params);
    15988    }
    16089}
  • OpenPNE/branches/work/ebihara/prj_renew_OpenPNE_Img/webapp/lib/OpenPNE/Img/Storage/DB.php

    r6956 r7589  
    1616class OpenPNE_Img_Storage_DB extends OpenPNE_Img_Storage
    1717{
     18    var $dsn;
     19
     20    /**
     21     * @var OpenPNE_DB
     22     */
     23    var $db;
     24
     25
     26    /**
     27     * constructor
     28     *
     29     * @access public
     30     * @param array $options
     31     */
     32    function OpenPNE_Img_Storage_DB($options = array())
     33    {
     34        $this->dsn = $GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn'];
     35        if (!empty($options['dsn'])) {
     36            $this->dsn = $options['dsn'];
     37        }
     38
     39        if ($this->dsn) {
     40            $this->db =& new OpenPNE_DB($this->dsn);
     41        }
     42    }
     43
     44    /**
     45     * 指定されたファイル名の画像を削除する
     46     *
     47     * @param string $filename
     48     * @return mixed
     49     */
     50    function deleteImage($filename)
     51    {
     52        $sql = 'DELETE FROM c_image WHERE filename = ?';
     53        $params = array($filename);
     54        return $this->db->query($sql, $params);
     55    }
     56
     57    /**
     58     * 画像を保存する
     59     *
     60     * @param string $filename
     61     * @param string $bin
     62     * @param string $type
     63     * @return int
     64     */
     65    function storeImage($filename, $bin, $type = '')
     66    {
     67        $data = array(
     68            'filename'   => $filename,
     69            'bin'        => base64_encode($bin),
     70            'type'       => $type,
     71            'r_datetime' => db_now(),
     72        );
     73        return $this->db->insert('c_image', $data);
     74    }
     75
     76    /**
     77     * ファイルから画像を保存する
     78     *
     79     * @param string $filename
     80     * @param string $filepath
     81     * @return int
     82     */
     83    function storeImageFromFile($filename, $filepath)
     84    {
     85        if (!is_readable($filepath)) return false;
     86
     87        $fp = fopen($filepath, 'rb');
     88        $image_data = fread($fp, filesize($filepath));
     89        fclose($fp);
     90
     91        // 画像かどうかのチェック
     92        if (!@imagecreatefromstring($image_data)) {
     93            return false;
     94        }
     95
     96        return $this->storeImage($filename, $image_data);
     97    }
     98
     99    /**
     100     * RAW画像を取得する
     101     *
     102     * @param string $filename
     103     * @return string
     104     */
     105    function getRawImage($filename)
     106    {
     107        $sql = 'SELECT bin, type FROM c_image WHERE filename = ?';
     108        $params = array($filename);
     109
     110        if ($c_image = $this->db->get_row($sql, $params)) {
     111            return base64_decode($c_image['bin']);
     112        } else {
     113            return false;
     114        }
     115    }
     116
     117    /**
     118     * アップロードされている画像の一覧を表示する
     119     *
     120     * @param int $page
     121     * @param int $page_size
     122     * @return array
     123     */
     124    function getImageList($page, $page_size)
     125    {
     126        $sql = 'SELECT c_image_id FROM c_image ORDER BY c_image_id DESC';
     127        $id_list = $this->db->get_col_page($sql, $page, $page_size);
     128
     129        $c_image_list = array();
     130        foreach ($id_list as $c_image_id) {
     131            $sql = 'SELECT c_image_id, filename, r_datetime FROM c_image WHERE c_image_id = ?';
     132            $params = array(intval($c_image_id));
     133            $c_image_list[] = $this->db->get_row($sql, $params);
     134        }
     135
     136        return $c_image_list;
     137    }
     138
     139    /**
     140     * アップロードされている画像の総数を取得する
     141     *
     142     * @return int
     143     */
     144    function getTotalImageCount()
     145    {
     146        $sql = 'SELECT COUNT(*) FROM c_image';
     147        return $this->db->get_one($sql);
     148    }
     149
     150    /**
     151     * 画像が存在しているかどうか
     152     *
     153     * @param string $filename
     154     * @return int
     155     */
     156    function isImageExists($filename)
     157    {
     158        $sql = 'SELECT c_image_id FROM c_image WHERE filename = ?';
     159        $params = array($filename);
     160        return (bool)$this->db->get_one($sql, $params);
     161    }
    18162}
    19163
Note: See TracChangeset for help on using the changeset viewer.