/** * 登録実行処理 * POSTメソッドの場合、呼ばれる */ function execute() { $context = $this->getContext(); $controller = $context->getController(); $request = $context->getRequest(); $user = $context->getUser(); $params =& $request->getParameters(); // ログインユーザ情報の設定 $acs_user_info_row =& $user->getAttribute('acs_user_info_row'); $request->setAttributeByRef('acs_user_info_row', $acs_user_info_row); // 幹事でないスケジュールや決定済の場合セキュリティエラー // 最新スケジュール情報を取得して可否を確認 $schedule =& ACSSchedule::get_schedule_instance($params['community_id'], $params['schedule_id']); if ($schedule->is_fixed() || !$schedule->is_organizer($acs_user_info_row)) { // このページへアクセスすることはできません。 $controller->forward(SECURE_MODULE, SECURE_ACTION); return; } // 候補日時選択画面からのPOSTの場合 if ($params['post_from_answer'] == 't') { $request->setAttributeByRef('schedule', $schedule); $return_view = $this->getMailInputView($controller, $request, $user); // メール入力画面からのPOSTの場合 } else { // DB更新 $schedule->update_decide_schedule($params['mailentry_adjustment_id']); // システムのメールアドレスを取得 $system_mail_addr = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D01'), 'SYSTEM_MAIL_ADDR'); // メール送信相手の設定 // 自由参加の場合対象となるメンバの取得 $target_mmb = ""; if ($schedule->is_target_all() === FALSE) { $p_array =& ACSScheduleParticipant::get_schedule_participant_instance_list($schedule->schedule_id, FALSE); foreach ($p_array as $user_community_id => $schedule_participant) { $target_mmb[] = $user_community_id; } $p_array = ""; } // メールの送信 ACSCommunityMail::send_community_mail($schedule->community_id, $system_mail_addr, $params['mail_subject'], $params['mail_message'], $target_mmb); // リダイレクト(リロード対策) $controller->redirect($this->getControllerPath('Community', 'Schedule') . "&community_id=" . $schedule->community_id); } return $return_view; }
/** * スケジュール通知メールの送信 * * 各ユーザの言語に対応してスケジュール関連の<br> * 通知メールを送信する * * @param object $schedule スケジュールインスタンス(ACSSchedule) * @param string $serial_msg_key_fmg シリアルメッセージ取得用フォーマット(例:"RMD%03d") * @param string $subject_msg_key 件名メッセージ取得用キー(例:"M001") * @param array $additional_tags 追加する置換プレースフォルダ(未指定も可) * @param array $additional_message_tags 追加する置換プレースフォルダ(メッセージid指定) * (未指定も可) メール言語に対応して置換されます * @return boolean true/false */ static function send_schedule_announce_mail(&$schedule, $serial_msg_key_fmg, $subject_msg_key, $additional_tags = "", $additional_message_tags = "") { // スケジュールURL $schedule_url = "{SYSTEM_SCRIPT_PATH}" . "?{SYSTEM_MODULE_ACCESSOR}=Community" . "&{SYSTEM_ACTION_ACCESSOR}=AnswerSchedule" . "&community_id={$schedule->community_id}" . "&schedule_id={$schedule->schedule_id}"; $user_community_row =& ACSUser::get_user_profile_row($schedule->user_community_id); // システムのメールアドレスを取得 $system_mail_addr = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D01'), 'SYSTEM_MAIL_ADDR'); // 各言語用のメッセージを準備 $msgs = array(); $subjects = array(); $org_lang = ACSMsg::get_lang(); foreach (ACSMsg::get_lang_list_array() as $lang => $lang_disp) { ACSMsg::set_lang($lang); $tags_array = array('{USER_NAME}' => $user_community_row['user_name'], '{USER_COMMUNITY_NAME}' => $user_community_row['community_name'], '{SCHEDULE_NAME}' => $schedule->schedule_name, '{SCHEDULE_DETAIL}' => $schedule->schedule_detail, '{SCHEDULE_CLOSING_DATETIME}' => ACSLib::convert_pg_date_to_str($schedule->schedule_closing_datetime), '{SCHEDULE_URL}' => $schedule_url); if (is_array($additional_tags)) { $tags_array = array_merge($tags_array, $additional_tags); } if (is_array($additional_message_tags)) { $msg_array = array(); foreach ($additional_message_tags as $tag => $msg_key) { $msg_array[$tag] = ACSMsg::get_mdmsg(__FILE__, $msg_key); } $tags_array = array_merge($tags_array, $msg_array); } $msgs[$lang] = ACSMsg::get_serial_msg('lib', basename(__FILE__), $serial_msg_key_fmg); $msgs[$lang] = ACSMsg::get_tag_replace($msgs[$lang], $tags_array); // subjectの編集 $subjects[$lang] = ACSMsg::get_mdmsg(__FILE__, $subject_msg_key); } ACSMsg::set_lang($org_lang); // メールの送信(全コミュニティメンバ) return ACSCommunityMail::send_community_mail($schedule->community_id, $system_mail_addr, $subjects, $msgs); }