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

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

Last change on this file since 1598 was 1598, checked in by takanashi, 14 years ago

r1573 取り込み #400

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