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

source: OpenPNE/branches/2_8/webapp_biz/modules/biz/lib/mysql_functions.php @ 2527

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

#504 BIZモードで他人のスケジュールを入れられないバグを修正

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