Exemplo n.º 1
0
 /**
  * retona a classe criada
  *
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br
  * @param string $tablename
  * @param Lumine_Configuration $cfg
  * @return Lumine_Factory
  */
 public static function create($tablename, Lumine_Configuration $cfg)
 {
     $pkg = $cfg->getProperty('package');
     Lumine_Log::debug('Recuperando campos da tabela ' . $tablename);
     $fields = $cfg->getConnection()->describe($tablename);
     $obj = new Lumine_Factory($pkg, $tablename);
     foreach ($fields as $item) {
         list($name, $type_native, $type, $length, $primary, $notnull, $default, $autoincrement) = $item;
         $options = array('primary' => $primary, 'notnull' => $notnull, 'autoincrement' => $autoincrement);
         // para o pg, ainda tem o nome da sequence
         if (!empty($item[8]['sequence'])) {
             $options['sequence'] = $item[8]['sequence'];
         }
         // se tiver um valor padrao
         if (!empty($default)) {
             $options['default'] = $default;
         }
         // nome do membro
         $memberName = $name;
         // se for para usar camel case
         if ($cfg->getOption('camel_case') == true) {
             $memberName = Lumine_Util::camelCase($memberName);
         }
         $obj->metadata()->addField($memberName, $name, $type, $length, $options);
     }
     return $obj;
 }
Exemplo n.º 2
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.º 3
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;
     }
 }
Exemplo n.º 4
0
?>
   </tr>
   <tr>
       <th width="3%">&nbsp;</th>
       <th width="3%"><a href="javascript:" onclick="$('#busca').submit();"><img src="magnifier.png" width="16" height="16" alt="Pesquisar" title="Pesquisar" /></a></th>
       <?php 
foreach ($parts as $name => $item) {
    $item['name'] = $name;
    if (empty($item['options']['foreign'])) {
        echo '<th>', sprintf('<input type="text" class="textinput inputbusca %s" name="_filter_%s" value="%s" />', $item['type'], $name, !isset($_GET['_filter_' . $name]) ? '' : $_GET['_filter_' . $name]), '</th>';
    } else {
        $display = empty($item['options']['displayField']) ? $item['options']['linkOn'] : $item['options']['displayField'];
        echo '<th>';
        echo '<select class="foreign" name="_filter_', $item['name'], '">';
        echo '<option value=""></option>';
        echo Lumine_Util::buildOptions($obj->_getConfiguration()->getProperty('package') . '.' . $item['options']['class'], $item['options']['linkOn'], $display, isset($_GET['_filter_' . $item['name']]) ? $_GET['_filter_' . $item['name']] : '');
        echo '</select>';
        echo '</th>';
    }
}
?>
   </tr>
 </thead>
 <tbody>
