// +---------------------------------------------------------------------------+
// | Geeklog FormMail Static Page                      |
// +---------------------------------------------------------------------------+
// | Copyright (C) 2008 by the following authors:                              |
// |                                                                           |
// | Authors    : Hiroshi Sakuramoto - hiro AT winkey DOT jp                   |
// | Sponser    : White Bear Family CO., LTD                                   |
// | Coordinate : Adeliae Planning CO., LTD - www.e-adeliae.com                |
// | Coordinate : IVY WE CO., LTD - www.ivywe.co.jp                            |
// | Version: 1.0.7                                                            |
// +---------------------------------------------------------------------------+
global $_CONF;   // config.phpの変数を参照可能にする
if (!defined('XHTML')) define('XHTML', ' /');

// +---------------------------------------------------------------------------+
// | 初期設定                                                                  |
// +---------------------------------------------------------------------------+
# 入力フォームのURL
$pageurl = $_SERVER["REQUEST_URI"];
// $_SERVER["REQUEST_URI"] が使えず正しく動かない場合は以下へ、
//   静的ページPHPを作成する時に入力したIDを入れてください。
//   (wikiドキュメントのサンプル例だと'formmail')
//   ※IDを入力したら先頭の#を削除してください。(コメントをはずします)
$pageid = 'formmail';

# 問合せを管理者へ通知の設定
#    複数のE-mailはカンマ(,)で区切りで指定する(スペース等はあけない)
#      例) 'info@hoge.com,admin@page.com'
#    特定の入力項目に応じて送り先を変える
#    ※この方法を利用する時は必ず $owner_email_item_name を指定してください。
#      例) 'AAA=info@hoge.com,BBB=admin@page.com'

#$owner_email=$_CONF['site_mail'];
$owner_email='noreply@kayanet-japan.com';

# 管理者Emailを入力項目から選択する項目名
//  ※送り先を変える指定をしたら先頭の#を削除してください。(コメントをはずします)
#$owner_email_item_name = 'q_mail_to';

# メール送信者E-mail
$email_from = $_CONF['site_mail'];
#Geeklog1.5から，noreplyを指定できます。
#$email_from = $_CONF['noreply_mail'];

# 問合せ者のメールアドレスの項目名
$email_input_name = 'q_mail';

# メール一致チェック項目指定
#   メール確認でどちらも同じものを入力 というname属性を(=)で区切る(スペース等はあけない)
#     例) 'email=reemail'
$essential_email = 'q_mail=q_mail_re';


# メールアドレスチェック項目指定
#   入力された値がメールアドレスとして正しいかチェックをする
#   INPUTタグの name属性の値をカンマ(,)区切りで指定する(スペース等はあけない)
#     例) 'email,reemail'

$propriety_email = 'q_mail,q_mail_re';

# CSVファイルに保存
#   指定方法 保存しない: 0 , 保存する(カンマ区切り): 1 , 保存する(タブ区切り): 2
$save_csv = 1;

# CSVファイル保存場所 (直接入力時は最後にスラッシュ必須)
$save_csv_path = $_CONF['path_data'];

# CSVファイル名
$save_csv_name = 'formmail.csv';

# CSVファイル保存の文字コード
#   文字コード変換をしない場合は '' と指定してください。
#   機能がOFFになります。（文字化けするようなら機能を''で
#   OFFにして別途フリーの文字変換ツールなどをご利用ください）
# 注意) mb_convert_encodingで使える文字コードを指定してください
#   例) UTF-8, SJIS, EUC-JP, JIS, ASCII
$save_csv_lang = 'SJIS';

# 全角を半角に変換する項目名(英数字、スペース、カタカナ、ひらがな)
#   入力された値を自動で変換する項目を指定
#   INPUTタグの name属性の値をカンマ(,)区切りで指定する(スペース等はあけない)
$zentohan_itemname = 'q_phone,q_code1_1,q_code2_1,q_code3_1,q_code1_2,q_code2_2,q_code3_2,q_code1_3,q_code2_3,q_code3_3';

# カタカナの半角をカタカナの全角に変換する項目名
#   入力された値を自動で変換する項目を指定
#   INPUTタグの name属性の値をカンマ(,)区切りで指定する(スペース等はあけない)
$kana_hantozen_itemname = 'q_kana_1,q_kana_2';

