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

source: OpenPNE/trunk/webapp_biz/modules/biz/do/fhg_biz_schedule_add.php @ 284

Last change on this file since 284 was 284, checked in by ogawa, 14 years ago

CS

File size: 8.4 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
7class biz_do_fhg_biz_schedule_add extends OpenPNE_Action
8{
9    function execute($requests)
10    {
11        $u = $GLOBALS['AUTH']->uid();
12        $sessid = session_id();
13
14        //ERROR----------------
15        //存在しない日付
16        if (!checkdate($requests['sc_b_month'], $requests['sc_b_date'], $requests['sc_b_year'])) {
17            $redirect_script = '?m=biz&a=page_fh_biz_schedule_add';
18            $msg = urlencode('存在しない日付が指定されました。');
19
20            //日付関連の引数は返さなくてもよい
21            $url = $redirect_script.
22                        '&msg='.$msg.
23                        '&title='.$requests['sc_title'].
24                        '&sc_rp='.$requests['sc_rp'].
25                        '&sc_memo='.$requests['sc_memo'].
26                        '&sc_j_mem_enc='.serialize($requests['sc_j_mem']).
27                        '&sc_rwk_enc='.serialize($requests['sc_rwk_enc']).
28                        '&sc_rcount='.$requests['sc_rcount'];
29
30            client_redirect_absolute($url);
31            exit();  //強制的にスクリプトを終了しなければいけない
32        }
33        //---------------------
34
35        //ERROR----------------
36        //タイトル未入力
37        if (empty($requests['sc_title'])) {
38            $redirect_script = '?m=biz&a=page_fh_biz_schedule_add';
39            $msg = urlencode('タイトルを入力してください。');
40            $begin_date = $requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.$requests['sc_b_date'];
41            $begin_time = $requests['sc_b_hour'].':'.$requests['sc_b_minute'];
42            $finish_time = $requests['sc_f_hour'].':'.$requests['sc_f_minute'];
43            $url = $redirect_script.
44                        '&msg='.$msg.
45                        '&begin_date='.$begin_date.
46                        '&begin_time='.$begin_time.
47                        '&finish_time='.$finish_time.
48                        '&sc_rp='.$requests['sc_rp'].
49                        '&sc_memo='.$requests['sc_memo'].
50                        '&sc_j_mem_enc='.serialize($requests['sc_j_mem']).
51                        '&sc_rwk_enc='.serialize($requests['sc_rwk_enc']).
52                        '&sc_rcount='.$requests['sc_rcount'];
53
54            client_redirect_absolute($url);
55            exit();  //強制的にスクリプトを終了しなければいけない
56        }   
57        //---------------------
58
59        //ERROR----------------
60        //繰り返し予定::曜日指定なし
61        if ($requests['sc_rp'] && empty($requests['sc_rwk'])) {
62            $redirect_script = '?m=biz&a=page_fh_biz_schedule_add';
63            $msg = urlencode('繰り返し予定を登録する場合は、曜日を指定してください。');
64            $begin_date = $requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.$requests['sc_b_date'];
65            $begin_time = $requests['sc_b_hour'].':'.$requests['sc_b_minute'];
66            $finish_time = $requests['sc_f_hour'].':'.$requests['sc_f_minute'];
67            $url = $redirect_script.
68                        '&msg='.$msg.
69                        '&begin_date='.$begin_date.
70                        '&begin_time='.$begin_time.
71                        '&finish_time='.$finish_time.
72                        '&sc_title='.$requests['sc_title'].
73                        '&sc_rp='.$requests['sc_rp'].
74                        '&sc_memo='.$requests['sc_memo'].
75                        '&sc_j_mem_enc='.serialize($requests['sc_j_mem']).
76                        '&sc_rwk_enc='.serialize($requests['sc_rwk_enc']).
77                        '&sc_rcount='.$requests['sc_rcount'];
78
79            client_redirect_absolute($url);
80            exit();  //強制的にスクリプトを終了しなければいけない
81        }
82        //--------------------
83
84        //施設、参加者のチェック
85        if (in_array('0', $requests['sc_j_mem'])) {
86            //「全員」が含まれている場合は、配列を空に
87            $requests['sc_j_mem'] = array();
88        }
89
90        if (!$requests['sc_j_plc']) {
91            $requests['sc_j_plc'] = 0;
92        }
93
94        if ($requests['sc_b_hour'] && !$requests['sc_b_minute']) {
95            $requests['sc_b_minute'] = '00';
96        }
97        if ($requests['sc_f_hour'] && !$requests['sc_f_minute']) {
98            $requests['sc_f_minute'] = '00';
99        }
100
101        //日付のフォーマットを設定
102        $begin_date = $requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.$requests['sc_b_date'];
103        $begin_time = $requests['sc_b_hour'].':'.$requests['sc_b_minute'];
104        $finish_time = $requests['sc_f_hour'].':'.$requests['sc_f_minute'];
105
106        //ERROR---------------
107        if ((strtotime($finish_time) < strtotime($begin_time)) && ($finish_time != ':')) {
108            //終了時間と開始時間が変
109            $redirect_script = '?m=biz&a=page_fh_biz_schedule_add';
110            $msg = urlencode('終了時刻が開始時刻より先です。');
111            $begin_date = $requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.$requests['sc_b_date'];
112            $begin_time = $requests['sc_b_hour'].':'.$requests['sc_b_minute'];
113            $finish_time = $requests['sc_f_hour'].':'.$requests['sc_f_minute'];
114            $url = $redirect_script.
115                        '&msg='.$msg.
116                        '&begin_date='.$begin_date.
117                        '&sc_title='.$requests['sc_title'].
118                        '&sc_rp='.$requests['sc_rp'].
119                        '&sc_memo='.$requests['sc_memo'].
120                        '&sc_j_mem_enc='.serialize($requests['sc_j_mem']).
121                        '&sc_rwk_enc='.serialize($requests['sc_rwk_enc']).
122                        '&sc_rcount='.$requests['sc_rcount'];
123
124            client_redirect_absolute($url);
125            exit();  //強制的にスクリプトを終了しなければいけない
126        }
127        //--------------------
128
129        if (!$requests['sc_rp'] && ($requests['sc_bn'] == 1)) {
130            //当日中に終わる予定は、開始日と終了日は同一でなければならない
131            $finish_date = $begin_date;
132        }
133
134        if (!($requests['sc_b_hour']||$requests['sc_b_minute']||$requests['sc_f_hour']||$requests['sc_f_minute'])) {
135            //時刻指定なし
136            $begin_time = $finish_time = null;
137        } elseif (!($requests['sc_f_hour']||$requests['sc_f_minute'])) {
138            $finish_time = null;
139        }
140
141        //繰り返し予定
142        if ($requests['sc_rp']) {
143            //終了日の決定
144            $finish_date = date("Y-m-d", strtotime($requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.($requests['sc_b_date']+($requests['sc_rcount'])*7)));
145
146            //first_idの決定
147            $first_id = biz_getScheduleMax() + 1;
148            if (!$first_id) {
149                $first_id = 1;
150            }
151
152            //繰り返しルールの決定
153            foreach ($requests['sc_rwk'] as $value) {
154                $rp_rule += 1 << $value;
155            }
156        } else {
157            //繰り返しなし
158            $finish_date = date("Y-m-d", strtotime($requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.($requests['sc_b_date']+($requests['sc_bn']-1))));
159        }
160
161        if (!$requests['sc_rp']) {
162            //繰り返しをしない予定登録
163            biz_insertSchedule($requests['sc_title'], $u, $begin_date, $finish_date, $begin_time, $finish_time, $requests['sc_memo'], $rp_rule, 0, $requests['sc_j_mem'], $requests['sc_j_plc']);
164        } else {
165            //繰り返し予定
166            $tmp = $begin_date;  //処理中の日付
167
168            for ($i=0; date("Ymd", strtotime($tmp)) < date("Ymd", strtotime($finish_date)); $i++) {
169                $nowday = strtotime($requests['sc_b_year'].'-'.$requests['sc_b_month'].'-'.($requests['sc_b_date']+$i));
170                $tmp = date("Ymd", $nowday);
171                if ($rp_rule & (1 << date("w",$nowday))) {
172                    biz_insertSchedule($requests['sc_title'], $u, $tmp, $tmp, $begin_time, $finish_time, $requests['sc_memo'], $rp_rule, $first_id, $requests['sc_j_mem'], $requests['sc_j_plc']);
173                }
174            }
175        }
176
177        $week = date("W", abs(strtotime($begin_date) - strtotime(date("Y-m-d")))) - 1;
178        client_redirect_absolute("?m=biz&a=page_fh_biz_schedule_view&w=$week&msg=".urlencode('予定を追加しました。')."&id=".biz_getScheduleMax());
179    }
180}
181
182?>
Note: See TracBrowser for help on using the repository browser.