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