# ひらがなをカタカナに変換する項目名
#   入力された値を自動で変換する項目を指定
#   INPUTタグの name属性の値をカンマ(,)区切りで指定する(スペース等はあけない)
$kana_hiratokana_itemname = 'q_kana_1,q_kana_2';

# 遷移の項目名
$seni_items = array('input' => '情報入力', 'confirm' => '入力項目確認', 'finish' => '入力完了');

# 必須入力の文字列
$required_string = '<span class="must">*必須</span>';

# テーブルの項目名
$form_items = array(

  // < テーブル
  array('title' => 'お客様情報', 'table' => array(
    // < テーブル１行
    array('header' => '団体・企業名（任意）', 'data' =>
        array(
            array('input' => ''),
            array('type' => 'text',
                  'name' => 'q_kaisha_1',
                  'size' => '40',
                  'class' => 'bginput'
            ),
            array('input' => '<br'.XHTML.'>'),
        ),
    ),
    // > テーブル１行
    // < テーブル１行
    array('header' => '氏名', 'valid_require' => $required_string, 'error_require' => '氏名が入力されていません', 'data' =>
        array(
            array('input' => '姓　：'),
            array('type' => 'text',
                  'name' => 'q_name_1',
                  'class' => 'bginput'
            ),
            array('input' => ' 名　：'),
            array('type' => 'text',
                  'name' => 'q_name_2',
                  'class' => 'bginput'
            ),
            array('string' => '<br'.XHTML.'>'),
            array('input' => '※全角<br'.XHTML.'>セイ：'),
            array('type' => 'text',
                  'name' => 'q_kana_1',
                  'class' => 'bginput'
            ),
            array('input' => ' メイ：'),
            array('type' => 'text',
                  'name' => 'q_kana_2',
                  'class' => 'bginput'
            ),
            array('input' => '<br'.XHTML.'>※全角カタカナ'),
        ),
    ),
    // > テーブル１行
    // < テーブル１行
    array('header' => 'メールアドレス',
          'valid_require' => $required_string, 'error_require' => 'メールアドレスが入力されていません',
          'valid_equal' => $essential_email, 'error_equal' => 'メールアドレスが一致しません',
          'valid_email' => $propriety_email, 'error_email' => 'メールアドレスを正しく入力してください',
          'data' =>
        array(
            array('type' => 'text',
                  'name' => 'q_mail',
                  'size' => '40',
                  'class' => 'bginput'
            ),
            array('string' => '<br'.XHTML.'>'),

            array('input' => ''),
            array('type' => 'text',
                  'name' => 'q_mail_re',
                  'size' => '40',
                  'class' => 'bginput'
            ),
            array('string' => '<br'.XHTML.'>'),
            array('input' => '※確認のため、もう一度入力してください'),
        ),
    ),
    // > テーブル１行
   ),
  ),
  // > テーブル

  // < テーブル
  array('title' => 'お問い合わせ内容', 'table' => array(
    // < テーブル１行
    array('header' => '内容', 'data' =>
        array(
            array('type' => 'textarea',
                  'name' => 'q_other',
                  'class' => 'bginput',
                  'style' => 'width: 95%; height: 50px;',
            ),
            array('input' => '<br'.XHTML.'>※お問い合わせ内容を入力してください。<br'.XHTML.'>'),
        ),
    ),
    // > テーブル１行
   ),
  ),
  // > テーブル
  // < 送信ボタン - 入力画面
  array('action' => 'input', 'data' =>
      array(
          array('string' => '    <div style="text-align: center;" class="text_center mt20 mb20">'),
          array('type' => 'submit',
                'name' => 'submit',
                'class' => 'button_form_next',
                'value' => '入力項目確認画面へ'
          ),
          array('string' => '</div>'),
      ),
  ),
  // > 送信ボタン - 入力画面
  // < 送信ボタン - 確認画面
  array('action' => 'confirm', 'data' =>
      array(
          array('string' => '    <div style="text-align: center;" class="text_center mt20 mb20">'),
          array('type' => 'submit',
                'name' => 'goback',
                'class' => 'button_form_prev',
                'value' => '戻る'
          ),
          array('string' => '　'),
          array('type' => 'submit',
                'name' => 'submit',
                'class' => 'button_form_next',
                'value' => '送信する'
          ),
          array('string' => '</div>'),
      ),
  ),
  // > 送信ボタン - 確認画面
);

