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

source: OpenPNE/trunk/webapp/lib/db/file.php @ 8835

Last change on this file since 8835 was 8835, checked in by mori, 12 years ago

#2978 ファイル名が取得できない場合の処理を追加

File size: 4.2 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * IDからファイルの情報を取得する
9 *
10 * @param int $c_file_id
11 */
12function db_file_c_file4c_file_id($c_file_id)
13{
14    $sql = 'SELECT * FROM c_file WHERE c_file_id = ?';
15    $params = array(intval($c_file_id));
16    $file = db_get_row($sql, $params);
17    if ($file) {
18        $file['size'] = strlen($file['bin']);
19    }
20    return $file;
21}
22
23/**
24 * 登録されているファイルをリストアップする
25 *
26 * @param int $page
27 * @param int $page_size
28 * @param int &$pager
29 */
30function db_file_c_file_list($page, $page_size, &$pager)
31{
32    $sql = 'SELECT c_file_id FROM c_file ORDER BY c_file_id DESC';
33    $id_list = db_get_col_page($sql, $page, $page_size);
34
35    $c_file_list = array();
36    foreach ($id_list as $i => $c_file_id) {
37        $sql = 'SELECT c_file_id, filename, original_filename, r_datetime, bin FROM c_file WHERE c_file_id = ?';
38        $params = array(intval($c_file_id));
39        $c_file_list[$i] = db_get_row($sql, $params);
40        $c_file_list[$i]['size'] = strlen($c_file_list[$i]['bin']);
41    }
42
43    $sql = 'SELECT COUNT(*) FROM c_file';
44    $total_num = db_get_one($sql);
45
46    $pager = util_make_pager($page, $page_size, $total_num);
47
48    return $c_file_list;
49}
50
51/**
52 * ファイル情報をDBに挿入する
53 *
54 * @param string $filename
55 * @param string $bin
56 * @param string $original_filename
57 * @return mixed
58 */
59function db_file_insert_c_file($filename, $bin, $original_filename)
60{
61    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
62        $bin = base64_encode($bin);
63    }
64
65    $data = array(
66        'filename'   => $filename,
67        'bin'        => $bin,
68        'original_filename' => $original_filename,
69        'r_datetime' => db_now(),
70    );
71    return db_insert('c_file', $data, 'c_file_id');
72}
73
74/**
75 * ファイル名からファイル実体を取得
76 *
77 * @param string $filename
78 * @return mixed
79 */
80function db_file_c_file4filename($filename)
81{
82    $sql = 'SELECT * FROM c_file WHERE filename = ?';
83    $params = array($filename);
84
85    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
86        if ($lst = db_get_row($sql, $params)) {
87            $lst['bin'] = base64_decode($lst['bin']);
88        }
89        return $lst;
90    } else {
91        return db_get_row($sql, $params);
92    }
93}
94
95/**
96 * ファイル名からオリジナルのファイル名を取得
97 *
98 * @param string $filename
99 * @return string
100 */
101function db_file_original_filename4filename($filename)
102{
103    $sql = 'SELECT original_filename FROM c_file WHERE filename = ?';
104    $params = array($filename);
105    return db_get_one($sql, $params);
106}
107
108/**
109 * アップロードされたファイルを削除する
110 *
111 * @param string $filename  削除したいファイル名
112 * @return mixed
113 */
114function db_file_delete_c_file($filename)
115{
116    $sql = 'DELETE FROM c_file WHERE filename = ?';
117    $params = array($filename);
118    return db_query($sql, $params);
119}
120
121/**
122 * 管理画面用に一時ファイル情報をDBに挿入する
123 *
124 * @param string $filename
125 * @param string $filepath
126 * @param string $original_filename
127 */
128function db_file_insert_c_tmp_file($filename, $filepath, $original_filename)
129{
130    if (!is_readable($filepath)) {
131        return false;
132    }
133
134    $fp = fopen($filepath, 'rb');
135    $file_data = fread($fp, filesize($filepath));
136    fclose($fp);
137
138    $sql = 'DELETE FROM c_tmp_file WHERE filename = ?';
139    $params = array($filename);
140    db_query($sql, $params);
141
142    $data = array(
143        'filename'   => $filename,
144        'bin'        => $file_data,
145        'original_filename' => $original_filename,
146        'r_datetime' => db_now(),
147    );
148    return db_insert('c_tmp_file', $data);
149}
150
151/**
152 * DBから管理画面用の一時ファイル情報を削除する
153 */
154function db_file_clear_tmp_db($uid)
155{
156    $sql = 'DELETE FROM c_tmp_file WHERE filename LIKE ?';
157    $params = array('%_' . $uid . '.%');
158    db_query($sql, $params);
159}
160
161/**
162 * ファイル名から一時保存ファイルを取得
163 */
164function db_file_c_tmp_file4filename($filename)
165{
166    $sql = 'SELECT * FROM c_tmp_file WHERE filename = ?';
167    $params = array($filename);
168    return db_get_row($sql, $params);
169}
170?>
Note: See TracBrowser for help on using the repository browser.