示例#1
0
 /**
  * @see Lumine_Validator_AbstractValidator::execute()
  */
 public function execute(Lumine_Base $obj)
 {
     $value = $this->getFieldValue($obj);
     if (!preg_match('@^((\\d{2}\\/\\d{2}\\/\\d{4})|(\\d{4}-\\d{2}-\\d{2})) (\\d{2}:\\d{2}(:\\d{2})?)$@', $value, $reg)) {
         return false;
         // se digitou no formato com barras
     } else {
         if (!empty($reg[2])) {
             list($dia, $mes, $ano) = explode('/', $reg[2]);
             // se nao for formato brasileiro e norte-americano
             if (!checkdate($mes, $dia, $ano) && !checkdate($dia, $mes, $ano)) {
                 return false;
             }
             // se digitou no formato ISO
         } else {
             if (!empty($reg[3])) {
                 list($ano, $mes, $dia) = explode('-', $reg[3]);
                 // se for uma data valida
                 if (!checkdate($mes, $dia, $ano)) {
                     return false;
                 }
             }
         }
     }
     if (!is_null($this->minDate) || !is_null($this->maxDate)) {
         $f = '%Y-%m-%d %H:%I:%S';
         $resultTime = strtotime(Lumine_Util::FormatDateTime($value, $f));
         if (!is_null($this->minDate) && $resultTime < strtotime(Lumine_Util::FormatDateTime($this->minDate, $f))) {
             return false;
         }
         if (!is_null($this->maxDate) && $resultTime > strtotime(Lumine_Util::FormatDateTime($this->maxDate, $f))) {
             return false;
         }
     }
     return true;
 }
示例#2
0
 /**
  * recupera o valor ja formatado para o banco
  * 
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br/
  * @param string $key
  * @param mixed $val
  * @return mixed
  */
 private function getStrictValue($key, $val)
 {
     try {
         $res = $this->metadata()->getField($key);
         if ($val instanceof Lumine_Base || gettype($val) == 'NULL') {
             //$this->_dataholder[ $key ] = $val;
             return $val;
         }
         switch ($res['type']) {
             case 'int':
             case 'integer':
             case 'boolean':
             case 'bool':
                 $val = sprintf('%d', $val);
                 break;
             case 'float':
             case 'double':
                 $val = sprintf('%f', $val);
                 break;
             case 'datetime':
                 $val = Lumine_Util::FormatDateTime($val);
                 break;
             case 'date':
                 if (preg_match('@^(\\d{2})/(\\d{2})/(\\d{4})$@', $val, $reg)) {
                     if (checkdate($reg[2], $reg[1], $reg[3])) {
                         $val = "{$reg['3']}-{$reg['2']}-{$reg['1']}";
                     } else {
                         $val = "{$reg['3']}-{$reg['1']}-{$reg['2']}";
                     }
                 } else {
                     if (preg_match('@^(\\d{4})-(\\d{2})-(\\d{2})$@', $val, $reg)) {
                         $val = $val;
                     } else {
                         if (is_numeric($val)) {
                             $val = date('Y-m-d', $val);
                         } else {
                             $val = date('Y-m-d', strtotime($val));
                         }
                     }
                 }
                 break;
         }
         // $this->_dataholder[ $key ] = $val;
         return $val;
     } catch (Exception $e) {
         // $this->_dataholder[ $key ] = $val;
         return $val;
     }
 }
示例#3
0
 /**
  * Faz o parse do valor para SQL
  * 
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br/
  * @param Lumine_Base|array $obj
  * @param mixed             $val
  * @param string            $type
  * @param boolean           $islike
  * @return mixed
  */
 public static function getParsedValue($obj, $val, $type, $islike = false, $usingDefault = false)
 {
     if (is_null($val) == true) {
         return 'NULL';
     }
     // se esta informando atraves de um valor padrao
     if ($usingDefault && !is_array($val) && !is_object($val)) {
         // pegamos o prefixo do valor
         $prefix = substr($val, 0, strlen(Lumine::DEFAULT_VALUE_FUNCTION_IDENTIFIER));
         // se for para ser aplicado como uma funcao do banco
         if ($prefix == Lumine::DEFAULT_VALUE_FUNCTION_IDENTIFIER) {
             // removemos o prefixo e devolvemos o valor que sera usado como funcao
             return str_replace($prefix, '', $val);
         }
     }
     switch ($type) {
         case 'smallint':
         case 'int':
         case 'integer':
             $val = sprintf('%d', $val);
             break;
         case 'float':
         case 'double':
             $val = sprintf('%f', $val);
             break;
         case 'date':
             /*
             				if(is_numeric($val))
             				{
             					$val = "'" . date('Y-m-d', $val) . "'";
             				} else {
             					$val = "'" . date('Y-m-d', strtotime($val)) . "'";
             				}*/
             $val = "'" . Lumine_Util::FormatDate($val, '%Y-%m-%d') . "'";
             break;
         case 'datetime':
             /*
             if(is_numeric($val))
             {
             	$val = "'" . date('Y-m-d H:i:s', $val) . "'";
             } else {
             	$val = "'" . date('Y-m-d H:i:s', strtotime($val)) . "'";
             }
             */
             $val = "'" . Lumine_Util::FormatDateTime($val, '%Y-%m-%d %H:%M:%S') . "'";
             break;
         case 'time':
             $val = Lumine_Util::FormatTime($val, '%H:%M:%S');
             $val = "'" . $val . "'";
             break;
         case 'boolean':
             $val = sprintf("'%d'", $val);
             break;
         case 'string':
         case 'text':
         case 'varchar':
         case 'char':
         default:
             if ($islike == true) {
                 $val = "'%" . $obj->_getConnection()->escape($val) . "%'";
             } else {
                 $val = "'" . $obj->_getConnection()->escape($val) . "'";
             }
             break;
     }
     return $val;
 }