# 表示メッセージ
$lang = array(// { 完了HTML＆メールのメッセージ

              'receipt_admin' =>'管理者のみなさま'.LB.LB.$_CONF['site_name'].'サイトにおいて'.LB.'問い合わせがありました。'.LB.LB.'==========お問い合わせ =========='.LB.'受付日時：'.date("Y年m月d日H:i"),
             'receipt_user' =>'※本メールは、'.$_CONF['site_name'].'サイトより自動的に配信しています。'.LB.'このメールは送信専用のため、このメールにご返信いただけません。'.LB.'＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝'.LB.'お問い合わせありがとうございました。'.LB.LB.'========== お問い合わせ内容 =========='.LB.'受付日時：'.date("Y年m月d日H:i"),
              'subject_admin'=> '['.$_CONF['site_name'].']お問い合わせ',
              'subject_user'=> '['.$_CONF['site_name'].']お問い合わせを受け付けました',
              'sign_admin'    => '-----------------------------------------'.LB.$_CONF['site_name'].LB.$_CONF['site_url'].LB.'-----------------------------------------',
              'sign_user'    => '-----------------------------------------'.LB.$_CONF['site_name'].LB.'URL：' . $_CONF['site_url'].LB.'-----------------------------------------',
              // } 完了HTML＆メールのメッセージ
              // { システムエラーのメッセージ
              'ownertransmiterror'=>'オーナーメール処理中、一部のアドレスでエラーが発生しましたが、処理を続けました。',
              'transmiterror'=>'処理中にエラーが発生しました。',
              // } システムエラーのメッセージ
              );




// +---------------------------------------------------------------------------+
// | 初期処理                                                                  |
// +---------------------------------------------------------------------------+
# POSTデータを直接変換 (全角から半角へ、カタカナ半角からカタカナ全角へ)
if (!empty($zentohan_itemname)) { foreach (explode(',',$zentohan_itemname) as $k) { if (!empty($_POST[$k])) $_POST[$k] = mb_convert_kana($_POST[$k], 'askh'); } }
if (!empty($kana_hantozen_itemname)) { foreach (explode(',',$kana_hantozen_itemname) as $k) { if (!empty($_POST[$k])) $_POST[$k] = mb_convert_kana($_POST[$k], 'K'); } }
if (!empty($kana_hiratokana_itemname)) { foreach (explode(',',$kana_hiratokana_itemname) as $k) { if (!empty($_POST[$k])) $_POST[$k] = mb_convert_kana($_POST[$k], 'C'); } }
# データを保存用に加工
foreach ($_POST as $k => $v) {
    $fld_list[$k] = preg_replace('/,/', '，', $_POST[$k]);
    $fld_list[$k] = preg_replace('/"/', '”', $fld_list[$k]);
    $fld_list[$k] = preg_replace("/'/", "’", $fld_list[$k]);
    $fld_list[$k] = preg_replace('/`/', '‘', $fld_list[$k]);
    $fld_list[$k] = preg_replace('/;/', '；', $fld_list[$k]);
    $fld_list[$k] = preg_replace(preg_quote('#'.chr(92).'#'), '￥', $fld_list[$k]);
    $fld_list[$k] = COM_applyFilter($fld_list[$k]);
}
# CSVファイルのフルパス
$save_csv_file = $save_csv_path . $save_csv_name;
# 多言語サポートONならマルチ言語でメッセージ変数を上書き
if( isset( $_CONF['languages'] ) && isset( $_CONF['language_files'] )) {
    $overridables = array('frm_item', 'lang');
    if( empty( $langId ) ) {
        $langId = COM_getLanguageId();
    }
    foreach( $overridables as $option ) {
        $override = $option . '_' . $langId;
        if( isset( $$override ) ) {
            $$option = $$override;
        }
    }
}
# pageidからpageurlを作成
if (!empty($pageid)) { $pageurl = COM_buildUrl($_CONF['site_url'].'/staticpages/index.php?page='.$pageid); }


