/** * 通知メールを送信する * * @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); }
/** * コミュニティメンバへのメール送信(個別配信) * * ※各ユーザの言語設定に従ってタグをリプレースします。 * ※システム設定のSMTPで送信します。 * メッセージに対して以下のプレースフォルダを置換します。 * {USER_COMMUNITY_NAME} * {SYSTEM_BASE_URL} * {SYSTEM_SCRIPT_PATH} * {SYSTEM_MODULE_ACCESSOR} * {SYSTEM_ACTION_ACCESSOR} * {COMMUNITY_ID} * {COMMUNITY_NAME} * * @param string $community_id コミュニティid * @param string $from 送信者 * @param mixed $subject 配列の場合:件名(array([lang] => [件名])) * 文字列の場合、全ての言語で同一の件名 * @param mixed $msg 配列の場合:メッセージ本文(array([lang] => [本文])) * 文字列の場合、全ての言語で同一のメッセージ本文 * @param string $mmb_id_array 対象ユーザコミュニティid配列(未指定時は全員) * @return mixed true...正常/PearError オブジェクト...異常 */ static function send_community_mail($community_id, $from, $subject, $msg, $mmb_id_array = '') { // コミュニティメンバ全員の情報を取得 $mmb_info_rows =& ACSCommunity::get_community_member_mail_address_row_array($community_id); // インデックスにユーザコミュニティidを使用した配列を生成 $mmb_info_array = array(); $is_all = $mmb_id_array == '' ? TRUE : FALSE; foreach ($mmb_info_rows as $mmb_info) { $mmb_info_array[$mmb_info['user_community_id']] = $mmb_info; if ($is_all) { $mmb_id_array[] = $mmb_info['user_community_id']; } } // 言語種類別にシステム関連プレースフォルダの置換 $msg_lang = array(); $lang_list =& ACSMsg::get_lang_list_array(); foreach ($lang_list as $lang => $lang_disp) { $msg_lang[$lang] = ACSCommunityMail::get_community_tag_replace($community_id, is_array($msg) ? $msg[$lang] : $msg); } // 対象ユーザにメールを送信 if (is_array($mmb_id_array)) { foreach ($mmb_id_array as $mmb_id) { $mmb_info =& $mmb_info_array[$mmb_id]; $lang = $mmb_info['mail_lang'] == '' ? ACS_DEFAULT_LANG : $mmb_info['mail_lang']; $mmb_msg = $msg_lang[$lang]; $mmb_subject = is_array($subject) ? $subject[$lang] : $subject; // 名前プレースフォルダの置換 $mmb_msg = ACSMsg::get_tag_replace($mmb_msg, array('{USER_COMMUNITY_NAME}' => $mmb_info['user_community_name'])); $ret = ACSLib::send_mail($from, $mmb_info['mail_address'], '', $mmb_subject, $mmb_msg, array('Sender' => $from)); if (Pear::IsError($ret)) { return $ret; } } } return true; }
/** * 依頼承諾メールを送信する * * @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; }