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

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

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

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

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