// +---------------------------------------------------------------------------+
// | 関数群:                                                                   |
// +---------------------------------------------------------------------------+
function getAction ($err) {
    $buf = '';
    $action = COM_applyFilter($_POST['action']);
    if (!empty($action) && empty($err) && $action == 'input') { $buf = 'confirm'; }
    elseif (!empty($action) && empty($err) && $action == 'confirm') { $buf = empty($_POST['goback']) ? 'finish' : 'input'; }
    else { $buf = 'input'; }
    return $buf;
}

function mkSeni ($items, $action) {
    $buf = '<ul>'.LB;
    foreach ($items as $key => $value) {
        if ($action == $key) {
            $buf .= '    <li class="on">'.$value.'</li>'.LB;
        } else {
            $buf .= '    <li>'.$value.'</li>'.LB;
        }
    }
    $buf .= '</ul>'.LB;
    return $buf;
}


function ChkValidate ($mode, $datas, $errmsg, $attributes = '') {
    $msg = '';
    foreach ($datas as $data) {
        if (!empty($data['type'])) {
            $name = $data['name'];
            switch ($mode) {
                // 必須チェック
                case 'require':
                    if (empty($data['notrequire'])) {
                        if (empty($_POST[$name])) {
                            if ($_POST[$name] != "0") {
                                $msg = $errmsg;
                            }
                        }
                    }
                    break;
                // 一致チェック
                case 'equal':
                    if (!empty($attributes)) {
                        $es_emails = explode(',', $attributes);
                        foreach ($es_emails as $es_email) {
                            list($eq1,$eq2) = explode('=', $es_email);
                            // 最初のキー かつ チェックするキーが存在
                            if ($name == $eq1 && !empty($_POST[$eq2])) {
                                if ($_POST[$eq1] != $_POST[$eq2]) {
                                    $msg = $errmsg;
                                }
                            }
                        }
                    }
                    break;
                // メールチェック
                case 'email':
                    if (!empty($attributes)) {
                        $pr_emails = explode(',', $attributes);
                        foreach ($pr_emails as $pr_email) {
                            if ($name == $pr_email) {
                                if (!COM_isemail($_POST[$name])) {
                                    $msg = $errmsg;
                                }
                            }
                        }
                    }
                    break;
                // 数値チェック - 足して0以上
                case 'notzero':
                    if (!empty($attributes)) {
                        $values_key = explode(',', $attributes);
                        foreach ($values_key as $val_key) {
                            // 最初のキーのときにチェック
                            if ($name == $val_key) {
                                $sum_val = 0;
                                foreach ($values_key as $chk_key) {
                                    if (!empty($_POST[$chk_key])) {
                                        $sum_val += $_POST[$chk_key];
                                    }
                                }
                                if ($sum_val <= 0) {
                                    $msg = $errmsg;
                                    break;
                                }
                            }
                        }
                    }
                    break;
            }
        }
    }
    return $msg;
}

function ChkFormValidateLines ($lines) {
    $errmsg;
    foreach (array('require','equal','email','notzero') as $chk) {
        // 必須,一致,メール のチェック
        if (!empty($lines['valid_'.$chk])) {
            $errmsg = ChkValidate($chk, $lines['data'], $lines['error_'.$chk], $lines['valid_'.$chk]);
            // エラーがあれば配列に格納
            if ($errmsg) {
                break;
            }
        }
    }
    return $errmsg;
}

function ChkFormValidate ($items) {
    $errs;
    foreach ($items as $item) {
        // 各テーブル
        foreach ($item as $key => $value) {
            // １テーブル
            if ($key == 'table') {
                foreach ($value as $key2 => $value2) {
                    // テーブル１行
                    $errmsg = ChkFormValidateLines($value2);
                    if ($errmsg) { $errs[] = $errmsg; }
                }
            }
        }
    }
    return $errs;
}

function FormValidate ($items) {
    $buf = '';
    $errs = ChkFormValidate($items);
    if (!empty($errs)) {
        $errmsg = '';
        foreach ($errs as $err) {
            $errmsg .= '    <li>'.$err.'</li>'.LB;
        }
        $buf = <<<END

<p class="error">入力エラーがありました。下記について再度ご確認の上、ご記入ください。</p>
<ol class="errorList">
$errmsg
</ol>
END;
    }
    return $buf;
}


