true, //テンプレートファイルのパス 'templete' => array( 'index' => 'tpl/index.html', 'confirm' => 'tpl/confirm.html', 'submit' => 'tpl/complete.html' ), //エラーが発生したフォームに付ける追加属性 'errorAttributes' => array( 'class' => 'error' ), //通知メール送信設定 'mail' => array( /* 'to' => array( 'info@wh-style.com', '' ), //送信先アドレス */ 'to' => 'type', //送信先アドレス 'from' => array( 'mail_address', 'name' ), //送信元設定 'template' => 'tpl/mail.html', //メール本文のテンプレート ), 'reply' => array( 'to' => array( 'mail_address', 'name' ), //送信先アドレス 'from' => 'type', //送信元設定 /* 'from' => array( 'info@wh-style.com', 'WHITEHOUSE' ), //送信元設定 */ 'template' => 'tpl/reply.html', //メール本文のテンプレート ) ); //---------------------------------------- //各フォームの設定 //---------------------------------------- // 名前 ////////////////////////////////////////////////// $FormConfig['name'] = array( "name" => "お名前", "type" => "text", "validation" => array( 'required' => true ), "error_message" => array( 'required' => 'お名前は入力必須です' ), "attributes" => array( ) ); // フリガナ ////////////////////////////////////////////////// $FormConfig['kana'] = array( "name" => "フリガナ", "type" => "text", "validation" => array( 'required' => true ), "error_message" => array( 'required' => 'フリガナは入力必須です' ), "attributes" => array( ) ); // 電話番号 ////////////////////////////////////////////////// $FormConfig['phone_number'] = array( 'name' => '電話番号', 'type' => 'text', 'validation' => array( 'required' => true ), "error_message" => array( 'required' => '電話番号は入力必須です' ), "attributes" => array( ) ); // メールアドレス ////////////////////////////////////////////////// $FormConfig['mail_address'] = array( 'name' => 'メールアドレス', 'type' => 'text', 'validation' => array( 'required' => true, 'email' => true ), "error_message" => array( 'required' => 'メールアドレスは入力必須です', 'email' => 'メールアドレスの形式が正しくありません' ), "attributes" => array( ) ); // お問い合わせ区分 ////////////////////////////////////////////////// $FormConfig['type'] = array( 'name' => 'お問い合わせ区分', 'type' => 'select', 'validation' => array( 'required' => true ), "error_message" => array( 'required' => 'お問い合わせ区分は入力必須です' ), 'option' => array( '' => '選択してください', 'ホワイトハウス芦屋店へのお問い合わせ' => 'ホワイトハウス芦屋店へのお問い合わせ', 'ホワイトハウス神戸店へのお問い合わせ' => 'ホワイトハウス神戸店へのお問い合わせ', 'ホワイトハウス大阪店へのお問い合わせ' => 'ホワイトハウス大阪店へのお問い合わせ', 'ホワイトハウス広尾店へのお問い合わせ' => 'ホワイトハウス広尾店へのお問い合わせ', 'CoCoChie salon 心斎橋店へのお問い合わせ' => 'CoCoChie salon 心斎橋店へのお問い合わせ', '広報・プレスに関するお問い合わせ' => '広報・プレスに関するお問い合わせ', '採用・リクルートに関するお問い合わせ' => '採用・リクルートに関するお問い合わせ', 'その他' => 'その他' ), 'mail' => array( '' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE') ), 'ホワイトハウス芦屋店へのお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'02help@wh-style.com', 'name'=>'WHITEHOUSE芦屋店'), array('mail'=>'mizutani@wh-style.com', 'name'=>'WHITEHOUSE芦屋店') ), 'ホワイトハウス神戸店へのお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'03help@wh-style.com', 'name'=>'WHITEHOUSE神戸店'), array('mail'=>'y-yamamoto@wh-style.com', 'name'=>'WHITEHOUSE神戸店') ), 'ホワイトハウス大阪店へのお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'04@wh-style.com', 'name'=>'WHITEHOUSE大阪店'), array('mail'=>'sakamoto@wh-style.com', 'name'=>'WHITEHOUSE大阪店') ), 'ホワイトハウス広尾店へのお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'05@wh-style.com', 'name'=>'WHITEHOUSE広尾店'), array('mail'=>'inokuchi@wh-style.com', 'name'=>'WHITEHOUSE広尾店') ), 'CoCoChie salon 心斎橋店へのお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'01help@wh-style.com', 'name'=>'CoCoChie salon 心斎橋店'), array('mail'=>'hiroura@wh-style.com', 'name'=>'CoCoChie salon 心斎橋店') ), '広報・プレスに関するお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE') ), '採用・リクルートに関するお問い合わせ' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE') ), 'その他' => array( array('mail'=>'info@wh-style.com', 'name'=>'WHITEHOUSE'), array('mail'=>'endo@3-infinity.com', 'name'=>'WHITEHOUSE'), array('mail'=>'nishiyama@3-infinity.com', 'name'=>'WHITEHOUSE') ) ), 'option_wrap' => 'p', 'attributes' => array( ) ); // お問い合わせ内容 ////////////////////////////////////////////////// $FormConfig['inquiry'] = array( 'name' => 'お問い合わせ内容', 'type' => 'textarea', 'validation' => array( 'required' => true ), "error_message" => array( 'required' => 'お問い合わせ内容は入力必須です' ), 'attributes' => array( ) ); // 個人情報の取り扱いについて同意する ////////////////////////////////////////////////// /* $FormConfig['agree'] = array( 'name' => '個人情報保護方針', 'type' => 'checkbox', 'validation' => array( 'required' => true ), "error_message" => array( 'required' => '個人情報保護方針に同意してください' ), "attributes" => array(), "option" => array( "1" => "個人情報保護方針について確認の上、同意します" ) ); */ /*----------------------------------------------------------------------------------------- 設定例 ------------------------------------------------------------------------------------------- $FormConfig['email'] = array( 'name' => '氏名', //フィールドの名前 'type' => 'text', //textarea/select/radio/checkbox/password などの種類を入力 'validation' => array( 'required' => true, //必須かどうか 'maxlength' => '5', //最大何文字までか 'minlength' => '5', //最低何文字必要か 'email' => true, //メールアドレスかどうか 'url' => '5', //URLかどうか 'number' => true, //数値かどうか 'digits' => true, //整数値かどうか 'max' => '100', //整数値での入力可能最大値 'min' => '-100', //整数値での入力可能最小値 'ascii' => true, //半角かどうか 'reg' => '^[0-9]{3}\-[0-9]{4}\$', //ユーザー定義の正規表現でバリデーション 'check_maxlength' => '2' //チェックボックスの最大選択数 'check_minlength' => '2' //チェックボックスの最小選択数 ), 'error_message' => array( //設定なしでも、デフォルトメッセージを用意してあります。 'required' => 'メールアドレスは必須でお願い致します。', 'email' => 'メールアドレスの形式ではありません。' ), 'option_wrap' => 'p', //optionの値を指定されたタグで括ります。( 例:

) 'option' => array( //セレクトやラジオの場合配列のキーがvalue属性に、配列の値がLabelやOptionで表示される文字列 '01' => '北海道', '01' => '北海道', '01' => '北海道', '01' => '北海道' ), 'convert' => array('H','K','k','a','A','n','N'), //期待されるフォーマット以外の入力項目で変換可能なものを指定したフォーマットに変換する //H -> 全角ひらがな //K -> 全角カタカナ //k -> 半角カタカナ //a -> 半角英 //A -> 全角英 //n -> 半角数字 //N -> 全角数字 'format' => array( 'number' ), //表示用のフォーマット(コンマをいれたり) 'attributes' => array( //要素に付随する属性 'id' => 'Content', 'class' => array( 'test1', 'test2' ) ); ); -----------------------------------------------------------------------------------------*/ ?> 'I', 'Ⅱ' => 'II', 'Ⅲ' => 'III', 'Ⅳ' => 'IV', 'Ⅴ' => 'V', 'Ⅵ' => 'VI', 'Ⅶ' => 'VII', 'Ⅷ' => 'VIII', 'Ⅸ' => 'IX', 'Ⅹ' => 'X', 'ⅰ' => 'i', 'ⅱ' => 'ii', 'ⅲ' => 'iii', 'ⅳ' => 'iv', 'ⅴ' => 'v', 'ⅵ' => 'vi', 'ⅶ' => 'vii', 'ⅷ' => 'viii', 'ⅸ' => 'ix', 'ⅹ' => 'x', '①' => '(1)', '②' => '(2)', '③' => '(3)', '④' => '(4)', '⑤' => '(5)', '⑥' => '(6)', '⑦' => '(7)', '⑧' => '(8)', '⑨' => '(9)', '⑩' => '(10)', '⑪' => '(11)', '⑫' => '(12)', '⑬' => '(13)', '⑭' => '(14)', '⑮' => '(15)', '⑯' => '(16)', '⑰' => '(17)', '⑱' => '(18)', '⑲' => '(19)', '⑳' => '(20)', '⑴' => '(1)', '⑵' => '(2)', '⑶' => '(3)', '⑷' => '(4)', '⑸' => '(5)', '⑹' => '(6)', '⑺' => '(7)', '⑻' => '(8)', '⑼' => '(9)', '⑽' => '(10)', '⑾' => '(11)', '⑿' => '(12)', '⒀' => '(13)', '⒁' => '(14)', '⒂' => '(15)', '⒃' => '(16)', '⒄' => '(17)', '⒅' => '(18)', '⒆' => '(19)', '⒇' => '(20)', '\xE3\x8A\xA4' => '(上)', '\xE3\x8A\xA5' => '(中)', '\xE3\x8A\xA6' => '(下)', '\xE3\x8A\xA7' => '(左)', '\xE3\x8A\xA8' => '(右)', '㍉' => 'ミリ', '㍍' => 'メートル', '㌔' => 'キロ', '㌘' => 'グラム', '㌧' => 'トン', '㌦' => 'ドル', '㍑' => 'リットル', '㌫' => 'パーセント', '㌢' => 'センチ', '㎝' => 'cm', '㎏' => 'kg', '\xE3\x8E\xA1' => 'm2', '㏍' => 'K.K.', '℡' => 'TEL', '№' => 'No.', '㍻' => '平成', '㍼' => '昭和', '㍽' => '大正', '㍾' => '明治', '㈱' => '(株)', '㍿' => '(株)', '㈲' => '(有)', '㈹' => '(代)', '〝' => '「', '〟' => '」' ); var $prefectures = array( "" => "選択してください", '北海道' => '北海道', '青森県' => '青森県', '岩手県' => '岩手県', '宮城県' => '宮城県', '秋田県' => '秋田県', '山形県' => '山形県', '福島県' => '福島県', '茨城県' => '茨城県', '栃木県' => '栃木県', '群馬県' => '群馬県', '埼玉県' => '埼玉県', '千葉県' => '千葉県', '東京都' => '東京都', '神奈川県' => '神奈川県', '新潟県' => '新潟県', '富山県' => '富山県', '石川県' => '石川県', '福井県' => '福井県', '山梨県' => '山梨県', '長野県' => '長野県', '岐阜県' => '岐阜県', '静岡県' => '静岡県', '愛知県' => '愛知県', '三重県' => '三重県', '滋賀県' => '滋賀県', '京都府' => '京都府', '大阪府' => '大阪府', '兵庫県' => '兵庫県', '奈良県' => '奈良県', '和歌山県' => '和歌山県', '鳥取県' => '鳥取県', '島根県' => '島根県', '岡山県' => '岡山県', '広島県' => '広島県', '山口県' => '山口県', '徳島県' => '徳島県', '香川県' => '香川県', '愛媛県' => '愛媛県', '高知県' => '高知県', '福岡県' => '福岡県', '佐賀県' => '佐賀県', '長崎県' => '長崎県', '熊本県' => '熊本県', '大分県' => '大分県', '宮崎県' => '宮崎県', '鹿児島県' => '鹿児島県', '沖縄県' => '沖縄県' ); //文字変換候補 var $converts = array( 'H', 'K', 'k', 'a', 'A', 'n', 'N' ); var $js_validate_options = array( 'maxlength' => 'max_length', 'minlength' => 'min_length', 'check_maxlength' => 'check_maxlength', 'check_minlength' => 'check_minlength' ); /*------------------------------------------------------- * コンストラクタ *-------------------------------------------------------*/ function Form( $i_config ) { $this->config = $i_config; mb_language( 'ja' ); ini_set( 'mbstring.internal_encoding', CHARSET ); ini_set( 'mbstring.encoding_translation', 'off' ); ini_set( 'mbstring.http_input', 'pass' ); ini_set( 'mbstring.http_output', 'pass' ); } /*-------------------------------------------------------------------------------------------------------------- * magic_quotes_gpcの設定に合わせてバックスラッシュを取り除く(配列に対応するため再帰呼び出し) *--------------------------------------------------------------------------------------------------------------*/ function strip( $i_value ) { if( is_string( $i_value ) ) { $i_value = mb_convert_kana( $i_value, "KV", CHARSET ); $i_value = str_replace( array_keys( $this->depend_texts ), array_values( $this->depend_texts ), $i_value ); } if ( !get_magic_quotes_gpc() ) { return $i_value; } if ( !is_array( $i_value ) ) { return stripslashes( $i_value ); } foreach( $i_value as $key => $val ) { $i_value[$key] = $this->strip( $val ); } return $i_value; } ///////////////////////////////////////////////////////////////// // ▼values▼ ///////////////////////////////////////////////////////////////// /*------------------------------------------------------- * 確認画面用の値表示生成 -------------------------------------------------------*/ function generate_values( $i_inputs ) { $values = array(); foreach( $this->config as $field => $settings ) { if ( $field == 'config' ){ continue; } //値取得 $input_value = null; if( isset( $i_inputs[ $field ] ) ) { $input_value = $i_inputs[ $field ]; } //HTML作成 $html_value = null; if( $input_value != null ) { if( is_array( $input_value ) ) { $prefix = ''; $suffix = ''; if( $settings['type'] == 'checkbox' && isset( $settings['option_wrap'] ) ) { $prefix = '<' . $settings['option_wrap'] . '>'; $suffix = ''; } foreach( $input_value as $value ) { $html_value .= $prefix . nl2br( htmlspecialchars( $value ) ) . $suffix; } }else { $html_value = nl2br( htmlspecialchars( $input_value ) ); } } //inputy type='hidden'作成 $hidden = null; if( $input_value != null ) { if( is_array( $input_value ) ) { foreach( $input_value as $v ) { $hidden .= ''; } }else { $hidden = ''; } } $values[ $field ] = array( 'value' => $input_value, 'html' => $html_value, 'hidden' => $hidden ); } return $values; } ///////////////////////////////////////////////////////////////// // ▲values▲ ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// // ▼form▼ ///////////////////////////////////////////////////////////////// /*------------------------------------------------------- *フォーム生成 *-------------------------------------------------------*/ function generate_forms( $i_inputs, $i_error ) { $rs = array(); //configに設定されている分だけまわす foreach ( $this->config as $field => $settings ) { //設定フィールドは除外 if ( $field == 'config' ) { continue; } //フォームタイプに応じて実行するメソッド名を生成 $methodName = "_generate_{$settings['type']}"; // if ( method_exists( $this, $methodName) ) { //値が入力されているとき $input_val = null; if( isset( $i_inputs[$field] ) ) { $input_val = $i_inputs[$field]; } //エラーがあるとき $error_val = null; if( isset( $i_error[ $field ] ) ) { $error_val = $i_error[ $field ]; } //resultオブジェクト内に$fieldをkeyとして生成すべきhtml文字列を返す eval( '$rs[$field] = $this->' . $methodName . '( $field, $settings, $input_val, $error_val );' ); } } return $rs; } /*------------------------------------------------------- * エラー時、または、デフォルト設定した属性を作成 *-------------------------------------------------------*/ function _generate_attributes( $i_setting, $i_error ) { //エラー時の属性取得 $error_attr = array(); if( $i_error ) { $error_attr = $this->config['config']['errorAttributes']; } //設定の属性値を取得 $setting_attr = array(); if( isset( $i_setting['attributes'] ) ) { $setting_attr = $i_setting['attributes']; } $js_validate = array(); if( $this->config['config']['js_validate'] ) { //バリデーションが設定されているとき if( isset( $i_setting['validation'] ) ) { //バリデーションの設定をクラスに付与 foreach( $i_setting['validation'] as $key => $value ) { //jquery.validateの特別な設定が必要なバリデーションの時 //if( in_array( $key, $this->js_validate_options ) ) { if( isset( $this->js_validate_options[$key] ) ) { //HTML、JSに反映する際、影響が出るルール名はリネームする //例:HTMLの属性に『maxlength』を指定すると、HTMLの要素が働くため、違う名前に $key = $this->js_validate_options[$key]; $js_validate[$key] = array( $value ); }else { if( !isset( $js_validate['class'] ) ) { $js_validate['class'] = array(); } $js_validate['class'][] = $key; } } } } //二つの配列をマージ $attributes = array_merge_recursive( $setting_attr, $error_attr, $js_validate ); //HTML属性を作成 $attribute = array(); foreach( $attributes as $key => $value ) { $attr = $key . '="'; //複数あるとき if( is_array( $value ) ) { foreach( $value as $v ) { $attr .= $v . ' '; } //一つだけのとき }else { $attr .= $value; } $attr = trim( $attr ); $attr .= '"'; $attribute[] = $attr; } //連結 return implode( ' ', $attribute ); } /*------------------------------------------------------- * input type="hidden"を作成 *-------------------------------------------------------*/ function _generate_hidden( $i_field, $i_settings, $i_val, $i_error ) { return ''; } /*------------------------------------------------------- * input type="text"を作成 *-------------------------------------------------------*/ function _generate_text( $i_field, $i_settings, $i_val, $i_error ) { $attr = $this->_generate_attributes( $i_settings, $i_error ); return ''; } /*------------------------------------------------------- * input type="select"を作成 *-------------------------------------------------------*/ function _generate_select( $i_field, $i_settings, $i_val, $i_error ) { $attr = $this->_generate_attributes( $i_settings, $i_error ); $ret = ''; return $ret; } /*------------------------------------------------------- * input type="radio"を作成 *-------------------------------------------------------*/ function _generate_radio( $i_field, $i_settings, $i_val, $i_error ) { $attr = $this->_generate_attributes( $i_settings, $i_error ); $ret = ''; $radios = array(); if( !$i_val ) { if( isset( $i_settings['default'] ) ) { $i_val = $i_settings['default']; } } foreach( $i_settings['option'] as $val => $text ) { $prefix = ''; $suffix = ''; if( isset( $i_settings['option_wrap'] ) ) { $prefix = '<' . $i_settings['option_wrap'] . '>'; $suffix = ''; } $checked = ''; if( $i_val == $val ) { $checked = 'checked="checked"'; } array_push( $radios, $prefix . '' . $suffix ); //$ret .= $prefix . '' . $suffix; } return $radios; } /*------------------------------------------------------- * input type="textarea"を作成 *-------------------------------------------------------*/ function _generate_textarea( $i_field, $i_settings, $i_val, $i_error ) { $attr = $this->_generate_attributes( $i_settings, $i_error ); return ''; } /*------------------------------------------------------- * input type="checkbox"を作成 *-------------------------------------------------------*/ function _generate_checkbox( $i_field, $i_settings, $i_val, $i_error ) { $attr = $this->_generate_attributes( $i_settings, $i_error ); $html = ""; foreach( $i_settings['option'] as $val => $text ) { $prefix = ''; $suffix = ''; if( isset( $i_settings['option_wrap'] ) ) { $prefix = '<' . $i_settings['option_wrap'] . '>'; $suffix = ''; } $checked = ''; if( is_array( $i_val ) && in_array( $val, $i_val ) ) { $checked = 'checked="checked"'; } $html .= $prefix . '' . $suffix; } return $html; } /*------------------------------------------------------- * input type="password"を作成 *-------------------------------------------------------*/ function _generate_password( $i_field, $i_settings, $i_val, $i_error ) { $attr = $this->_generate_attributes( $i_settings, $i_error ); return ''; } /*------------------------------------------------------- * 都道府県のセレクトタグを作成 *-------------------------------------------------------*/ function _generate_prefectures( $i_field, $i_settings, $i_val, $i_error ) { $prefectures = $this->prefectures; if( isset( $i_settings['default'] ) && is_array( $i_settings['default'] ) ) { $prefectures = $i_settings['default'] + $prefectures; } $i_settings['option'] = $prefectures; return $this->_generate_select( $i_field, $i_settings, $i_val, $i_error ); } ///////////////////////////////////////////////////////////////// // ▲form▲ ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// // ▼Validattion▼ ///////////////////////////////////////////////////////////////// /*------------------------------------------------------- * 全フィールド入力チェック *-------------------------------------------------------*/ function validate( &$i_inputs ) { $errors = array(); foreach( $this->config as $field => $settings ) { //設定フィールドは除外 if ( $field == 'config' ) { continue; } //コンバート if ( isset( $settings['convert'] ) ) { $this->convert( $i_inputs[$field], $settings['convert'] ); } if( isset( $settings['validation'] ) ) { foreach( $settings['validation'] as $key => $value ) { $methodName = "_validate_{$key}"; if( method_exists( $this, $methodName) ) { //送信内容 $input_value = null; if( isset( $i_inputs[$field] ) ) { $input_value = $i_inputs[ $field ]; } //フィールド名 $input_name = null; if( isset( $settings[ 'name' ] ) ) { $input_name = $settings[ 'name' ]; } //チェック eval( '$error = $this->' . $methodName . '( $value, $input_value, $input_name );' ); //エラーがあったとき if( $error ) { //エラーメッセージが設定されているとき if( isset( $settings[ 'error_message' ][ $key ] ) ) { $error = $settings[ 'error_message' ][ $key ]; } //グループ設定があるとき( zip1, zip2などのエラーを一纏めにする if( isset( $settings[ 'group' ] ) ) { $is_break = false; //配列時 if( is_array( $settings[ 'group' ] ) ) { foreach( $settings[ 'group' ] as $v ) { //既にセットされているとき if( isset( $errors[ $v ] ) ) { $is_break = true; } } //配列じゃないとき }else { //既にセットされているとき if( isset( $errors[ $settings[ 'group' ] ] ) ) { $is_break = true; } } if( $is_break ) { break; } } $errors[ $field ] = $error; break; } } } } }; $this->errors = $errors; return !( count( $this->errors ) ); } /*------------------------------------------------------- * コンバート *-------------------------------------------------------*/ function convert( &$i_input, $i_converts ) { foreach ( $i_converts as $convert ) { if ( in_array( $convert, $this->converts ) ) { $i_input = mb_convert_kana( $i_input, $convert . 'V', CHARSET ); } } } /*------------------------------------------------------- * 必須チェックメソッド *-------------------------------------------------------*/ function _validate_required( $i_status, $i_input_value, $i_field_name ) { if( !$i_input_value && $i_input_value !== '0' ) { return $this->_validate_message_required( $i_status, $i_field_name ); }; } /*------------------------------------------------------- * 最大文字数チェックメソッド *-------------------------------------------------------*/ function _validate_maxlength( $i_status, $i_input_value, $i_field_name ) { $i_input_value = str_replace("\n", "", $i_input_value ); $i_input_value = str_replace("\r\n", "", $i_input_value ); $i_input_value = str_replace("\r", "", $i_input_value ); if( mb_strlen( $i_input_value, CHARSET ) > $i_status ) { return $this->_validate_message_maxlength( $i_status, $i_field_name ); }; } /*------------------------------------------------------- * 最小文字数チェックメソッド *-------------------------------------------------------*/ function _validate_minlength( $i_status, $i_input_value, $i_field_name ) { if( mb_strlen( $i_input_value , CHARSET ) < $i_status ) { return $this->_validate_message_minlength( $i_status, $i_field_name ); }; } /*------------------------------------------------------- * チェックボックス最大選択数数チェックメソッド *-------------------------------------------------------*/ function _validate_check_maxlength( $i_status, $i_input_value, $i_field_name ) { if( is_array( $i_input_value ) && count( $i_input_value ) > $i_status ) { return $this->_validate_message_check_maxlength( $i_status, $i_field_name ); } } /*------------------------------------------------------- * チェックボックス最小選択数数チェックメソッド *-------------------------------------------------------*/ function _validate_check_minlength( $i_status, $i_input_value, $i_field_name ) { if( !is_array( $i_input_value ) || count( $i_input_value ) < $i_status ) { return $this->_validate_message_check_minlength( $i_status, $i_field_name ); } } /*------------------------------------------------------- * 半角入力チェック *-------------------------------------------------------*/ function _validate_ascii( $i_status, $i_input_value, $i_field_name ) { if( preg_match( '/^[\\x80-\\xFF]+$/', $i_input_value ) ) { return $this->_validate_message_ascii( $i_status, $i_field_name ); } } /*------------------------------------------------------- * Emailチェック *-------------------------------------------------------*/ function _validate_email( $i_status, $i_input_value, $i_field_name ) { if( $i_input_value ) { if( !preg_match( '/^[0-9A-Za-z][0-9a-zA-Z_\.\-]+@[0-9A-Za-z][0-9a-zA-Z_\-]*\.[0-9A-Za-z][0-9a-zA-Z_\.\-]+$/', $i_input_value ) ) { return $this->_validate_message_email( $i_status, $i_field_name ); } } } /*------------------------------------------------------- * URLチェック *-------------------------------------------------------*/ function _validate_url( $i_status, $i_input_value, $i_field_name ) { if( $i_input_value ) { if( !preg_match( '{^https?://[0-9A-Za-z][0-9a-zA-Z_\.-]+\.[0-9A-Za-z][0-9a-zA-Z_\.-]+}', $i_input_value ) ) { return $this->_validate_message_url( $i_status, $i_field_name ); } } } /*------------------------------------------------------- * 整数値かどうかチェック *-------------------------------------------------------*/ function _validate_digits( $i_status, $i_input_value, $i_field_name ) { if( $i_input_value ) { if( !preg_match( '/^[0-9]+$/', $i_input_value ) ) { return $this->_validate_message_digits( $i_status, $i_field_name ); } } } /*------------------------------------------------------- * 数字かどうかチェック *-------------------------------------------------------*/ function _validate_number( $i_status, $i_input_value, $i_field_name ) { if( $i_input_value ) { if( !is_numeric( $i_input_value ) ) { return $this->_validate_message_number( $i_status, $i_field_name ); } } } /*------------------------------------------------------- * 数値での入力可能最大値 *-------------------------------------------------------*/ function _validate_max( $i_status, $i_input_value, $i_field_name ) { if( !is_numeric( $i_input_value ) || $i_input_value > $i_status ) { return $this->_validate_message_max( $i_status, $i_field_name ); } } /*------------------------------------------------------- * 数値での入力可能最小値 *-------------------------------------------------------*/ function _validate_min( $i_status, $i_input_value, $i_field_name ) { if( !is_numeric( $i_input_value ) || $i_input_value < $i_status ) { return $this->_validate_message_min( $i_status, $i_field_name ); } } /*------------------------------------------------------- * 正規表現での入力チェック *-------------------------------------------------------*/ function _validate_reg( $i_status, $i_input_value, $i_field_name ) { if( $i_input_value ) { if( !preg_match( $i_status, $i_input_value )) { return $this->_validate_message_reg( $i_status, $i_field_name ); } } } ///////////////////////////////////////////////////////////////// // ▲Validattion▲ ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// // ▼message▼ ///////////////////////////////////////////////////////////////// function _validate_message_required( $i_status, $i_field_name ) { return $i_field_name . 'は入力必須です。'; } function _validate_message_maxlength( $i_status, $i_field_name ) { return $i_field_name . 'は' . $i_status . '文字以内で入力してください。'; } function _validate_message_minlength( $i_status, $i_field_name ) { return $i_field_name . 'は' . $i_status . '文字以上入力してください。'; } function _validate_message_check_maxlength( $i_status, $i_field_name ) { return $i_field_name . 'は' . $i_status . '項目以内選択してください'; } function _validate_message_check_minlength( $i_status, $i_field_name ) { return $i_field_name . 'は' . $i_status . '項目以上選択してください'; } function _validate_message_ascii( $i_status, $i_field_name ) { return $i_field_name . 'は全て半角で入力してください。'; } function _validate_message_email( $i_status, $i_field_name ) { return $i_field_name . 'の形式が正しくありません。'; } function _validate_message_url( $i_status, $i_field_name ) { return $i_field_name . 'の形式が正しくありません。'; } function _validate_message_digits( $i_status, $i_field_name ) { return $i_field_name . 'には整数値を入力してください。'; } function _validate_message_number( $i_status, $i_field_name ) { return $i_field_name . 'には数値を入力してください。'; } function _validate_message_max( $i_status, $i_field_name ) { return $i_field_name . 'は' . $i_status . '以下の数値を入力してください。'; } function _validate_message_min( $i_status, $i_field_name ) { return $i_field_name . 'は' . $i_status . '以上の数値を入力してください。'; } function _validate_message_reg( $i_status, $i_field_name ) { return $i_field_name . 'にエラーがあります。'; } ///////////////////////////////////////////////////////////////// // ▲message▲ ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// // ▼mail▼ ///////////////////////////////////////////////////////////////// /*-------------------------------------------------------------------------------- * メール送信データ作成 --------------------------------------------------------------------------------*/ function mail( $i_inputs ) { //メール用にテキスト作成 foreach( $this->config as $field => $settings ) { //設定フィールドは除外 if ( $field == 'config' ) continue; $input_value = '-'; if( isset( $i_inputs[ $field ] ) ) { $value = $i_inputs[ $field ]; //配列時 if( is_array( $value ) ) { $input_value = ''; foreach( $value as $v ) { if ( @$settings['option'] ) $v = $settings['option'][$v]; $input_value .= $v . "\n"; } //配列ではないとき } else { if ( @$settings['option'] ) $value = $settings['option'][$value]; $input_value = $value; } } $i_inputs[ $field ] = $input_value; } if( isset( $this->config['config']['mail'] ) ) { // 管理側へのメール送信データ $data = $this->config['config']['mail']; // 差出人アドレス $from = array( $i_inputs[ $data[ 'from' ][0] ] ); // 差出人名 if( isset( $data[ 'from' ][1] ) && isset( $i_inputs[ $data[ 'from' ][1] ] ) ) { $from[] = $i_inputs[ $data[ 'from' ][1] ]; } $data['from'] = $from; // 送信先が入力内容によって変わる場合 if ( $data['to'] && !is_array($data['to']) ) { if ( !@$this->config[$data['to']]['mail'] || !@is_array($this->config[$data['to']]['mail']) ) return false; $inputValue = $i_inputs[$data['to']]; $mailSettings = @$this->config[$data['to']]['mail'][$inputValue]; if ( !$mailSettings ) return false; foreach ( $mailSettings as $mailSetting ) { $data['to'] = array($mailSetting['mail'],$mailSetting['name']); $this->_mail( $data, $i_inputs ); } } // 固定の送信先が設定されている場合 else if ( is_array($data['to']) && $data['to'][0] ) { if( !$this->_mail( $data, $i_inputs ) ) { return false; } } else { //送信先が入力されていないとき return false; } } if( isset( $this->config['config']['reply'] ) ) { //利用側へのメール送信データ $data = $this->config['config']['reply']; //送信先が入力されていないとき if( !isset( $i_inputs[ $data[ 'to' ][0] ] ) ) { return false; } //送信先取得 $to = array( $i_inputs[ $data[ 'to' ][0] ] ); //送信先名 if( isset( $data[ 'to' ][1] ) && isset( $i_inputs[ $data[ 'to' ][1] ] ) ) { $to[] = $i_inputs[ $data[ 'to' ][1] ]; } $data['to'] = $to; // // 送信先が入力内容によって変わる場合 if ( $data['from'] && !is_array($data['from']) ) { if ( !@$this->config[$data['from']]['mail'] || !is_array(@$this->config[$data['from']]['mail']) ) return false; $inputValue = $i_inputs[$data['from']]; $mailSettings = @$this->config[$data['from']]['mail'][$inputValue]; if ( !$mailSettings ) return false; $data['from'] = array($mailSettings[0]['mail'],$mailSettings[0]['name']); } if( !$this->_mail( $data, $i_inputs ) ) { return false; } } return true; } /*-------------------------------------------------------------------------------- * メール送信 --------------------------------------------------------------------------------*/ function _mail( $i_mail_data, $i_inputs ) { $inputs = $i_inputs; ob_start(); require( $i_mail_data['template'] ); $source = ob_get_contents(); //バッファリング終了 ob_clean(); //メールクラスファイル if ( !function_exists( 'qd_send_mail' ) ) { require_once( dirname( __FILE__ ) . '/qdmail.php' ); } // unitedCharset return qd_send_mail( 'text', $i_mail_data['to'], $mail_title, $source, $i_mail_data['from'] ); } ///////////////////////////////////////////////////////////////// // ▲mail▲ ///////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------- * Jsバリデーションのエラーメッセージオブジェクト( JS用 ) ---------------------------------------------------------------------------*/ function generate_js_validate_message() { $data = array(); foreach( $this->config as $key => $value ) { //設定フィールドは除外 if ( $key == 'config' ) { continue; } //バリデーション設定がないもの if( !isset( $value['validation'] ) ) { continue; } if( !is_array( $value['validation'] ) ) { continue; } if( !count( $value['validation'] ) ) { continue; } $form_name = $key; if( $value['type'] == 'checkbox' ) { $form_name = '"' . $form_name . '[]"'; } $d = $form_name . ':{'; foreach( $value['validation'] as $k => $v ) { if( isset( $value[ 'error_message' ][ $k ] ) ) { $message = $value[ 'error_message' ][ $k ]; }else { $methodName = '_validate_message_' . $k; if( method_exists( $this, $methodName ) ) { eval( '$message = $this->' . $methodName . '( $v, $value["name"] );' ); } } if( $k == 'check_minlength' ) { $k = 'minlength'; } //HTML、JSに反映する際、影響が出るルール名はリネームする //例:HTMLの属性に『maxlength』を指定すると、HTMLの要素が働くため、違う名前に if( isset( $this->js_validate_options[$k] ) ) { $k = $this->js_validate_options[$k]; } $d .= $k . ':"' . $message . '",'; } $data[] = mb_substr( $d, 0, -1 ) . '}'; } return implode( ',', $data ); } } ?>