<?php 
while ($obj->fetch()) {
    $pks_string = '';
    $pks = $obj->metadata()->getPrimaryKeys();
    $vals = array();
    foreach ($pks as $name => $prop) {
        $vals[] = '_pk_' . $prop['name'] . '=' . urlencode($obj->{$prop}['name']);
Exemplo n.º 5
0
 /**
  * @param Lumine_Base $obj Objeto a ser validado
  * @return array - Retorna array contendo erros caso validacao invalida
  * @author Cairo Lincoln de Morais Noleto
  * @link http://caironoleto.wordpress.com
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br
  **/
 public static function validate(Lumine_Base $obj)
 {
     $fieldList = !empty(self::$validateList[$obj->_getName()]) ? self::$validateList[$obj->_getName()] : array();
     $errors = array();
     foreach ($fieldList as $fieldName => $validators) {
         // se ja houver um erro para o campo atual
         if (self::checkStackError($errors, $fieldName) == true) {
             // passa para o proximo campo
             continue;
         }
         foreach ($validators as $array) {
             // se ja houver um erro para o campo atual
             if (self::checkStackError($errors, $fieldName) == true) {
                 // passa para o proximo campo
                 break;
             }
             switch ($array["tipoValidacao"]) {
                 //Verifica se e String
                 case 'requiredString':
                     if (!is_string($obj->{$array}["campo"]) || strlen($obj->{$array}["campo"]) == 0) {
                         self::stackError($errors, $fieldName, $array['message']);
                     }
                     if (isset($array["minimo"]) && strlen($obj->{$array}['campo']) < $array['minimo']) {
                         self::stackError($errors, $fieldName, $array['message']);
                     }
                     // se foi informado o tamanho maximo
                     if (isset($array['maximo'])) {
                         // pega o campo
                         $field = $obj->_getField($fieldName);
                         // se o tamanho informado for maior que o comprimento
                         if (isset($field['length']) && $array['maximo'] > $field['length']) {
                             throw new Lumine_Exception('Tamanho invalido para o campo ' . $fieldName, Lumine_Exception::WARNING);
                         }
                         // alterado para se o usuario
                         // informou um tamanho minimo, mas nao o maximo,
                         // o maximo passa a ser o do campo
                     } else {
                         if (!isset($array['maximo']) && isset($array['minimo'])) {
                             $field = $obj->_getField($fieldName);
                             if (isset($field['length'])) {
                                 $array['maximo'] = $field['length'];
                             }
                         }
                     }
                     if (isset($array["maximo"]) && strlen($obj->{$array}['campo']) > $array['maximo']) {
                         self::stackError($errors, $fieldName, $array['message']);
                     }
                     break;
                     //Verifica se e Numero
                 //Verifica se e Numero
                 case 'requiredNumber':
                     if (!is_numeric($obj->{$array}["campo"])) {
                         self::stackError($errors, $fieldName, $array['message']);
                     } else {
                         if (is_numeric($obj->{$array}['campo'])) {
                             if (!is_null($array['minimo']) && $obj->{$array}['campo'] < $array['minimo']) {
                                 self::stackError($errors, $fieldName, $array['message']);
                             } else {
                                 if (!is_null($array['maximo']) && $obj->{$array}['campo'] > $array['maximo']) {
                                     self::stackError($errors, $fieldName, $array['message']);
                                 }
                             }
                         }
                     }
                     break;
                     //Verifica se Tamanho invalido
                 //Verifica se Tamanho invalido
                 case 'requiredLength':
                     if (isset($array["minimo"])) {
                         if (strlen($obj->{$array}["campo"]) < $array["minimo"]) {
                             self::stackError($errors, $fieldName, $array['message']);
                         }
                     }
                     if (isset($array["maximo"])) {
                         if (strlen($obj->{$array}["campo"]) > $array["maximo"]) {
                             self::stackError($errors, $fieldName, $array['message']);
                         }
                     }
                     break;
                     //Verifica se e email
                 //Verifica se e email
                 case 'requiredEmail':
                     //Lumine_Util::validateEmail( $val );
                     $res = Lumine_Util::validateEmail($obj->{$array}["campo"]);
                     if ($res === false) {
                         self::stackError($errors, $fieldName, $array['message']);
                     }
                     break;
                     //Verifica se e uma data
                 //Verifica se e uma data
                 case 'requiredDate':
                     $val = $obj->{$array}["campo"];
                     if (!preg_match('@^((\\d{2}\\/\\d{2}\\/\\d{4})|(\\d{4}-\\d{2}-\\d{2}))$@', $val, $reg)) {
                         self::stackError($errors, $fieldName, $array['message']);
                         // 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)) {
                                 self::stackError($errors, $fieldName, $array['message']);
                             }
                             // 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)) {
                                     self::stackError($errors, $fieldName, $array['message']);
                                 }
                             }
                         }
                     }
                     break;
                     //Verifica se e uma data/hora
                 //Verifica se e uma data/hora
                 case 'requiredDateTime':
                     $val = $obj->{$array}["campo"];
                     if (!preg_match('@^((\\d{2}\\/\\d{2}\\/\\d{4})|(\\d{4}-\\d{2}-\\d{2})) (\\d{2}:\\d{2}(:\\d{2})?)$@', $val, $reg)) {
                         self::stackError($errors, $fieldName, $array['message']);
                         // 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)) {
                                 self::stackError($errors, $fieldName, $array['message']);
                             }
                             // 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)) {
                                     self::stackError($errors, $fieldName, $array['message']);
                                 }
                             }
                         }
                     }
                     break;
                     //Verifica uniquidade
                     // - Alteracao por Hugo: Aqui fiz uma mudanca, porque
                     //   se fosse feita um update, daria erro. por isso, checamos as chaves primarias
                 //Verifica uniquidade
                 // - Alteracao por Hugo: Aqui fiz uma mudanca, porque
                 //   se fosse feita um update, daria erro. por isso, checamos as chaves primarias
                 case 'requiredUnique':
                     $reflection = new ReflectionClass($obj->_getName());
                     $objeto = $reflection->newInstance();
                     $objeto->{$fieldName} = $obj->{$fieldName};
                     $objeto->find();
                     $todas = true;
                     while ($objeto->fetch()) {
                         $pks = $objeto->_getPrimaryKeys();
                         foreach ($pks as $def) {
                             if ($objeto->{$def}['name'] != $obj->{$def}['name']) {
                                 $todas = false;
                                 self::stackError($errors, $fieldName, $array['message']);
                                 break;
                             }
                             if ($todas == false) {
                                 break;
                             }
                         }
                     }
                     unset($objeto, $reflection);
                     break;
                     //Verifica uma funcao
                 //Verifica uma funcao
                 case 'requiredFunction':
                     // se for um array
                     if (is_array($array['message'])) {
                         $result = call_user_func_array($array['message'], array($obj, $fieldName, $obj->{$fieldName}));
                         if ($result !== true) {
                             self::stackError($errors, $fieldName, $result);
                             break;
                         }
                     }
                     if (is_string($array['message'])) {
                         $function = new ReflectionFunction($array['message']);
                         $result = $function->invoke($obj, $fieldName, $obj->{$fieldName});
                         if ($result !== true) {
                             //$errors[] = $result;
                             self::stackError($errors, $fieldName, $result);
                         }
                         unset($function);
                     }
                     break;
                     //Verifica se e CPF
                 //Verifica se e CPF
                 case 'requiredCpf':
                     $res = ValidateCPF::execute($obj->{$array}["campo"]);
                     if ($res === false) {
                         self::stackError($errors, $fieldName, $array['message']);
                     }
                     break;
                     //Verifica se e CNPJ
                 //Verifica se e CNPJ
                 case 'requiredCnpj':
                     $res = ValidateCNPJ::execute($obj->{$array}["campo"]);
                     if ($res === false) {
                         self::stackError($errors, $fieldName, $array['message']);
                     }
                     break;
                 default:
                     return true;
                     break;
             }
         }
     }
     return $errors;
 }
