# PrimitiveTimestamp.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /***************************************************************************
    00003  *   Copyright (C) 2006-2007 by Konstantin V. Arkhipov                     *
    00004  *                                                                         *
    00005  *   This program is free software; you can redistribute it and/or modify  *
    00006  *   it under the terms of the GNU Lesser General Public License as        *
    00007  *   published by the Free Software Foundation; either version 3 of the    *
    00008  *   License, or (at your option) any later version.                       *
    00009  *                                                                         *
    00010  ***************************************************************************/
    00011
    00015     final class PrimitiveTimestamp extends PrimitiveDate
    00016     {
    00017         const HOURS     = 'hrs';
    00018         const MINUTES   = 'min';
    00019         const SECONDS   = 'sec';
    00020
    00021         public function importMarried($scope)
    00022         {
    00023             if (
    00024                 BasePrimitive::import($scope)
    00025                 && isset(
    00026                     $scope[$this->name][self::DAY],
    00027                     $scope[$this->name][self::MONTH],
    00028                     $scope[$this->name][self::YEAR]
    00029                 )
    00030                 && is_array($scope[$this->name])
    00031             ) {
    00032                 if ($this->isEmpty($scope))
    00033                     return !$this->isRequired();
    00034
    00035                 $hours = $minutes = $seconds = 0;
    00036
    00037                 if (isset($scope[$this->name][self::HOURS]))
    00038                     $hours = (int) $scope[$this->name][self::HOURS];
    00039
    00040                 if (isset($scope[$this->name][self::MINUTES]))
    00041                     $minutes = (int) $scope[$this->name][self::MINUTES];
    00042
    00043                 if (isset($scope[$this->name][self::SECONDS]))
    00044                     $seconds = (int) $scope[$this->name][self::SECONDS];
    00045
    00046                 $year = (int) $scope[$this->name][self::YEAR];
    00047                 $month = (int) $scope[$this->name][self::MONTH];
    00048                 $day = (int) $scope[$this->name][self::DAY];
    00049
    00050                 if (!checkdate($month, $day, $year))
    00051                     return false;
    00052
    00053                 try {
    00054                     $stamp = new Timestamp(
    00055                         $year.'-'.$month.'-'.$day.' '
    00056                         .$hours.':'.$minutes.':'.$seconds
    00057                     );
    00058                 } catch (WrongArgumentException $e) {
    00059                     // fsck wrong stamps
    00060                     return false;
    00061                 }
    00062
    00063                 if ($this->checkRanges($stamp)) {
    00064                     $this->value = $stamp;
    00065                     return true;
    00066                 }
    00067             }
    00068
    00069             return false;
    00070         }
    00071
    00072         protected function getObjectName()
    00073         {
    00074             return 'Timestamp';
    00075         }
    00076     }
    00077 ?>