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

source: OpenPNE/branches/ebihara/prj_dev26_todo/webapp_biz/modules/biz/lib/mysql_functions.php @ 1147

Last change on this file since 1147 was 1147, checked in by ebihara, 16 years ago

携帯からのTodo表示・投稿・編集に対応

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