/** * 登録実行処理 * POSTメソッドの場合、呼ばれる */ function execute() { $context = $this->getContext(); $controller = $context->getController(); $request = $context->getRequest(); $user = $context->getUser(); $params =& $request->getParameters(); $redirect_url = $this->getControllerPath('Community', 'Schedule') . "&community_id=" . $params['community_id']; $schedule_participant =& $this->getFormPostParticipant(&$params, unserialize($user->getAttribute('org_participant'))); if (!$this->get_execute_privilege()) { $controller->forward(SECURE_MODULE, SECURE_ACTION); return; } // 登録できないスケジュールの場合スルー // 最新スケジュール情報を取得して可否を確認 $schedule =& ACSSchedule::get_schedule_instance($params['community_id'], $schedule_participant->schedule_id); if ($schedule->is_fixed() || $schedule->is_close()) { $controller->redirect($redirect_url); } // 参加切替の場合再表示 if ($params['participate']) { $request->setAttributeByRef('schedule_participant', $schedule_participant); // DB更新(参加登録のみ) $schedule_participant->update_participant(TRUE); return $this->getDefaultView(); } else { // DB更新 $schedule_participant->update_participant(); } // リダイレクト(リロード対策) $controller->redirect($redirect_url); }
/** * 初期画面 * * GETメソッドの場合、呼ばれる。 * "schedule_id"パラメータが無い場合は新規作成とする。 */ function getDefaultView() { $context = $this->getContext(); $controller = $context->getController(); $request = $context->getRequest(); $user = $context->getUser(); $params =& $request->getParameters(); if (!$this->get_execute_privilege()) { $controller->forward(SECURE_MODULE, SECURE_ACTION); return; } $target_community_id = $request->getParameter('community_id'); $target_schedule_id = $request->getParameter('schedule_id'); // コミュニティ情報の取得 $target_community_row = ACSCommunity::get_community_row($target_community_id); $request->setAttributeByRef('target_community_row', $target_community_row); $acs_user_info_row =& $user->getAttribute('acs_user_info_row'); // スケジュール情報の取得 if ($target_schedule_id != "") { $schedule =& ACSSchedule::get_schedule_instance($target_community_id, $target_schedule_id); // (不正対策) // 幹事以外の場合 if (!$schedule->is_organizer($acs_user_info_row)) { // このページへアクセスすることはできません。 $controller->forward(SECURE_MODULE, SECURE_ACTION); return; } } else { $schedule =& new ACSSchedule($target_community_id, $acs_user_info_row['user_community_id']); } // (不正対策) // 決定済みのスケジュールであった場合 if ($schedule->is_fixed()) { // このページへアクセスすることはできません。 $controller->forward(SECURE_MODULE, SECURE_ACTION); return; } // 変更前の元データをキャッシュ $user->setAttribute('org_schedule', serialize($schedule)); $request->setAttributeByRef('schedule', $schedule); // 締切日時の設定 $request->setAttribute('closing_datetime_array', $schedule->get_schedule_closing_datetime_array()); // お知らせメールの初期設定 $request->setAttribute('send_annouce_mail_checked', ' CHECKED'); return View::INPUT; }
/** * 入力チェックエラー時の対応 */ function handleError() { $context = $this->getContext(); $controller = $context->getController(); $request = $context->getRequest(); $user = $context->getUser(); $params =& $request->getParameters(); $schedule =& ACSSchedule::get_schedule_instance($params['community_id'], $params['schedule_id']); $request->setAttributeByRef('schedule', $schedule); return $this->getMailInputView($controller, $request, $user); }