Exemplo n.º 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}))$@', $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';
         $resultTime = strtotime(Lumine_Util::FormatDate($value, $f));
         if (!is_null($this->minDate) && $resultTime < strtotime(Lumine_Util::FormatDate($this->minDate, $f))) {
             return false;
         }
         if (!is_null($this->maxDate) && $resultTime > strtotime(Lumine_Util::FormatDate($this->maxDate, $f))) {
             return false;
         }
     }
     return true;
 }
Exemplo n.º 2
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;
 }