function mkTitle ($title) {
    return <<<END

    <h4>$title</h4>
    <table cellspacing="0">
        <colgroup><col width="130" /></colgroup>
        <tbody>
END;
}

function mkForm_Value ($name, $value) {
    return empty($_POST[$name]) ? $value : $_POST[$name];
}

function mkForm_Radio_Checked (&$attributes) {
    $name = $attributes['name'];
    if (!empty($_POST[$name])) {
        if (!empty($attributes['checked'])) unset($attributes['checked']);
        if ($_POST[$name] == $attributes['value']) {
            $attributes['checked'] = 'checked';
        }
    }
}

function mkForm_Input ($attributes, $hidden = false) {
    if ($hidden) {
        if ($attributes['type'] == 'radio' || $attributes['type'] == 'checkbox') {
            if ($attributes['value'] != $_POST[$attributes['name']]) return '';
        }
        $attributes['type'] = 'hidden';
    }
    if ($attributes['type'] == 'radio' || $attributes['type'] == 'checkbox') {
        mkForm_Radio_Checked($attributes);
    } else {
        if ($attributes['type'] != 'submit') $attributes['value'] = mkForm_Value($attributes['name'], $attributes['value']);
    }
    $buf = '<input';
    foreach ($attributes as $key => $value) {
        $buf .= ' '.$key.'="'.$value.'"';
    }
    $buf .= XHTML.'>';
    if ($hidden || $attributes['type'] == 'checkbox') $buf .= ' ' . $attributes['value'];
    return $buf;
}

function mkForm_Select_Options ($name, $attributes) {
    $buf = '';
    $selected = mkForm_Value($name, $attributes['selected']);
    $values = explode(',', $attributes['values']);
    foreach ($values as $value) {
        list($k,$v) = explode('=',$value);
        if (empty($v)) $v = $k;
        if ($selected == $k) {
            $buf .= '<option selected="selected" value="'.$v.'">'.$k.'</option>';
        } else {
            $buf .= '<option value="'.$v.'">'.$k.'</option>';
        }
    }
    return $buf;
}

function mkForm_Select ($attributes) {
    $buf = '<select';
    foreach ($attributes as $key => $value) {
        if ($key != 'options') {
            $buf .= ' '.$key.'="'.$value.'"';
        }
    }
    $buf .= '>';
    $buf .= mkForm_Select_Options($attributes['name'], $attributes['options']);
    $buf .= '</select>';
    return $buf;
}

function mkForm_Textarea ($attributes) {
    $attributes['value'] = mkForm_Value($attributes['name'], $attributes['value']);
    $buf = '<textarea';
    foreach ($attributes as $key => $value) {
        if ($key != 'value') $buf .= ' '.$key.'="'.$value.'"';
    }
    $buf .= '>'.$attributes['value'].'</textarea>';
    return $buf;
}

function mkForm_Item ($items, $action) {
    $buf = '';
    if ($action != 'input' && $items['type'] != 'submit') {
        $buf .= mkForm_Input($items, true);
    } else {
        switch ($items['type']) {
            case 'text': $buf .= mkForm_Input($items); break;
            case 'radio': $buf .= mkForm_Input($items); break;
            case 'checkbox': $buf .= mkForm_Input($items); break;
            case 'select': $buf .= mkForm_Select($items); break;
            case 'textarea': $buf .= mkForm_Textarea($items); break;
            case 'submit': $buf .= mkForm_Input($items); break;
        }
    }
    return $buf;
}

function mkTable_Data ($datas, $action) {
    $buf = '';
    foreach ($datas as $data) {
        // １つのデータ
        if (!empty($data['type'])) {
            // フォーム
            $buf .= mkForm_Item($data, $action);
        }
        else {
            // 文字列
            foreach ($data as $key => $value) {
                if ($key == 'string') {
                    $buf .= $value;
                } elseif ($key == $action) {
                    $buf .= $value;
                }
            }
        }
    }
    return $buf;
}

