public function getFieldKey() { for ($i = 0; $i < sizeof($this->arrCampos); $i++) { $nomeCampo = $this->arrCampos[$i]; $campo = $this->{$nomeCampo}; if (false) { $campo = new BDField(); } if ($campo->getChave()) { return $campo; } } return false; }
function geraClasse($sql, $cnx, $util) { $cr = "\r\n"; $ntab = "\t"; $bdf = new BDField(); ?> <textarea rows="30" cols="150" ><?php if (isset($_GET['ed_tabela'])) { $tabnome = $_GET['ed_tabela']; $crud = true; } else { $tabnome = 'sql'; $crud = false; } echo '<?php' . $cr; echo $cr; echo "class " . ucfirst($tabnome) . "Model extends Query { " . $cr; $rs = $cnx->runSQL($sql); $virgula = ''; $arrCampos = ''; for ($i = 0; $i < $cnx->fieldCount($rs); $i++) { $nome = $cnx->fieldName($rs, $i); echo $ntab . 'public $' . strtolower($nome) . ';' . $cr; $arrCampos .= $virgula . "'" . strtolower($nome) . "'"; $virgula = ','; } echo $ntab . 'public $arrCampos = array(' . $arrCampos . '); '; echo $cr; echo $ntab . 'function __construct ($cnx) { ' . $cr; echo $ntab . $ntab . 'parent::__construct($cnx);' . $cr; $updatecmd = "update " . $tabnome . ' set ' . $cr; $virgulaUpdate = ''; $virgulaSelect = ''; $selectcmd = "select " . $cr; $insertInto = "insert into " . $tabnome . '(' . $cr; $insertValue = ''; $whereCmd = "where "; $where = ''; for ($i = 0; $i < $cnx->fieldCount($rs); $i++) { $tipo = $cnx->fieldType($rs, $i); $nome = strtolower($cnx->fieldName($rs, $i)); $displayName = ucfirst($nome); $tabela = $cnx->fieldTable($rs, $i); $flags = explode(' ', $cnx->fieldFlags($rs, $i)); $tam = $cnx->fieldSize($rs, $i); $tipoField = $bdf->associaTipo($tipo, $nome, $tam); $requerido = 'false'; $chave = false; $readonly = false; if ($flags) { for ($j = 0; $j < sizeof($flags); $j++) { if ($flags[$j] == 'not_null') { $requerido = 'true'; } if ($flags[$j] == 'primary_key') { $chave = true; } if ($flags[$j] == 'auto_increment') { $chave = true; $readonly = true; } //echo $flags[$j].$cr; } } //print_r($flags); //echo $tabela.':'.$nome.':'.$tipo.$cr; echo $ntab . $ntab . '$this->' . $nome . ' = new BDField(' . "'{$tipoField}'" . "," . $requerido . ",'" . $nome . "'," . $tam . ');' . $cr; //'.$tipo.' - '.$tam.$cr; if ($chave) { echo $ntab . $ntab . '$this->' . $nome . '->setChave(true);' . $cr; $where .= $whereCmd . $nome . ' = :' . $nome . ":"; $whereCmd = 'and'; $selectcmd .= $ntab . $ntab . $ntab . $virgulaSelect . ' ' . $nome . $cr; $virgulaSelect = ','; } else { $updatecmd .= $ntab . $ntab . $ntab . $virgulaUpdate . ' ' . $nome . ' = :' . $nome . ":" . $cr; $insertValue .= $ntab . $ntab . $ntab . $virgulaUpdate . ' :' . $nome . ':' . $cr; /* if (($tipoField == 'int') || ($tipoField == 'float')) { $updatecmd .= $ntab.$ntab.$ntab.$virgulaUpdate.' '.$nome.' = :'.$nome.":".$cr; $insertValue .= $ntab.$ntab.$ntab.$virgulaUpdate.' :'.$nome.':'.$cr; } else { $updatecmd .= $ntab.$ntab.$ntab.$virgulaUpdate.' '.$nome.' = \':'.$nome.":'".$cr; $insertValue .= $ntab.$ntab.$ntab.$virgulaUpdate.' \':'.$nome.':\''.$cr; } * */ $selectcmd .= $ntab . $ntab . $ntab . $virgulaSelect . ' ' . $nome . $cr; $insertInto .= $ntab . $ntab . $ntab . $virgulaUpdate . ' ' . $nome . $cr; $virgulaUpdate = ','; $virgulaSelect = ','; } if ($readonly) { echo $ntab . $ntab . '$this->' . $nome . '->setReadOnly(true);' . $cr; } echo $ntab . $ntab . '$this->' . $nome . '->setDisplayName(\'' . $displayName . '\');' . $cr; echo $ntab . $ntab . '$this->' . $nome . '->setDescription(\'' . $displayName . '\');' . $cr; $sqlDefault = "SHOW FULL COLUMNS FROM " . $tabnome . " where field = '" . $nome . "'"; $vDefault = mysql_fetch_array($cnx->runSQL($sqlDefault)); if (strlen($vDefault['Default']) > 0) { echo $ntab . $ntab . '$this->' . $nome . '->setDefaultValue(\'' . $vDefault['Default'] . '\');' . $cr; echo $ntab . $ntab . '$this->' . $nome . '->setValue(\'' . $vDefault['Default'] . '\');' . $cr; } echo $cr; } $updatecmd .= $ntab . $ntab . $where; $selectcmd .= $ntab . $ntab . 'from ' . $tabnome . $cr; $selectcmd .= $ntab . $ntab; $insertcmd = $insertInto . $ntab . $ntab . ') values (' . $cr . $insertValue . $ntab . $ntab . ')'; $deletecmd = "delete from " . $tabnome . ' ' . $where; if ($crud) { echo $ntab . $ntab . '$this->sqlUpdate = "' . $updatecmd . '";' . $cr; echo $ntab . $ntab . '$this->sqlSelect = "' . $selectcmd . '";' . $cr; echo $ntab . $ntab . '$this->sqlInsert = "' . $insertcmd . '";' . $cr; echo $ntab . $ntab . '$this->sqlDelete = "' . $deletecmd . '";' . $cr; } echo $ntab . $ntab . '//$this->outrasDefinicoes();' . $cr; //echo $ntab.$ntab.'$this->setSQLs();'.$cr; echo $ntab . "}" . $cr; if (!$crud) { echo $cr . $cr . $cr; echo $ntab . '//Função executa a busca e associa o retorno ao obj.' . $cr; echo $ntab . 'function buscaPersonalizada($p) {' . $cr; $sql = str_ireplace("\n", "\n" . $ntab . $ntab . $ntab, $sql); echo $ntab . $ntab . '$sql = "' . $sql . '";' . $cr; echo $ntab . $ntab . 'return $this->buscaSQL($sql);' . $cr; echo $ntab . '}' . $cr; } echo "}" . $cr . $cr; echo '?>' . $cr; ?> </textarea><?php }