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

source: OpenPNE/branches/stable-2.12.x/webapp/modules/portal/lib/db_portal.php @ 7272

Last change on this file since 7272 was 7272, checked in by ebihara, 12 years ago

#2365:ポータルトップページの「イベント予定」に非公開コミュニティのイベントタイトルが表示されてしまっていたのを修正(thanks to sawai)

File size: 10.8 KB
Line 
1<?php
2
3/**
4 * portal拡張機能DBアクセス関数
5 */
6
7/**
8 * portal_layoutを更新します。
9 */
10function db_portal_update_portal_layout($content_name, $position)
11{
12    $where = array('content_name'=>$content_name);
13    $data = array('position'=>$position);
14    return db_update('portal_layout', $data, $where);
15}
16
17/**
18 * portal_layoutを登録します。
19 */
20function db_portal_insert_portal_layout($content_name, $position, $is_image = 0)
21{
22    $data = array(
23        'content_name' => $content_name,
24        'position' => $position,
25        'is_image' => (bool)$is_image,
26    );
27    return db_insert('portal_layout', $data);
28}
29
30/**
31 * 携帯版コンテンツ設定を登録する
32 *
33 * @param string $content_name
34 * @param int $position
35 * @return int
36 */
37function db_portal_insert_portal_layout_ktai($content_name, $position)
38{
39    $data = array(
40        'content_name' => $content_name,
41        'position' => $position,
42    );
43    return db_insert('portal_layout_ktai', $data);
44}
45
46/**
47 * portal_layoutを削除します。
48 */
49function db_portal_delete_portal_layout($content_name)
50{
51    $sql = 'delete from portal_layout where content_name = ?';
52    $params = array($content_name);
53    db_query($sql, $params);
54}
55
56/**
57 * portal_layoutを取得します。
58 */
59function db_portal_layout_content_name($content_name)
60{
61    $sql = 'select * from portal_layout where content_name = ?';
62    $params = array($content_name);
63    return db_get_row($sql, $params);
64}
65
66/**
67 * portal_layoutを取得します。
68 */
69function db_portal_layout()
70{
71    $sql = 'select * from portal_layout';
72    return db_get_all($sql);
73}
74
75/**
76 * 携帯版コンテンツ設定を取得する
77 *
78 * @return array
79 */
80function db_portal_layout_ktai()
81{
82    $sql = 'select * from portal_layout_ktai';
83    return db_get_all($sql);
84}
85
86/**
87 * 携帯版コンテンツ設定を設定されている並び順どおりに取得する
88 *
89 * @return array
90 */
91function db_portal_layout_ktai_order_by_position()
92{
93    $sql = 'SELECT * FROM portal_layout_ktai ORDER BY position';
94    return db_get_all($sql);
95}
96
97/**
98 * portal_layoutを取得します。
99 */
100function db_portal_layout_order_by_position()
101{
102    $sql = 'select * from portal_layout order by position';
103    return db_get_all($sql);
104}
105
106/**
107 * portal_layoutを全削除します。
108 */
109function db_portal_truncate_portal_layout()
110{
111    $sql = 'truncate table portal_layout';
112    db_query($sql);
113}
114
115/**
116 * 携帯版コンテンツ設定を空にする
117 */
118function db_portal_truncate_portal_layout_ktai()
119{
120    $sql = 'truncate table portal_layout_ktai';
121    db_query($sql);
122}
123
124/**
125 * nameからportal_configテーブルを取得します。
126 */
127function db_portal_config($portal_config_name)
128{
129    $sql = 'select * from portal_config where name = ?';
130    $params = array($portal_config_name);
131    return db_get_row($sql, $params);
132}
133
134/**
135 * portal_configを更新します。
136 */
137function db_portal_update_portal_config($name, $value)
138{
139    $where = array('name'=>$name);
140    $data = array('value'=>$value);
141    return db_update('portal_config', $data, $where);
142}
143
144/**
145 * portal_configを登録します。
146 */
147function db_portal_insert_portal_config($name, $value)
148{
149    $data = array('name'=>$name, 'value'=>$value);
150    return db_insert('portal_config', $data);
151}
152
153/**
154 * portal_free_areaテーブル関連
155 */
156function db_portal_portal_free_area($portal_free_area_id = null)
157{
158    if (!is_null($portal_free_area_id)) {
159        $sql = 'select * from portal_free_area where portal_free_area_id = ?';
160        $params = array(intval($portal_free_area_id));
161        return db_get_row($sql, $params);
162    } else {
163        $sql = 'select * from portal_free_area';
164        $list = db_get_all($sql);
165        $result = array();
166        foreach ($list as $value) {
167            $result[$value['portal_free_area_id']] = $value;
168        }
169        return $result;
170    }
171}
172
173function db_portal_update_portal_free_area($data)
174{
175    $where = array('portal_free_area_id'=>intval($data['portal_free_area_id']));
176    return db_update('portal_free_area', $data, $where);
177}
178
179function db_portal_insert_portal_free_area($data)
180{
181    return db_insert('portal_free_area', $data);
182}
183
184/**
185 * 携帯版フリーエリアを取得する
186 *
187 * $portal_free_area_ktai_id を指定しない場合は、すべての携帯版フリーエリアを取得する。
188 *
189 * @param int $portal_free_area_ktai_id
190 */
191function db_portal_portal_free_area_ktai($portal_free_area_ktai_id = null)
192{
193    if (!is_null($portal_free_area_ktai_id)) {
194        $sql = 'select * from portal_free_area_ktai where portal_free_area_ktai_id = ?';
195        $params = array(intval($portal_free_area_ktai_id));
196        return db_get_row($sql, $params);
197    } else {
198        $sql = 'select * from portal_free_area_ktai';
199        $list = db_get_all($sql);
200        $result = array();
201        foreach ($list as $value) {
202            $result[$value['portal_free_area_ktai_id']] = $value;
203        }
204        return $result;
205    }
206}
207
208/**
209 * 携帯版フリーエリアを更新する
210 *
211 * $portal_free_area_ktai_id を指定しない場合は、新規にインサートする。
212 *
213 * @param int $portal_free_area_ktai_id
214 * @param array $params
215 */
216function db_portal_update_portal_free_area_ktai($portal_free_area_ktai_id = null, $params = array())
217{
218    if (is_null($portal_free_area_ktai_id)) {
219        return db_insert('portal_free_area_ktai', $params);
220    } else {
221        $where = array('portal_free_area_ktai_id' => intval($portal_free_area_ktai_id));
222        return db_update('portal_free_area_ktai', $params, $where);
223    }
224}
225
226/**
227 * portal_rssテーブル関連
228 */
229function db_portal_portal_rss($portal_rss_id = null)
230{
231    if (!is_null($portal_rss_id)) {
232        $sql = 'select * from portal_rss where portal_rss_id = ?';
233        $params = array(intval($portal_rss_id));
234        return db_get_row($sql, $params);
235    } else {
236        $sql = 'select * from portal_rss';
237        $list = db_get_all($sql);
238        $result = array();
239        foreach ($list as $value) {
240            $result[$value['portal_rss_id']] = $value;
241        }
242        return $result;
243    }
244}
245
246function db_portal_update_portal_rss($data)
247{
248    $where = array('portal_rss_id'=>intval($data['portal_rss_id']));
249    return db_update('portal_rss', $data, $where);
250}
251
252function db_portal_insert_portal_rss($data)
253{
254    return db_insert('portal_rss', $data);
255}
256
257function db_portal_c_commu_event($today, $from, $count)
258{
259    $sql = 'select cc.name as community_name, cct.name as event_name, cct.open_date as open_date from c_commu cc, c_commu_topic cct where cc.c_commu_id = cct.c_commu_id and cct.event_flag = ? and cct.open_date > ? and public_flag = ? order by cct.open_date';
260    $params = array('1', $today, 'public');
261    return db_get_all_limit($sql, $from, $count, $params);
262}
263
264function db_portal_public_c_commmu_list($limit = 5)
265{
266    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
267
268    if (!$is_recurred) {  //function cacheのために再帰処理を行う
269        $is_recurred = true;
270        $funcargs = func_get_args();
271        return pne_cache_recursive_call(7200, __FUNCTION__, $funcargs);
272    }
273
274    $is_recurred = false;
275
276    $select = "SELECT ct.*, c.name as commu_name, c.image_filename as image_filename";
277    $from = " FROM c_commu_topic as ct"
278          . " LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id";
279    $where = " WHERE c.public_flag = 'public'";
280    $order = " ORDER BY ct.u_datetime DESC";
281
282    $sql = $select . $from . $where . $order;
283
284    $list = db_get_all_limit($sql, 0, $limit);
285    foreach ($list as $key => $value) {
286        $list[$key]['count_comments'] = db_portal_db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']);
287    }
288    return $list;
289}
290
291function db_portal_db_count_c_commu_topic_comments4c_commu_topic_id($c_commu_topic_id)
292{
293    $sql = "SELECT count(*) FROM c_commu_topic_comment" .
294        " WHERE c_commu_topic_id = ? AND number > 0";
295    $params = array($c_commu_topic_id);
296    return db_get_one($sql, $params);
297}
298
299/**
300 * リンク集設定を取得する
301 *
302 * @param int $limit
303 */
304function db_portal_get_portal_link($limit = 10)
305{
306    $sql = 'SELECT * FROM portal_link ORDER BY sort_order, portal_link_id ';
307    return db_get_all_limit($sql, 0, $limit);
308}
309
310/**
311 * リンク集設定を更新する
312 *
313 * target_portal_link_id が指定されていない場合は新規にインサートする
314 * target_portal_linK_id が指定されていて、リンクタイトルとURLが指定されていない場合は削除する
315 *
316 * @param int $target_portal_link_id
317 * @param array $params
318 */
319function db_portal_update_portal_link($target_portal_link_id = null, $params = array())
320{
321    if (!$target_portal_link_id) {
322        return db_insert('portal_link', $params);
323    } elseif ($params['title'] && $params['url']) {
324        return db_update('portal_link', $params, array('portal_link_id' => (int)$target_portal_link_id));
325    } else {
326        $sql = 'DELETE FROM portal_link WHERE portal_link_id = ?';
327        return db_query($sql, array((int)$target_portal_link_id));
328    }
329}
330
331/**
332 * ポータル用画像ファイル名を登録する
333 *
334 * @param string $image_filename
335 * @return int
336 */
337function db_portal_insert_portal_image($image_filename)
338{
339    return db_insert('portal_image', array('image_filename' => $image_filename));
340}
341
342/**
343 * ポータル用画像ファイルリストを取得する
344 *
345 * @param int $page
346 * @param int $page_size
347 * @param array $pager
348 */
349function db_portal_image_list($page, $page_size, &$pager)
350{
351    $sql = 'SELECT portal_image_id FROM portal_image ORDER BY portal_image_id DESC';
352    $id_list = db_get_col_page($sql, $page, $page_size);
353
354    $portal_image_list = array();
355    foreach ($id_list as $portal_image_id) {
356        $sql = 'SELECT pi.portal_image_id AS portal_image_id, pi.image_filename AS image_filename, ci.r_datetime AS r_datetime'
357            . ' FROM portal_image AS pi LEFT JOIN c_image AS ci ON pi.image_filename = ci.filename'
358            . ' WHERE pi.portal_image_id = ?';
359        $params = array(intval($portal_image_id));
360        $portal_image_list[] = db_get_row($sql, $params);
361    }
362
363    $sql = 'SELECT COUNT(*) FROM portal_image';
364    $total_num = db_get_one($sql);
365
366    $pager = admin_make_pager($page, $page_size, $total_num);
367    return $portal_image_list;
368}
369
370/**
371 * ポータル用画像ファイルを削除する
372 *
373 * @param string $filename
374 */
375function db_portal_delete_portal_image($filename)
376{
377    $sql = 'DELETE FROM portal_image WHERE image_filename = ?';
378    $params = array($filename);
379    return db_query($sql, $params);
380}
381
382/**
383 * ポータル用画像ファイルを取得する
384 *
385 * @param string $filename
386 */
387function db_portal_imaage4filename($filename)
388{
389    $params = array($filename);
390
391    $sql = 'SELECT image_filename FROM portal_image WHERE image_filename = ?';
392    if (!db_get_one($sql, $params)) {
393        return false;
394    }
395
396    $sql = 'SELECT filename FROM c_image WHERE filename = ?';
397    return db_get_one($sql, $params);
398}
399
400?>
Note: See TracBrowser for help on using the repository browser.