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

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

Last change on this file since 2945 was 2945, checked in by ebihara, 13 years ago

#727:他人の非公開TodoをTodo投稿履歴に表示していたバグの修正

File size: 36.8 KB
RevLine 
[217]1<?php
2/**
[1856]3 * @copyright 2005-2007 OpenPNE Project
[269]4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
[217]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';
[332]17    if ($count = db_get_one($sql, $params)) {
[217]18        return $count;
[332]19    } else {
20        return false;
21    }
[217]22}
23
[332]24//group_idの最大値を得る関数
[217]25function biz_getGroupMax()
26{
27    $sql = 'SELECT MAX(biz_group_id) FROM biz_group';
[332]28    if ($count = db_get_one($sql)) {
[217]29        return $count;
[332]30    } else {
31        return false;
32    }
[217]33}
34
35//member_idの最大値を得る関数
36function biz_getMenberMax()
37{
38    $sql = 'SELECT MAX(c_member_id) FROM c_member';
[332]39    if ($count = db_get_one($sql, $params)) {
[217]40        return $count;
[332]41    } else {
42        return false;
43    }
[217]44}
45
46function biz_getShisetsuScheduleMax()
47{
48    $sql = 'SELECT MAX(biz_shisetsu_schedule_id) FROM biz_shisetsu_schedule';
[332]49    if ($count = db_get_one($sql, $params)) {
[217]50        return $count;
[332]51    } else {
52        return false;
53    }
[217]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
[2939]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);
[276]100
[2939]101        return $schedule;
102    }
[217]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);
[276]120
[217]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);
[276]138
[217]139    return $schedule;
140}
141
[1087]142//指定された予定に関する権限があるかどうかをチェックする関数
143function biz_isPermissionSchedule($u, $biz_schedule_id)
144{
145    $biz_schedule = biz_getScheduleInfo($biz_schedule_id);
[2835]146    $biz_schedule_member = biz_getJoinIdSchedule($biz_schedule_id);
[1087]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) {
[2835]152    case 'private' :  // 予定参加者にのみ権限が与えられる予定
153        if ($target_c_member_id == $u) {  // 自分が予定作成者
[1087]154            return true;
[2835]155        } elseif(in_array($u, $biz_schedule_member)) {
[1630]156            return true;
[1087]157        } else {
158            return false;
159        }
[2835]160    default :  // すべてのメンバーに権限が与えられる予定
[1087]161        return true;
162    }
163}
164
[2641]165//指定された日付に存在する特定メンバーの予定idのみを得る関数
[1087]166function biz_getDateMemberSchedule($y, $m, $d, $target_c_member_id, $u)
[217]167{
168    $schedule = array();
169    $contain = array();
170
[1087]171    $tmp = biz_getDateSchedule($y, $m, $d);
[217]172    $sc_list = array();
[1087]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    }
[276]178
[1087]179    foreach ($tmp as $biz_schedule_id) {
180        $biz_schedule = biz_getScheduleInfo($biz_schedule_id);
[2523]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)));
[1087]183
[2880]184        // スケジュールに参加しているメンバー
185        $members = biz_getJoinIdSchedule($biz_schedule_id);
[1087]186        if (biz_isPermissionSchedule($u, $biz_schedule_id)) {
[2880]187            if (in_array($target_c_member_id, $members)) {
[2523]188                $contain[] = $biz_schedule_id;
189            }
[406]190        }
[217]191    }
[276]192
[217]193    $tmp = array_unique($tmp);
[276]194
[406]195    foreach ($contain as $key => $value) {
196        if (!is_null($value)) {
[1087]197           
[217]198            //そのidの予定を得る
[406]199            $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?';
[217]200            $params = array(
201                $value,
202            );
203            $schedule += array($key => db_get_row($sql, $params));
204        }
205    }
206    return $schedule;
207}
208
[2641]209//指定された予定idの保持するメンバーIDを得る関数
[217]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);
[276]218
[217]219    return $ids;
220}
221
[2641]222//指定されたメンバーIDと関連付いた未読予定idを得たうえに、予定のデータまでつけてしまう関数
[217]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);
[276]231
[217]232    $schedule = array();
[276]233
[332]234    foreach ($ids as $value) {
235        $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?';
236        $params = array($value);
[217]237        $schedule[] = db_get_row($sql, $params);
238    }
[276]239
[217]240    return $schedule;
241}
242
[2641]243//指定された予定IDを保持しているメンバー情報を得る関数
[217]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();
[276]253
[406]254    foreach ($tmp as $value) {
[217]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    }
[276]262
[217]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();
[276]275
[406]276    if (!is_array($tmp)) {
[217]277        $tmp = array();
[406]278    }
[276]279
[406]280    foreach ($tmp as $key=> $value) {
[217]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 = ?';
[276]306
[217]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
[406]365    if (!is_null($limit)) {
[217]366        $list = db_get_all_limit($sql, 0, intval($limit), $params);
[406]367    } else {
[217]368        $list = db_get_all($sql, $params);
369    }
370
[406]371    foreach ($list as $key => $value) {
[217]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
[1087]379//指定メンバーがグループに所属しているかどうかを返す関数
[217]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//指定された条件に見合うグループのリストを得る関数
[2719]392function biz_getGroupList($keyword = '', $page = 0, $page_size = 20, $order = 'biz_group_id')
[217]393{
394
395    //keywordあり
396    if ($keyword) {
[2523]397        $where = ' WHERE 1 AND (info LIKE ? OR name LIKE ?) ORDER BY ?';
398        $sql = 'SELECT * FROM biz_group'. $where;
[217]399
400        $params = array(
401            '%'.$keyword.'%',
402            '%'.$keyword.'%',
403            $order,
404        );
[2523]405        $list = db_get_all_page($sql, $page, $page_size, $params);
[217]406    //keywordなし(全件表示)
407    } else {
[2523]408        $where = '';
409        $sql = 'SELECT * FROM biz_group ORDER BY ? desc';
[217]410
411        $params = array(
412            $order,
413        );
[2523]414        $list = db_get_all_page($sql, $page, $page_size, $params);
[217]415    }
416
417    if (!$list) {
418        return array();
419    }
420
[406]421    foreach ($list as $key => $value) {
[217]422        $count = count(biz_getGroupMember($value['biz_group_id']));
423        $list[$key]['count'] = $count;
424    }
[276]425
[2523]426    if ($keyword) {
427        $params = array(
428            '%'.$keyword.'%',
429            '%'.$keyword.'%',
[2719]430            $order,
[2523]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);
[217]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);
[406]475    foreach ($list as $key => $value) {
[217]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(
[503]499        intval($list['c_member_id']),
[217]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);
[276]511
[217]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);
[276]525
[217]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
[406]534    if (empty($list)) {
535        //初めての予定登録
[217]536        return true;
[406]537    }
[217]538
539    $result = false;
540
[406]541    foreach ($list as $value) {   
[217]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);
[276]547
[217]548        //OKパターンの判別
[406]549        if ($t_begin >= $b_finish) {
550            //登録される予定開始が、既存予定終了以下である
[217]551            $result = true;
[406]552        } elseif ($t_finish <= $b_begin) {
553            //登録される予定終了が、既存予定開始以下である
[217]554            $result = true;
[406]555        } else {
556            //OKパターンに当てはまらない予定である
[217]557            return false;
[406]558        }
[217]559    }
[276]560
[217]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);
[276]572
[406]573    if (!$tmp) {
[217]574        return false;
[406]575    }
[217]576
[406]577    foreach ($tmp as $value) {
[217]578        $members = biz_getJoinIdSchedule($value);
[406]579        if (in_array($id, $members)) {
[217]580            $contain[] = $value;
[406]581        }
[217]582    }
[276]583
[217]584    $tmp = array_unique($tmp);
[276]585
[406]586    foreach ($contain as $key => $value) {
[332]587        if (!is_null($value)) {
588            $sql = 'SELECT * FROM biz_schedule WHERE biz_schedule_id = ?'; //そのidの予定を得る
589            $params = array(intval($value));
[217]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);
[276]599
[217]600    $schedule = array();
601
602    $testing = mktime(0, 0, 0, $m, $d, $y);
603
[406]604    if (!empty($month_banner)) {
605        foreach ($month_banner as $value) {
[217]606            $begin_date = strtotime($value['begin_date'].' 00:00:00');
607            $finish_date = strtotime($value['finish_date'].' 00:00:00');
[276]608
[406]609            if (($begin_date < $testing) && ($finish_date > $testing)) {
[217]610                $schedule += biz_getScheduleInfo($value['biz_schedule_id']);
[406]611            }
[217]612        }
613    }
614
615    return $schedule;
616}
617
[1181]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
[1630]628        $biz_group = biz_getGroupData($biz_group_id);
[1181]629        if (biz_isGroupMember($u, $biz_group_id)) {
630            return true;
[1630]631        } elseif (empty($biz_group)) {  //グループが存在しない場合はTodoを公開する
632            return true;
[1181]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;
[2641]644    default :  //すべてのメンバーに権限が与えられるTodo
[1181]645        return true;
646    }
647}
648
[217]649//指定メンバーのTodoを得る
[1181]650function biz_getMemberTodo($u, $target_c_member_id, $cat = null)
[217]651{
652    $sql = 'SELECT * FROM biz_todo WHERE c_member_id = ? AND is_check = ? ORDER BY biz_todo_id DESC;';  //メンバーが保有しているtodoid一覧
653    $params = array(
[1181]654        intval($target_c_member_id),
[217]655        intval($cat),
656    );
657
[1181]658    //priorityの高い順にソート
[217]659    $membertodo = db_get_all($sql, $params);
[2523]660    foreach ($membertodo as $key => $row) {
661       $priority[$key]  = $row['priority'];
662    }
[1181]663    if(!is_null($priority)) {
664        array_multisort($priority, SORT_ASC, $membertodo);
665    }
[217]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
[1181]673    $list = array();  //各Todoの連結処理
[217]674
[1181]675    foreach (array_merge($membertodo, $sharetodo) as $key => $value) {
676        if (biz_isPermissionTodo($u, $value['biz_todo_id'])) {
[2523]677            $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
678            $params = array(
679                intval($value['writer_id']),
680            );
[1181]681            $list[$key] = $value;
[2523]682            $list[$key]['writer_name'] = db_get_one($sql, $params);
[1181]683        }
[217]684    }
[276]685
[217]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
[1181]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)) {
[2523]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        );
[1181]719
720        $list = array();
[2523]721        foreach(db_get_all($sql, $params) as $key => $value) {
[1181]722            if(biz_isPermissionTodo($u, $value['biz_todo_id'])) {
[2523]723                $list[$key] = $value;
[1181]724            }
725        }
726       
727        return $list;
728    } else {
[2523]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);
[1181]736
[2523]737        $res = array();
738        foreach ($list as $item) {
[1181]739            if(biz_isPermissionTodo($u, $item['biz_todo_id'])) {
[2523]740                $day = date('j', strtotime($item['due_datetime']));
741                $res[$day][] = $item;
[1181]742            }
[2523]743        }
744        return $res;
[1181]745    }
746}
747
[217]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
[406]757    if ($limit) {
[2945]758        $tmp = db_get_all_limit($sql, 0, intval($limit), $params);
[406]759    } else {
[2945]760        $tmp = db_get_all($sql, $params);
[217]761    }
[276]762
[2945]763    $list = array();
764    foreach ($tmp as $key => $value) {
765        if (!biz_isPermissionTodo($id, $value['biz_todo_id'])) {
766            continue;
767        }
768        $list[$key] = $value;
[217]769        $sql = 'SELECT nickname FROM c_member WHERE c_member_id = ?';
770        $params = array(
771            intval($list[$key]['c_member_id']),
772        );
773        $list[$key]['member_name'] = db_get_one($sql, $params);
774    }
[276]775
[217]776    return $list;
777}
778
779//指定メンバーのstateを得る
780function biz_getState($member_id)
781{
782    $sql = 'SELECT * FROM biz_state WHERE c_member_id = ?';
783    $params = array(
784        intval($member_id),
785    );
786
787
788    return db_get_row($sql, $params);
789}
790
791// 参加グループリスト
792function biz_getJoinGroupList($c_member_id, $page, $page_size)
793{
794    $start = ($page - 1) * $page_size;
[276]795
[217]796    $sql = "SELECT biz_group.*" .
797            " FROM biz_group_member , biz_group";
798    $sql .= " WHERE biz_group_member.c_member_id = ?";
799    $sql .= " AND biz_group.biz_group_id=biz_group_member.biz_group_id";
800    $sql .= " ORDER BY biz_group.biz_group_id DESC ";
801
802    $params = array(
803        intval($c_member_id),
804    );
[276]805
[217]806    $biz_group_list = db_get_all_limit($sql, $start, $page_size, $params);
[276]807
[406]808    foreach ($biz_group_list as $key => $value) {
[217]809        $biz_group_list[$key]['count_members'] =
810           count(biz_getGroupMember($value['biz_group_id']));
811    }
812
813    $pager = array(
814        "total_num" => biz_getGroupCount($c_member_id),
815        "disp_num"  => count($biz_group_list),
816        "start_num" => 0,
817        "end_num"   => 0,
818        "total_page" => 0,
819        "prev_page" => 0,
820        "next_page" => 0,
821    );
822
823    if ($pager['disp_num'] > 0) {
824        $pager['start_num'] = $start + 1;
825        $pager['end_num'] = $pager['start_num'] + $pager['disp_num'] - 1;
826    }
[276]827
[217]828    if ($pager['total_num']) { 
829        $pager['total_page'] = ceil($pager['total_num'] / $page_size);
[276]830
[217]831        if ($page < $pager['total_page']) {
832            $pager['next_page'] = max($page + 1, 1);
833        }
834        if ($page > 1) {
835            $pager['prev_page'] = min($page - 1, $pager['total_page']);
836        }
837    }
838
839    return array($biz_group_list, $pager);
840}
841
842
843//SET---------------------------------------------
844
845//スケジュール登録
[2527]846function biz_insertSchedule($title, $c_member_id, $begin_date, $finish_date, $begin_time = null, $finish_time = null,
[2835]847                                                        $value = '', $rep_type, $first_id = 0,
848                                                        $biz_group_id = 0, $public_flag = "public", $join_members = array())
[217]849{
850    //登録値のセット、チェック
[406]851    if (!$value) {
[217]852        $value = '';
[406]853    }
[276]854
[406]855    if (!$rep_type) {
[217]856        $rep_type = 0;
[406]857    }
[217]858
859    //biz_scheduleにデータを追加する
[332]860    $data = array(
861        'title' => $title,
[2527]862        'c_member_id' => intval($c_member_id),
[332]863        'begin_date' => $begin_date,
864        'finish_date' => $finish_date,
865        'begin_time' => $begin_time,
866        'finish_time' => $finish_time,
867        'value' => $value,
868        'rep_type' => $rep_type,
869        'rep_first' => $first_id,
[1087]870        'biz_group_id' => $biz_group_id,
871        'public_flag' => $public_flag,
[217]872    );
[2880]873    $new_schedule_id = db_insert('biz_schedule', $data);
[2527]874
[2880]875    // 参加者が指定されていない場合は、c_memberすべてが予定の参加者に
876    if (empty($join_members)) {
877        $sql = 'SELECT c_member_id FROM c_member';
878        $join_members = db_get_col($sql);
879    }
880    foreach ($join_members as $value) {
881        $data = array(
882            'c_member_id' => $value,
883            'biz_schedule_id' => $new_schedule_id,
884            'is_read' => 0,
[2527]885        );
[2880]886        db_insert('biz_schedule_member', $data);
[2527]887    }
[217]888}
889
890//スケジュール削除
[2941]891function biz_deleteSchedule($id)
[217]892{
[2941]893    $sql = 'DELETE FROM biz_schedule WHERE biz_schedule_id = ?';
894    $params = array(
895        intval($id),
896    );
897    db_query($sql, $params);
898    $sql = 'DELETE FROM biz_schedule_member WHERE biz_schedule_id = ?';
899    $params = array(
900        intval($id),
901    );
902    db_query($sql, $params);
[217]903}
904
905//スケジュール編集
906function biz_editSchedule($title, $member_id, $begin_date, $finish_date, $begin_time = null, $finish_time = null,
907                                                    $value = '', $rep_type, $first_id = 0,
[1087]908                                                    $biz_group_id = 0, $public_flag = "public",
[2880]909                                                    $id, $join_members = array())
[217]910{
[1087]911    $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` = ?';
[217]912    $params = array(
913        $title,
914        $member_id,
915        $begin_date,
916        $finish_date,
917        $begin_time,
[341]918        $finish_time,
[217]919        $value,
920        $rep_type,
921        $first_id,
[1087]922        $biz_group_id,
923        $public_flag,
[217]924        $id,
925    );
926    db_query($sql, $params);
[2880]927   
928    $sql = 'DELETE FROM `biz_schedule_member` WHERE `biz_schedule_id` = ?';
929    $params = array(
930        intval($id),
931    );
932    db_query($sql, $params);
933
934    foreach ($join_members as $value) {
935        $data = array(
936            'c_member_id' => $value,
937            'biz_schedule_id' => intval($id),
938            'is_read' => 0,
939        );
940       
941        db_insert('biz_schedule_member', $data);
942    }
[217]943}
944
945//スケジュールを既読済みに
946function biz_readSchedule($member_id, $schedule_id)
947{
948    $sql = 'SELECT biz_schedule_member_id FROM biz_schedule_member WHERE biz_schedule_id = ? AND c_member_id = ?';
949    $params = array(
950        intval($schedule_id),
951        intval($member_id),
952    );
953    $sid = db_get_one($sql, $params);
[276]954
[217]955    $sql = 'UPDATE `biz_schedule_member` SET `is_read` = \'1\' WHERE `biz_schedule_member_id` = ?';
956    $params = array(
957        intval($sid),
958    );
959    db_query($sql, $params);
960}
961
962//グループ登録
963function biz_insertGroup($name, $member_id, $info, $image_name, $members = array())
964{   
965    //登録値のセット、チェック
[332]966    if (!$image_name) {
[217]967        $image_name = 0;
[332]968    }
969    if (!$info) {
[217]970        $info = "";
[332]971    }
972    if (empty($members)) {
[217]973        $members = array($member_id);
[332]974    }
[217]975
976    //biz_groupにデータを追加する
[332]977    $data = array(
978        'name' => $name,
979        'info' => $info,
980        'admin_id' => intval($member_id),
981        'image_filename' => $image_name,
[217]982    );
[332]983    $new_group_id = db_insert('biz_group', $data);
[406]984
[332]985    foreach ($members as $key => $value) {
986        $data = array(
987            'c_member_id' => $value,
988            'biz_group_id' => $new_group_id,
[217]989        );
[332]990        db_insert('biz_group_member', $data);
[217]991    }
992}
993
994function biz_editGroup($biz_group_id, $name, $member_id, $info, $image_name, $members = array())
995{
996    //登録値のセット、チェック
[406]997    if (!$image_name) {
[217]998        $image_name = 0;
[406]999    }
[217]1000
[406]1001    if (!$info) {
[217]1002        $info = "";
[406]1003    }
[276]1004
[406]1005    if (empty($members)) {
[217]1006        $members = array($member_id);
[406]1007    }
[217]1008
1009    //biz_groupにデータを追加する
1010
1011    $sql = 'UPDATE `biz_group` SET `name` = ?,`info` = ?,`image_filename` = ? WHERE `biz_group_id` = ?';
1012    $params = array(
1013        $name,
1014        $info,
1015        $image_name,
1016        intval($biz_group_id),
1017    );
1018    db_query($sql, $params);
1019
1020    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
1021    $params = array(
1022        intval($biz_group_id),
1023    );
1024    $result = db_query($sql, $params);
1025
[332]1026    foreach ($members as $key => $value) {
1027        $data = array(
1028            'c_member_id' => $value,
1029            'biz_group_id' => intval($biz_group_id),
[217]1030        );
[340]1031        db_insert('biz_group_member', $data);
[217]1032    }
1033}
1034
1035//グループの削除
1036function biz_deleteGroup($group_id)
1037{
1038    $sql = 'DELETE FROM biz_group_member WHERE biz_group_id = ?';
1039    $params = array(
1040        intval($group_id),
1041    );
1042    $result = db_query($sql, $params);
1043    $sql = 'DELETE FROM biz_group WHERE biz_group_id = ?';
1044    $params = array(
1045        intval($group_id),
1046    );    $result = db_query($sql, $params);
[1087]1047
[1181]1048
[1087]1049    $sql = 'UPDATE biz_schedule SET public_flag = "private", biz_group_id = NULL WHERE biz_group_id = ?';
1050    db_query($sql, array(intval($group_id)));
[1181]1051
1052    $sql = 'DELETE FROM biz_todo WHERE biz_group_id = ?'; 
1053    db_query($sql, array(intval($group_id))); 
1054
[217]1055}
1056
1057//グループに参加
1058function biz_joinGroup($member_id, $group_id)
1059{
[332]1060    $data = array(
1061        'c_member_id' => intval($member_id),
1062        'biz_group_id' => intval($group_id),
[217]1063    );
[332]1064    db_insert('biz_group_member', $data);
[217]1065}
1066
1067//施設追加
[786]1068function biz_addShisetsu($name, $image_name, $info = '')
[217]1069{
[332]1070    if (!$image_name) {
[217]1071        $image_name = '0';
[332]1072    }
[276]1073
[332]1074    $data = array(
1075        'name' => $name,
1076        'image_filename' => $image_name,
[786]1077        'info' => $info,
[217]1078    );
[332]1079    db_insert('biz_shisetsu', $data);
[217]1080}
1081
1082//施設編集
[786]1083function biz_editShisetsu($id, $name, $image_name, $info = '')
[217]1084{
[332]1085    if (!$image_name) {
[217]1086        $image_name = 0;
[332]1087    }
1088
[786]1089    $sql = 'UPDATE `biz_shisetsu` SET `name` = ?,`image_filename` = ?, `info` = ? WHERE `biz_shisetsu_id` = ?';
[217]1090    $params = array(
1091        $name,
1092        $image_name,
[786]1093        $info,
[217]1094        intval($id),
1095    );
1096    db_query($sql, $params);
1097}
1098
1099//施設予定追加
1100function biz_addShisetsuSchedule($shisetsu_id, $member_id, $date, $begin_time, $finish_time)
1101{
[332]1102    $data = array(
1103        'c_member_id' => intval($member_id),
1104        'biz_shisetsu_id' => intval($shisetsu_id),
1105        'date' => $date,
1106        'begin_time' => $begin_time,
1107        'finish_time' => $finish_time,
[217]1108    );
[332]1109    $insert_id = db_insert('biz_shisetsu_schedule', $data);
[217]1110
[332]1111    $data = array(
1112        'shisetsu_id' => intval($shisetsu_id),
1113        'schedule_id' => intval($insert_id),
[217]1114    );
[332]1115    db_insert('biz_schedule_shisetsu', $data);
[217]1116}
1117
1118//施設予定削除
1119function biz_deleteShisetsuSchedule($shisetsu_id)
1120{
1121    $sql = 'DELETE FROM `biz_shisetsu_schedule` WHERE biz_shisetsu_schedule_id = ?';
1122    $params = array(
1123        intval($shisetsu_id),
1124    );
1125
1126    db_query($sql, $params);
[276]1127
[217]1128    return $sql;
1129}
1130
1131//Todo登録
[1181]1132function biz_insertTodo($member_id, $memo, $writer_id, $sort_order, $is_all,
1133    $due_datetime = '', $priority = 3, $biz_group_id = '', $public_flag = 'public')
[217]1134{
[332]1135    if ($is_all) {
1136        //共有Todo
[217]1137        $member_id = 0;
[332]1138    } elseif ($member_id == $writer_id) {
[217]1139        $writer_name = '';
[332]1140    }
[217]1141
[332]1142    $data = array(
1143        'c_member_id' => $member_id,
1144        'memo' => $memo,
1145        'is_check' => 0,
1146        'writer_id' => $writer_id,
1147        'sort_order' => $sort_order,
[695]1148        'r_datetime' => date("Y-m-d H:i"),
[1181]1149        'due_datetime' => $due_datetime,
1150        'priority' => $priority,
1151        'biz_group_id' => $biz_group_id,
1152        'public_flag' => $public_flag,
[217]1153    );
[332]1154    return db_insert('biz_todo', $data);
[217]1155}
1156
1157//Todo登録
[1181]1158function biz_editTodo($member_id, $memo, $writer_id, $sort_order, $is_all, $biz_todo_id, $is_done, $due_datetime, $priority, $biz_group_id, $public_flag)
[217]1159{
[1181]1160    $todo = biz_getTodo($biz_todo_id);
1161
[406]1162    if ($is_all) {
1163        //共有Todo
[217]1164        $member_id = 0;
[406]1165    } elseif ($member_id == $writer_id) {
[217]1166        $writer_name = '';
[406]1167    }
[217]1168
[1181]1169    if ($is_done != $todo['is_check']) {
1170        biz_checkTodo($biz_todo_id, $todo['is_check']);
1171    }
1172   
1173    $sql = 'UPDATE `biz_todo` SET `c_member_id` = ?, `memo` = ?, `writer_id` = ?,'
1174        .'`r_datetime` = ?, `due_datetime` = ?, `priority` = ?, `biz_group_id` = ?,'
1175        .'`public_flag` = ? WHERE `biz_todo_id` = ?';
[217]1176
1177    $params = array(
1178        intval($member_id),
1179        $memo,
1180        intval($writer_id),
[695]1181        date("Y-m-d H:i"),
[1181]1182        $due_datetime,
1183        intval($priority),
1184        intval($biz_group_id),
1185        $public_flag,
1186        intval($biz_todo_id),
[217]1187    );
1188
1189    $result = db_query($sql, $params);
[276]1190
[217]1191    return $result;
1192}
1193
1194//Todo削除
1195function biz_deleteTodo($delid)
1196{
1197    //指定されたTodoを削除
1198    $sql = 'DELETE FROM biz_todo WHERE biz_todo_id = ?';
1199
1200    $params = array(
1201        intval($delid),
1202    );
1203
1204    $result = db_query($sql, $params);
[276]1205
[217]1206    return $result;
1207}
1208
1209//Todoにチェック
1210function biz_checkTodo($chid, $is_check)
1211{
1212    if ($is_check) {
1213    //チェックを解除する
1214        $sql = 'UPDATE `biz_todo` SET `is_check` = \'0\' WHERE `biz_todo_id` = ?';
1215    } else {
1216    //チェックをつける
1217        $sql = 'UPDATE `biz_todo` SET `is_check` = \'1\' WHERE `biz_todo_id` = ?';
1218    }
1219
1220    $params = array(
1221        intval($chid),
1222    );
1223
1224    $result = db_query($sql, $params);
1225}
1226
1227//画像をDBに格納する
1228function biz_saveImage($upfile, $filename)
1229{
[406]1230    if (!$upfile) {
1231        return false;
1232    }
1233    if (!$filename) {
1234        return false;
1235    }
[217]1236
[406]1237    if (!t_check_image($upfile)) {
[217]1238        return false;
1239    }
1240
1241    $image = t_check_image($upfile);
[406]1242    $filepath = $upfile["tmp_name"];
[276]1243
[217]1244    $path_parts = pathinfo($upfile["name"]);
1245    $ext = $path_parts["extension"];
1246    $ext = strtolower($ext);
1247    $filename = $filename."_".time().".".$ext;
1248
1249    $fp = fopen($filepath, "rb");
1250    $image_data = fread($fp, filesize($filepath));
1251    fclose($fp);
1252
1253    // 画像かどうかのチェック
1254    if (!@imagecreatefromstring($image_data)) return false;
[276]1255
[217]1256    $image_data = base64_encode($image_data);
1257    $sql = "INSERT INTO c_image (filename, bin, r_datetime, type)" .
1258        " VALUES (?, ?, NOW(), ?)";
1259
1260    $params = array(
1261        $filename,
1262        $image_data,
1263        $image['format'],
1264    );
1265    $result = db_query($sql, $params);;
1266
1267    return $filename;
1268}
1269
1270function biz_deleteImage($filename)
1271{
[406]1272    if (!$filename) {
1273        return false;
1274    }
[276]1275
[406]1276    $sql = 'DELETE FROM c_image WHERE filename = ?';
[217]1277    $params = array(
1278        $filename,
1279    );
1280    db_query($sql, $params);
[276]1281
[217]1282    // cacheの削除
1283    image_cache_delete($filename);
1284}
1285
1286function biz_deleteGroupImage($id, $filename)
1287{
1288    $sql = 'UPDATE `biz_group` SET `image_filename` = \'0\' WHERE `biz_group_id` = ?';
1289    $params = array(
1290        intval($id),
1291    );
1292    db_query($sql, $params);
1293    biz_deleteImage($filename);
1294}
1295
1296function biz_deleteShisetsuImage($id, $filename)
1297{
1298    $sql = 'UPDATE `biz_shisetsu` SET `image_filename` = \'0\' WHERE `biz_shisetsu_id` = ?';
1299
1300    $params = array(
1301        intval($id),
1302    );
1303
1304    db_query($sql, $params);
1305    biz_deleteImage($filename);
1306}
1307
1308function biz_changeNickname($member_id, $new)
1309{
1310    $sql = 'UPDATE `c_member` SET `nickname` = ? WHERE `c_member_id` = ?';
1311    $params = array(
1312        $new,
[332]1313        intval($member_id),
[217]1314    );
1315    $result = db_query($sql, $params);
1316
1317    return $result;
1318}
1319
1320//施設情報削除
1321//一緒に施設画像も削除
1322function biz_deleteShisetsu($id)
1323{
1324
1325    $shisetsu = biz_getShisetsuData($id);
1326
1327    //画像削除
1328    biz_deleteShisetsuImage($id, $shisetsu['image_filename']);
1329
1330    $sql = 'DELETE FROM `biz_shisetsu` WHERE biz_shisetsu_id = ?';
1331    $params = array(
1332        intval($id),
1333    );
1334
1335    db_query($sql, $params);
1336}
1337
1338//-------------------------------
1339//admin
1340
1341function biz_getConfig()
1342{
1343    $sql = "SELECT name, value FROM biz_admin_config";
1344    return db_get_assoc($sql);
1345}
1346
[365]1347
1348function ktai_biz_openpne_redirect($module, $action = '', $params = array())
1349{
1350    if ($module == 'ktai_biz') {
1351        if (session_id()) {
1352            $params['ksid'] = session_id();
1353        }
1354    }
1355    $url = openpne_gen_url($module, $action, $params);
1356    client_redirect_absolute($url);
1357}
1358
[896]1359//------------------------------
1360//mail
1361
1362/**
1363 * スケジュール通知メールを送信する
1364 */
1365function biz_do_common_send_schedule_mail()
1366{
1367    $y = date("Y");
1368    $m = date("m");
1369    $d = date("d");
1370    $c_schedule_list = biz_getDateSchedule($y, $m, $d);
1371
1372    $send_list = array();
1373    foreach ($c_schedule_list as $schedule_id) {
1374        $value = biz_getScheduleInfo($schedule_id);
1375        $c_member_id = $value['c_member_id'];
1376        $send_list[$c_member_id][] = $value;
1377    }
1378
1379    foreach ($send_list as $key => $value) {
[1268]1380        $c_member_secure = db_member_c_member_secure4c_member_id($key);
[896]1381        $pc_address = $c_member_secure['pc_address'];
1382
1383        $params = array(
[1268]1384            "c_member" => db_member_c_member4c_member_id_LIGHT($key),
[896]1385            "c_schedule_list" => $value,
1386        );
1387        var_dump($pc_address, $params);
1388        fetch_send_mail($pc_address, 'm_pc_schedule_mail', $params);
1389    }
1390}
[217]1391?>
Note: See TracBrowser for help on using the repository browser.