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

source: OpenPNE/branches/2_6/webapp_biz/modules/biz/lib/mysql_functions.php @ 2077

Last change on this file since 2077 was 2077, checked in by takanashi, 13 years ago

#504 BIZのスケジュールで、個人の予定を登録した際に予定参加者と予定登録者を分けていなかった問題への暫定的対処(r1980/r1994)

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