Exemplo n.º 6
0
 /**
  * @see Lumine_Validator_AbstractValidator::execute()
  */
 public function execute(Lumine_Base $obj)
 {
     $value = $this->getFieldValue($obj);
     return Lumine_Util::validateEmail($value);
 }
Exemplo n.º 7
0
 /**
  * Efetua a validacao
  * 
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br/
  * @param Lumine_Base $obj Objeto a ser validado
  * @return array Array contendo os erros encontrados
  */
 public function doValidation()
 {
     // nao possui arquivo XML para validacao, sempre retorna true
     if (empty($this->xml)) {
         return true;
     }
     $xml = new DomDocument();
     $xml->validateOnParse = true;
     $xml->load($this->xml);
     $errors = libxml_get_errors();
     libxml_clear_errors();
     if (!empty($errors)) {
         Lumine_Log::error('A validacao de "' . $this->obj->_getName() . '" nao pode ser executada por erros na formacao do XML. Analise o retorno do metodo "validate" para ver os erros');
         foreach ($errors as $error) {
             $this->errors[] = trim($error->message);
         }
         return false;
     }
     // ok, o XML nao contem erros
     // vamos pegar os campos da validacao
     $xpath = new DOMXPath($xml);
     $DOMFieldList = $xpath->query('//lumine-validator/field');
     $errors = array();
     foreach ($DOMFieldList as $DOMField) {
         // verifica se o campo existe
         try {
             $field = $this->obj->_getField($DOMField->getAttribute('name'));
             $fieldname = $field['name'];
             // recupera a lista de validator para este campo
             $query = "//lumine-validator/field[@name='{$fieldname}']/validator";
             $DOMValidatorList = $xpath->query($query);
             // para cada validator
             foreach ($DOMValidatorList as $DOMvalidator) {
                 // se ja tiver validado o campo, houver outro validator
                 // e nao passou no anterior, passa para proximo campo
                 if (isset($errors[$fieldname]) && $errors[$fieldname] !== true) {
                     break;
                 }
                 // pega os valores dos atributos
                 $minlength = sprintf('%d', $DOMvalidator->getAttribute('minlength'));
                 $maxlength = sprintf('%d', $DOMvalidator->getAttribute('maxlength'));
                 $minvalue = $DOMvalidator->getAttribute('minvalue');
                 $maxvalue = $DOMvalidator->getAttribute('maxvalue');
                 $classname = $DOMvalidator->getAttribute('classname');
                 $msg = $DOMvalidator->getAttribute('msg');
                 $rule = $DOMvalidator->getAttribute('rule');
                 $method = $DOMvalidator->getAttribute('method');
                 $val = $this->obj->{$fieldname};
                 $res = false;
                 if (empty($classname)) {
                     $classname = $DOMvalidator->getAttribute('name');
                 }
                 if ($minvalue != '') {
                     $minvalue = (double) $minvalue;
                 } else {
                     $minvalue = null;
                 }
                 if ($maxvalue != '') {
                     $maxvalue = (double) $maxvalue;
                 } else {
                     $maxvalue = null;
                 }
                 // ve o tipo
                 switch ($DOMvalidator->getAttribute('type')) {
                     case 'requiredString':
                         $res = $this->validateRequiredString($val, $minlength, $maxlength);
                         break;
                     case 'requiredNumber':
                         $res = $this->validateRequiredNumber($val, $minvalue, $maxvalue);
                         break;
                     case 'requiredEmail':
                         $res = Lumine_Util::validateEmail($val);
                         break;
                         //Verifica se e uma data
                     //Verifica se e uma data
                     case 'requiredDate':
                         if (!preg_match('@^((\\d{2}\\/\\d{2}\\/\\d{4})|(\\d{4}-\\d{2}-\\d{2}))$@', $val, $reg)) {
                             $res = 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)) {
                                     $res = 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)) {
                                         $res = false;
                                     }
                                 } else {
                                     $res = true;
                                 }
                             }
                         }
                         break;
                         //Verifica se e CPF
                     //Verifica se e CPF
                     case 'requiredCpf':
                         $res = ValidateCPF::execute($val);
                         break;
                         //Verifica se e CNPJ
                     //Verifica se e CNPJ
                     case 'requiredCnpj':
                         $res = ValidateCNPJ::execute($val);
                         break;
                     case 'unique':
                         $res = $this->validateUnique($val, $fieldname);
                         break;
                     case 'class':
                         $res = $this->validateByClass($val, $fieldname, $classname, $method);
                         break;
                     case 'rule':
                         $res = $this->validateRule($val, $rule);
                         break;
                     default:
                         throw new Lumine_Validator_Exception('Tipo de validator desconhecido: ' . $DOMValidator->getAttribute('type'));
                 }
                 if ($res === false) {
                     $errors[$fieldname] = utf8_decode($msg);
                 } else {
                     $errors[$fieldname] = $res;
                 }
             }
         } catch (Exception $e) {
             Lumine_Log::warning($e->getMessage());
         }
     }
     // depois de todas as validacoes, vamos ver se deu erro em algum campo
     $tudo_ok = true;
     foreach ($errors as $chave => $erro) {
         if ($erro !== true) {
             $tudo_ok = false;
             $this->errors = $errors;
             break;
         }
     }
     // se realmente estiver tudo ok
     if ($tudo_ok === true) {
         return array();
     } else {
         return $this->errors;
     }
 }