function mkTable ($tables, $action) {
    $buf = '';
    foreach ($tables as $lines) {
        $buf .= '            <tr>'.LB;
        $buf .= '                <th>';
        foreach ($lines as $key => $value) {
            // エラーチェック
            $errflg = '';
            if (!empty($_POST)) $errflg = ChkFormValidateLines($lines);
            switch ($key) {
                case 'header':
                    $buf .= $value;
                    break;
                case 'valid_require':
                    $buf .= $value;
                    break;
                case 'data':
                    if ($errflg) {
                        $buf .= '</th>'.LB;
                        $buf .= '                <td class="warning_bgc">';
                        $buf .= mkTable_Data($value, $action).'</td>';
                    } else {
                        $buf .= '</th>'.LB;
                        $buf .= '                <td>';
                        $buf .= mkTable_Data($value, $action).'</td>';
                    }
                    break;
            }
        }
        $buf .= '            </tr>'.LB;
    }
    return $buf;
}

function mkForm ($items, $action) {
    $buf = '';
    foreach ($items as $item) {
        // 各テーブル
        if (!empty($item['table'])) {
            foreach ($item as $key => $value) {
                // １テーブル
                switch ($key) {
                    case 'title': $buf .= mkTitle($value); break;
                    case 'table': $buf .= mkTable($value, $action); break;
                }
            }
            $buf .= <<<END

        </tbody>
    </table>
END;
            if (!empty($action)) {
            }
        } elseif (!empty($item['action'])) {
            // 送信ボタン
            if ($item['action'] == $action) {
                $buf .= LB . '    <input type="hidden" name="action" value="' . $action . '"' . XHTML . '>';
                $buf .= LB . mkTable_Data($item['data'], $action);
            }
        }
    }
    return $buf;
}



// エラーチェック
if (!empty($_POST)) {
    $valid = FormValidate($form_items);
}
$action = getAction($valid);

