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

source: OpenPNE/trunk/webapp/lib/db/diary.php @ 11163

Last change on this file since 11163 was 11163, checked in by nagasawa, 12 years ago

#3723:特定メンバーの日記削除関数内のパラメータ指定変数名が間違っていたのを修正

File size: 41.5 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 * 指定メンバーの日記カテゴリリストを取得する
9 *
10 * @param int $c_member_id
11 * @return array
12 */
13function db_diary_category_list4c_member_id($c_member_id)
14{
15    $sql = 'SELECT c_diary_category_id, category_name FROM c_diary_category '
16         . 'WHERE c_member_id = ? ORDER BY c_diary_category_id';
17    $result = db_get_all($sql, array(intval($c_member_id)));
18
19    return $result;
20}
21
22/**
23 * カテゴリ名からカテゴリIDを得る
24 *
25 * @param int $c_member_id
26 * @param string $category_name
27 * @return bool
28 */
29function db_diary_get_category_id4category_name($c_member_id, $category_name)
30{
31    $sql = 'SELECT c_diary_category_id FROM c_diary_category ' .
32        'WHERE category_name = ? AND c_member_id = ?';
33    return db_get_one($sql, array($category_name, intval($c_member_id)));
34}
35
36/**
37 * カテゴリIDからカテゴリ名を得る
38 */
39function db_diary_get_category_name4category_id($category_id)
40{
41    $sql = 'SELECT category_name FROM c_diary_category ' .
42        'WHERE c_diary_category_id = ?';
43    return db_get_one($sql, array($category_id));
44}
45
46/**
47 * 日記IDからカテゴリリストを得る
48 *
49 * @param int $c_diary_id
50 * @return array
51 */
52function db_diary_category_list4c_diary_id($c_diary_id)
53{
54    $sql = 'SELECT c_diary_category_id FROM c_diary_category_diary WHERE c_diary_id = ?';
55    $category_list = db_get_col($sql, array(intval($c_diary_id)));
56    if (!$category_list) {
57        return array();
58    }
59    $ids = implode(',', $category_list);
60
61    $sql = 'SELECT c_diary_category_id, category_name FROM c_diary_category'
62         . ' WHERE c_diary_category_id IN ('.$ids.') ORDER BY c_diary_category_id';
63    return db_get_all($sql);
64}
65
66/**
67 * カテゴリIDから日記を得る
68 *
69 * @param int $c_member_id
70 * @param int $c_diary_category_id
71 * @param int $u
72 * @param int $page_size
73 * @param int $page
74 * @return array
75 */
76function db_diary_list4c_diary_category_id($c_member_id, $c_diary_category_id, $u = null, $page_size = 20, $page = 0)
77{
78    $sql = 'SELECT c_diary_id FROM c_diary_category_diary WHERE c_diary_category_id = ?';
79    $diary_list = db_get_col($sql, array(intval($c_diary_category_id)));
80    if (!$diary_list) {
81        return array(array(), false, false, 0);
82    }
83    $ids = implode(',', $diary_list);
84
85    $pf_cond = db_diary_public_flag_condition($c_member_id, $u);
86    $where = ' WHERE c_diary_id IN ('.$ids.') AND c_member_id = ? ' . $pf_cond . ' ORDER BY r_datetime DESC';
87    $sql = 'SELECT * FROM c_diary' . $where;
88    $params = array($c_member_id);
89    $list = db_get_all_limit($sql, $page_size * ($page - 1), $page_size, $params);
90
91    foreach ($list as $key => $c_diary) {
92        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($c_diary['c_diary_id']);
93    }
94
95    $sql = 'SELECT COUNT(*) FROM c_diary' . $where;
96    $total_num = db_get_one($sql, $params);
97
98    if ($total_num != 0) {
99        $total_page_num =  ceil($total_num / $page_size);
100        if ($page >= $total_page_num) {
101            $next = false;
102        } else {
103            $next = true;
104        }
105        if ($page <= 1) {
106            $prev = false;
107        } else {
108            $prev = true;
109        }
110    }
111
112    return array($list, $prev, $next, $total_num);
113}
114
115/**
116 * カテゴリを追加する
117 *
118 * @param int $c_member_id
119 * @param int $category_name
120 */
121function db_diary_category_insert_category($c_member_id, $category_name)
122{
123    $data = array(
124        'c_member_id' => intval($c_member_id),
125        'category_name' => $category_name,
126        'r_datetime' => db_now(),
127    );
128    return db_insert('c_diary_category', $data);
129}
130
131/**
132 * カテゴリを削除する
133 *
134 * @param int $c_diary_category_id
135 */
136function db_diary_category_delete_category($c_diary_category_id)
137{
138    $sql = 'DELETE FROM c_diary_category WHERE c_diary_category_id = ?';
139    db_query($sql, array($c_diary_category_id));
140}
141/**
142 * カテゴリと日記を関連づける
143 *
144 * @param int $c_diary_id
145 * @param int $c_diary_category_id
146 */
147function db_diary_category_insert_c_diary_category_diary($c_diary_id, $c_diary_category_id)
148{
149    $data = array(
150        'c_diary_id' => intval($c_diary_id),
151        'c_diary_category_id' => intval($c_diary_category_id),
152    );
153    db_insert('c_diary_category_diary', $data);
154}
155
156/**
157 * カテゴリと日記の関連づけを削除する
158 */
159function db_diary_category_delete_c_diary_category_diary($c_diary_id)
160{
161    $diary_category_list = db_diary_category_list4c_diary_id($c_diary_id);
162
163    $sql = 'DELETE FROM c_diary_category_diary WHERE c_diary_id = ?';
164    db_query($sql, array($c_diary_id));
165
166    foreach($diary_category_list as $value) {
167        $sql = 'SELECT COUNT(*) FROM c_diary_category_diary'.
168            ' WHERE c_diary_category_id = ?';
169        $c_diary_category_id = $value['c_diary_category_id'];
170        $is_diary = (bool)db_get_one($sql, array(intval($c_diary_category_id)));
171        if (!$is_diary) {  //カテゴリに関連付いた日記が存在しない
172            db_diary_category_delete_category($c_diary_category_id);
173        }
174    }
175}
176
177/**
178 * db_diary_public_flag_condition
179 *
180 * @param int $c_member_id target c_member_id
181 * @param int $u viewer's c_member_id
182 * @param string $force
183 * @return string
184 */
185function db_diary_public_flag_condition($c_member_id, $u = null, $force = null)
186{
187    $pf_cond = '';
188    if ($force) {
189        switch ($force) {
190        case 'friend':
191            $pf_cond = " AND public_flag <> 'private'";
192            break;
193        case 'private':
194            $pf_cond = " AND public_flag = 'public'";
195            break;
196        }
197    } else {
198        if (!is_null($u) && $c_member_id != $u) {
199            $is_friend = db_friend_is_friend($c_member_id, $u);
200            if ($is_friend) {
201                $pf_cond = " AND public_flag <> 'private'";
202            } else {
203                $pf_cond = " AND public_flag = 'public'";
204            }
205        }
206    }
207    return $pf_cond;
208}
209
210//// c_diary
211
212/**
213 * 日記IDから日記を取得
214 *
215 * @param   int   $c_diary_id
216 * @return  array
217 */
218function db_diary_get_c_diary4id($c_diary_id)
219{
220    $sql = 'SELECT * FROM c_diary WHERE c_diary_id = ?';
221    $c_diary_list = db_get_row($sql, array(intval($c_diary_id)));
222    return $c_diary_list;
223}
224
225/**
226 * メンバーIDから日記リストを最新順で取得
227 *
228 * @param int $c_member_id
229 * @return array 日記リスト
230 */
231function db_diary_get_c_diary_list4c_member_id($target_c_member_id, $count = 10, $u = null, $force = null)
232{
233    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
234
235    if (!$is_recurred) {  //function cacheのために再帰処理を行う
236        $is_recurred = true;
237        $funcargs = func_get_args();
238        $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs);
239        $is_recurred = false;
240        return $result;
241    }
242
243    $pf_cond = db_diary_public_flag_condition($target_c_member_id, $u, $force);
244    $sql = 'SELECT * FROM c_diary WHERE c_member_id = ?' . $pf_cond .
245           ' ORDER BY r_datetime DESC';
246    $params = array(intval($target_c_member_id));
247    $arr = db_get_all_limit($sql, 0, $count, $params);
248    foreach ($arr as $key => $value) {
249        $arr[$key]['comment_count'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
250    }
251    return $arr;
252}
253
254function p_common_is_active_c_diary_id($c_diary_id)
255{
256    $sql = 'SELECT c_diary_id FROM c_diary WHERE c_diary_id = ?';
257    return (bool)db_get_one($sql, array(intval($c_diary_id)));
258}
259
260/**
261 * 指定した日記の前の日記IDを取得する
262 *
263 * @param int $c_member_id
264 * @param int $c_diary_id
265 */
266function db_diary_c_diary_id_prev4c_diary_id($c_member_id, $c_diary_id, $u = null)
267{
268    $public_flag_condition = db_diary_public_flag_condition($c_member_id, $u);
269    $sql = 'SELECT c_diary_id FROM c_diary WHERE c_member_id = ? AND c_diary_id < ?'
270         . $public_flag_condition . ' ORDER BY c_diary_id DESC';
271    return db_get_one($sql, array(intval($c_member_id), intval($c_diary_id)));
272}
273
274/**
275 * 指定した日記の次の日記IDを取得する
276 *
277 * @param int $c_member_id
278 * @param int $c_diary_id
279 */
280function db_diary_c_diary_id_next4c_diary_id($c_member_id, $c_diary_id, $u = null)
281{
282    $public_flag_condition = db_diary_public_flag_condition($c_member_id, $u);
283    $sql = 'SELECT c_diary_id FROM c_diary WHERE c_member_id = ? AND c_diary_id > ?'
284         . $public_flag_condition . ' ORDER BY c_diary_id ASC';
285    return db_get_one($sql, array(intval($c_member_id), intval($c_diary_id)));
286}
287
288//// c_diary_comment
289
290/**
291 * 日記のコメントリストを得る
292 *
293 * @param   int $c_diary_id
294 * @param   int $limit
295 * @return  array 日記コメント+ニックネーム
296 */
297function db_diary_get_c_diary_comment_list4c_diary_id($c_diary_id)
298{
299    $sql = 'SELECT c_member.nickname, c_diary_comment.*' .
300        ' FROM c_diary_comment LEFT JOIN c_member USING (c_member_id)' .
301        ' WHERE c_diary_id = ?' .
302        ' ORDER BY c_diary_comment.r_datetime';
303    return db_get_all($sql, array(intval($c_diary_id)));
304}
305
306/**
307 * 日記のコメントリスト(好きなID(複数))を取得
308 *
309 * @param   array $id_list
310 * @param   int   $page
311 * @param   int   $page_size
312 * @param   bool  $desc  並び順を日時の新しい順にするかどうか
313 * @return  日記コメント(+ニックネーム)リスト
314 */
315function db_diary_get_c_diary_comment_list4id_list($id_list, $page = 1, $page_size= -1, $desc = false)
316{
317    if (!count($id_list)) return array();
318    if ($page_size < 0) {
319        $page_size = count($id_list);
320    }
321    $e_id_list = implode(',', array_map('intval', (array)$id_list));
322
323    $sql = 'SELECT * FROM c_diary_comment' .
324            ' WHERE c_diary_comment_id IN ('.$e_id_list.')';
325    if ($desc) {
326        $sql .= ' ORDER BY r_datetime DESC';
327    } else {
328        $sql .= ' ORDER BY r_datetime';
329    }
330    $c_diary_comment_list = db_get_all_page($sql, $page, $page_size);
331    foreach ($c_diary_comment_list as $key => $value) {
332        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
333        $c_diary_comment_list[$key]['nickname'] = $c_member['nickname'];
334    }
335
336    $sql = 'SELECT COUNT(*) FROM c_diary_comment' .
337        ' WHERE c_diary_comment_id IN ('.$e_id_list.')';
338    $total_num = db_get_one($sql);
339
340    if ($total_num != 0) {
341        $total_page_num = ceil($total_num / $page_size);
342        if ($page >= $total_page_num) {
343            $next = false;
344        } else {
345            $next = true;
346        }
347
348        if ($page <= 1) {
349            $prev = false;
350        } else {
351            $prev = true;
352        }
353    }
354
355    return array($c_diary_comment_list, $prev , $next, $total_num);
356}
357
358/**
359 * 日記のコメント数を取得
360 *
361 * @param int $c_diary_id
362 * @return int コメント数
363 */
364function db_diary_count_c_diary_comment4c_diary_id($c_diary_id)
365{
366    $sql = 'SELECT COUNT(*) FROM c_diary_comment WHERE c_diary_id = ?';
367    return db_get_one($sql, array(intval($c_diary_id)));
368}
369
370////
371
372/**
373 * あるメンバーの日記リストを取得
374 *
375 * @param int $c_member_id target c_member_id
376 * @param int $page_size
377 * @param int $page
378 * @param int $u viewer's c_member_id
379 * @return array 日記リスト
380 */
381function p_fh_diary_list_diary_list4c_member_id($c_member_id, $page_size, $page, $u = null)
382{
383    $pf_cond = db_diary_public_flag_condition($c_member_id, $u);
384    $sql = 'SELECT * FROM c_diary WHERE c_member_id = ?' . $pf_cond .
385           ' ORDER BY r_datetime DESC';
386    $params = array(intval($c_member_id));
387    $list = db_get_all_page($sql, $page, $page_size, $params);
388
389    foreach ($list as $key => $c_diary) {
390        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($c_diary['c_diary_id']);
391    }
392
393    $sql = 'SELECT COUNT(*) FROM c_diary WHERE c_member_id = ?' . $pf_cond;
394    $total_num = db_get_one($sql, $params);
395
396    if ($total_num != 0) {
397        $total_page_num =  ceil($total_num / $page_size);
398        if ($page >= $total_page_num) {
399            $next = false;
400        } else {
401            $next = true;
402        }
403
404        if ($page <= 1) {
405            $prev = false;
406        } else {
407            $prev = true;
408        }
409    }
410    return array($list, $prev, $next, $total_num);
411}
412
413/**
414 * フレンドの最新日記リスト
415 */
416function p_h_diary_list_friend_h_diary_list_friend4c_member_id($c_member_id, $page_size, $page)
417{
418    $friends = db_friend_c_member_id_list($c_member_id, true);
419    if (!$friends) {
420        return array(array(), false, false, 0);
421    }
422    $ids = implode(',', array_map('intval', $friends));
423
424    $hint = db_mysql_hint('USE INDEX (r_datetime_c_member_id, r_datetime)');
425    $sql = 'SELECT * FROM c_diary' . $hint .
426            ' WHERE c_member_id IN (' . $ids . ')' .
427            ' AND public_flag <> \'private\'' .
428            ' ORDER BY c_diary.r_datetime DESC';
429
430    $lst = db_get_all_page($sql, $page, $page_size);
431
432    foreach ($lst as $key=>$value) {
433        $lst[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
434        $lst[$key]['c_member'] = db_member_c_member4c_member_id($value['c_member_id']);
435    }
436
437    $sql = 'SELECT count(*) FROM c_diary' .
438           ' WHERE c_member_id IN (' . $ids . ')' .
439           ' AND public_flag <> \'private\'';
440    $total_num = db_get_one($sql, $params);
441
442    if ($total_num != 0) {
443        $total_page_num =  ceil($total_num / $page_size);
444        if ($page >= $total_page_num) {
445            $next = false;
446        } else {
447            $next = true;
448        }
449
450        if ($page <= 1) {
451            $prev = false;
452        } else {
453            $prev = true;
454        }
455    }
456
457    return array($lst, $prev, $next, $total_num);
458}
459
460/**
461 * 未読コメントのある日記の数を数える
462 *
463 * @param int $c_member_id
464 * @return int 未読日記数
465 */
466function p_h_diary_count_c_diary_not_is_read4c_member_id($c_member_id)
467{
468    $sql = 'SELECT COUNT(*) FROM c_diary WHERE c_member_id = ? AND is_checked = 0';
469    $params = array(intval($c_member_id));
470    return db_get_one($sql, $params);
471}
472
473/**
474 * 未読コメントのある日記のうちもっとも古い日記IDを返す
475 *
476 * @param int $c_member_id
477 * @return int c_diary_id
478 */
479function p_h_diary_c_diary_first_diary_read4c_member_id($c_member_id)
480{
481    $sql = 'SELECT c_diary_id FROM c_diary WHERE c_member_id = ? AND is_checked = 0 ORDER BY r_datetime';
482    $params = array(intval($c_member_id));
483    return db_get_one($sql, $params);
484}
485
486/**
487 * フレンド最新日記リスト取得
488 * 日記公開範囲を考慮
489 *
490 * @param   int $c_member_id
491 * @param   int $limit
492 * @param   int $use_is_display_friend_home
493 * @return  array_of_array  (c_diary.*, nickname)
494 */
495function p_h_home_c_diary_friend_list4c_member_id($c_member_id, $limit, $use_is_display_friend_home = false)
496{
497    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
498
499    if (!$is_recurred) {  //function cacheのために再帰処理を行う
500        $is_recurred = true;
501        $funcargs = func_get_args();
502        $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs);
503        $is_recurred = false;
504        return $result;
505    }
506
507    $friends = db_friend_c_member_id_list($c_member_id, true);
508    if (!$friends) {
509        return array();
510    }
511    // 対象の最新書き込みのみを表示する場合
512    if ($use_is_display_friend_home) {
513        // 表示対象一覧を取得し、取得済みフレンド一覧とぶつける
514        $friends = array_intersect($friends, db_friend_is_display_friend_home_list($c_member_id, $is_display_friend_home=1));
515    }
516    $ids = implode(',', array_map('intval', $friends));
517
518    $hint = db_mysql_hint('USE INDEX (r_datetime_c_member_id, r_datetime)');
519    $sql = 'SELECT * FROM c_diary' . $hint .
520            ' WHERE c_member_id IN (' . $ids . ')' .
521            ' AND public_flag <> \'private\'' .
522            ' ORDER BY c_diary.r_datetime DESC';
523    $c_diary_friend_list = db_get_all_limit($sql, 0, $limit);
524
525    foreach ($c_diary_friend_list as $key => $value) {
526        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
527        $c_diary_friend_list[$key]['nickname'] = $c_member['nickname'];
528        $c_diary_friend_list[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
529    }
530    return $c_diary_friend_list;
531}
532
533/**
534 * 日記コメント記入履歴取得
535 *
536 * @param   int $c_member_id
537 * @param   int $limit
538 * @return  array_of_array  (c_diary.*, nickname)
539 */
540function p_h_home_c_diary_my_comment_list4c_member_id($c_member_id, $limit)
541{
542    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
543
544    if (!$is_recurred) {  //function cacheのために再帰処理を行う
545        $is_recurred = true;
546        $funcargs = func_get_args();
547        $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs);
548        $is_recurred = false;
549        return $result;
550    }
551
552    $sql = 'SELECT cdcl.c_diary_id, cdcl.r_datetime AS maxdate, cd.*'
553         . ' FROM c_diary_comment_log AS cdcl INNER JOIN c_diary AS cd USING (c_diary_id) '
554         . ' WHERE cdcl.c_member_id = ?'
555         . ' AND (cd.public_flag = \'public\'';
556
557    $friends = db_friend_c_member_id_list($c_member_id, true);
558    $friend_ids = implode(',', array_map('intval', $friends));
559    if ($friend_ids) {
560         $sql .= ' OR (cd.public_flag = \'friend\' AND cd.c_member_id IN (' . $friend_ids . '))';
561    }
562
563    $sql .= ') ORDER BY maxdate DESC';
564    $params = array(intval($c_member_id));
565    $list = db_get_all_limit($sql, 0, $limit, $params);
566
567    foreach ($list as $key => $value) {
568        $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
569        $list[$key]['r_datetime'] = $value['maxdate'];
570        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
571    }
572
573    return $list;
574}
575
576function p_h_diary_comment_list_c_diary_my_comment_list4c_member_id($c_member_id, $page, $page_size)
577{
578    $select = 'SELECT cdcl.c_diary_id, cdcl.r_datetime AS maxdate, cd.*';
579    $from = ' FROM c_diary_comment_log AS cdcl INNER JOIN c_diary AS cd USING (c_diary_id) ';
580    $where = ' WHERE cdcl.c_member_id = ? AND (cd.public_flag = \'public\'';
581
582
583    $friends = db_friend_c_member_id_list($c_member_id, true);
584    $friend_ids = implode(',', array_map('intval', $friends));
585    if ($friend_ids) {
586         $where .= ' OR (cd.public_flag = \'friend\' AND cd.c_member_id IN (' . $friend_ids . '))';
587    }
588    $where .= ')';
589
590    $sql = $select . $from . $where . ' ORDER BY maxdate DESC';
591    $params = array(intval($c_member_id));
592    $list = db_get_all_page($sql, $page, $page_size, $params);
593
594    foreach ($list as $key => $value) {
595        $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
596        $list[$key]['r_datetime'] = $value['maxdate'];
597        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
598    }
599
600    $sql = 'SELECT COUNT(cdcl.c_diary_id)' . $from . $where;
601    $params = array(intval($c_member_id));
602    $total_num = db_get_one($sql, $params);
603
604    $is_prev = false;
605    $is_next = false;
606    if ($total_num) {
607        $is_prev = (bool)($page > 1);
608        $is_next = (bool)($page < ceil($total_num / $page_size));
609    }
610    return array($list, $is_prev, $is_next, $total_num);
611}
612
613/**
614 * あるメンバーの指定された年月日の日記のリストを得る
615 */
616function p_fh_diary_list_diary_list_date4c_member_id($c_member_id, $page_size, $page, $year, $month, $day=0 ,$u = null)
617{
618    if ($day) {
619        $s_date = date('Y-m-d H:i:s', mktime(0, 0, 0, $month, $day, $year));
620        $e_date = date('Y-m-d H:i:s', mktime(0, 0, 0, $month, $day+1, $year));
621    } else {
622        $s_date = date('Y-m-d H:i:s', mktime(0, 0, 0, $month, 1, $year));
623        $e_date = date('Y-m-d H:i:s', mktime(0, 0, 0, $month+1, 1, $year));
624    }
625
626    $pf_cond = db_diary_public_flag_condition($c_member_id, $u);
627    $where = ' WHERE c_member_id = ? AND r_datetime >= ? AND r_datetime < ?';
628    $sql = 'SELECT * FROM c_diary' .
629            $where . $pf_cond .
630            ' ORDER BY r_datetime DESC';
631    $params = array(intval($c_member_id), $s_date, $e_date);
632    $list = db_get_all_limit($sql, $page_size * ($page - 1), $page_size, $params);
633
634    foreach ($list as $key => $c_diary) {
635        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($c_diary['c_diary_id']);
636    }
637
638    $sql = 'SELECT COUNT(*) FROM c_diary' . $where;
639    $total_num = db_get_one($sql, $params);
640
641    if ($total_num != 0) {
642        $total_page_num =  ceil($total_num / $page_size);
643        if ($page >= $total_page_num) {
644            $next = false;
645        } else {
646            $next = true;
647        }
648        if ($page <= 1) {
649            $prev = false;
650        } else {
651            $prev = true;
652        }
653    }
654    return array($list , $prev , $next, $total_num);
655}
656
657/**
658 * 日記ページの「各月の日記」用
659 *
660 * 日記を最初に書いた月からスタートしてみる
661 */
662function p_fh_diary_list_date_list4c_member_id($c_member_id)
663{
664    $sql = "SELECT r_datetime FROM c_diary" .
665        " WHERE c_member_id = ?" .
666        " ORDER BY r_datetime";
667    $params = array(intval($c_member_id));
668    if (!$first_datetime = db_get_one($sql, $params)) {
669        return array();
670    }
671
672    $start_date = getdate(strtotime($first_datetime));
673    $end_date =  getdate();
674
675    $date = array();
676    $year = $start_date['year'];
677    $month = $start_date['mon'];
678    while (1) {
679        $date[] =  array(
680            'year' => $year,
681            'month' => $month,
682        );
683
684        if ($end_date['year'] <= $year
685            && $end_date['mon'] <= $month) {
686            break;
687        }
688
689        $month++;
690        if ($month > 12) {
691            $month = 1;
692            $year++;
693        }
694    }
695    return array_reverse($date);
696}
697
698//c_member_id から自分の日記についてるコメントID(複数)を取得
699function p_fh_diary_c_diary_comment_id_list4c_member_id($c_member_id)
700{
701    $sql = "SELECT cdc.c_diary_comment_id FROM c_diary as cd,c_diary_comment as cdc" .
702        " WHERE cd.c_member_id = ?".
703        " AND cd.c_diary_id = cdc.c_diary_id";
704    $params = array(intval($c_member_id));
705    return db_get_col($sql, $params);
706}
707
708/**
709 * 年月 から日記のある日(複数)を取得
710 */
711function p_fh_diary_list_calendar_list4c_member_id($year, $month, $c_member_id)
712{
713    $sql = "SELECT cdc.c_diary_comment_id FROM c_diary as cd,c_diary_comment as cdc" .
714        " WHERE cd.c_member_id = ?".
715        " AND cd.c_diary_id = cdc.c_diary_id";
716    $params = array(intval($c_member_id));
717    return db_get_col($sql, $params);
718}
719
720/**
721 * 新着日記検索
722 * 検索ポイントはタイトル、本文
723 * 空白(全角半角問わない)でand検索可
724 */
725function p_h_diary_list_all_search_c_diary4c_diary($keyword, $page_size, $page, $c_member_id = '')
726{
727    $params = array();
728
729    $select = 'SELECT *';
730    $from = ' FROM c_diary';
731
732    //自分の日記だけを対象にする事もできる
733    if ($c_member_id) {
734        $where = ' WHERE c_member_id = ?';
735        $params[] = intval($c_member_id);
736    } else {
737        $where = " WHERE public_flag = 'public'";
738    }
739
740    //and検索を実装
741    //subject,body を検索
742    if ($keyword) {
743        //全角空白を半角に統一
744        $keyword = str_replace(' ', ' ', $keyword);
745
746        $keyword_list = explode(' ', $keyword);
747        foreach ($keyword_list as $word) {
748            $word = check_search_word($word);
749
750            $where .= ' AND (subject LIKE ? OR body LIKE ?)';
751            $params[] = '%'.$word.'%';
752            $params[] = '%'.$word.'%';
753        }
754    }
755    $order = " ORDER BY r_datetime DESC";
756
757    $sql = $select . $from . $where . $order;
758
759    $list = db_get_all_page($sql, $page, $page_size, $params);
760    foreach ($list as $key => $value) {
761        $list[$key]['c_member'] = db_member_c_member_with_profile($value['c_member_id']);
762        $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
763    }
764
765    $sql = 'SELECT COUNT(*)' . $from . $where;
766    $total_num = db_get_one($sql, $params);
767
768    if ($total_num != 0) {
769        $total_page_num =  ceil($total_num / $page_size);
770        if ($page >= $total_page_num) {
771            $next = false;
772        } else {
773            $next = true;
774        }
775        if ($page <= 1) {
776            $prev = false;
777        } else {
778            $prev = true;
779        }
780    }
781    return array($list , $prev , $next, $total_num);
782}
783
784/**
785 * 指定された年月に日記を書いている日のリストを返す
786 */
787function p_h_diary_is_diary_written_list4date($year, $month, $c_member_id, $u = null)
788{
789    include_once 'Date/Calc.php';
790
791    $pf_cond = db_diary_public_flag_condition($c_member_id, $u);
792
793    if ($GLOBALS['_OPENPNE_DSN_LIST']['main']['dsn']['phptype'] == 'pgsql') {
794        $sql = "SELECT DISTINCT date_part('day', r_datetime) FROM c_diary" .
795               " WHERE c_member_id = ? AND r_datetime >= ? AND r_datetime < ?" . $pf_cond;
796    } else {
797        $sql = 'SELECT DISTINCT DAYOFMONTH(r_datetime) FROM c_diary' .
798               ' WHERE c_member_id = ? AND r_datetime >= ? AND r_datetime < ?' . $pf_cond;
799    }
800
801    $date_format = '%Y-%m-%d 00:00:00';
802    $thismonth = Date_Calc::beginOfMonth($month, $year, $date_format);
803    $nextmonth = Date_Calc::beginOfNextMonth(0, $month, $year, $date_format);
804
805    $params = array(intval($c_member_id), $thismonth, $nextmonth);
806
807    return db_get_col($sql, $params);
808}
809
810/**
811 * 日記コメント情報をIDから取得
812 *
813 * @param   int $c_diary_comment_id
814 * @return array
815 *              c_diary_comemnt.*
816 *              c_diary.c_member_id AS c_member_id_author
817 */
818function _do_c_diary_comment4c_diary_comment_id($c_diary_comment_id)
819{
820    $sql = "SELECT dc.*, d.c_member_id AS c_member_id_author";
821    $sql .= " FROM c_diary_comment AS dc, c_diary AS d";
822    $sql .= " WHERE dc.c_diary_comment_id = ?";
823    $sql .= " AND dc.c_diary_id = d.c_diary_id";
824    $params = array(intval($c_diary_comment_id));
825    return db_get_row($sql, $params);
826}
827
828/**
829 * メンバーの最新日記のリストを返す
830 */
831function k_p_f_home_c_diary_list4c_member_id($c_member_id, $limit)
832{
833    //日記リスト
834    $sql = "SELECT c_diary_id, r_date, subject ,image_filename_1";
835    $sql .= " FROM c_diary";
836    $sql .= " WHERE c_member_id = ?";
837    $sql .= " ORDER BY r_date DESC";
838    $params = array(intval($c_member_id));
839    $c_diary_list = db_get_all_limit($sql, 0, $limit, $params);
840
841    //コメント数
842    foreach ($c_diary_list as $key => $value) {
843        $c_diary_id = $value['c_diary_id'];
844
845        $sql = "SELECT COUNT(*) ";
846        $sql .= "FROM c_diary_comment ";
847        $sql .= "WHERE c_diary_id = ?";
848        $params = array(intval($c_diary_id));
849        $c_diary_list[$key]['count_comment'] = db_get_one($sql, $params);
850    }
851    return $c_diary_list;
852}
853
854/**
855 * 最新日記リストを取得。
856 * 取得範囲を指定できる。
857 */
858function k_p_fh_diary_list_c_diary_list4c_member_id($c_member_id, $page_size, $page)
859{
860    $sql = 'SELECT * FROM c_diary WHERE c_member_id = ? ORDER BY r_datetime DESC';
861    $params = array(intval($c_member_id));
862    $c_diary_list = db_get_all_page($sql, $page, $page_size, $params);
863
864    foreach ($c_diary_list as $key => $value) {
865        $c_diary_list[$key]['count_comment'] =
866            db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
867    }
868
869    $sql = 'SELECT COUNT(*) FROM c_diary WHERE c_member_id = ?';
870    $total_num = db_get_one($sql, $params);
871
872    if ($total_num != 0) {
873        $total_page_num =  ceil($total_num / $page_size);
874        if ($page >= $total_page_num) {
875            $next = false;
876        } else {
877            $next = true;
878        }
879        if ($page <= 1) {
880            $prev = false;
881        } else {
882            $prev = true;
883        }
884    }
885    return array($c_diary_list , $prev , $next);
886}
887
888/**
889 * 日記へのコメントリストを取得
890 */
891function k_p_fh_diary_c_diary_comment_list4c_diary_id($c_diary_id, $page_size, $page, $desc = true)
892{
893    $sql = 'SELECT * FROM c_diary_comment WHERE c_diary_id = ? ORDER BY r_datetime';
894    if ($desc) {
895        $sql .= ' DESC';
896    }
897    $params = array(intval($c_diary_id));
898    $c_diary_comment_list = db_get_all_page($sql, $page, $page_size, $params);
899
900    foreach ($c_diary_comment_list as $key => $value) {
901        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
902        $c_diary_comment_list[$key]['nickname'] = $c_member['nickname'];
903    }
904
905    $sql = 'SELECT COUNT(c_diary_comment_id) FROM c_diary_comment WHERE c_diary_id = ?';
906    $params = array(intval($c_diary_id));
907    $total_num = db_get_one($sql, $params);
908
909    if ($total_num > 0) {
910        $total_page_num =  ceil($total_num / $page_size);
911        if ($page >= $total_page_num) {
912            $next = false;
913        } else {
914            $next = true;
915        }
916        if ($page <= 1) {
917            $prev = false;
918        } else {
919            $prev = true;
920        }
921    }
922    return array($c_diary_comment_list, $prev, $next, $total_num, $total_page_num);
923}
924
925/**
926 * 日記IDからその日記を書いたメンバーIDとニックネームと日記公開範囲を得る
927 */
928function k_p_fh_diary_c_member4c_diary_id($c_diary_id)
929{
930    $sql = "SELECT cm.c_member_id, cm.nickname,cm. public_flag_diary ";
931    $sql .= " FROM c_member AS cm, c_diary AS cd ";
932    $sql .= " WHERE cd.c_diary_id = ?";
933    $sql .= " AND cm.c_member_id=cd.c_member_id";
934    $params = array(intval($c_diary_id));
935    return db_get_row($sql, $params);
936}
937
938/**
939 * フレンドの最新日記リスト
940 */
941function k_p_h_diary_list_friend_h_diary_list_friend4c_member_id($c_member_id, $page_size, $page)
942{
943    $from = "c_diary, c_friend";
944    $where = "c_friend.c_member_id_from = ?" .
945            " AND c_diary.c_member_id = c_friend.c_member_id_to";
946
947    $sql = "SELECT c_diary.* FROM {$from} WHERE {$where}" .
948            " ORDER BY c_diary.r_datetime DESC";
949    $params = array(intval($c_member_id));
950    $lst = db_get_all_page($sql, $page, $page_size, $params);
951
952    foreach ($lst as $key=>$value) {
953        $lst[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
954        $lst[$key]['c_member'] = db_member_c_member4c_member_id($value['c_member_id']);
955    }
956
957    $sql = "SELECT count(*) FROM {$from} WHERE {$where}";
958    $total_num = db_get_one($sql, $params);
959
960    if ($total_num != 0) {
961        $total_page_num =  ceil($total_num / $page_size);
962        if ($page >= $total_page_num) {
963            $next = false;
964        } else {
965            $next = true;
966        }
967
968        if ($page <= 1) {
969            $prev = false;
970        } else {
971            $prev = true;
972        }
973    }
974
975    return array($lst, $prev, $next, $total_num);
976}
977
978//--- diary
979
980/**
981 * 日記を追加
982 */
983function db_diary_insert_c_diary($c_member_id, $subject, $body, $public_flag,
984    $is_comment_input = "1")
985{
986    //function cacheの削除
987    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $c_member_id, 5);
988
989    $data = array(
990        'c_member_id' => intval($c_member_id),
991        'subject' => $subject,
992        'body' => $body,
993        'public_flag' => util_cast_public_flag_diary($public_flag),
994        'r_datetime' => db_now(),
995        'r_date' => db_now(),
996        'u_datetime' => db_now(),
997        'is_checked' => 1,
998        'image_filename_1' => '',
999        'image_filename_2' => '',
1000        'image_filename_3' => '',
1001        'is_comment_input' => intval($is_comment_input),
1002    );
1003    return db_insert('c_diary', $data);
1004}
1005
1006/**
1007 * 日記を編集
1008 */
1009function db_diary_update_c_diary($c_diary_id, $subject, $body, $public_flag, $is_comment_input,
1010    $image_filename_1 = '', $image_filename_2 = '', $image_filename_3 = '')
1011{
1012    //function cacheの削除
1013    $c_diary = db_diary_get_c_diary4id($c_diary_id);
1014    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $c_diary['c_member_id'], 5);
1015
1016    $data = array(
1017        'subject' => $subject,
1018        'body' => $body,
1019        'public_flag' => util_cast_public_flag_diary($public_flag),
1020        'u_datetime' => db_now(),
1021        'is_comment_input' => intval($is_comment_input),
1022    );
1023    if ($image_filename_1) $data['image_filename_1'] = $image_filename_1;
1024    if ($image_filename_2) $data['image_filename_2'] = $image_filename_2;
1025    if ($image_filename_3) $data['image_filename_3'] = $image_filename_3;
1026
1027    $where = array(
1028        'c_diary_id' => intval($c_diary_id),
1029    );
1030    return db_update('c_diary', $data, $where);
1031}
1032
1033/**
1034 * 日記削除
1035 * コメント、画像も削除
1036 *
1037 * @param int $c_diary_id
1038 */
1039function db_diary_delete_c_diary($c_diary_id)
1040{
1041     //function cacheの削除
1042    $c_diary = db_diary_get_c_diary4id($c_diary_id);
1043    pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $c_diary['c_member_id'], 5);
1044
1045   // 画像
1046    db_image_data_delete($c_diary['image_filename_1']);
1047    db_image_data_delete($c_diary['image_filename_2']);
1048    db_image_data_delete($c_diary['image_filename_3']);
1049
1050    // コメント
1051    $sql = 'SELECT image_filename_1, image_filename_2, image_filename_3 FROM c_diary_comment WHERE c_diary_id =?';
1052    $params = array(intval($c_diary_id));
1053    $comment_images = db_get_all($sql, $params);
1054
1055    //カテゴリ
1056    db_diary_category_delete_c_diary_category_diary($c_diary_id);
1057
1058    foreach ($comment_images as $value) {
1059        db_image_data_delete($value['image_filename_1']);
1060        db_image_data_delete($value['image_filename_2']);
1061        db_image_data_delete($value['image_filename_3']);
1062    }
1063
1064    $sql = 'DELETE FROM c_diary_comment_log WHERE c_diary_id = ?';
1065    db_query($sql, $params);
1066
1067    $sql = 'DELETE FROM c_diary_comment WHERE c_diary_id = ?';
1068    db_query($sql, $params);
1069
1070    // 日記
1071    $sql = 'DELETE FROM c_diary WHERE c_diary_id = ?';
1072    db_query($sql, $params);
1073}
1074
1075/**
1076 * 指定した番号の日記画像を削除
1077 */
1078function db_diary_delete_c_diary_image($c_diary_id, $image_num)
1079{
1080    $data = array(
1081        'image_filename_'.intval($image_num) => '',
1082    );
1083    $where = 'c_diary_id = '.intval($c_diary_id);
1084    return db_update('c_diary', $data, $where);
1085}
1086
1087/**
1088 * 日記に画像を追加する
1089 */
1090function db_diary_update_c_diary_image_filename($c_diary_id, $image_filename, $image_num)
1091{
1092    $data = array(
1093        'image_filename_'.intval($image_num) => $image_filename,
1094    );
1095    $where = 'c_diary_id = '.intval($c_diary_id);
1096    return db_update('c_diary', $data, $where);
1097}
1098
1099/**
1100 * 日記の未読/既読を変更
1101 * c_diary.is_checkedを更新
1102 */
1103function db_diary_update_c_diary_is_checked($c_diary_id, $value)
1104{
1105    $data = array(
1106        'is_checked' => (bool)$value,
1107    );
1108    $where = 'c_diary_id = '.intval($c_diary_id);
1109    return db_update('c_diary', $data, $where);
1110}
1111
1112//--- diary_comment
1113
1114/**
1115 * 日記コメント追加
1116 *
1117 * @param  int    $c_member_id
1118 * @param  int    $c_diary_id
1119 * @param  string $body
1120 * @return int    insert_id
1121 */
1122function db_diary_insert_c_diary_comment($c_member_id, $c_diary_id, $body)
1123{
1124    //function cache削除
1125    $c_diary =  db_diary_get_c_diary4id($c_diary_id);
1126    cache_drop_c_diary($c_member_id, $c_diary['c_member_id']);
1127    pne_cache_drop('p_h_home_c_diary_my_comment_list4c_member_id', $c_member_id, 5);
1128
1129    $data = array(
1130        'c_member_id' => intval($c_member_id),
1131        'c_diary_id' => intval($c_diary_id),
1132        'body' => $body,
1133        'r_datetime' => db_now(),
1134        'image_filename_1' => '',
1135        'image_filename_2' => '',
1136        'image_filename_3' => '',
1137        'number' => db_diary_get_max_c_diary_comment_number4diary($c_diary_id)+1,
1138    );
1139    return db_insert('c_diary_comment', $data);
1140}
1141
1142/**
1143 * 日記コメント用画像追加
1144 */
1145function db_diary_insert_c_diary_comment_images($c_diary_comment_id, $image_filename_1 = '', $image_filename_2 = '', $image_filename_3 = '')
1146{
1147    $data = array();
1148    if ($image_filename_1) $data['image_filename_1'] = $image_filename_1;
1149    if ($image_filename_2) $data['image_filename_2'] = $image_filename_2;
1150    if ($image_filename_3) $data['image_filename_3'] = $image_filename_3;
1151
1152    $where = array(
1153        'c_diary_comment_id' => intval($c_diary_comment_id),
1154    );
1155    return db_update('c_diary_comment', $data, $where);
1156}
1157
1158/**
1159 * 日記コメント削除
1160 *
1161 * @param   int $c_diary_comment_id
1162 * @param   int $u  : 削除しようとしている人の c_member_id
1163 */
1164function db_diary_delete_c_diary_comment($c_diary_comment_id, $u)
1165{
1166    $dc = _do_c_diary_comment4c_diary_comment_id($c_diary_comment_id);
1167    if ($dc['c_member_id'] != $u && $dc['c_member_id_author'] != $u) {
1168        return false;
1169    }
1170
1171    db_image_data_delete($dc['image_filename_1']);
1172    db_image_data_delete($dc['image_filename_2']);
1173    db_image_data_delete($dc['image_filename_3']);
1174
1175    $sql = 'DELETE FROM c_diary_comment WHERE c_diary_comment_id = ?';
1176    $params = array(intval($c_diary_comment_id));
1177    return db_query($sql, $params);
1178}
1179
1180// 日記公開範囲の一括設定をする
1181function db_diary_update_public_flag_diary_all($c_member_id, $public_flag)
1182{
1183    $data = array(
1184        'public_flag' => util_cast_public_flag_diary($public_flag),
1185    );
1186
1187    $where = array(
1188        'c_member_id' => intval($c_member_id),
1189    );
1190    return db_update('c_diary', $data, $where);
1191}
1192
1193/**
1194 * 現在の日記へのコメントのナンバーの最大値を返す
1195 */
1196function db_diary_get_max_c_diary_comment_number4diary($c_diary_id)
1197{
1198    $sql = 'SELECT MAX(number) FROM c_diary_comment WHERE c_diary_id = ?';
1199    $params = array(intval($c_diary_id));
1200    return db_get_one($sql, $params, 'main');
1201}
1202
1203/**
1204 * SNS全体の最新日記リスト取得
1205 * 日記公開範囲を考慮
1206 *
1207 * @param   int $limit
1208 * @return  array_of_array  (c_diary.*, nickname)
1209 */
1210function p_h_home_c_diary_all_list($limit)
1211{
1212    $sql = 'SELECT * FROM c_diary WHERE public_flag = \'public\''
1213         . ' ORDER BY c_diary.r_datetime DESC';
1214
1215    $c_diary_list_all = db_get_all_limit($sql, 0, $limit);
1216
1217    foreach ($c_diary_list_all as $key => $value) {
1218        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
1219        $c_diary_list_all[$key]['nickname'] = $c_member['nickname'];
1220        $c_diary_list_all[$key]['count_comments'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']);
1221    }
1222    return $c_diary_list_all;
1223}
1224
1225
1226/**
1227 * 日記コメント記入履歴の追加
1228 *
1229 * @param  int    $c_member_id
1230 * @param  int    $c_diary_id
1231 */
1232function db_diary_insert_c_diary_comment_log($c_member_id, $c_diary_id)
1233{
1234    $sql = 'SELECT c_diary_id FROM c_diary_comment_log'
1235         . ' WHERE c_member_id = ? AND c_diary_id = ?';
1236    $params = array(intval($c_member_id), intval($c_diary_id));
1237    $log_id = db_get_one($sql, $params, 'main');
1238    if (!$log_id) {
1239        $data = array(
1240            'c_member_id' => intval($c_member_id),
1241            'c_diary_id' => intval($c_diary_id),
1242            'r_datetime' => db_now(),
1243        );
1244        return db_insert('c_diary_comment_log', $data);
1245    }
1246    return false;
1247}
1248
1249/**
1250 * 日記コメント記入履歴の更新
1251 *
1252 * @param  int    $c_diary_id
1253 */
1254function db_diary_update_c_diary_comment_log($c_diary_id)
1255{
1256    $data = array(
1257        'r_datetime' => db_now(),
1258    );
1259    $where = array('c_diary_id' => intval($c_diary_id));
1260    return db_update('c_diary_comment_log', $data, $where);
1261}
1262
1263/**
1264 * 日記コメント記入履歴の削除
1265 *
1266 * @param  int    $c_member_id
1267 * @param  int    $c_diary_id
1268 * 該当c_diary_idへのコメント数が0なら、日記コメント記入履歴も削除する。
1269 *
1270 */
1271function db_diary_delete_c_diary_comment_log($c_member_id, $c_diary_id)
1272{
1273    // 投稿したコメントの有無
1274    $sql = 'SELECT COUNT(c_diary_comment_id) FROM c_diary_comment'
1275         . ' WHERE c_member_id = ? AND c_diary_id = ?';
1276    $params = array(intval($c_member_id), intval($c_diary_id));
1277    $count = db_get_one($sql, $params, 'main');
1278
1279    // コメントが無ければ履歴削除
1280    if (!$count) {
1281        $sql = 'DELETE FROM c_diary_comment_log'
1282             . ' WHERE c_member_id = ? AND c_diary_id = ?';
1283        $params = array(intval($c_member_id), intval($c_diary_id));
1284        db_query($sql, $params);
1285    }
1286    $sql = 'SELECT * FROM c_diary_comment WHERE c_diary_id = ?'
1287         . ' ORDER BY c_diary_comment_id DESC';
1288    $params = array(intval($c_diary_id));
1289    $comment = db_get_row($sql, $params, 'main');
1290
1291    // 最新コメントの日付で履歴更新
1292    $data = array(
1293        'r_datetime' => $comment['r_datetime'],
1294    );
1295    $where = array('c_diary_id' => intval($c_diary_id));
1296    return db_update('c_diary_comment_log', $data, $where);
1297}
1298
1299function db_diary_is_writable_comment4c_diary_id($c_diary_id)
1300{
1301    $max_c_diary_comment_number = db_diary_get_max_c_diary_comment_number4diary($c_diary_id);
1302    if ($max_c_diary_comment_number >= 1000) {
1303        return false;
1304    }
1305
1306    return true;
1307}
1308
1309/**
1310 * メンバーの日記とコメントを削除
1311 *
1312 * @param  int    $c_member_id
1313 *
1314 */
1315function db_diary_delete4c_member_id($c_member_id)
1316{
1317    $sql = 'SELECT * FROM c_diary WHERE c_member_id = ?';
1318    $single = array(intval($c_member_id));
1319    $c_diary_list = db_get_all($sql, $single, 'main');
1320    foreach ($c_diary_list as $c_diary) {
1321        db_image_data_delete($c_diary['image_filename_1']);
1322        db_image_data_delete($c_diary['image_filename_2']);
1323        db_image_data_delete($c_diary['image_filename_3']);
1324
1325        // c_diary_comment
1326        $sql = 'SELECT * FROM c_diary_comment WHERE c_diary_id = ?';
1327        $params = array(intval($c_diary['c_diary_id']));
1328        $c_diary_comment_list = db_get_all($sql, $params, 'main');
1329        foreach ($c_diary_comment_list as $c_diary_comment) {
1330            db_image_data_delete($c_diary_comment['image_filename_1']);
1331            db_image_data_delete($c_diary_comment['image_filename_2']);
1332            db_image_data_delete($c_diary_comment['image_filename_3']);
1333        }
1334
1335        $sql = 'DELETE FROM c_diary_comment WHERE c_diary_id = ?';
1336        db_query($sql, $params);
1337    }
1338    $sql = 'DELETE FROM c_diary WHERE c_member_id = ?';
1339    db_query($sql, $single);
1340}
1341
1342?>
Note: See TracBrowser for help on using the repository browser.