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

source: OpenPNE/trunk/webapp/modules/kanshi/lib/kanshi.php @ 8444

Last change on this file since 8444 was 8444, checked in by ebihara, 13 years ago

#2982:SNSを監視するためのAPI(kanshi モジュール)を追加

File size: 29.6 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7
8/**
9 * 監視モジュールへのアクセスを許可されたIPかどうかチェック
10 *
11 * @param string $ip_string
12 * @return boolean
13 */
14function kanshi_check_access_ip($ip_string)
15{
16    $allow = false;
17    foreach($GLOBALS['_ALLOWED_IP_LIST_FOR_KANSHI'] as $ip) {
18        if(strcmp($ip_string, $ip) == 0) 
19            $allow = true;
20    }
21    return $allow;
22}
23
24/**
25 * 監視モジュールへのアクセスを許可されたIPをログに残す
26 */
27function kanshi_allow_ip_log($ip_string)
28{
29    if(!is_dir(OPENPNE_VAR_DIR. '/log/kanshi')){
30        mkdir(OPENPNE_VAR_DIR. '/log/kanshi');
31    }
32    $fp = fopen(OPENPNE_VAR_DIR. '/log/kanshi/allow_ip.log', 'a+t');
33    fwrite($fp, '['.date("Y/m/d H:i:s").'] ' . $ip_string . "\n");
34    fclose($fp);
35}
36
37/**
38 * 監視モジュールへのアクセスを拒否されたIPをログに残す
39 */
40function kanshi_disallow_ip_log($ip_string)
41{
42    if(!is_dir(OPENPNE_VAR_DIR. '/log/kanshi')){
43        mkdir(OPENPNE_VAR_DIR. '/log/kanshi');
44    }
45    $fp = fopen(OPENPNE_VAR_DIR. '/log/kanshi/disallow_ip.log', 'a+t');
46    fwrite($fp, '['.date("Y/m/d H:i:s").'] ' . $ip_string . "\n");
47    fclose($fp);
48}
49 
50/**
51 * 日時を YYYY-MM-DD HH:MM:SS形式 に変換する
52 *
53 * @param string $date_string
54 * @return string YYYY-MM-DD HH:MM:SS
55 */
56function kanshi_get_date($date_string)
57{
58    return date('Y-m-d H:i:s', strtotime($date_string));
59}
60
61/**
62 * 日記リストを取得
63 */
64function kanshi_get_diary_list($updated_from, $updated_to, $offset, $limit)
65{
66    $sql  = " SELECT
67                cd.*,
68                cd.c_diary_id as data_id,
69                cd.subject as title,
70                cd.body as content,
71                cd.c_member_id as creator
72            ";
73    $sql .= " FROM c_diary cd";
74    $sql .= " WHERE 1";
75
76    $params = array();
77
78    if(!empty($updated_from)) {
79        $sql .= " AND (r_datetime > ? OR u_datetime > ?)";
80        $params[] = $updated_from;
81        $params[] = $updated_from;
82    }
83    if(!empty($updated_to)) {
84        $sql .= " AND (r_datetime < ? OR u_datetime < ?)";
85        $params[] = $updated_to;
86        $params[] = $updated_to;
87    }
88    $sql .= " ORDER BY u_datetime";
89
90    if(!empty($offset) || !empty($limit)){
91        if(empty($offset)) $offset = 0;
92        if(empty($limit))  $limit  = count(db_get_col($sql, $params)) - $offset;
93
94        $diary_list = db_get_all_limit($sql, $offset, $limit, $params);
95    }
96    else{
97        $diary_list = db_get_all($sql, $params);
98    }
99
100    if(count($diary_list) > 0) {
101        foreach ($diary_list as $num => $diary) {
102            $diary_list[$num]['c_member'] = db_member_c_member4c_member_id($diary['c_member_id'], true, true, 'private');
103        }
104    }
105
106    return $diary_list;
107}
108
109/**
110 * 日記コメントリストを取得
111 */
112function kanshi_get_diary_comment_list($updated_from, $updated_to, $offset, $limit)
113{
114    $sql  = " SELECT
115                cdc.*,
116                cdc.c_diary_comment_id as data_id,
117                cdc.body as content,
118                cdc.c_member_id as creator
119            ";
120    $sql .= " FROM c_diary_comment cdc";
121    $sql .= " WHERE 1";
122
123    $params = array();
124    if(!empty($updated_from)) {
125        $sql .= " AND r_datetime > ?";
126        $params[] = $updated_from;
127    }
128    if(!empty($updated_to)) {
129        $sql .= " AND r_datetime < ?";
130        $params[] = $updated_to;
131    }
132    $sql .= " ORDER BY r_datetime";
133
134    if(!empty($offset) || !empty($limit)){
135        if(empty($offset)) $offset = 0;
136        if(empty($limit))  $limit  = count(db_get_col($sql, $params)) - $offset;
137
138        $diary_comment_list = db_get_all_limit($sql, $offset, $limit, $params);
139    }
140    else{
141        $diary_comment_list = db_get_all($sql, $params);
142    }
143
144    if(count($diary_comment_list) > 0) {
145        foreach ($diary_comment_list as $num => $diary_comment) {
146            $diary_comment_list[$num]['c_member'] = db_member_c_member4c_member_id($diary_comment['c_member_id'], true, true, 'private');
147        }
148    }
149
150    return $diary_comment_list;
151}
152
153/**
154 * 掲示板・イベントリストを取得
155 */
156function kanshi_get_topic_event_list($updated_from, $updated_to, $offset, $limit)
157{
158    $sql  = " SELECT
159                cct.*,
160                cct.c_commu_topic_id as data_id,
161                cct.name as title,
162                cctc.body as content,
163                cct.c_member_id as creator
164            ";
165    $sql .= " FROM c_commu_topic cct";
166    $sql .= " INNER JOIN c_commu_topic_comment cctc ON cct.c_commu_topic_id = cctc.c_commu_topic_id";
167    $sql .= " WHERE 1";
168
169    $params = array();
170    if(!empty($updated_from)) {
171        $sql .= " AND cct.r_datetime > ?";
172        $params[] = $updated_from;
173    }
174    if(!empty($updated_to)) {
175        $sql .= " AND cct.r_datetime < ?";
176        $params[] = $updated_to;
177    }
178    $sql .= " GROUP BY cct.c_commu_topic_id";
179    $sql .= " ORDER BY cct.r_datetime";
180
181    if(!empty($offset) || !empty($limit)){
182        if(empty($offset)) $offset = 0;
183        if(empty($limit))  $limit  = count(db_get_col($sql, $params)) - $offset;
184
185        $topic_event_list = db_get_all_limit($sql, $offset, $limit, $params);
186    }
187    else{
188        $topic_event_list = db_get_all($sql, $params);
189    }
190
191    if(count($topic_event_list) > 0) {
192        foreach ($topic_event_list as $num => $topic_event) {
193            $topic_event_list[$num]['c_member'] = db_member_c_member4c_member_id($topic_event['c_member_id'], true, true, 'private');
194        }
195    }
196
197    return $topic_event_list;
198}
199
200/**
201 * 掲示板・イベントコメントリストを取得
202 */
203function kanshi_get_topic_event_comment_list($updated_from, $updated_to, $offset, $limit)
204{
205    $sql  = " SELECT
206                cctc.*,
207                cctc.c_commu_topic_comment_id as data_id,
208                cctc.body as content,
209                cctc.c_member_id as creator
210            ";
211    $sql .= " FROM c_commu_topic_comment cctc";
212    $sql .= " LEFT JOIN c_commu_topic cct ON cctc.c_commu_topic_id = cct.c_commu_topic_id";
213    $sql .= " WHERE 1 AND cctc.number <> 0";
214
215    $params = array();
216    if(!empty($updated_from)) {
217        $sql .= " AND cctc.r_datetime > ?";
218        $params[] = $updated_from;
219    }
220    if(!empty($updated_to)) {
221        $sql .= " AND cctc.r_datetime < ?";
222        $params[] = $updated_to;
223    }
224    $sql .= " ORDER BY cctc.r_datetime";
225
226    if(!empty($offset) || !empty($limit)){
227        if(empty($offset)) $offset = 0;
228        if(empty($limit))  $limit  = count(db_get_col($sql, $params)) - $offset;
229
230        $topic_event_comment_list = db_get_all_limit($sql, $offset, $limit, $params);
231    }
232    else{
233        $topic_event_comment_list = db_get_all($sql, $params);
234    }
235
236    if(count($topic_event_comment_list) > 0) {
237        foreach ($topic_event_comment_list as $num => $topic_event_comment) {
238            $topic_event_comment_list[$num]['c_member'] = db_member_c_member4c_member_id($topic_event_comment['c_member_id'], true, true, 'private');
239        }
240    }
241
242    return $topic_event_comment_list;
243}
244
245/**
246 * コミュニティリストを取得
247 */
248function kanshi_get_community_list($updated_from, $updated_to, $offset, $limit)
249{
250    $sql  = " SELECT
251                cc.*,
252                cc.c_commu_id as data_id,
253                cc.name as title,
254                cc.info as content,
255                cc.c_member_id_admin as creator
256            ";
257    $sql .= " FROM c_commu cc";
258    $sql .= " WHERE 1";
259
260    $params = array();
261    if(!empty($updated_from)) {
262        $sql .= " AND r_datetime > ?";
263        $params[] = $updated_from;
264    }
265    if(!empty($updated_to)) {
266        $sql .= " AND r_datetime < ?";
267        $params[] = $updated_to;
268    }
269
270    if(!empty($offset) || !empty($limit)){
271        if(empty($offset)) $offset = 0;
272        if(empty($limit))  $limit  = count(db_get_col($sql, $params)) - $offset;
273
274        $community_list = db_get_all_limit($sql, $offset, $limit, $params);
275    }
276    else{
277        $community_list = db_get_all($sql, $params);
278    }
279
280    if(count($community_list) > 0) {
281        foreach ($community_list as $num => $community) {
282            $community_list[$num]['c_member'] = db_member_c_member4c_member_id($community['c_member_id_admin'], true, true, 'private');
283        }
284    }
285
286    return $community_list;
287}
288
289/**
290 * 画像リスト取得
291 */
292function kanshi_get_image_list($updated_from, $updated_to, $offset, $limit)
293{
294    $sql  = " SELECT
295                c_image_id as data_id,
296                filename as title,
297                r_datetime
298            ";
299    $sql .= " FROM c_image";
300    $sql .= " WHERE 1"; 
301
302    $params = array();
303    if(!empty($updated_from)) {
304        $sql .= " AND r_datetime > ?";
305        $params[] = $updated_from;
306    } 
307    if(!empty($updated_to)) {
308        $sql .= " AND r_datetime < ?";
309        $params[] = $updated_to;
310    }
311    $sql .= " ORDER BY r_datetime";
312
313    if(!empty($offset) || !empty($limit)){
314        if(empty($offset)) $offset = 0;
315        if(empty($limit))  $limit  = count(db_get_col($sql, $params)) - $offset;
316
317        $c_image_list = db_get_all_limit($sql, $offset, $limit, $params);
318    }
319    else{
320        $c_image_list = db_get_all($sql, $params);
321    }
322
323    if(count($c_image_list) > 0) {
324        foreach ($c_image_list as $num => $c_image) {
325            $c_image_list[$num]['image_url'] = OPENPNE_URL . 'img.php?filename=' . $c_image['title'];
326            $temp = explode("_", $c_image['title']);
327
328            switch ($temp[0]) {
329                case 'm':   //メンバー画像
330                    $c_image_list[$num]['creator']  = $temp[1];
331                    $c_image_list[$num]['c_member'] = db_member_c_member4c_member_id($temp[1], true, true, 'private');
332
333                    $c_image_list[$num]['refer_data_url'] = OPENPNE_URL . '&a=page_f_home&target_c_member_id='.$temp[1];
334                break;
335                case 'c':   //コミュニティ画像
336                    $id = db_commu_c_commu4c_commu_id($temp[1]);
337                    $c_image_list[$num]['creator']  = $id['c_member_id_admin'];
338                    $c_image_list[$num]['c_member'] = db_member_c_member4c_member_id($id['c_member_id_admin'], true, true, 'private');
339                   
340                    $c_image_list[$num]['refer_watch_type_id'] = 3;
341                    $c_image_list[$num]['refer_data_id']       = $temp[1];
342                    $c_image_list[$num]['refer_data_url']      = OPENPNE_URL . '&a=page_c_home&target_c_commu_id='.$temp[1];
343                break;
344                case 'd':   //日記画像
345                    $id = db_diary_get_c_diary4id($temp[1]);
346                    $c_image_list[$num]['creator']  = $id['c_member_id'];
347                    $c_image_list[$num]['c_member'] = db_member_c_member4c_member_id($id['c_member_id'], true, true, 'private');
348
349                    $c_image_list[$num]['refer_watch_type_id'] = 1;
350                    $c_image_list[$num]['refer_data_id']       = $temp[1];
351                    $c_image_list[$num]['refer_data_url']      = OPENPNE_URL . '&a=page_fh_diary&target_c_diary_id='.$temp[1];
352                break;
353                case 'dc':  //日記コメント画像
354                    $id = _do_c_diary_comment4c_diary_comment_id($temp[1]);
355                    $c_image_list[$num]['creator']  = $id['c_member_id'];
356                    $c_image_list[$num]['c_member'] = db_member_c_member4c_member_id($id['c_member_id'], true, true, 'private');
357
358                    $c_image_list[$num]['refer_watch_type_id'] = 4;
359                    $c_image_list[$num]['refer_data_id']       = $temp[1];
360                    $c_image_list[$num]['refer_data_url']      = OPENPNE_URL . '&a=page_fh_diary&target_c_diary_id='.$id['c_diary_id'];
361                break;
362                case 't':   //トピック、イベント画像
363                    $id = db_commu_c_topic4c_commu_topic_id($temp[1]);
364                    $c_image_list[$num]['creator']  = $id['c_member_id'];
365                    $c_image_list[$num]['c_member'] = db_member_c_member4c_member_id($id['c_member_id'], true, true, 'private');
366
367                    $c_image_list[$num]['refer_watch_type_id'] = 2;
368                    $c_image_list[$num]['refer_data_id']       = $temp[1];
369                    $c_image_list[$num]['refer_data_url']      = OPENPNE_URL . '&a=page_c_topic_detail&target_c_commu_topic_id='.$temp[1];
370                break;
371                case 'tc':  //トピック、イベントコメント画像
372                    $id = db_commu_c_commu_topic_comment4c_commu_topic_comment_id_2($temp[1]);
373                    $c_image_list[$num]['creator']  = $id['c_member_id'];
374                    $c_image_list[$num]['c_member'] = db_member_c_member4c_member_id($id['c_member_id'], true, true, 'private');
375
376                    $c_image_list[$num]['refer_watch_type_id'] = 5;
377                    $c_image_list[$num]['refer_data_id']       = $temp[1];
378                    $c_image_list[$num]['param'] = '&a=page_c_topic_detail&target_c_commu_topic_id='.$id['c_commu_topic_id'];
379                break;
380            }
381        }
382    }
383
384    return $c_image_list;
385}
386
387/**
388 * 日記display更新(display=0のものを削除)
389 */
390function kanshi_update_diary4update_list($update_list)
391{
392    $result_list = array();
393    foreach($update_list as $num => $data) {
394        if(strcmp($data['display'], 0) == 0) {
395            list($result, $error_code, $error_message) = kanshi_db_diary_delete_c_diary($data['c_diary_id']);
396            $result_list[$num]['result']        = $result;
397            $result_list[$num]['error_code']    = $error_code;
398            $result_list[$num]['error_message'] = $error_message;
399            $result_list[$num]['import_seq']    = $data['import_seq'];
400        }
401        else{
402            $result_list[$num]['result']        = 1;
403            $result_list[$num]['error_code']    = 0;
404            $result_list[$num]['error_message'] = '';
405            $result_list[$num]['import_seq']    = $data['import_seq'];
406        }
407    }
408    return $result_list;
409}
410
411/**
412 * 日記コメントdisplay更新(display=0のものを削除)
413 */
414function kanshi_update_diary_comment4update_list($update_list)
415{
416    $result_list = array();
417    foreach($update_list as $num => $data) {
418        if(strcmp($data['display'], 0) == 0) {
419            list($result, $error_code, $error_message) = kanshi_db_diary_delete_c_diary_comment($data['c_diary_comment_id']);
420            $result_list[$num]['result']        = $result;
421            $result_list[$num]['error_code']    = $error_code;
422            $result_list[$num]['error_message'] = $error_message;
423            $result_list[$num]['import_seq']    = $data['import_seq'];
424        }
425        else{
426            $result_list[$num]['result']        = 1;
427            $result_list[$num]['error_code']    = 0;
428            $result_list[$num]['error_message'] = '';
429            $result_list[$num]['import_seq']    = $data['import_seq'];
430        }
431    }
432    return $result_list;
433}
434
435/**
436 * 掲示板・イベントdisplay更新(display=0のものを削除)
437 */
438function kanshi_update_topic_event4update_list($update_list)
439{
440    $result_list = array();
441    foreach($update_list as $num => $data) {
442        if(strcmp($data['display'], 0) == 0) {
443            list($result, $error_code, $error_message) = kanshi_db_commu_delete_c_commu_topic($data['c_commu_topic_id']);
444            $result_list[$num]['result']        = $result;
445            $result_list[$num]['error_code']    = $error_code;
446            $result_list[$num]['error_message'] = $error_message;
447            $result_list[$num]['import_seq']    = $data['import_seq'];
448        }
449        else{
450            $result_list[$num]['result']        = 1;
451            $result_list[$num]['error_code']    = 0;
452            $result_list[$num]['error_message'] = '';
453            $result_list[$num]['import_seq']    = $data['import_seq'];
454        }
455    }
456    return $result_list;
457}
458
459/**
460 * 掲示板・イベントコメントdisplay更新(display=0のものを削除)
461 */
462function kanshi_update_topic_event_comment4update_list($update_list)
463{
464    $result_list = array();
465    foreach($update_list as $num => $data) {
466        if(strcmp($data['display'], 0) == 0) {
467            list($result, $error_code, $error_message) = kanshi_db_commu_delete_c_commu_topic_comment($data['c_commu_topic_comment_id']);
468            $result_list[$num]['result']        = $result;
469            $result_list[$num]['error_code']    = $error_code;
470            $result_list[$num]['error_message'] = $error_message;
471            $result_list[$num]['import_seq']    = $data['import_seq'];
472        }
473        else{
474            $result_list[$num]['result']        = 1;
475            $result_list[$num]['error_code']    = 0;
476            $result_list[$num]['error_message'] = '';
477            $result_list[$num]['import_seq']    = $data['import_seq'];
478        }
479    }
480    return $result_list;
481}
482
483/**
484 * コミュニティdisplay更新(display=0のものを削除)
485 */
486function kanshi_update_community4update_list($update_list)
487{
488    $result_list = array();
489    foreach($update_list as $num => $data) {
490        if(strcmp($data['display'], 0) == 0) {
491            list($result, $error_code, $error_message) = kanshi_db_common_delete_c_commu($data['c_commu_id']);
492            $result_list[$num]['result']        = $result;
493            $result_list[$num]['error_code']    = $error_code;
494            $result_list[$num]['error_message'] = $error_message;
495            $result_list[$num]['import_seq']    = $data['import_seq'];
496        }
497        else{
498            $result_list[$num]['result']        = 1;
499            $result_list[$num]['error_code']    = 0;
500            $result_list[$num]['error_message'] = '';
501            $result_list[$num]['import_seq']    = $data['import_seq'];
502        }
503    }
504    return $result_list;
505}
506
507/**
508 * 画像ファイルdisplay更新(display=0のものを削除)
509 */
510function kanshi_update_image4update_list($update_list)
511{
512    $result_list = array();
513    foreach($update_list as $num => $data) {
514        if(strcmp($data['display'], 0) == 0) {
515            list($result, $error_code, $error_message) = kanshi_delete_c_image4c_image_id($data['c_image_id']);
516            $result_list[$num]['result']        = $result;
517            $result_list[$num]['error_code']    = $error_code;
518            $result_list[$num]['error_message'] = $error_message;
519            $result_list[$num]['import_seq']    = $data['import_seq'];
520        }
521        else{
522            $result_list[$num]['result']        = 1;
523            $result_list[$num]['error_code']    = 0;
524            $result_list[$num]['error_message'] = '';
525            $result_list[$num]['import_seq']    = $data['import_seq'];
526        }
527    }
528    return $result_list;
529}
530
531/**
532 * 日記削除
533 * コメント、画像も削除
534 *
535 * @param int $c_diary_id
536 */
537function kanshi_db_diary_delete_c_diary($c_diary_id)
538{
539    if($c_diary = db_diary_get_c_diary4id($c_diary_id)) {
540        //function cacheの削除
541        pne_cache_drop('db_diary_get_c_diary_list4c_member_id', $c_diary['c_member_id'], 5);
542
543        // 画像
544        image_data_delete($c_diary['image_filename_1']);
545        image_data_delete($c_diary['image_filename_2']);
546        image_data_delete($c_diary['image_filename_3']);
547
548        // コメント
549        $sql = 'SELECT image_filename_1, image_filename_2, image_filename_3 FROM c_diary_comment WHERE c_diary_id =?';
550        $params = array(intval($c_diary_id));
551        $comment_images = db_get_all($sql, $params);
552
553        //カテゴリ
554        db_diary_category_delete_c_diary_category_diary($c_diary_id);
555
556        foreach ($comment_images as $value) {
557            image_data_delete($value['image_filename_1']);
558            image_data_delete($value['image_filename_2']);
559            image_data_delete($value['image_filename_3']);
560        }
561
562        $sql = 'DELETE FROM c_diary_comment WHERE c_diary_id = ?';
563        db_query($sql, $params);
564
565        // 日記
566        $sql = 'DELETE FROM c_diary WHERE c_diary_id = ?';
567        if(db_query($sql, $params)) {
568            return array(1, 0, '');
569        }
570        else{
571            return array(0, 2, 'DB更新エラー');
572        }
573    }
574    else{
575//        return array(0, 99, '既に削除されているか存在しません');
576        // 監視ツールがリトライを行ってしまう為、成功フラグを返してしまう
577        return array(1, 0, '');
578    }
579}
580
581/**
582 * 日記コメント削除
583 *
584 * @param   int $c_diary_comment_id
585 * @param   int $u  : 削除しようとしている人の c_member_id
586 */
587function kanshi_db_diary_delete_c_diary_comment($c_diary_comment_id)
588{
589    if($dc = _do_c_diary_comment4c_diary_comment_id($c_diary_comment_id)) {
590
591        image_data_delete($dc['image_filename_1']);
592        image_data_delete($dc['image_filename_2']);
593        image_data_delete($dc['image_filename_3']);
594
595        $sql = 'DELETE FROM c_diary_comment WHERE c_diary_comment_id = ?';
596        $params = array(intval($c_diary_comment_id));
597        if(db_query($sql, $params)) {
598            return array(1, 0, '');
599        }
600        else{
601            return array(0, 2, 'DB更新エラー');
602        }
603    }
604    else{
605//        return array(0, 99, '既に削除されているか存在しません');
606        // 監視ツールがリトライを行ってしまう為、成功フラグを返してしまう
607        return array(1, 0, '');
608    }
609}
610
611/**
612 * トピック削除
613 */
614function kanshi_db_commu_delete_c_commu_topic($c_commu_topic_id)
615{
616    if(db_commu_c_commu_topic4c_commu_topic_id($c_commu_topic_id)) {
617        //function cacheの削除
618        cache_drop_c_commu_topic($c_commu_topic_id);
619
620        // c_commu_topic_comment(画像)
621        $sql = 'SELECT image_filename1, image_filename2, image_filename3, filename' .
622                ' FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
623        $params = array(intval($c_commu_topic_id));
624
625        $topic_comment_list = db_get_all($sql, $params);
626        foreach ($topic_comment_list as $topic_comment) {
627            image_data_delete($topic_comment['image_filename1']);
628            image_data_delete($topic_comment['image_filename2']);
629            image_data_delete($topic_comment['image_filename3']);
630            db_file_delete_c_file($topic_comment['filename']);
631        }
632
633        $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
634        db_query($sql, $params);
635
636        $sql = 'DELETE FROM c_event_member WHERE c_commu_topic_id = ?';
637        db_query($sql, $params);
638
639        $sql = 'DELETE FROM c_commu_topic WHERE c_commu_topic_id = ?';
640        if(db_query($sql, $params)) {
641            return array(1, 0, '');
642        }
643        else{
644            return array(0, 2, 'DB更新エラー');
645        }
646    }
647    else{
648//        return array(0, 99, '既に削除されているか存在しません');
649        // 監視ツールがリトライを行ってしまう為、成功フラグを返してしまう
650        return array(1, 0, '');
651    }
652}
653
654/**
655 * トピックコメント削除
656 */
657function kanshi_db_commu_delete_c_commu_topic_comment($c_commu_topic_comment_id)
658{
659    if(db_commu_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id)) {
660        $sql = 'SELECT image_filename1, image_filename2, image_filename3' .
661            ' FROM c_commu_topic_comment' .
662            ' WHERE c_commu_topic_comment_id = ?';
663        $params = array(intval($c_commu_topic_comment_id));
664        $topic_comment = db_get_row($sql, $params);
665        image_data_delete($topic_comment['image_filename1']);
666        image_data_delete($topic_comment['image_filename2']);
667        image_data_delete($topic_comment['image_filename3']);
668
669        $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_comment_id = ?';
670        if(db_query($sql, $params)){
671            return array(1, 0, '');
672        }
673        else{
674            return array(0, 2, 'DB更新エラー');
675        }
676    }
677    else{
678//        return array(0, 99, '既に削除されているか存在しません');
679        // 監視ツールがリトライを行ってしまう為、成功フラグを返してしまう
680        return array(1, 0, '');
681    }
682}
683
684/**
685 * コミュニティ削除
686 * 関連情報を合わせて削除する
687 *
688 * @param int $c_commu_id
689 */
690function kanshi_db_common_delete_c_commu($c_commu_id)
691{
692    if(db_commu_c_commu4c_commu_id($c_commu_id)) {
693        //function cacheの削除
694        cache_drop_c_commu($c_commu_id);
695
696        $single = array(intval($c_commu_id));
697
698        $sql = 'SELECT * FROM c_commu WHERE c_commu_id = ?';
699        $c_commu = db_get_row($sql, $single);
700
701        // 画像削除
702        image_data_delete($c_commu['image_filename']);
703
704        // c_commu_admin_confirm
705        $sql = 'DELETE FROM c_commu_admin_confirm WHERE c_commu_id = ?';
706        db_query($sql, $single);
707
708        // c_commu_member
709        $sql = 'DELETE FROM c_commu_member WHERE c_commu_id = ?';
710        db_query($sql, $single);
711
712        // c_commu_member_confirm
713        $sql = 'DELETE FROM c_commu_member_confirm WHERE c_commu_id = ?';
714        db_query($sql, $single);
715
716        // c_commu_review
717        $sql = 'DELETE FROM c_commu_review WHERE c_commu_id = ?';
718        db_query($sql, $single);
719
720        ///トピック関連
721        $sql = 'SELECT * FROM c_commu_topic WHERE c_commu_id = ?';
722        $topic_list = db_get_all($sql, $single);
723
724        foreach ($topic_list as $topic) {
725            // c_commu_topic_comment(画像)
726            $sql = 'SELECT image_filename1, image_filename2, image_filename3, filename' .
727                ' FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
728            $params = array(intval($topic['c_commu_topic_id']));
729            $topic_comment_list = db_get_all($sql, $params);
730            foreach ($topic_comment_list as $topic_comment) {
731                image_data_delete($topic_comment['image_filename1']);
732                image_data_delete($topic_comment['image_filename2']);
733                image_data_delete($topic_comment['image_filename3']);
734                db_file_delete_c_file($topic_comment['filename']);
735            }
736
737            $sql = 'DELETE FROM c_commu_topic_comment WHERE c_commu_topic_id = ?';
738            db_query($sql, $params);
739
740            // c_event_member
741            $sql = 'DELETE FROM c_event_member WHERE c_commu_topic_id = ?';
742            db_query($sql, $params);
743        }
744
745        // c_commu_topic
746        $sql = 'DELETE FROM c_commu_topic WHERE c_commu_id = ?';
747        db_query($sql, $single);
748
749        // c_commu
750        $sql = 'DELETE FROM c_commu WHERE c_commu_id = ?';
751        if(db_query($sql, $single)) {
752            return array(1, 0, '');
753        }
754        else{
755            return array(0, 2, 'DB更新エラー');
756        }
757    }
758    else{
759//        return array(0, 99, '既に削除されているか存在しません');
760        // 監視ツールがリトライを行ってしまう為、成功フラグを返してしまう
761        return array(1, 0, '');
762    }
763}
764
765/**
766 * 画像ファイル削除
767 */
768function  kanshi_delete_c_image4c_image_id($c_image_id)
769{
770    if($c_image = db_image_c_image4c_image_id($c_image_id)) {
771        if (strpos($c_image['filename'], 'skin_') === 0 || strpos($c_image['filename'], 'no_') === 0) {
772            return array(0, 99, 'この画像は削除できません');
773        }
774        kanshi_db_admin_delete_c_image_link4image_filename($c_image['filename']);
775        image_data_delete($c_image['filename']);
776        return array(1, 0, '');
777    }
778    else{
779//        return array(0, 99, '既に削除されているか存在しません');
780        // 監視ツールがリトライを行ってしまう為、成功フラグを返してしまう
781        return array(1, 0, '');
782    }
783}
784
785
786function kanshi_db_admin_delete_c_image_link4image_filename($image_filename)
787{
788    $_pos = strpos($image_filename, '_');
789    $prefix = substr($image_filename, 0, $_pos);
790
791    if ($prefix == 'b') {
792        $sql = 'DELETE FROM c_banner WHERE image_filename = ?';
793        $params = array($image_filename);
794        db_query($sql, $params);
795    }
796
797    if ($prefix == 'c') {
798        $tbl = 'c_commu';
799        kanshi_db_admin_empty_image_filename($tbl, $image_filename);
800    }
801
802    if ($prefix == 't' || $prefix == 'tc') {
803        $tbl = 'c_commu_topic_comment';
804        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename1');
805        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename2');
806        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename3');
807    }
808
809    if ($prefix == 'd') {
810        $tbl = 'c_diary';
811        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
812        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
813        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
814    }
815
816    if ($prefix == 'dc') {
817        $tbl = 'c_diary_comment';
818        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
819        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
820        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
821    }
822
823    if ($prefix == 'm') {
824        $tbl = 'c_member';
825        kanshi_db_admin_empty_image_filename($tbl, $image_filename);
826        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
827        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
828        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
829    }
830
831    if ($prefix == 'ms') {
832        $tbl = 'c_message';
833        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_1');
834        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_2');
835        kanshi_db_admin_empty_image_filename($tbl, $image_filename, 'image_filename_3');
836    }
837}
838
839function kanshi_db_admin_empty_image_filename($tbl, $image_filename, $column = 'image_filename')
840{
841    $data = array(
842        db_escapeIdentifier($column) => '',
843    );
844    $where = array(
845        db_escapeIdentifier($column) => $image_filename,
846    );
847
848    db_update(db_escapeIdentifier($tbl), $data, $where);
849}
850?>
851
Note: See TracBrowser for help on using the repository browser.