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

source: OpenPNE/branches/2.8.x/webapp_biz/modules/biz/lib/mysql_functions.php @ 2945

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

#727:他人の非公開TodoをTodo投稿履歴に表示していたバグの修正

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