/** * 言語クッキー保存 * * 現在の言語設定をクッキーに保存します * * @param string $lang 設定するロケール(ja,en,...) */ function set_lang_cookie($lang) { if (array_key_exists($lang, ACSMsg::get_lang_list_array())) { setcookie(ACSMSG_LANG_COOKIE_NAME, $lang, time() + ACSMSG_LANG_COOKIE_EXPIRESEC, ACSMSG_LANG_COOKIE_PATH); } }
function execute() { $context = $this->getContext(); $controller = $context->getController(); $request = $context->getRequest(); $user = $context->getUser(); $this->setScreenId("0001"); $this->setTemplate('DecideSchedule_input.tpl.php'); $current_module = 'Community'; $current_action = 'DecideSchedule'; // ログインユーザ情報 $acs_user_info_row = $request->getAttribute('acs_user_info_row'); $this->setAttribute('acs_user_info_row', $acs_user_info_row); // コミュニティ情報 $target_community_row =& $request->getAttribute('target_community_row'); $this->setAttribute('target_community_row', $target_community_row); // スケジュールインスタンスの設定 $schedule =& $request->getAttribute('schedule'); $this->setAttribute('schedule', $schedule); // 共通URLパラメータ $url_params = "community_id=" . $target_community_row['community_id']; // コミュニティのURL $this->setAttribute('url_community_top', $this->getControllerPath($current_module, 'Index') . "&" . $url_params); // スケジュール調整表一覧のURL $this->setAttribute('url_schedule_list', $this->getControllerPath($current_module, 'Schedule') . "&" . $url_params); // コミット先のURL $this->setAttribute('url_commit', $this->getControllerPath($current_module, $current_action)); // スケジュール決定日 $mailentry_adjustment_id =& $request->getAttribute('mailentry_adjustment_id'); $adjustment_dates_list =& $schedule->get_adjustment_dates(); $this->setAttribute('mailentry_adjustment_id', $mailentry_adjustment_id); $this->setAttribute('adjustment_date', $adjustment_dates_list[$mailentry_adjustment_id]['date_string']); // 言語一覧 $html_options_lang_list = ACSMsg::get_lang_list_array(); $this->setAttribute('html_options_lang_list', $html_options_lang_list); // 全言語メッセージ取得 $java_subject_var_string = "var subject_list = new Array();\n"; $java_message_var_string = "var msg_list = new Array();\n"; $sel_index = 0; $index = 0; foreach ($html_options_lang_list as $key => $val) { $msg = $schedule->get_decision_mail_message($key, $mailentry_adjustment_id); $subject = $schedule->get_decision_mail_subject($key); if ($key == ACSMsg::get_lang()) { $default_subject = $subject; $default_message = $msg; $sel_index = $index; } $java_msg = htmlspecialchars(str_replace("\r", "", str_replace("\n", "\\n", $msg))); // "&" -> "&" へ戻す $java_subject = str_replace("&", "&", $subject); $java_msg = str_replace("&", "&", $java_msg); $java_subject_var_string = $java_subject_var_string . 'subject_list["' . $key . '"] = "' . $java_subject . '";' . "\n"; $java_message_var_string = $java_message_var_string . 'msg_list["' . $key . '"] = "' . $java_msg . '";' . "\n"; $index++; } $this->setAttribute('java_subject_var_string', $java_subject_var_string); $this->setAttribute('java_message_var_string', $java_message_var_string); $this->setAttribute('java_default_lang_index', $sel_index); // 現在の表示言語の設定 $this->setAttribute('current_lang', ACSMsg::get_lang()); $this->setAttribute('mail_subject', $request->getAttribute('mail_subject')); if ($request->getAttribute('mail_message')) { $this->setAttribute('mail_subject', $request->getAttribute('mail_subject')); $this->setAttribute('mail_message', $request->getAttribute('mail_message')); } else { $this->setAttribute('mail_subject', $default_subject); $this->setAttribute('mail_message', $default_message); } // スケジュール決定のURL $current_module = 'Community'; $cancel_url = $this->getControllerPath($current_module, 'DecideSchedule') . "&" . $url_params . "&schedule_id=" . $schedule->schedule_id . "&mailentry_adjustment_id=" . $mailentry_adjustment_id; $this->setAttribute('cancel_url', $cancel_url); // エラー時のメッセージ表示 $this->setAttribute('error_message', $this->getErrorMessage($controller, $request, $user)); return parent::execute(); }
</tr> <tr> <td bgcolor="#ffffff"><?php echo ACSMsg::get_msg("User", "EditProfile.tpl.php", 'M035'); ?> </td> <td bgcolor="#ffffff"> <select name="mail_lang"> <?php $mail_lang =& $this->_tpl_vars['target_user_info_row']['contents_row_array']['mail_lang']; if ($mail_lang['contents_value'] == "") { $mail_lang['contents_value'] = ACS_DEFAULT_LANG; } foreach (ACSMsg::get_lang_list_array() as $lang => $lang_name) { echo '<option value="' . $lang . '"' . ($mail_lang['contents_value'] == $lang ? ' selected' : '') . '>' . htmlspecialchars($lang_name) . "\n"; } ?> </select> </td> <td bgcolor="#ffffff"><?php echo ACSMsg::get_msg("User", "EditProfile.tpl.php", 'M022'); ?> </td> <td align="center" bgcolor="#ffffff"><?php echo ACSMsg::get_msg("User", "EditProfile.tpl.php", 'M019'); ?> </td> </tr>
/** * スケジュール通知メールの送信 * * 各ユーザの言語に対応してスケジュール関連の<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); }
/** * 通知メールを送信する * * @param $message_id メッセージID * @param $receiver_id 受信者ID * @param $sender_id 送信者ID */ static function send_info_mail($message_id, $receiver_id, $sender_id) { $system_group = ACSMsg::get_mst('system_config_group', 'D01'); // システムURL $system_base_url = ACSSystemConfig::get_keyword_value($system_group, 'SYSTEM_BASE_URL'); // システムログインURL $system_base_login_url = ACSSystemConfig::get_keyword_value($system_group, 'SYSTEM_BASE_LOGIN_URL'); // システムのメールアドレス (From:) $system_mail_addr = ACSSystemConfig::get_keyword_value($system_group, 'SYSTEM_MAIL_ADDR'); // 利用者の言語設定を一時的に保存 $org_lang = ACSMsg::get_lang(); // 各言語のタイトルを取得 $mail_titles = array(); foreach (ACSMsg::get_lang_list_array() as $lang_key => $lang_name) { ACSMsg::set_lang($lang_key); $mail_titles[$lang_key] = ACSMsg::get_serial_msg('lib', 'ACSWaiting.class.php', 'MTL%03d') . "\n"; } // 言語を一旦元に戻す ACSMsg::set_lang($org_lang); // 依頼側のユーザ情報 $user_info_row = ACSUser::get_user_profile_row($sender_id); // 依頼される側のユーザ情報 $target_user_info_row = ACSUser::get_user_profile_row($receiver_id); // 待機承認URL $message_url = $system_base_login_url . SCRIPT_PATH; $message_url .= "?" . MODULE_ACCESSOR . "=User"; $message_url .= "&" . ACTION_ACCESSOR . "=MessageShow"; $message_url .= "&id={$receiver_id}"; $message_url .= "&message_id={$message_id}"; $target_lang = ACSMsg::get_mail_lang_by_inforow($target_user_info_row); // 一旦依頼される側の言語に設定する ACSMsg::set_lang($target_lang); $body = $mail_titles[$target_lang]; $body .= ACSMsg::get_tag_replace(ACSMsg::get_serial_msg('lib', 'ACSMessage.class.php', 'ADF%03d'), array("{TARGET_USER_NAME}" => $target_user_info_row['user_name'], "{USER_NAME}" => $user_info_row['user_name'], "{USER_COMMUNITY_NAME}" => $user_info_row['community_name'], "{MESSAGE_URL}" => $message_url, "{SYSTEM_BASE_URL}" => $system_base_url)); $subject = ACSMsg::get_mdmsg(__FILE__, 'M002'); // 言語を元に戻す ACSMsg::set_lang($org_lang); $ret = ACSLib::send_mail($system_mail_addr, $target_user_info_row['mail_addr'], null, $subject, $body); }
/** * 依頼承諾メールを送信する * * @param $waiting_id 待機ID * @param $return 成功(true) / 失敗(false) * @return */ static function send_admission_accept_notify_mail($waiting_id) { // 待機情報 $waiting_row = ACSWaiting::get_waiting_row($waiting_id); // システムURL $system_base_url = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D01'), 'SYSTEM_BASE_URL'); // システムログインURL $system_base_login_url = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D01'), 'SYSTEM_BASE_LOGIN_URL'); // システムのメールアドレス (From:) $system_mail_addr = ACSSystemConfig::get_keyword_value(ACSMsg::get_mst('system_config_group', 'D01'), 'SYSTEM_MAIL_ADDR'); // 利用者の言語設定を一時的に保存 $org_lang = ACSMsg::get_lang(); // 各言語のタイトルを取得 $mail_titles = array(); foreach (ACSMsg::get_lang_list_array() as $lang_key => $lang_name) { ACSMsg::set_lang($lang_key); $mail_titles[$lang_key] = ACSMsg::get_serial_msg('lib', 'ACSWaiting.class.php', 'MTL%03d') . "\n"; } // 言語を一旦元に戻す ACSMsg::set_lang($org_lang); if ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master', 'D10')) { // 承認側のユーザ情報 $user_info_row = ACSUser::get_user_profile_row($waiting_row['community_id']); // 承認される側のユーザ情報 $target_user_info_row = ACSUser::get_user_profile_row($waiting_row['waiting_community_id']); $target_lang = ACSMsg::get_mail_lang_by_inforow($target_user_info_row); // 一旦依頼される側の言語に設定する ACSMsg::set_lang($target_lang); $body = $mail_titles[$target_lang]; $body .= ACSMsg::get_tag_replace(ACSMsg::get_serial_msg('lib', 'ACSWaiting.class.php', 'AMF%03d'), array("{TARGET_USER_NAME}" => $target_user_info_row['user_name'], "{USER_NAME}" => $user_info_row['user_name'], "{USER_COMMUNITY_NAME}" => $user_info_row['community_name'], "{MESSAGE}" => trim($waiting_row['reply_message']), "{SYSTEM_BASE_URL}" => $system_base_url)); $subject = ACSMsg::get_mdmsg(__FILE__, 'M006'); $ret = ACSLib::send_mail($system_mail_addr, $target_user_info_row['mail_addr'], null, $subject, $body); // 言語を元に戻す ACSMsg::set_lang($org_lang); } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master', 'D20')) { // 承認側のコミュニティ情報 $community_row = ACSCommunity::get_community_row($waiting_row['community_id']); // 承認される側のユーザ情報 $target_user_info_row = ACSUser::get_user_profile_row($waiting_row['waiting_community_id']); // 待機承認URL $waiting_url = $system_base_login_url . SCRIPT_PATH; $waiting_url .= "?" . MODULE_ACCESSOR . "=Community"; $waiting_url .= "&" . ACTION_ACCESSOR . "=WaitingList"; $waiting_url .= "&community_id={$waiting_row['community_id']}"; $waiting_url .= "&waiting_type_code={$waiting_row['waiting_type_code']}"; $waiting_url .= "&waiting_status_code={$waiting_status_code}"; $target_lang = ACSMsg::get_mail_lang_by_inforow($target_user_info_row); // 一旦依頼される側の言語に設定する ACSMsg::set_lang($target_lang); $body = $mail_titles[$target_lang]; $body .= ACSMsg::get_tag_replace(ACSMsg::get_serial_msg('lib', 'ACSWaiting.class.php', 'ACM%03d'), array("{TARGET_USER_NAME}" => $target_user_info_row['user_name'], "{COMMUNITY_NAME}" => $community_row['community_name'], "{MESSAGE}" => trim($waiting_row['reply_message']), "{SYSTEM_BASE_URL}" => $system_base_url)); $subject = ACSMsg::get_mdmsg(__FILE__, 'M007'); // 言語を元に戻す ACSMsg::set_lang($org_lang); $ret = ACSLib::send_mail($system_mail_addr, $target_user_info_row['mail_addr'], null, $subject, $body); } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master', 'D30')) { // 招待されたコミュニティ情報 $community_row = ACSCommunity::get_community_row($waiting_row['waiting_community_id']); // 承認側のユーザ情報 $user_info_row = ACSUser::get_user_profile_row($waiting_row['community_id']); // 承認された側のユーザ情報 $target_user_info_row = ACSUser::get_user_profile_row($waiting_row['entry_user_community_id']); // コミュニティトップページURL $community_top_page_url = $system_base_login_url . SCRIPT_PATH; $community_top_page_url .= "?" . MODULE_ACCESSOR . "=Community"; $community_top_page_url .= "&" . ACTION_ACCESSOR . "=" . DEFAULT_ACTION; $community_top_page_url .= "&community_id=" . $community_row['community_id']; $target_lang = ACSMsg::get_mail_lang_by_inforow($target_user_info_row); // 一旦依頼される側の言語に設定する ACSMsg::set_lang($target_lang); $body = $mail_titles[$target_lang]; $body .= ACSMsg::get_tag_replace(ACSMsg::get_serial_msg('lib', 'ACSWaiting.class.php', 'AIM%03d'), array("{TARGET_USER_NAME}" => $target_user_info_row['user_name'], "{USER_NAME}" => $user_info_row['user_name'], "{USER_COMMUNITY_NAME}" => $user_info_row['community_name'], "{COMMUNITY_NAME}" => $community_row['community_name'], "{COMMUNITY_URL}" => $community_top_page_url, "{MESSAGE}" => trim($waiting_row['reply_message']), "{SYSTEM_BASE_URL}" => $system_base_url)); $subject = ACSMsg::get_mdmsg(__FILE__, 'M004'); // 言語を元に戻す ACSMsg::set_lang($org_lang); $ret = ACSLib::send_mail($system_mail_addr, $target_user_info_row['mail_addr'], null, $subject, $body); } elseif ($waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master', 'D40') || $waiting_row['waiting_type_name'] == ACSMsg::get_mst('waiting_type_master', 'D50')) { // 承認側のコミュニティ情報 $community_row = ACSCommunity::get_community_row($waiting_row['community_id']); // 承認される側コミュニティ情報 $target_community_row = ACSCommunity::get_community_row($waiting_row['waiting_community_id']); // 承認される側のコミュニティ管理者情報の配列 $community_admin_user_info_row_array = ACSCommunity::get_community_admin_user_info_row_array($target_community_row['community_id']); // コミュニティトップページURL $community_top_page_url = $system_base_login_url . SCRIPT_PATH; $community_top_page_url .= "?" . MODULE_ACCESSOR . "=Community"; $community_top_page_url .= "&" . ACTION_ACCESSOR . "=" . DEFAULT_ACTION; $community_top_page_url .= "&community_id=" . $community_row['community_id']; foreach ($community_admin_user_info_row_array as $community_admin_user_info_row) { $community_admin_user_info_row = ACSUser::get_user_profile_row($community_admin_user_info_row['user_community_id']); $target_lang = ACSMsg::get_mail_lang_by_inforow($community_admin_user_info_row); // 一旦依頼される側の言語に設定する ACSMsg::set_lang($target_lang); $body = $mail_titles[$target_lang]; $body .= ACSMsg::get_tag_replace(ACSMsg::get_serial_msg('lib', 'ACSWaiting.class.php', 'ACL%03d'), array("{TARGET_COMMUNITY_NAME}" => $target_community_row['community_name'], "{COMMUNITY_NAME}" => $community_row['community_name'], "{WAITING_TYPE_NAME}" => $waiting_row['waiting_type_name'], "{COMMUNITY_URL}" => $community_top_page_url, "{MESSAGE}" => trim($waiting_row['reply_message']), "{SYSTEM_BASE_URL}" => $system_base_url)); $subject = ACSMsg::get_mdmsg(__FILE__, 'M009'); $ret = ACSLib::send_mail($system_mail_addr, $community_admin_user_info_row['mail_addr'], null, $subject, $body); } // 言語を元に戻す ACSMsg::set_lang($org_lang); } return $ret; }
</table> </td> </tr> </table> <table width="730" border="0" cellspacing="0" cellpadding="8"> <tr> <td> <?php echo ACSMsg::get_tag_replace(ACSMsg::get_msg('templates', 'acs_base.tpl.php', 'WELCOME'), array("{USER_NAME}" => htmlspecialchars($this->_tpl_vars['acs_user_info_row']['user_name']))); ?> </td> <td align="right"> <?php if (defined('ACS_LANG_LIST')) { $langs_array = ACSMsg::get_lang_list_array(); foreach ($langs_array as $lang => $lang_name) { if (ACSMsg::get_lang(FALSE) != $lang) { $url = ACSMsg::get_lang_url($lang); printf(' <a href="%s">%s</a>', $url, $lang_name); } } } ?> </td> </tr> </table> <table width="730" border="0" cellspacing="0" cellpadding="0" id="main_window"> <tr> <td id="topleft"><img src="img/waku_blank.gif" width="12" height="20"></td>