function pushValue(&$record, &$field, &$form, &$element, &$metaValues) { $table =& $record->_table; $formTool =& Dataface_FormTool::getInstance(); $formFieldName = $element->getName(); if ($table->isDate($field['name'])) { return Dataface_converters_date::qf2Table($element->getValue()); } else { if ($table->isInt($field['name'])) { return Dataface_converters_date::qf2UnixTimestamp($element->getValue()); } else { return Dataface_converters_date::datetime_to_string(Dataface_converters_date::qf2Table($element->getValue())); } } }
/** * @deprecated Use Dataface_converters_date::parseDate() */ function parse_datetype($value) { $converter = new Dataface_converters_date(); return $converter->parseDate($value); }
/** * Converts a quickform date field value as returned by $element->getValue() * to a date array that can be stored in a Dataface_Table object. */ static function parseDate($value) { if (!isset($value) || !$value) { return null; } if ($value == '0000-00-00' || $value == '0000-00-00 00:00:00') { return null; } if (is_array($value) and (isset($value['year']) or isset($value['hours']))) { return $value; } // if it is already in the correct format, we don't need to parse it. if (Dataface_converters_date::isTimeStamp($value)) { $date = array(); if (strlen($value) >= 4) { $date['Y'] = substr($value, 0, 4); } if (strlen($value) >= 6) { $date['m'] = substr($value, 4, 2); } if (strlen($value) >= 8) { $date['d'] = substr($value, 6, 2); } if (strlen($value) >= 10) { $date['H'] = substr($value, 8, 2); } if (strlen($value) >= 12) { $date['i'] = substr($value, 10, 2); } if (strlen($value) >= 14) { $date['s'] = substr($value, 12, 2); } } else { if (!is_array($value)) { if (function_exists('date_parse')) { $out = date_parse($value); $out['hours'] = $out['hour']; unset($out['hour']); $out['minutes'] = $out['minute']; unset($out['minute']); $out['seconds'] = $out['second']; unset($out['second']); return $out; } else { if (Dataface_converters_date::inRange($value)) { // strtotime cannot seem to calculate the time properly on this // so we will manually parse it; if (preg_match('/^(\\d{4})(-(\\d{2}))?(-(\\d{2}))?( (\\d{2}):(\\d{2})(:(\\d{2}))?)?$/', $value, $matches)) { $date = array(); $date['year'] = $matches[1]; $date['month'] = @$matches[3]; $date['day'] = @$matches[5]; $date['hours'] = @$matches[7]; $date['minutes'] = @$matches[8]; $date['seconds'] = @$matches[10]; return $date; } } } $isNull = true; $units = explode(' ', 'Y m M F d h a A i s'); $date = array(); foreach ($units as $unit) { if ($value) { $date[$unit] = date($unit, strtotime($value)); $isNull = false; } else { $date[$unit] = null; //date($unit); } } if ($isNull) { return null; } } else { $date = $value; } } $params = array(); $params['year'] = isset($date['Y']) ? $date['Y'] : date('Y'); $params['month'] = isset($date['m']) ? $date['m'] : (isset($date['M']) ? $date['M'] : (isset($date['F']) ? $date['F'] : null)); $params['day'] = isset($date['d']) ? $date['d'] : null; //date('d'); if (isset($date['H'])) { $params['hours'] = $date['H']; } else { if (isset($date['h']) && isset($date['a'])) { $params['hours'] = date('H', strtotime($date['h'] . ":00" . $date['a'])); } else { if (isset($date['h']) && isset($date['A'])) { $params['hours'] = date('H', strtotime($date['h'] . ":00" . $date['A'])); } else { if (isset($date['h'])) { $params['hours'] = $date['h']; } else { $params['hours'] = null; } } } } //date('H'); $params['minutes'] = isset($date['i']) ? $date['i'] : null; //date('i'); $params['seconds'] = isset($date['s']) ? $date['s'] : null; //date('s'); foreach (array_keys($params) as $param) { $params[$param] = intval($params[$param]); } return $params; }
/** * @brief Converts a timestamp array to a string. * @deprecated Use Dataface_converters_date::timestamp_to_string() * @private */ function timestamp_to_string($value) { return Dataface_converters_date::timestamp_to_string($value); }