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

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

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

#552 PNEBIZ h_biz_group_find_allのページャが機能していないバグ修正

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    $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, $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")
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($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    db_insert('biz_schedule', $data);
874}
875
876//スケジュール削除
877function biz_deleteSchedule($id, $group = false)
878{
879    if ($group) {
880        $sql = 'SELECT first_id FROM biz_schedule WHERE biz_schedule_id = ?';
881        $params = array(intval($id));
882        $firstid = db_get_one($sql, $params);
883
884        $sql = 'SELECT biz_schedule_id FROM biz_schedule WHERE first_id = ?';
885        $params = array(intval($firstid));
886        $schedules = db_get_col($sql, $params);
887
888        $sql = 'DELETE FROM biz_schedule WHERE first_id = ?';
889        $params = array(intval($firstid));
890        db_query($sql, $params);
891
892        foreach ($schedules as $nowid) {
893            $sql = 'DELETE FROM biz_schedule_member WHERE biz_schedule_id = ?';
894            $params = array(intval($nowid));
895            db_query($sql, $params);
896        }
897    } else {
898        $sql = 'DELETE FROM biz_schedule WHERE biz_schedule_id = ?';
899        $params = array(
900            intval($id),
901        );
902        db_query($sql, $params);
903        $sql = 'DELETE FROM biz_schedule_member WHERE biz_schedule_id = ?';
904        $params = array(
905            intval($id),
906        );
907        db_query($sql, $params);
908    }
909}
910
911//スケジュール編集
912function biz_editSchedule($title, $member_id, $begin_date, $finish_date, $begin_time = null, $finish_time = null,
913                                                    $value = '', $rep_type, $first_id = 0,
914                                                    $biz_group_id = 0, $public_flag = "public",
915                                                    $id)
916{
917    $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` = ?';
918    $params = array(
919        $title,
920        $member_id,
921        $begin_date,
922        $finish_date,
923        $begin_time,
924        $finish_time,
925        $value,
926        $rep_type,
927        $first_id,
928        $biz_group_id,
929        $public_flag,
930        $id,
931    );
932    db_query($sql, $params);
933}
934
935//スケジュールを既読済みに
936function biz_readSchedule($member_id, $schedule_id)
937{
938    $sql = 'SELECT biz_schedule_member_id FROM biz_schedule_member WHERE biz_schedule_id = ? AND c_member_id = ?';
939    $params = array(
940        intval($schedule_id),
941        intval($member_id),
942    );
943    $sid = db_get_one($sql, $params);
944
945    $sql = 'UPDATE `biz_schedule_member` SET `is_read` = \'1\' WHERE `biz_schedule_member_id` = ?';
946    $params = array(
947        intval($sid),
948    );
949    db_query($sql, $params);
950}
951
952//グループ登録
953function biz_insertGroup($name, $member_id, $info, $image_name, $members = array())
954{   
955    //登録値のセット、チェック
956    if (!$image_name) {
957        $image_name = 0;
958    }
959    if (!$info) {
960        $info = "";
961    }
962    if (empty($members)) {
963        $members = array($member_id);
964    }
965
966    //biz_groupにデータを追加する
967    $data = array(
968        'name' => $name,
969        'info' => $info,
970        'admin_id' => intval($member_id),
971        'image_filename' => $image_name,
972    );
973    $new_group_id = db_insert('biz_group', $data);
974
975    foreach ($members as $key => $value) {
976        $data = array(
977            'c_member_id' => $value,
978            'biz_group_id' => $new_group_id,
979        );
980        db_insert('biz_group_member', $data);
981    }
982}
983
984function biz_editGroup($biz_group_id, $name, $member_id, $info, $image_name, $members = array())
985{
986    //登録値のセット、チェック
987    if (!$image_name) {
988        $image_name = 0;
989    }
990
991    if (!$info) {
992        $info = "";
993    }
994
995    if (empty($members)) {
996        $members = array($member_id);
997    }
998
999    //biz_groupにデータを追加する
1000
1001    $sql = 'UPDATE `biz_group` SET `name` = ?,`info` = ?,`image_filename` = ? WHERE `biz_group_id` = ?';
1002    $params = array(
1003        $name,
1004        $info,
1005        $image_name,
1006        intval($biz_group_id),
1007    );
1008    db_query($sql, $params);
1009
1010    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
1011    $params = array(
1012        intval($biz_group_id),
1013    );
1014    $result = db_query($sql, $params);
1015
1016    foreach ($members as $key => $value) {
1017        $data = array(
1018            'c_member_id' => $value,
1019            'biz_group_id' => intval($biz_group_id),
1020        );
1021        db_insert('biz_group_member', $data);
1022    }
1023}
1024
1025//グループの削除
1026function biz_deleteGroup($group_id)
1027{
1028    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
1029    $params = array(
1030        intval($group_id),
1031    );
1032    $result = db_query($sql, $params);
1033    $sql = 'DELETE FROM biz_group WHERE biz_group_id = ?';
1034    $params = array(
1035        intval($group_id),
1036    );    $result = db_query($sql, $params);
1037
1038
1039    $sql = 'UPDATE biz_schedule SET public_flag = "private", biz_group_id = NULL WHERE biz_group_id = ?';
1040    db_query($sql, array(intval($group_id)));
1041
1042    $sql = 'DELETE FROM biz_todo WHERE biz_group_id = ?'; 
1043    db_query($sql, array(intval($group_id))); 
1044
1045}
1046
1047//グループに参加
1048function biz_joinGroup($member_id, $group_id)
1049{
1050    $data = array(
1051        'c_member_id' => intval($member_id),
1052        'biz_group_id' => intval($group_id),
1053    );
1054    db_insert('biz_group_member', $data);
1055}
1056
1057//施設追加
1058function biz_addShisetsu($name, $image_name, $info = '')
1059{
1060    if (!$image_name) {
1061        $image_name = '0';
1062    }
1063
1064    $data = array(
1065        'name' => $name,
1066        'image_filename' => $image_name,
1067        'info' => $info,
1068    );
1069    db_insert('biz_shisetsu', $data);
1070}
1071
1072//施設編集
1073function biz_editShisetsu($id, $name, $image_name, $info = '')
1074{
1075    if (!$image_name) {
1076        $image_name = 0;
1077    }
1078
1079    $sql = 'UPDATE `biz_shisetsu` SET `name` = ?,`image_filename` = ?, `info` = ? WHERE `biz_shisetsu_id` = ?';
1080    $params = array(
1081        $name,
1082        $image_name,
1083        $info,
1084        intval($id),
1085    );
1086    db_query($sql, $params);
1087}
1088
1089//施設予定追加
1090function biz_addShisetsuSchedule($shisetsu_id, $member_id, $date, $begin_time, $finish_time)
1091{
1092    $data = array(
1093        'c_member_id' => intval($member_id),
1094        'biz_shisetsu_id' => intval($shisetsu_id),
1095        'date' => $date,
1096        'begin_time' => $begin_time,
1097        'finish_time' => $finish_time,
1098    );
1099    $insert_id = db_insert('biz_shisetsu_schedule', $data);
1100
1101    $data = array(
1102        'shisetsu_id' => intval($shisetsu_id),
1103        'schedule_id' => intval($insert_id),
1104    );
1105    db_insert('biz_schedule_shisetsu', $data);
1106}
1107
1108//施設予定削除
1109function biz_deleteShisetsuSchedule($shisetsu_id)
1110{
1111    $sql = 'DELETE FROM `biz_shisetsu_schedule` WHERE biz_shisetsu_schedule_id = ?';
1112    $params = array(
1113        intval($shisetsu_id),
1114    );
1115
1116    db_query($sql, $params);
1117
1118    return $sql;
1119}
1120
1121//Todo登録
1122function biz_insertTodo($member_id, $memo, $writer_id, $sort_order, $is_all,
1123    $due_datetime = '', $priority = 3, $biz_group_id = '', $public_flag = 'public')
1124{
1125    if ($is_all) {
1126        //共有Todo
1127        $member_id = 0;
1128    } elseif ($member_id == $writer_id) {
1129        $writer_name = '';
1130    }
1131
1132    $data = array(
1133        'c_member_id' => $member_id,
1134        'memo' => $memo,
1135        'is_check' => 0,
1136        'writer_id' => $writer_id,
1137        'sort_order' => $sort_order,
1138        'r_datetime' => date("Y-m-d H:i"),
1139        'due_datetime' => $due_datetime,
1140        'priority' => $priority,
1141        'biz_group_id' => $biz_group_id,
1142        'public_flag' => $public_flag,
1143    );
1144    return db_insert('biz_todo', $data);
1145}
1146
1147//Todo登録
1148function biz_editTodo($member_id, $memo, $writer_id, $sort_order, $is_all, $biz_todo_id, $is_done, $due_datetime, $priority, $biz_group_id, $public_flag)
1149{
1150    $todo = biz_getTodo($biz_todo_id);
1151
1152    if ($is_all) {
1153        //共有Todo
1154        $member_id = 0;
1155    } elseif ($member_id == $writer_id) {
1156        $writer_name = '';
1157    }
1158
1159    if ($is_done != $todo['is_check']) {
1160        biz_checkTodo($biz_todo_id, $todo['is_check']);
1161    }
1162   
1163    $sql = 'UPDATE `biz_todo` SET `c_member_id` = ?, `memo` = ?, `writer_id` = ?,'
1164        .'`r_datetime` = ?, `due_datetime` = ?, `priority` = ?, `biz_group_id` = ?,'
1165        .'`public_flag` = ? WHERE `biz_todo_id` = ?';
1166
1167    $params = array(
1168        intval($member_id),
1169        $memo,
1170        intval($writer_id),
1171        date("Y-m-d H:i"),
1172        $due_datetime,
1173        intval($priority),
1174        intval($biz_group_id),
1175        $public_flag,
1176        intval($biz_todo_id),
1177    );
1178
1179    $result = db_query($sql, $params);
1180
1181    return $result;
1182}
1183
1184//Todo削除
1185function biz_deleteTodo($delid)
1186{
1187    //指定されたTodoを削除
1188    $sql = 'DELETE FROM biz_todo WHERE biz_todo_id = ?';
1189
1190    $params = array(
1191        intval($delid),
1192    );
1193
1194    $result = db_query($sql, $params);
1195
1196    return $result;
1197}
1198
1199//Todoにチェック
1200function biz_checkTodo($chid, $is_check)
1201{
1202    if ($is_check) {
1203    //チェックを解除する
1204        $sql = 'UPDATE `biz_todo` SET `is_check` = \'0\' WHERE `biz_todo_id` = ?';
1205    } else {
1206    //チェックをつける
1207        $sql = 'UPDATE `biz_todo` SET `is_check` = \'1\' WHERE `biz_todo_id` = ?';
1208    }
1209
1210    $params = array(
1211        intval($chid),
1212    );
1213
1214    $result = db_query($sql, $params);
1215}
1216
1217//画像をDBに格納する
1218function biz_saveImage($upfile, $filename)
1219{
1220    if (!$upfile) {
1221        return false;
1222    }
1223    if (!$filename) {
1224        return false;
1225    }
1226
1227    if (!t_check_image($upfile)) {
1228        return false;
1229    }
1230
1231    $image = t_check_image($upfile);
1232    $filepath = $upfile["tmp_name"];
1233
1234    $path_parts = pathinfo($upfile["name"]);
1235    $ext = $path_parts["extension"];
1236    $ext = strtolower($ext);
1237    $filename = $filename."_".time().".".$ext;
1238
1239    $fp = fopen($filepath, "rb");
1240    $image_data = fread($fp, filesize($filepath));
1241    fclose($fp);
1242
1243    // 画像かどうかのチェック
1244    if (!@imagecreatefromstring($image_data)) return false;
1245
1246    $image_data = base64_encode($image_data);
1247    $sql = "INSERT INTO c_image (filename, bin, r_datetime, type)" .
1248        " VALUES (?, ?, NOW(), ?)";
1249
1250    $params = array(
1251        $filename,
1252        $image_data,
1253        $image['format'],
1254    );
1255    $result = db_query($sql, $params);;
1256
1257    return $filename;
1258}
1259
1260function biz_deleteImage($filename)
1261{
1262    if (!$filename) {
1263        return false;
1264    }
1265
1266    $sql = 'DELETE FROM c_image WHERE filename = ?';
1267    $params = array(
1268        $filename,
1269    );
1270    db_query($sql, $params);
1271
1272    // cacheの削除
1273    image_cache_delete($filename);
1274}
1275
1276function biz_deleteGroupImage($id, $filename)
1277{
1278    $sql = 'UPDATE `biz_group` SET `image_filename` = \'0\' WHERE `biz_group_id` = ?';
1279    $params = array(
1280        intval($id),
1281    );
1282    db_query($sql, $params);
1283    biz_deleteImage($filename);
1284}
1285
1286function biz_deleteShisetsuImage($id, $filename)
1287{
1288    $sql = 'UPDATE `biz_shisetsu` SET `image_filename` = \'0\' WHERE `biz_shisetsu_id` = ?';
1289
1290    $params = array(
1291        intval($id),
1292    );
1293
1294    db_query($sql, $params);
1295    biz_deleteImage($filename);
1296}
1297
1298function biz_changeNickname($member_id, $new)
1299{
1300    $sql = 'UPDATE `c_member` SET `nickname` = ? WHERE `c_member_id` = ?';
1301    $params = array(
1302        $new,
1303        intval($member_id),
1304    );
1305    $result = db_query($sql, $params);
1306
1307    return $result;
1308}
1309
1310//施設情報削除
1311//一緒に施設画像も削除
1312function biz_deleteShisetsu($id)
1313{
1314
1315    $shisetsu = biz_getShisetsuData($id);
1316
1317    //画像削除
1318    biz_deleteShisetsuImage($id, $shisetsu['image_filename']);
1319
1320    $sql = 'DELETE FROM `biz_shisetsu` WHERE biz_shisetsu_id = ?';
1321    $params = array(
1322        intval($id),
1323    );
1324
1325    db_query($sql, $params);
1326}
1327
1328//-------------------------------
1329//admin
1330
1331function biz_getConfig()
1332{
1333    $sql = "SELECT name, value FROM biz_admin_config";
1334    return db_get_assoc($sql);
1335}
1336
1337
1338function ktai_biz_openpne_redirect($module, $action = '', $params = array())
1339{
1340    if ($module == 'ktai_biz') {
1341        if (session_id()) {
1342            $params['ksid'] = session_id();
1343        }
1344    }
1345    $url = openpne_gen_url($module, $action, $params);
1346    client_redirect_absolute($url);
1347}
1348
1349//------------------------------
1350//mail
1351
1352/**
1353 * スケジュール通知メールを送信する
1354 */
1355function biz_do_common_send_schedule_mail()
1356{
1357    $y = date("Y");
1358    $m = date("m");
1359    $d = date("d");
1360    $c_schedule_list = biz_getDateSchedule($y, $m, $d);
1361
1362    $send_list = array();
1363    foreach ($c_schedule_list as $schedule_id) {
1364        $value = biz_getScheduleInfo($schedule_id);
1365        $c_member_id = $value['c_member_id'];
1366        $send_list[$c_member_id][] = $value;
1367    }
1368
1369    foreach ($send_list as $key => $value) {
1370        $c_member_secure = db_member_c_member_secure4c_member_id($key);
1371        $pc_address = $c_member_secure['pc_address'];
1372
1373        $params = array(
1374            "c_member" => db_member_c_member4c_member_id_LIGHT($key),
1375            "c_schedule_list" => $value,
1376        );
1377        var_dump($pc_address, $params);
1378        fetch_send_mail($pc_address, 'm_pc_schedule_mail', $params);
1379    }
1380}
1381?>
Note: See TracBrowser for help on using the repository browser.