// +---------------------------------------------------------------------------+
// | 第1ステップ: フォーム表示                                                 |
// +---------------------------------------------------------------------------+
if ($action == 'input' || $action == 'confirm') {

/**
* フォーム画面HTML { ここから
*/
    // 遷移
    $seni = mkSeni($seni_items, $action);
    // 入力フォーム
    $form = mkForm($form_items, $action);

    $retval = <<<END

<div id="form_step">
$seni
</div>
<div id="FORM">
$valid
<form name="subForm" method="post" action="{$pageurl}">
$form
</form>
</div>

END;

/**
* } ここまで フォーム画面HTML
*/



// +---------------------------------------------------------------------------+
// | 第2ステップ: 完了表示＆メール送信                                         |
// +---------------------------------------------------------------------------+
} elseif ($action == 'finish') {

/**
* 完了画面HTML { ここから
*/
    // 遷移
    $seni = mkSeni($seni_items, $action);
    
    $out_html = <<<END

<div id="form_step">
$seni
</div>
<div id="contact_thanks">
<p><strong>お問い合わせを受け付けました。</strong></p>
<p>※お問い合わせ確認のメールを自動送信しました。<br />
メールが届かない場合は、ご登録のメールアドレスが間違っている可能性があります。<br />
その際は、お手数ですが再度お問い合わせください。</p>
</div>

END;
/**
* } ここまで 完了画面HTML
*/



    # <br /> を改行コードに変換
    foreach ($fld_list as $k => $v) { $fld_list[$k] = ereg_replace("<br />", LB, $fld_list[$k]); }
    $lang['sign_admin'] = ereg_replace("<br />", LB, $lang['sign_admin']);
    $lang['sign_user'] = ereg_replace("<br />", LB, $lang['sign_user']);
    // 入力内容
    $input4mail=<<<END
企業・団体名: {$fld_list['q_kaisha_1']}
お名前: {$fld_list['q_name_1']} {$fld_list['q_name_2']}
フリガナ: {$fld_list['q_kana_1']} {$fld_list['q_kana_2']}
メールアドレス: {$fld_list['q_mail']}
お問い合わせ内容: {$fld_list['q_other']}
END;

/**
* 送信メール内容 - 管理者 { ここから
*/
    $out_mail_admin = <<<END

{$lang['receipt_admin']}

$input4mail

{$lang['sign_admin']}
END;
/**
* } ここまで 送信メール内容 - 管理者
*/
/**
* 送信メール内容 - 入力者 { ここから
*/
    $out_mail_user = <<<END

{$lang['receipt_user']}

$input4mail

{$lang['sign_user']}
END;
/**
* } ここまで 送信メール内容 - 入力者
*/


    # メール送信
    $ownererr = false;
    $ownersend = false;
    $om_array = explode(',', $owner_email);
    $owner_mails = array_unique($om_array);  # 重複した値(メールアドレス)を削除
    if (!empty($owner_email_item_name)) {
        $selmail;
        foreach ($owner_mails as $v) {
            list($key, $mail) = explode('=', $v);
            if ($_POST[$owner_email_item_name] == $key) {
                $selmail = explode('|', $mail);
                break;
            }
        }
        $owner_mails = $selmail;
    }
    $owner_subject = $lang['subject_admin'];
    foreach ($owner_mails as $v) {
        $email1 = COM_mail( $v, "$owner_subject", $out_mail_admin, $email_from, false); # オーナーあてメール
        if (!$email1) { $ownererr = true; } else { $ownersend = true; }  # 送信/エラーのフラグをセット
    }
    # オーナーメール送信でエラーがあった場合
    if ($ownererr) {
        # 一部に送信できている場合
        if ($ownersend) {
            # エラーをログへ出力(一部へは配送されているのでユーザにエラー画面を出さない)
            COM_errorLog($lang['ownertransmiterror'], 1);
            $email1 = true;
        # 全員がエラーの場合
        } elseif (!$ownersend) {
            # 処理エラーとし、ユーザへのメールは送らない
            $email1 = false;
        }
    }
    if ($email1) {
        $usr_subject = $lang['subject_user'];
        $email2 = COM_mail( $fld_list[$email_input_name], "$usr_subject", $out_mail_user, $email_from, false); # 問合せ者へメール
    }
    if ($email1 && $email2) { # どちらの送信も成功したら
        # csv出力する
        if ($save_csv > 0) {
            $delimiter = ',';
            if ($save_csv > 1) { $delimiter = chr(9); }
            $enclosure = '"';
            # CSV出力
            $fp = fopen($save_csv_file, 'a');
            $str = '';
            $escape_char = chr(92);
            foreach ($fld_list as $k => $v) {
                if ($k == 'action') { continue; }
                if ($k == 'submit') { continue; }
                if ($k == 'proprietyemail') { continue; }
                if ($k == 'erremailname') { continue; }
                if ($k == 'subject') { continue; }
                if ($k == 'ownersubject') { continue; }
                if ($k == 'sign') { continue; }
                if ($k == 'title') { continue; }
                if ($k == 'endmessage') { continue; }
                if ($k == 'savecsv') { continue; }
                if ($k == 'savecsvname') { continue; }
                if ($k == 'savecsvlang') { continue; }
                if ($k == 'emailfrom') { continue; }
                if ($k == 'langid') { continue; }
                if ($k == 'usetheme') { continue; }
                if ($k == 'PHPSESSID') { continue; }
                if (strpos($v, $delimiter) !== false ||
                    strpos($v, $enclosure) !== false ||
                    strpos($v, chr(10)) !== false ||
                    strpos($v, chr(13)) !== false ||
                    strpos($v, chr(9)) !== false ||
                    strpos($v, ' ') !== false) {
                  $str2 = $enclosure;
                  $escaped = 0;
                  $len = strlen($v);
                  for ($i=0;$i<$len;$i++) {
                    if ($v[$i] == $escape_char) {
                      $escaped = 1;
                    } else if (!$escaped && $v[$i] == $enclosure) {
                      $str2 .= $enclosure;
                    } else {
                      $escaped = 0;
                    }
                    $str2 .= $v[$i];
                  }
                  $str2 .= $enclosure;
                  $str .= $str2.$delimiter;
                } else {
                  $str .= $v.$delimiter;
                }
            }
            $str = date("Y/m/d H:i") . $delimiter . substr($str,0,-1);
            $str .= LB;
            if( !empty( $save_csv_lang ) ) {
                $str = mb_convert_encoding($str, $save_csv_lang);
            }
            fwrite($fp, $str);  # CSV書き出し
            fclose($fp);
        }
        $retval = $out_html;
    } else {
        $retval = $lang['transmiterror']; # メール送信が失敗したら
    }
}
