コード例 #1
0
 /**
  * 登録実行処理
  * 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;
 }
コード例 #2
0
 /**
  * スケジュール通知メールの送信
  *
  * 各ユーザの言語に対応してスケジュール関連の<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);
 }