/** * Check a date/datetime string * * @static * @param string $datetime The date or datetime to check * @param mixed $return The type of return value * @param string $date_format The dateformat to use for the check * @return boolean */ public static function isDateTime($datetime, $return = false, $date_format = 'Y-m-d H:i:s') { $d = X4Time_helper::parse_date($datetime, $date_format); if ($d['error_count'] == 0) { if (checkdate($d['month'], $d['day'], $d['year'])) { switch ($return) { case 'date': return $d['year'] . '-' . str_pad($d['month'], 2, '0', STR_PAD_LEFT) . '-' . str_pad($d['day'], 2, '0', STR_PAD_LEFT); break; case 'datetime': return $d['year'] . '-' . str_pad($d['month'], 2, '0', STR_PAD_LEFT) . '-' . str_pad($d['day'], 2, '0', STR_PAD_LEFT) . ' ' . str_pad($d['hour'], 2, '0', STR_PAD_LEFT) . ':' . str_pad($d['minute'], 2, '0', STR_PAD_LEFT) . ':' . str_pad($d['second'], 2, '0', STR_PAD_LEFT); break; default: return true; break; } } } return false; }
/** * Before rule * if the value is not a date before another field date then catch an error * * @static * @param array $field Array of the field form (passed as reference) * @param array $tok Array of the rule parameters (rule_name, param1, param2...) * @param boolean $e Error status * @param array $_post _POST array * @param array $_files _FILES array * @return void */ private static function _before(&$field, $tok, &$e, $_post, $_files) { if (isset($_post['date_format'])) { // exists an alternative date_format $val = str_replace('/', '-', $_post[$field['name']]); $before = X4Time_helper::reformat($val, $_post['date_format'], 'Y-m-d'); $after = X4Time_helper::reformat($_post[$tok[1]], $_post['date_format'], 'Y-m-d'); } else { $before = $_post[$field['name']]; $after = $_post[$tok[1]]; } if (strtotime($before) >= strtotime($after)) { $field['error'][] = '_must_be_before'; $field['related'][$field['name']] = $tok[1]; $e = false; } }