Exemplo n.º 1
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;
 }