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

source: OpenPNE/trunk/webapp_biz/modules/biz/lib/mysql_functions.php @ 3591

Last change on this file since 3591 was 3591, checked in by ogawa, 15 years ago

#1006:SQL標準化ブランチの取り込み(r3532,r3548)

File size: 37.4 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//bizモジュール用 MySQL接続、操作用ライブラリ
8
9//予期しない多重定義を避けるため、必ず関数名にはbiz_というprefixをつける
10
11//GET---------------------------------------------
12
13//schedule_idの最大値を得る関数
14function biz_getScheduleMax()
15{
16    $sql = 'SELECT MAX(biz_schedule_id) FROM biz_schedule';
17    if ($count = db_get_one($sql, $params)) {
18        return $count;
19    } else {
20        return false;
21    }
22}
23
24//group_idの最大値を得る関数
25function biz_getGroupMax()
26{
27    $sql = 'SELECT MAX(biz_group_id) FROM biz_group';
28    if ($count = db_get_one($sql)) {
29        return $count;
30    } else {
31        return false;
32    }
33}
34
35//member_idの最大値を得る関数
36function biz_getMenberMax()
37{
38    $sql = 'SELECT MAX(c_member_id) FROM c_member';
39    if ($count = db_get_one($sql, $params)) {
40        return $count;
41    } else {
42        return false;
43    }
44}
45
46function biz_getShisetsuScheduleMax()
47{
48    $sql = 'SELECT MAX(biz_shisetsu_schedule_id) FROM biz_shisetsu_schedule';
49    if ($count = db_get_one($sql, $params)) {
50        return $count;
51    } else {
52        return false;
53    }
54}
55
56//指定された日付に存在する予定IDを得る関数
57function biz_getDateSchedule($y,$m,$d)
58{
59    $sql = 'SELECT biz_schedule_id FROM biz_schedule WHERE begin_date LIKE \''."$y-$m-$d%".'\' ORDER BY begin_time ASC ;';
60    return db_get_col($sql, $params);
61}
62
63//指定された予定IDの情報を得る関数
64function biz_getScheduleInfo($schedule_id)
65{
66    $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?';
67    $params = array(
68        intval($schedule_id),
69    );
70    return db_get_row($sql, $params);
71}
72
73function biz_getMemberNickname($c_member_id)
74{
75    $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
76    $params = array(
77        intval($c_member_id),
78    );
79
80    return db_get_one($sql, $params);
81}
82
83//指定された予定と同じ繰り返しグループに属するすべての予定idを得る関数
84function biz_getRepeatScheduleID($schedule_id)
85{
86    $sql = 'SELECT rep_first FROM biz_schedule WHERE biz_schedule_id = ?';
87    $params = array(
88        intval($schedule_id),
89    );
90    $first_id = db_get_one($sql, $params);
91
92    if (!$first_id) {  // 削除しようとした繰り返し予定が存在しない
93        return array();
94    } else {
95        $sql = 'SELECT biz_schedule_id FROM biz_schedule WHERE rep_first = ? ORDER BY begin_date';
96        $params = array(
97            intval($first_id),
98        );
99        $schedule = db_get_col($sql, $params);
100
101        return $schedule;
102    }
103}
104
105//指定された繰り返し予定IDの開始日を得る関数
106function biz_getRepeatBegin($schedule_id)
107{
108    $sql = 'SELECT rep_first FROM biz_schedule WHERE biz_schedule_id = ?';
109    $params = array(
110        intval($schedule_id),
111    );
112
113    $first_id = db_get_one($sql, $params);
114
115    $sql = 'SELECT begin_date FROM biz_schedule WHERE rep_first = ? ORDER BY begin_date';
116    $params = array(
117        intval($first_id),
118    );
119    $schedule = db_get_one($sql, $params);
120
121    return $schedule;
122}
123
124//指定された繰り返し予定IDの終了日を得る関数
125function biz_getRepeatFinish($schedule_id)
126{
127    $sql = 'SELECT rep_first FROM biz_schedule WHERE biz_schedule_id = ?';
128    $params = array(
129        intval($schedule_id),
130    );
131    $first_id = db_get_one($sql, $params);
132
133    $sql = 'SELECT begin_date FROM biz_schedule WHERE rep_first = ? ORDER BY begin_date DESC';
134    $params = array(
135        intval($first_id),
136    );
137    $schedule = db_get_one($sql, $params);
138
139    return $schedule;
140}
141
142//指定された予定に関する権限があるかどうかをチェックする関数
143function biz_isPermissionSchedule($u, $biz_schedule_id)
144{
145    $biz_schedule = biz_getScheduleInfo($biz_schedule_id);
146    $biz_schedule_member = biz_getJoinIdSchedule($biz_schedule_id);
147    $public_flag = $biz_schedule['public_flag'];
148    $biz_group_id = $biz_schedule['biz_group_id'];
149    $target_c_member_id = $biz_schedule['c_member_id'];
150
151    if (empty($biz_schedule)) {  // 存在しない予定には表示権限がない
152        return false;
153    }
154
155    switch ($public_flag) {
156    case 'private' :  // 予定参加者にのみ権限が与えられる予定
157        if ($target_c_member_id == $u) {  // 自分が予定作成者
158            return true;
159        } elseif(in_array($u, $biz_schedule_member)) {
160            return true;
161        } else {
162            return false;
163        }
164    default :  // すべてのメンバーに権限が与えられる予定
165        return true;
166    }
167}
168
169//指定された日付に存在する特定メンバーの予定idのみを得る関数
170function biz_getDateMemberSchedule($y, $m, $d, $target_c_member_id, $u)
171{
172    $schedule = array();
173    $contain = array();
174
175    $tmp = biz_getDateSchedule($y, $m, $d);
176    $sc_list = array();
177   
178    $biz_group_id_list = array();
179    foreach(biz_getJoinGroup($target_c_member_id) as $value) {
180        $biz_group_id_list[] = $value['biz_group_id'];
181    }
182
183    foreach ($tmp as $biz_schedule_id) {
184        $biz_schedule = biz_getScheduleInfo($biz_schedule_id);
185        $sql = 'SELECT c_member_id FROM biz_schedule_member WHERE biz_schedule_id = ?';
186        $biz_schedule_member_id_list = db_get_col($sql, array(intval($biz_schedule_id)));
187
188        // スケジュールに参加しているメンバー
189        $members = biz_getJoinIdSchedule($biz_schedule_id);
190        if (biz_isPermissionSchedule($u, $biz_schedule_id)) {
191            if (in_array($target_c_member_id, $members)) {
192                $contain[] = $biz_schedule_id;
193            }
194        }
195    }
196
197    $tmp = array_unique($tmp);
198
199    foreach ($contain as $key => $value) {
200        if (!is_null($value)) {
201           
202            //そのidの予定を得る
203            $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?';
204            $params = array(
205                $value,
206            );
207            $schedule += array($key => db_get_row($sql, $params));
208        }
209    }
210    return $schedule;
211}
212
213//指定された予定idの保持するメンバーIDを得る関数
214function biz_getJoinIdSchedule($id)
215{
216    $sql = 'SELECT c_member_id FROM biz_schedule_member WHERE biz_schedule_id = ?';
217    $params = array(
218        intval($id),
219    );
220
221    $ids = db_get_col($sql, $params);
222
223    return $ids;
224}
225
226//指定されたメンバーIDと関連付いた未読予定idを得たうえに、予定のデータまでつけてしまう関数
227function biz_getJoinIdNewSchedule($id)
228{
229    $sql = 'SELECT biz_schedule_id FROM biz_schedule_member WHERE c_member_id = ? AND is_read = 0;';
230    $params = array(
231        intval($id),
232    );
233
234    $ids = db_get_col($sql, $param);
235
236    $schedule = array();
237
238    foreach ($ids as $value) {
239        $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?';
240        $params = array($value);
241        $schedule[] = db_get_row($sql, $params);
242    }
243
244    return $schedule;
245}
246
247//指定された予定IDを保持しているメンバー情報を得る関数
248function biz_getJoinMemberSchedule($id)
249{
250    $sql = 'SELECT c_member_id FROM biz_schedule_member WHERE biz_schedule_id = ?';
251    $params = array(
252        intval($id),
253    );
254
255    $tmp = db_get_col($sql, $params);
256    $members = array();
257
258    foreach ($tmp as $value) {
259        $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
260        $params = array(
261            $value,
262        );
263
264        $members[$value] = db_get_one($sql, $params);
265    }
266
267    return $members;
268}
269
270function biz_getJoinShisetsuScheduleID($id)
271{
272    $sql = 'SELECT biz_shisetsu_id FROM biz_shisetsu_schedule WHERE biz_shisetsu_schedule_id = ?';
273
274    $params = array(
275        intval($id),
276    );
277
278    return db_get_one($sql, $params);
279}
280
281//指定メンバーidが加入しているグループ数を得る関数
282function biz_getGroupCount($id)
283{
284    $sql = 'SELECT * FROM biz_group_member WHERE c_member_id = ?';
285
286    $params = array(
287        intval($id),
288    );
289
290
291    return count(db_get_col($sql, $params));
292}
293
294//指定グループidのメンバーを得る関数
295function biz_getGroupMember($id, $limit=null, $start=null)
296{
297    $params = array(
298        intval($id),
299    );
300
301    $sql = 'SELECT * FROM biz_group_member WHERE biz_group_id = ? ';
302
303    if ($start) {
304        $sql .= 'AND c_member_id <= ? ';
305        $params[] = $start;
306    }
307
308    $sql .= 'ORDER BY c_member_id';
309
310    if ($limit) {
311        $list = db_get_all_limit($sql, 0, $limit, $params);
312    } else {
313        $list = db_get_all($sql, $params);
314    }
315
316    return $list;
317}
318
319//指定されたグループidの情報を得る関数
320function biz_getGroupData($id)
321{
322    $sql = "SELECT * FROM biz_group WHERE biz_group_id = ?";
323    $params = array(
324        intval($id),
325    );
326    if (!$group = db_get_row($sql, $params))
327        return array();
328
329    return $group;
330}
331
332//指定メンバーidが加入しているグループの情報を得る関数
333function biz_getJoinGroup($id, $limit = null)
334{
335    $list = array();
336    $sql = "SELECT * FROM biz_group_member";
337    $sql .= " WHERE c_member_id = ?";
338    $sql .= " ORDER BY RAND()";
339
340    $params = array(
341        intval($id),
342    );
343
344    if (!is_null($limit)) {
345        $list = db_get_all_limit($sql, 0, intval($limit), $params);
346    } else {
347        $list = db_get_all($sql, $params);
348    }
349
350    foreach ($list as $key => $value) {
351        $list[$key] += biz_getGroupData($value['biz_group_id']);
352        $list[$key]['count'] = count(biz_getGroupMember($value['biz_group_id']));
353    }
354
355    return $list;
356}
357
358//指定メンバーがグループに所属しているかどうかを返す関数
359function biz_isGroupMember($member_id, $group_id)
360{
361    $sql = 'SELECT * FROM biz_group_member WHERE c_member_id = ? AND biz_group_id = ?';
362    $params = array(
363        intval($member_id),
364        intval($group_id),
365    );
366
367    return db_get_one($sql, $params);
368}
369
370//指定された条件に見合うグループのリストを得る関数
371function biz_getGroupList($keyword = '', $page = 0, $page_size = 20, $order = 'biz_group_id')
372{
373
374    //keywordあり
375    if ($keyword) {
376        $where = ' WHERE true AND (info LIKE ? OR name LIKE ?) ORDER BY ?';
377        $sql = 'SELECT * FROM biz_group'. $where;
378
379        $params = array(
380            '%'.$keyword.'%',
381            '%'.$keyword.'%',
382            $order,
383        );
384        $list = db_get_all_page($sql, $page, $page_size, $params);
385    //keywordなし(全件表示)
386    } else {
387        $where = '';
388        $sql = 'SELECT * FROM biz_group ORDER BY ? desc';
389
390        $params = array(
391            $order,
392        );
393        $list = db_get_all_page($sql, $page, $page_size, $params);
394    }
395
396    if (!$list) {
397        return array();
398    }
399
400    foreach ($list as $key => $value) {
401        $count = count(biz_getGroupMember($value['biz_group_id']));
402        $list[$key]['count'] = $count;
403    }
404
405    if ($keyword) {
406        $params = array(
407            '%'.$keyword.'%',
408            '%'.$keyword.'%',
409            $order,
410        );
411    } else {
412        $params = array();
413    }
414
415    $sql = 'SELECT COUNT(*) FROM biz_group' . $where;
416    $total_num = db_get_one($sql, $params);
417
418    if ($total_num != 0) {
419        $total_page_num =  ceil($total_num / $page_size);
420        if ($page >= $total_page_num) {
421            $next = false;
422        } else {
423            $next = true;
424        }
425        if ($page <= 1) {
426            $prev = false;
427        } else {
428            $prev = true;
429        }
430    }
431
432    $start_num = ($page - 1) * $page_size + 1;
433    $end_num   = $start_num + $page_size >= $total_num ? $total_num : $start_num + $page_size - 1;
434
435    return array($list, $prev, $next, $total_num, $start_num, $end_num);
436}
437
438//指定日の施設予定を得る関数
439function biz_getShisetsuSchedule($y, $m, $d, $id=false)
440{
441    $params = array(
442        intval($y),
443        intval($m),
444        intval($d),
445    );
446
447    if ($id) {
448        $params[] = intval($id);
449        $sql = 'SELECT * FROM biz_shisetsu_schedule WHERE date = "?-?-?" AND biz_shisetsu_id = ? ORDER BY begin_time ASC';
450    } else {
451        $sql = 'SELECT * FROM biz_shisetsu_schedule WHERE date = "?-?-?" ORDER BY begin_time ASC';
452    }
453    $list = db_get_all($sql, $params);
454    foreach ($list as $key => $value) {
455        $params = array(
456            intval($list[$key]['c_member_id']),
457        );
458        $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
459        $list[$key]['c_member_name'] = db_get_one($sql, $params);
460    }
461
462    return $list;
463}
464
465//施設施設予定の情報を得る関数
466function biz_getShisetsuScheduleID($id)
467{
468    $sql = 'SELECT * FROM biz_shisetsu_schedule WHERE biz_shisetsu_schedule_id = ?';
469
470    $params = array(
471        intval($id),
472    );
473
474    $list = db_get_row($sql, $params);
475
476    $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
477    $params = array(
478        intval($list['c_member_id']),
479    );
480    $list['member_name'] = db_get_one($sql, $params);
481
482    return $list;
483}
484
485//施設のリストを得る関数
486function biz_getShisetsuList()
487{
488    $sql = 'SELECT * FROM biz_shisetsu';
489    $list = db_get_all($sql, $params);
490
491    return $list;
492}
493
494//指定施設の情報を得る関数
495function biz_getShisetsuData($shisetsu_id)
496{
497    $sql = 'SELECT * FROM biz_shisetsu WHERE biz_shisetsu_id = ?';
498
499    $params = array(
500        intval($shisetsu_id),
501    );
502
503    $list = db_get_row($sql, $params);
504
505    return $list;
506}
507
508//バッティングしているかどうかを判定する関数
509function biz_isBatting($shisetsu_id, $y, $m, $d, $begin_time, $finish_time)
510{
511    $list = biz_getShisetsuSchedule($y, $m, $d, $shisetsu_id);
512
513    if (empty($list)) {
514        //初めての予定登録
515        return true;
516    }
517
518    $result = false;
519
520    foreach ($list as $value) {   
521        //日付を演算できる値に変換
522        $b_begin = strtotime($value['begin_time']);
523        $b_finish = strtotime($value['finish_time']);
524        $t_begin = strtotime($begin_time);
525        $t_finish = strtotime($finish_time);
526
527        //OKパターンの判別
528        if ($t_begin >= $b_finish) {
529            //登録される予定開始が、既存予定終了以下である
530            $result = true;
531        } elseif ($t_finish <= $b_begin) {
532            //登録される予定終了が、既存予定開始以下である
533            $result = true;
534        } else {
535            //OKパターンに当てはまらない予定である
536            return false;
537        }
538    }
539
540    return $result;
541}
542
543//その月のバナー予定を得る関数
544function biz_getBannerScheduleList($y, $m, $id)
545{
546    $schedule = array();
547    $contain = array();
548
549    $sql = 'SELECT biz_schedule_id FROM biz_schedule WHERE true AND (begin_date LIKE \''.$y.'-'.$m.'%\' OR finish_date LIKE \''.$y.'-'.$m.'%\') AND begin_date != finish_date';
550    $tmp = db_get_all($sql, $params);
551
552    if (!$tmp) {
553        return false;
554    }
555
556    foreach ($tmp as $index) {
557        foreach ($index as $value) {
558            $members = biz_getJoinIdSchedule($value);
559            if (in_array($id, $members)) {
560                $contain[] = $value;
561            }
562        }
563    }
564
565    $tmp = array_unique($tmp);
566
567    foreach ($contain as $key => $value) {
568        if (!is_null($value)) {
569            $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?'; //そのidの予定を得る
570            $params = array(intval($value));
571            $schedule += array($key => db_get_row($sql, $params));
572        }
573    }
574    return $schedule;
575}
576//その日付がバナー予定のなかに含まれているかどうか
577function biz_isBannerSchedule($y, $m, $d, $id)
578{
579    $month_banner = biz_getBannerScheduleList($y, $m, $id);
580
581    $schedule = array();
582
583    $testing = mktime(0, 0, 0, $m, $d, $y);
584
585    if (!empty($month_banner)) {
586        foreach ($month_banner as $value) {
587            $begin_date = strtotime($value['begin_date'].' 00:00:00');
588            $finish_date = strtotime($value['finish_date'].' 00:00:00');
589
590            if (($begin_date < $testing) && ($finish_date >= $testing)) {
591                $schedule[] = biz_getScheduleInfo($value['biz_schedule_id']);
592            }
593        }
594    }
595
596    return $schedule;
597}
598
599//指定されたTodoに関する権限があるかどうかをチェックする関数
600function biz_isPermissionTodo($u, $biz_todo_id)
601{
602    $biz_todo = biz_getTodo($biz_todo_id);
603    $public_flag = $biz_todo['public_flag'];
604    $biz_group_id = $biz_todo['biz_group_id'];
605    $target_c_member_id = $biz_todo['c_member_id'];
606
607    switch ($public_flag) {
608    case 'group' :  //グループのメンバーにのみ権限が与えられるTodo
609        $biz_group = biz_getGroupData($biz_group_id);
610        if (biz_isGroupMember($u, $biz_group_id)) {
611            return true;
612        } elseif (empty($biz_group)) {  //グループが存在しない場合はTodoを公開する
613            return true;
614        } else {
615            return false;
616        }
617        break;
618    case 'private' :  //投稿者にのみ権限が与えられるTodo
619        if ($target_c_member_id == $u) {
620            return true;
621        } else {
622            return false;
623        }
624        break;
625    default :  //すべてのメンバーに権限が与えられるTodo
626        return true;
627    }
628}
629
630//指定メンバーのTodoを得る
631function biz_getMemberTodo($u, $target_c_member_id, $cat = null)
632{
633    $sql = 'SELECT * FROM biz_todo WHERE c_member_id = ? AND is_check = ? ORDER BY biz_todo_id DESC;';  //メンバーが保有しているtodoid一覧
634    $params = array(
635        intval($target_c_member_id),
636        intval($cat),
637    );
638
639    //priorityの高い順にソート
640    $membertodo = db_get_all($sql, $params);
641    foreach ($membertodo as $key => $row) {
642       $priority[$key]  = $row['priority'];
643    }
644    if(!is_null($priority)) {
645        array_multisort($priority, SORT_ASC, $membertodo);
646    }
647
648    $sql = 'SELECT * FROM biz_todo WHERE c_member_id = 0 AND is_check = ? ORDER BY biz_todo_id DESC;';  //共有Todo
649    $params = array(
650        intval($cat),
651    );
652    $sharetodo = db_get_all($sql, $params);
653
654    $list = array();  //各Todoの連結処理
655
656    foreach (array_merge($membertodo, $sharetodo) as $key => $value) {
657        if (biz_isPermissionTodo($u, $value['biz_todo_id'])) {
658            $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
659            $params = array(
660                intval($value['writer_id']),
661            );
662            $list[$key] = $value;
663            $list[$key]['writer_name'] = db_get_one($sql, $params);
664        }
665    }
666
667    return $list;
668}
669
670//指定idのTodoを得る
671function biz_getTodo($id)
672{
673    //メンバーが保有しているtodoid一覧
674    $sql = 'SELECT * FROM biz_todo WHERE biz_todo_id = ?';
675
676    $params = array(
677        intval($id),
678    );
679
680    return db_get_row($sql, $params);
681}
682
683//カレンダー表示用期限付きTodoリストの取得
684function biz_schedule_todo4c_member_id($u, $c_member_id, $year, $month, $day = null)
685{
686    $sql = 'SELECT biz_todo_id FROM biz_todo WHERE c_member_id = ?';
687    $params = array(intval($c_member_id));
688    $ids = db_get_col($sql, $params);
689    $ids = implode(', ', $ids);
690    if (!$ids) {
691        return array();
692    }
693
694    if (!is_null($day)) {
695        $sql = 'SELECT * FROM biz_todo WHERE biz_todo_id IN ('.$ids.')' .
696                ' AND due_datetime = ?';
697        $params = array(
698            sprintf('%04d-%02d-%02d', intval($year), intval($month), intval($day)) . ' 00:00:00',
699        );
700
701        $list = array();
702        foreach(db_get_all($sql, $params) as $key => $value) {
703            if(biz_isPermissionTodo($u, $value['biz_todo_id'])) {
704                $list[$key] = $value;
705            }
706        }
707       
708        return $list;
709    } else {
710        $sql = 'SELECT * FROM biz_todo WHERE biz_todo_id IN ('.$ids.')' .
711                ' AND due_datetime > ? AND due_datetime <= ?';
712        $params = array(
713            sprintf('%04d-%02d', intval($year), intval($month)) . '-00 00:00:00',
714            sprintf('%04d-%02d', intval($year), intval($month)) . '-31 23:59:59'
715        );
716        $list = db_get_all($sql, $params);
717
718        $res = array();
719        foreach ($list as $item) {
720            if(biz_isPermissionTodo($u, $item['biz_todo_id'])) {
721                $day = date('j', strtotime($item['due_datetime']));
722                $res[$day][] = $item;
723            }
724        }
725        return $res;
726    }
727}
728
729//自分が投稿したTodoの一覧を得る
730function biz_getPostedTodo($id, $limit = null)
731{
732
733    $sql = 'SELECT * FROM biz_todo WHERE writer_id = ? ORDER BY r_datetime DESC';
734    $params = array(
735        intval($id),
736    );
737
738    if ($limit) {
739        $tmp = db_get_all_limit($sql, 0, intval($limit), $params);
740    } else {
741        $tmp = db_get_all($sql, $params);
742    }
743
744    $list = array();
745    foreach ($tmp as $key => $value) {
746        if (!biz_isPermissionTodo($id, $value['biz_todo_id'])) {
747            continue;
748        }
749        $list[$key] = $value;
750        $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
751        $params = array(
752            intval($list[$key]['c_member_id']),
753        );
754        $list[$key]['member_name'] = db_get_one($sql, $params);
755    }
756
757    return $list;
758}
759
760//指定メンバーのstateを得る
761function biz_getState($member_id)
762{
763    $sql = 'SELECT * FROM biz_state WHERE c_member_id = ?';
764    $params = array(
765        intval($member_id),
766    );
767
768
769    return db_get_row($sql, $params);
770}
771
772// 参加グループリスト
773function biz_getJoinGroupList($c_member_id, $page, $page_size)
774{
775    $start = ($page - 1) * $page_size;
776
777    $sql = "SELECT biz_group.*" .
778            " FROM biz_group_member , biz_group";
779    $sql .= " WHERE biz_group_member.c_member_id = ?";
780    $sql .= " AND biz_group.biz_group_id=biz_group_member.biz_group_id";
781    $sql .= " ORDER BY biz_group.biz_group_id DESC ";
782
783    $params = array(
784        intval($c_member_id),
785    );
786
787    $biz_group_list = db_get_all_limit($sql, $start, $page_size, $params);
788
789    foreach ($biz_group_list as $key => $value) {
790        $biz_group_list[$key]['count_members'] =
791           count(biz_getGroupMember($value['biz_group_id']));
792    }
793
794    $pager = array(
795        "total_num" => biz_getGroupCount($c_member_id),
796        "disp_num"  => count($biz_group_list),
797        "start_num" => 0,
798        "end_num"   => 0,
799        "total_page" => 0,
800        "prev_page" => 0,
801        "next_page" => 0,
802    );
803
804    if ($pager['disp_num'] > 0) {
805        $pager['start_num'] = $start + 1;
806        $pager['end_num'] = $pager['start_num'] + $pager['disp_num'] - 1;
807    }
808
809    if ($pager['total_num']) { 
810        $pager['total_page'] = ceil($pager['total_num'] / $page_size);
811
812        if ($page < $pager['total_page']) {
813            $pager['next_page'] = max($page + 1, 1);
814        }
815        if ($page > 1) {
816            $pager['prev_page'] = min($page - 1, $pager['total_page']);
817        }
818    }
819
820    return array($biz_group_list, $pager);
821}
822
823
824//SET---------------------------------------------
825
826//スケジュール登録
827function biz_insertSchedule($title, $c_member_id, $begin_date, $finish_date, $begin_time = null, $finish_time = null,
828                                                        $value = '', $rep_type, $first_id = 0,
829                                                        $biz_group_id = 0, $public_flag = "public", $join_members = array())
830{
831    //登録値のセット、チェック
832    if (!$value) {
833        $value = '';
834    }
835
836    if (!$rep_type) {
837        $rep_type = 0;
838    }
839
840    //biz_scheduleにデータを追加する
841    $data = array(
842        'title' => $title,
843        'c_member_id' => intval($c_member_id),
844        'begin_date' => $begin_date,
845        'finish_date' => $finish_date,
846        'begin_time' => $begin_time,
847        'finish_time' => $finish_time,
848        'value' => $value,
849        'rep_type' => $rep_type,
850        'rep_first' => $first_id,
851        'biz_group_id' => $biz_group_id,
852        'public_flag' => $public_flag,
853    );
854    $new_schedule_id = db_insert('biz_schedule', $data);
855
856    // 参加者が指定されていない場合は、c_memberすべてが予定の参加者に
857    if (empty($join_members)) {
858        $sql = 'SELECT c_member_id FROM c_member';
859        $join_members = db_get_col($sql);
860    }
861    foreach ($join_members as $value) {
862        $data = array(
863            'c_member_id' => $value,
864            'biz_schedule_id' => $new_schedule_id,
865            'is_read' => 0,
866        );
867        db_insert('biz_schedule_member', $data);
868    }
869}
870
871//スケジュール削除
872function biz_deleteSchedule($id)
873{
874    $sql = 'DELETE FROM biz_schedule WHERE biz_schedule_id = ?';
875    $params = array(
876        intval($id),
877    );
878    db_query($sql, $params);
879    $sql = 'DELETE FROM biz_schedule_member WHERE biz_schedule_id = ?';
880    $params = array(
881        intval($id),
882    );
883    db_query($sql, $params);
884}
885
886//スケジュール編集
887function biz_editSchedule($title, $member_id, $begin_date, $finish_date, $begin_time = null, $finish_time = null,
888                                                    $value = '', $rep_type, $first_id = 0,
889                                                    $biz_group_id = 0, $public_flag = "public",
890                                                    $id, $join_members = array())
891{
892    $sql = 'UPDATE biz_schedule SET title = ?,c_member_id = ?,begin_date = ?,finish_date = ?,begin_time = ?,finish_time = ?,value = ?,rep_type = ?,rep_first = ?, biz_group_id = ?, public_flag = ?, is_read = 0 WHERE biz_schedule_id = ?';
893    $params = array(
894        $title,
895        $member_id,
896        $begin_date,
897        $finish_date,
898        $begin_time,
899        $finish_time,
900        $value,
901        $rep_type,
902        $first_id,
903        $biz_group_id,
904        $public_flag,
905        $id,
906    );
907    db_query($sql, $params);
908   
909    $sql = 'DELETE FROM biz_schedule_member WHERE biz_schedule_id = ?';
910    $params = array(
911        intval($id),
912    );
913    db_query($sql, $params);
914
915    foreach ($join_members as $value) {
916        $data = array(
917            'c_member_id' => $value,
918            'biz_schedule_id' => intval($id),
919            'is_read' => 0,
920        );
921       
922        db_insert('biz_schedule_member', $data);
923    }
924}
925
926//スケジュールを既読済みに
927function biz_readSchedule($member_id, $schedule_id)
928{
929    $sql = 'SELECT biz_schedule_member_id FROM biz_schedule_member WHERE biz_schedule_id = ? AND c_member_id = ?';
930    $params = array(
931        intval($schedule_id),
932        intval($member_id),
933    );
934    $sid = db_get_one($sql, $params);
935
936    $sql = 'UPDATE biz_schedule_member SET is_read = \'1\' WHERE biz_schedule_member_id = ?';
937    $params = array(
938        intval($sid),
939    );
940    db_query($sql, $params);
941}
942
943//グループ登録
944function biz_insertGroup($name, $member_id, $info, $image_name, $members = array())
945{   
946    //登録値のセット、チェック
947    if (!$image_name) {
948        $image_name = 0;
949    }
950    if (!$info) {
951        $info = "";
952    }
953    if (empty($members)) {
954        $members = array($member_id);
955    }
956
957    //biz_groupにデータを追加する
958    $data = array(
959        'name' => $name,
960        'info' => $info,
961        'admin_id' => intval($member_id),
962        'image_filename' => $image_name,
963    );
964    $new_group_id = db_insert('biz_group', $data);
965
966    foreach ($members as $key => $value) {
967        $data = array(
968            'c_member_id' => $value,
969            'biz_group_id' => $new_group_id,
970        );
971        db_insert('biz_group_member', $data);
972    }
973}
974
975function biz_editGroup($biz_group_id, $name, $member_id, $info, $image_name, $members = array())
976{
977    //登録値のセット、チェック
978    if (!$image_name) {
979        $image_name = 0;
980    }
981
982    if (!$info) {
983        $info = "";
984    }
985
986    if (empty($members)) {
987        $members = array($member_id);
988    }
989
990    //biz_groupにデータを追加する
991
992    $sql = 'UPDATE biz_group SET name = ?,info = ?,image_filename = ? WHERE biz_group_id = ?';
993    $params = array(
994        $name,
995        $info,
996        $image_name,
997        intval($biz_group_id),
998    );
999    db_query($sql, $params);
1000
1001    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
1002    $params = array(
1003        intval($biz_group_id),
1004    );
1005    $result = db_query($sql, $params);
1006
1007    foreach ($members as $key => $value) {
1008        $data = array(
1009            'c_member_id' => $value,
1010            'biz_group_id' => intval($biz_group_id),
1011        );
1012        db_insert('biz_group_member', $data);
1013    }
1014}
1015
1016//グループの削除
1017function biz_deleteGroup($group_id)
1018{
1019    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
1020    $params = array(
1021        intval($group_id),
1022    );
1023    $result = db_query($sql, $params);
1024    $sql = 'DELETE FROM biz_group WHERE biz_group_id = ?';
1025    $params = array(
1026        intval($group_id),
1027    );    $result = db_query($sql, $params);
1028
1029
1030    $sql = 'UPDATE biz_schedule SET public_flag = "private", biz_group_id = NULL WHERE biz_group_id = ?';
1031    db_query($sql, array(intval($group_id)));
1032
1033    $sql = 'DELETE FROM biz_todo WHERE biz_group_id = ?'; 
1034    db_query($sql, array(intval($group_id))); 
1035
1036}
1037
1038//グループに参加
1039function biz_joinGroup($member_id, $group_id)
1040{
1041    $data = array(
1042        'c_member_id' => intval($member_id),
1043        'biz_group_id' => intval($group_id),
1044    );
1045    db_insert('biz_group_member', $data);
1046}
1047
1048//施設追加
1049function biz_addShisetsu($name, $image_name, $info = '')
1050{
1051    if (!$image_name) {
1052        $image_name = '0';
1053    }
1054
1055    $data = array(
1056        'name' => $name,
1057        'image_filename' => $image_name,
1058        'info' => $info,
1059    );
1060    db_insert('biz_shisetsu', $data);
1061}
1062
1063//施設編集
1064function biz_editShisetsu($id, $name, $image_name, $info = '')
1065{
1066    if (!$image_name) {
1067        $image_name = 0;
1068    }
1069
1070    $sql = 'UPDATE biz_shisetsu SET name = ?,image_filename = ?, info = ? WHERE biz_shisetsu_id = ?';
1071    $params = array(
1072        $name,
1073        $image_name,
1074        $info,
1075        intval($id),
1076    );
1077    db_query($sql, $params);
1078}
1079
1080//施設予定追加
1081function biz_addShisetsuSchedule($shisetsu_id, $member_id, $date, $begin_time, $finish_time)
1082{
1083    $data = array(
1084        'c_member_id' => intval($member_id),
1085        'biz_shisetsu_id' => intval($shisetsu_id),
1086        'date' => $date,
1087        'begin_time' => $begin_time,
1088        'finish_time' => $finish_time,
1089    );
1090    return db_insert('biz_shisetsu_schedule', $data);
1091}
1092
1093//施設予定削除
1094function biz_deleteShisetsuSchedule($shisetsu_id)
1095{
1096    $sql = 'DELETE FROM biz_shisetsu_schedule WHERE biz_shisetsu_schedule_id = ?';
1097    $params = array(
1098        intval($shisetsu_id),
1099    );
1100
1101    db_query($sql, $params);
1102
1103    return $sql;
1104}
1105
1106//Todo登録
1107function biz_insertTodo($member_id, $memo, $writer_id, $sort_order, $is_all,
1108    $due_datetime = '', $priority = 3, $biz_group_id = '', $public_flag = 'public')
1109{
1110    if ($is_all) {
1111        //共有Todo
1112        $member_id = 0;
1113    } elseif ($member_id == $writer_id) {
1114        $writer_name = '';
1115    }
1116
1117    $data = array(
1118        'c_member_id' => $member_id,
1119        'memo' => $memo,
1120        'is_check' => 0,
1121        'writer_id' => $writer_id,
1122        'sort_order' => $sort_order,
1123        'r_datetime' => date("Y-m-d H:i"),
1124        'due_datetime' => $due_datetime,
1125        'priority' => $priority,
1126        'biz_group_id' => $biz_group_id,
1127        'public_flag' => $public_flag,
1128    );
1129    return db_insert('biz_todo', $data);
1130}
1131
1132//Todo登録
1133function biz_editTodo($member_id, $memo, $writer_id, $sort_order, $is_all, $biz_todo_id, $is_done, $due_datetime, $priority, $biz_group_id, $public_flag)
1134{
1135    $todo = biz_getTodo($biz_todo_id);
1136
1137    if ($is_all) {
1138        //共有Todo
1139        $member_id = 0;
1140    } elseif ($member_id == $writer_id) {
1141        $writer_name = '';
1142    }
1143
1144    if ($is_done != $todo['is_check']) {
1145        biz_checkTodo($biz_todo_id, $todo['is_check']);
1146    }
1147   
1148    $sql = 'UPDATE biz_todo SET c_member_id = ?, memo = ?, writer_id = ?,'
1149        .'r_datetime = ?, due_datetime = ?, priority = ?, biz_group_id = ?,'
1150        .'public_flag = ? WHERE biz_todo_id = ?';
1151
1152    $params = array(
1153        intval($member_id),
1154        $memo,
1155        intval($writer_id),
1156        date("Y-m-d H:i"),
1157        $due_datetime,
1158        intval($priority),
1159        intval($biz_group_id),
1160        $public_flag,
1161        intval($biz_todo_id),
1162    );
1163
1164    $result = db_query($sql, $params);
1165
1166    return $result;
1167}
1168
1169//Todo削除
1170function biz_deleteTodo($delid)
1171{
1172    //指定されたTodoを削除
1173    $sql = 'DELETE FROM biz_todo WHERE biz_todo_id = ?';
1174
1175    $params = array(
1176        intval($delid),
1177    );
1178
1179    $result = db_query($sql, $params);
1180
1181    return $result;
1182}
1183
1184//Todoにチェック
1185function biz_checkTodo($chid, $is_check)
1186{
1187    if ($is_check) {
1188    //チェックを解除する
1189        $sql = 'UPDATE biz_todo SET is_check = \'0\' WHERE biz_todo_id = ?';
1190    } else {
1191    //チェックをつける
1192        $sql = 'UPDATE biz_todo SET is_check = \'1\' WHERE biz_todo_id = ?';
1193    }
1194
1195    $params = array(
1196        intval($chid),
1197    );
1198
1199    $result = db_query($sql, $params);
1200}
1201
1202//画像をDBに格納する
1203function biz_saveImage($upfile, $filename)
1204{
1205    if (!$upfile) {
1206        return false;
1207    }
1208    if (!$filename) {
1209        return false;
1210    }
1211
1212    if (!t_check_image($upfile)) {
1213        return false;
1214    }
1215
1216    $image = t_check_image($upfile);
1217    $filepath = $upfile["tmp_name"];
1218
1219    $path_parts = pathinfo($upfile["name"]);
1220    $ext = $path_parts["extension"];
1221    $ext = strtolower($ext);
1222    $filename = $filename."_".time().".".$ext;
1223
1224    $fp = fopen($filepath, "rb");
1225    $image_data = fread($fp, filesize($filepath));
1226    fclose($fp);
1227
1228    // 画像かどうかのチェック
1229    if (!@imagecreatefromstring($image_data)) return false;
1230
1231    $image_data = base64_encode($image_data);
1232    $sql = "INSERT INTO c_image (filename, bin, r_datetime, type)" .
1233        " VALUES (?, ?, NOW(), ?)";
1234
1235    $params = array(
1236        $filename,
1237        $image_data,
1238        $image['format'],
1239    );
1240    $result = db_query($sql, $params);;
1241
1242    return $filename;
1243}
1244
1245function biz_deleteImage($filename)
1246{
1247    if (!$filename) {
1248        return false;
1249    }
1250
1251    $sql = 'DELETE FROM c_image WHERE filename = ?';
1252    $params = array(
1253        $filename,
1254    );
1255    db_query($sql, $params);
1256
1257    // cacheの削除
1258    image_cache_delete($filename);
1259}
1260
1261function biz_deleteGroupImage($id, $filename)
1262{
1263    $sql = 'UPDATE biz_group SET image_filename = \'0\' WHERE biz_group_id = ?';
1264    $params = array(
1265        intval($id),
1266    );
1267    db_query($sql, $params);
1268    biz_deleteImage($filename);
1269}
1270
1271function biz_deleteShisetsuImage($id, $filename)
1272{
1273    $sql = 'UPDATE biz_shisetsu SET image_filename = \'0\' WHERE biz_shisetsu_id = ?';
1274
1275    $params = array(
1276        intval($id),
1277    );
1278
1279    db_query($sql, $params);
1280    biz_deleteImage($filename);
1281}
1282
1283function biz_changeNickname($member_id, $new)
1284{
1285    $sql = 'UPDATE c_member SET nickname = ? WHERE c_member_id = ?';
1286    $params = array(
1287        $new,
1288        intval($member_id),
1289    );
1290    $result = db_query($sql, $params);
1291
1292    return $result;
1293}
1294
1295//施設情報削除
1296//一緒に施設画像も削除
1297function biz_deleteShisetsu($id)
1298{
1299
1300    $shisetsu = biz_getShisetsuData($id);
1301
1302    //画像削除
1303    biz_deleteShisetsuImage($id, $shisetsu['image_filename']);
1304
1305    $sql = 'DELETE FROM biz_shisetsu WHERE biz_shisetsu_id = ?';
1306    $params = array(
1307        intval($id),
1308    );
1309
1310    db_query($sql, $params);
1311}
1312
1313//-------------------------------
1314//admin
1315
1316function biz_getConfig()
1317{
1318    $sql = "SELECT name, value FROM biz_admin_config";
1319    return db_get_assoc($sql);
1320}
1321
1322
1323function ktai_biz_openpne_redirect($module, $action = '', $params = array())
1324{
1325    if ($module == 'ktai_biz') {
1326        if (session_id()) {
1327            $params['ksid'] = session_id();
1328        }
1329    }
1330    $url = openpne_gen_url($module, $action, $params);
1331    client_redirect_absolute($url);
1332}
1333
1334//------------------------------
1335//mail
1336
1337/**
1338 * スケジュール通知メールを送信する
1339 */
1340function biz_do_common_send_schedule_mail()
1341{
1342    $y = date("Y");
1343    $m = date("m");
1344    $d = date("d");
1345    $c_schedule_list = biz_getDateSchedule($y, $m, $d);
1346
1347    $send_list = array();
1348    foreach ($c_schedule_list as $schedule_id) {
1349        $value = biz_getScheduleInfo($schedule_id);
1350        $c_member_id = $value['c_member_id'];
1351        $send_list[$c_member_id][] = $value;
1352    }
1353
1354    foreach ($send_list as $key => $value) {
1355        $c_member_secure = db_member_c_member_secure4c_member_id($key);
1356        $pc_address = $c_member_secure['pc_address'];
1357
1358        $params = array(
1359            "c_member" => db_member_c_member4c_member_id_LIGHT($key),
1360            "c_schedule_list" => $value,
1361        );
1362        var_dump($pc_address, $params);
1363        fetch_send_mail($pc_address, 'm_pc_schedule_mail', $params);
1364    }
1365}
1366?>
Note: See TracBrowser for help on using the repository browser.