silverstripe-framework/core/model/fieldtypes/Time.php
Normann Lou 5c68bb3bde BUGFIX: an time field input between 12:00pm to 12:59pm can't save back to database or always save as 00:00:00.
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@84086 467b73ca-7a2a-4603-9d3b-597d59a354a9
2009-08-10 03:56:59 +00:00

71 lines
1.7 KiB
PHP
Executable File

<?php
/**
* Represents a column in the database with the type 'Time'.
*
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
*
* @package sapphire
* @subpackage model
*/
class Time extends DBField {
function setValue($value) {
if($value) {
if(preg_match( '/(\d{1,2})[:.](\d{2})([a|A|p|P|][m|M])/', $value, $match )) $this->TwelveHour( $match );
else $this->value = date('H:i:s', strtotime($value));
} else {
$value = null;
}
}
/**
* Return a user friendly format for time
* in a 12 hour format.
*
* @return string Time in 12 hour format
*/
function Nice() {
return date('g:ia', strtotime($this->value));
}
/**
* Return a user friendly format for time
* in a 24 hour format.
*
* @return string Time in 24 hour format
*/
function Nice24() {
return date('H:i', strtotime($this->value));
}
/**
* Return the time using a particular formatting string.
*
* @param string $format Format code string. e.g. "g:ia"
* @return string The date in the requested format
*/
function Format($format) {
if($this->value) return date($format, strtotime($this->value));
}
function TwelveHour( $parts ) {
$hour = $parts[1];
$min = $parts[2];
$half = $parts[3];
// the transmation should exclude 12:00pm ~ 12:59pm
$this->value = (( (strtolower($half) == 'pm') && $hour != '12') ? $hour + 12 : $hour ) .":$min:00";
}
function requireField() {
$parts=Array('datatype'=>'time');
$values=Array('type'=>'time', 'parts'=>$parts);
DB::requireField($this->tableName, $this->name, $values);
}
public function scaffoldFormField($title = null, $params = null) {
return new TimeField($this->name, $title);
}
}
?>