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

source: OpenPNE/trunk/webapp_biz/modules/biz/lib/mysql_functions.php @ 4272

Last change on this file since 4272 was 4272, checked in by ogawa, 13 years ago

#1348:MySQL4.0以前の環境で管理画面のメンバーリストに誰も表示されない

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