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

source: OpenPNE/branches/2.6.x/webapp_biz/modules/biz/lib/mysql_functions.php @ 2940

Last change on this file since 2940 was 2940, checked in by ebihara, 12 years ago

#793:予定削除関数biz_deleteSchedule()の不要部分を削除

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