メールフォームの「カレンダー」タイプの動作について

d-na > メールフォームの「カレンダー」タイプの動作について @ 2013/2/13 1:50
お世話になります。

baserCMSを利用してウェブサイトを運営しております。

メールフォームプラグインを用いてイベント参加申込を受け付けているのですが、
メールフィールドの「カレンダー」タイプの動作について質問があります。

記入者がフォーマットどおり「1980/10/11」などと記入している限りは問題がないのですが、
例えば「19801011」などとスラッシュを含まない形式で記入されると、エラー処理されないばかりか勝手に1970年の日付に書き変わってしまいます。
記入が書き変わったことに気付かず送信してしまうケースが何度か発生し、少々困っております。

これを「形式に沿わない入力は全てエラーにする」か、あるいは「スラッシュを含まない形式でも正しく変換する」ようにするにはどうすればいいでしょうか。
よろしくお願いします。
goichi > Re: メールフォームの「カレンダー」タイプの動作について @ 2013/2/13 10:16
こんにちは(^^
ちょっといい加減な回答になってしまうのですが(汗、
単純にスラッシュ抜きの日付が入力されてくるのであれば、
以下の様な感じでスラッシュ有りの形に整形してしまう方法があるかもしれません。

/baser/plugins/mail/models/massege.php
の302行目付近からはじまる「autoConvert()」に追記を行います。

/**
 * 自動変換
 * 確認画面で利用される事も踏まえてバリデートを通す為の
 * 可能な変換処理を行う。
 *
 * @param array $data
 * @return array $data
 * @access public
 */
	function autoConvert($data) {

		foreach($this->mailFields as $mailField) {
			
			$value = $data['Message'][$mailField['MailField']['field_name']];
			
			if(!empty($value)) {
				
				// 半角処理
				if($mailField['MailField']['auto_convert']=='CONVERT_HANKAKU') {
					$value = mb_convert_kana($value,'a');
				}
				// 全角処理
				if($mailField['MailField']['auto_convert']=='CONVERT_ZENKAKU') {
					$value = mb_convert_kana($value,'AK');
				}
				// サニタイズ
				if(!is_array($value)) {
					$value = str_replace('<!--','&lt;!--', $value);
				}
				// TRIM
				if(!is_array($value)) {
					$value = trim($value);
				}
				// 〜追記ここから〜
				// カレンダー形式の場合、入力データを整形する
				if($mailField['MailField']['type']=='date_time_calender'){
					//一旦、すべてUNIXタイムスタンプへ
					$value = strtotime($value);
					//整形する
					$value = date('Y/m/d',$value);
				}
				// 〜追記ここまで〜
			}
			
			$data['Message'][$mailField['MailField']['field_name']] = $value;
			
		}

		return $data;

	}


ユーザーが入力したデータが一旦、ここで整形されていると思いますので、
その段階でカレンダー入力された日付も整形します。

これで「20130213」が「2013/02/13」になりますが、
スラッシュが中途半端に入っているような場合や(ex.2013/0213)、
月や日が1桁の数字で、ゼロが抜けている場合()ex.2013/1/5)などには対応していません。。。

まぁ、アイディアまでということで・・・。
参考までに投稿しておきます。m(__)m
(他の方がもっと良い方法を教えてくれるかもしれませんので、ちょっと待ってみると良いかもしれませんね。)
d-na > Re: メールフォームの「カレンダー」タイプの動作について @ 2013/2/18 0:46
ありがとうございます。参考にしてみます。
ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
11 人のユーザが現在オンラインです。 (11 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 11