Exemplo n.º 8
0
 public function CamelCase($name)
 {
     if ($this->getCamelCase() == false) {
         return $name;
     }
     return Lumine_Util::camelCase($name);
 }
Exemplo n.º 9
0
 /**
  * Retorna uma representacao XML do node
  * 
  * @author Hugo Ferreira da Silva
  * @param boolean $withChilds Indica se tambem deve incluir os nodes filhos
  * @return string
  */
 public function toXML($withChilds = true)
 {
     $result[0] = $this->toArray($withChilds);
     return Lumine_Util::array2xml($result);
 }
Exemplo n.º 10
0
 /**
  * faz a importacao automatica de classes (autoload)
  *
  * @see http://br2.php.net/manual/pt_BR/function.spl-autoload-register.php
  * @param string $clname
  */
 public static function autoload($clname)
 {
     $args = func_get_args();
     $cn = Lumine_ConnectionManager::getInstance();
     $list = $cn->getConfigurationList();
     foreach ($list as $cfg) {
         $sufix = $cfg->getOption('class_sufix');
         $pacote = $cfg->getProperty('package');
         $path = $cfg->getProperty('class_path');
         $ext = (empty($sufix) ? '' : '.' . $sufix) . '.php';
         if (!empty($pacote)) {
             $pacote .= '.';
         }
         $fullpath = str_replace('.', '/', $path . '/' . $pacote . $clname);
         $fullpath .= $ext;
         if (file_exists($fullpath)) {
             Lumine_Util::import($pacote . $clname);
             return;
         }
     }
 }
Exemplo n.º 11
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;
 }
Exemplo n.º 12
0
 /**
  * Retorna o nome de um membro no estilo CamelCase
  * @author Hugo Ferreira da Silva
  * @link http://www.hufersil.com.br/
  * @param string $name
  * @return string
  */
 private function CamelCase($name)
 {
     if ($this->getCamelCase() == true) {
         $name = Lumine_Util::camelCase($name);
     }
     if (isset($this->createdNames[$name])) {
         if (count($this->createdNames) > 1) {
             $name .= $this->createdNames[$name]++;
         }
     } else {
         $this->createdNames[$name] = 1;
     }
     return $name;
 }