public function _validation_date_string($val, $year_field = null, $delimiter = '-') { if (empty($val)) { return true; } // if $val is empty, uncheck; $date_items = Util_Date::sprit_date_str($val, true, $delimiter); $month = $date_items['month']; $date = $date_items['date']; $year = 2000; // 閏年の年を初期値としてセット if (!empty($date_items['year'])) { $year = $date_items['year']; } elseif ($year_field && $this->input($year_field)) { $year = $this->input($year_field); } if ($month < 1 || $month > 12) { return false; } if ($date < 1) { return false; } if ($date > Date::days_in_month($month, $year)) { return false; } return checkdate($month, $date, $year); }
private function set_validation_member_field_birthday() { if (!$this->check_is_enabled_member_field('birthday')) { return false; } $properties = Form_Util::get_model_field('member', 'birthyear'); $attrs = $properties['attributes']; $attrs['value'] = isset($this->member_obj->birthyear) ? $this->member_obj->birthyear : date('Y'); if (self::conf('birthday', 'birthyear.isRequired')) { $properties['rules'][] = 'required'; } $this->validation->add('member_birthyear', $properties['label'], $attrs, $properties['rules']); list($month, $day) = !empty($this->member_obj->birthday) ? Util_Date::sprit_date_str($this->member_obj->birthday) : array(1, 1); if (self::conf('birthday', 'birthday.isRequired')) { $rules[] = 'required'; } $options = Form_Util::get_int_options(1, 12); $rules = array(array('valid_string', 'numeric'), array('in_array', array_keys($options))); $this->validation->add('member_birthday_month', '誕生日(月)', array('type' => 'select', 'options' => $options, 'value' => $month), $rules); $options = Form_Util::get_int_options(1, 31); $rules = array(array('valid_string', 'numeric'), array('in_array', array_keys($options))); $this->validation->add('member_birthday_day', '誕生日(日)', array('type' => 'select', 'options' => $options, 'value' => $month), $rules); }