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 | */ |
---|
12 | function 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 | */ |
---|
30 | function 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 | */ |
---|
59 | function 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 | */ |
---|
80 | function 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 | $lst = db_get_row($sql, $params); |
---|
87 | $lst['bin'] = base64_decode($lst['bin']); |
---|
88 | return $lst; |
---|
89 | } else { |
---|
90 | return db_get_row($sql, $params); |
---|
91 | } |
---|
92 | } |
---|
93 | |
---|
94 | /** |
---|
95 | * ファイル名からオリジナルのファイル名を取得 |
---|
96 | * |
---|
97 | * @param string $filename |
---|
98 | * @return string |
---|
99 | */ |
---|
100 | function db_file_original_filename4filename($filename) |
---|
101 | { |
---|
102 | $sql = 'SELECT original_filename FROM c_file WHERE filename = ?'; |
---|
103 | $params = array($filename); |
---|
104 | return db_get_one($sql, $params); |
---|
105 | } |
---|
106 | |
---|
107 | /** |
---|
108 | * アップロードされたファイルを削除する |
---|
109 | * |
---|
110 | * @param string $filename 削除したいファイル名 |
---|
111 | * @return mixed |
---|
112 | */ |
---|
113 | function db_file_delete_c_file($filename) |
---|
114 | { |
---|
115 | $sql = 'DELETE FROM c_file WHERE filename = ?'; |
---|
116 | $params = array($filename); |
---|
117 | return db_query($sql, $params); |
---|
118 | } |
---|
119 | |
---|
120 | /** |
---|
121 | * 管理画面用に一時ファイル情報をDBに挿入する |
---|
122 | * |
---|
123 | * @param string $filename |
---|
124 | * @param string $filepath |
---|
125 | * @param string $original_filename |
---|
126 | */ |
---|
127 | function db_file_insert_c_tmp_file($filename, $filepath, $original_filename) |
---|
128 | { |
---|
129 | if (!is_readable($filepath)) { |
---|
130 | return false; |
---|
131 | } |
---|
132 | |
---|
133 | $fp = fopen($filepath, 'rb'); |
---|
134 | $file_data = fread($fp, filesize($filepath)); |
---|
135 | fclose($fp); |
---|
136 | |
---|
137 | $sql = 'DELETE FROM c_tmp_file WHERE filename = ?'; |
---|
138 | $params = array($filename); |
---|
139 | db_query($sql, $params); |
---|
140 | |
---|
141 | $data = array( |
---|
142 | 'filename' => $filename, |
---|
143 | 'bin' => $file_data, |
---|
144 | 'original_filename' => $original_filename, |
---|
145 | 'r_datetime' => db_now(), |
---|
146 | ); |
---|
147 | return db_insert('c_tmp_file', $data); |
---|
148 | } |
---|
149 | |
---|
150 | /** |
---|
151 | * DBから管理画面用の一時ファイル情報を削除する |
---|
152 | */ |
---|
153 | function db_file_clear_tmp_db($uid) |
---|
154 | { |
---|
155 | $sql = 'DELETE FROM c_tmp_file WHERE filename LIKE ?'; |
---|
156 | $params = array('%_' . $uid . '.%'); |
---|
157 | db_query($sql, $params); |
---|
158 | } |
---|
159 | |
---|
160 | /** |
---|
161 | * ファイル名から一時保存ファイルを取得 |
---|
162 | */ |
---|
163 | function db_file_c_tmp_file4filename($filename) |
---|
164 | { |
---|
165 | $sql = 'SELECT * FROM c_tmp_file WHERE filename = ?'; |
---|
166 | $params = array($filename); |
---|
167 | return db_get_row($sql, $params); |
---|
168 | } |
---|
169 | ?> |
---|