90); $_result['visibility'] = array(); $_initialvars = arrayExclude(get_defined_vars(), array("_*", "form_*", "s_*", "GLOBALS", "Link", "thisname")); } // isbasewindow: // On Open while( ($__action == "" or $__action == "executedonopen") and (empty($_x) or in('onopen', $_x)) ) { $__action = "executedonopen"; global $Linkdd; if( isset($cfg) ) { $serverconfig = "../install/$cfg"; $folders = array(); $files = ""; if( file_exists($serverconfig) ) { $modules = readProperty($serverconfig, "modules", ""); $dbname = readProperty($serverconfig, "dbname", ""); $dbuser = readProperty($serverconfig, "dbuser", ""); $dbpassword = readProperty($serverconfig, "dbpassword", ""); $baseurl = readProperty($serverconfig, "baseurl", ""); $folders = stringToArray($modules); $Link2 = mysql_connect($host, MYSQL_USER, MYSQL_PASS, true) or die ("ERROR connecting $host : ". mysql_error() ); $dds = sqltovector($Linkdd, "select concat(module, '/', window, '.', name) as form from appflexa.ddform where module in ('" . str_replace(",", "','", $modules) . "') order by created desc"); // and UNIX_TIMESTAMP(created) > $lasttime mysql_select_db($dbname, $Link2); $db = $dbname; } else { $host = MYSQL_HOST; $Link2 = mysql_connect($host, MYSQL_USER, MYSQL_PASS, true) or die ("ERROR connecting $host : ". mysql_error() ); mysql_select_db($cfg, $Link2); //print("

$db

"); $dds = sqltovector($Linkdd, "select concat(module, '/', window, '.', name) as form from appflexa.ddform order by created desc limit 100"); // and UNIX_TIMESTAMP(created) > $lasttime $db = $cfg; //die("No config file found $cfg"); } print(""); print("

Form

"); //print_r($dds); $asqls = checkdbstructure($dds, $Linkdd, $Link2); $sqls[$db] = $asqls; mysql_close($Link2); } else if( 1 == 0 ) { $dbs = array(); $sqls = array(); $servers = array(); $__tempresult = sqlexec($Link, "select distinct dbs.nombre, servers.url from appflexa.dbs cross join appflexa.servers on appflexa.dbs.server = servers.id where '" . mysql_escape($database) . "' = '' or '" . mysql_escape($database) . "' = appflexa.dbs.nombre"); while( $__temprow = mysql_fetch_array($__tempresult)) { array_push($dbs, $__temprow[0]); array_push($servers, $__temprow[1]); } //print_r($dbs); print(""); $dds = sqltovector($Linkdd, "select concat(module, '/', window, '.', name) as form from appflexa.ddform order by created desc limit 100"); // and UNIX_TIMESTAMP(created) > $lasttime //print('checking forms ' . arrayToString($dds)); //print("...
"); foreach($dbs as $_i => $db) { //print("

$db

"); //print_r($dds); $host = MYSQL_HOST; $host = $servers[$_i]; $Link2 = mysql_connect($host, MYSQL_USER, MYSQL_PASS, true) or die ("ERROR connecting $host : ". mysql_error() ); mysql_select_db($db, $Link2); //print("

$db

"); $asqls = checkdbstructure($dds, $Linkdd, $Link2); $sqls[$db] = $asqls; /** foreach($asqls as $tsql) { print("
"); print($tsql); print("
"); } **/ //print(arrayToString($asqls, "
")); mysql_close($Link2); } } // Si puso header location para ir a otra pagina cierra el script if( !isset($_x) and $__exiting ) { disconnectDb($Link); exit(0); } break; } // PHP Vars while( ($__action == "" or $__action == "executedonopen") and isset($_GET['_x']) and empty($_x) ) { $__row0 = array(); $__row0['__barrainferior__1'] = (1 == 0) ? 'display: inline !important;' : 'display: none !important;' ; $__row0['__cfg__1'] = $cfg ; $_result['morevars'] = $__row0; break; } if( has($_x, 'pdf') or has($_x, 'pdfprint') or has($_x, 'pdfprint2') ) { require_once('../include/fpdfreport.php'); $_pdf = new PDF((isset($_orientation) ? $_orientation : 'P'),'pt', (isset($_size) ? $_size : 'A4' )); $_pdf->initialPage = ($_page != '' ? $_page : 1); //$_pdf->SetAutoPageBreak(true); $_pdf->title = ""; $_pdf->SetTopMargin(50); $_pdf->AliasNbPages(); $_pdf->AddPage(); } function checkdbstructure($forms, $Link, $Link2) { $sqls = array(); $coladds = array(); $colmodifs = array(); $formstext = arrayToString($forms, "','"); $windowstext = arrayToString($windows, "','"); $dds = sqltoarray($Link, "select concat(module, '.', name) as form, dbtable, module, name, window from ddform where concat(module, '/', window, '.', name) in ('$formstext')"); //print("select concat(module, '.', name) as form, dbtable, module, name, window from ddform where concat(module, '/', window, '.', name) in ('$formstext')"); //print("[checkdbstructure] formstext: " . $formstext); //$dds = sqltoarray($Link, "select concat(module, '.', name) as form, dbtable, module, name, window from ddform where concat(module, '.', window) in ('$windowstext')"); //print("CHECKING "); //print_r($dds); foreach($dds as $dd) { $sql = ""; $dbtable = $dd['dbtable']; if( $dbtable == "" ) continue; $ddform = $dd['name']; $ddwindow = $dd['window']; $ddmodule = $dd['module']; //$sql = "# " . $ddmodule . "/" . $ddwindow . "." . $ddform . "\r\n"; //print("

$ddmodule.$ddform [$ddwindow] table $dbtable

"); $ddcols = sqltoarray($Link, "select if(ifnull(dbcol,'')='', name, dbcol) as dbcol, type, size, decimals, numero from ddfield where concat(window, '/', module, '.', form) = '" . $ddwindow . "/" . $dd['form'] . "' and (props is null or props not like '%transient%' or props = '') union all select concat(if(ifnull(dbcol,'')='', name, dbcol), '_display') as dbcol, 'textarea' as type, size, decimals, numero from ddfield where concat(window, '/', module, '.', form) = '" . $ddwindow . "/" . $dd['form'] . "' and (props is null or props not like '%transient%' or props = '') and type = 'combo' and relation is not null and relation != '' and size != '-1' order by 5"); //print("

CHECKING $ddmodule / $ddwindow $ddform

"); if( strpos($dd['name'], '.') !== false ) { $ddcols[] = array('dbcol' => $dbcolrel = sqlget($Link, "select if(ifnull(dbcol, '')='', form, dbcol) from ddfield where window = '" . $ddwindow . "' and module = '" . $ddmodule . "' and concat(form, '.', name) = '" . $dd['name'] . "'"), 'type' => 'combo', 'size' => (sqlget($Link, "select if(ifnull(dbcol, '')='', form, dbcol) from ddfield where window = '" . $ddwindow . "' and module = '" . $ddmodule . "' and concat(form, '.', name) = '" . $dd['name'] . "'") == 'emprendimiento' ? '10' : '0'), 'decimals' => '0'); } //print(arrayToHtmlTable($ddcols)); $val = mysql_query("select 1 from $dbtable LIMIT 1", $Link2); //print("$dbtable val $val
"); if( $val !== false ) { $dbcols = sqltoarray($Link2, "show columns from " . $dbtable); //print(" exists " . sizeof($dbcols) . " cols"); $sqlc = "alter"; } else { //print(" inexistent!"); $dbcols = array(); $sqlc = "create"; } $hasid = false; //print("
$sqlc
"); //print(arrayToHtmlTable($dbcols)); //print("

" . $dd['form'] . " table " . $dbtable . "

"); //debug("DBCols: "); //debug($dbcols); /** $ddcols2 = array(); foreach($ddcols as $i0 => $ddcol) { $ddname = $ddcol['dbcol']; $ddcoltype = $ddcol['type']; $ddrelation = $ddcol['relation']; $ddsize = $ddcol['size']; print(" ddname $ddname coltype $ddcoltype relation $ddrelation size $ddsize
"); if( $ddrelation == '' ) continue; if( $ddsize == '-1' ) continue; switch($ddcoltype) { case 'combo': case 'simple': case 'autocomplete': $ddcols2[] = array('type' => 'textarea', 'type' => 'simple', 'size' => 'normal', 'name' => $ddname . '_display' ); break; } } $ddcols = array_merge($ddcols, $ddcols2); print("DDCOLS2: "); print_r($ddcols2); **/ foreach($ddcols as $i0 => $ddcol) { //print('col ' . $ddcol['name']); $ddcoltype = $ddcol['type']; $ddsize = $ddcol['size']; $dddecimals = $ddcol['decimals']; if( $ddcoltype == 'table' or $ddcoltype == 'simple' ) continue; $ddcoldb = trim($ddcol['dbcol']); //debug("[checkdbstructure] " . $ddcol['name'] . " $ddcoltype size $ddsize decimals $dddecimals coldb $ddcoldb"); if( trim($ddcoldb) == '' ) continue; // Search dbcol $found = false; if( $sqlc == "alter" ) { foreach($dbcols as $dbcol) { if( strtolower($dbcol['Field']) == strtolower($ddcoldb) ) { $dbtype = $dbcol['Type']; $dbcolname = $dbcol['Field']; $found = true; break; } } } if( !$found ) { $dbtype = ""; $dbcolname = ""; //print($ddcoldb . " not found
"); } //debug("Col $ddcoldb . DB col: $dbcolname $dbtype"); $ddcols[$i0]['dbtype'] = $dbtype; switch($ddcoltype) { case 'combo': case 'simple': case 'autocomplete': $dbtype2 = "int(11)"; switch($ddsize) { case '-1': $dbtype2 = "text"; break; case '': case '0': break; case 'date': $dbtype2 = "date"; default: if( is_numeric($ddsize) ) $dbtype2 = "varchar($ddsize)"; else $dbtype2 = $ddsize; } //debug("combo $dbtype2"); break; case 'decimal': $dbtype2 = "decimal(15,6)"; if( $ddsize != '' and $ddsize != 0 ) $dbtype2 = "decimal($ddsize, $dddecimals)"; break; case 'money': $dbtype2 = "decimal(11,2)"; if( $ddsize != '' and $ddsize != 0 ) $dbtype2 = "decimal($ddsize, $dddecimals)"; break; case 'radiobutton': case 'radiobuttons': $dbtype2 = "varchar(200)"; if( $ddsize != '' and $ddsize != 0 ) $dbtype2 = "varchar($ddsize)"; break; case 'password': $dbtype2 = "varchar(200)"; if( $ddsize != '' and $ddsize != 0 ) $dbtype2 = "varchar($ddsize)"; break; case 'text': case 'tel': case 'email': case 'file': case 'image': $dbtype2 = "varchar(200)"; if( $ddsize != '' ) { if( $ddsize == -1 ) $dbtype2 = "text"; else if( $ddsize != 0 ) $dbtype2 = "varchar($ddsize)"; } break; break; case 'checkbox': $dbtype2 = $ddsize == 1 ? "char(1)" : "text"; break; case 'date': $dbtype2 = "date"; break; case 'datetime': $dbtype2 = "datetime"; break; case 'time': $dbtype2 = "time"; break; case 'timestamp': $dbtype2 = "timestamp"; break; case 'integer': $dbtype2 = "int(11)"; if( $ddsize != '' and $ddsize != 0 ) $dbtype2 = "int($ddsize)"; break; case 'textarea': case 'richtext': case 'gallery': $dbtype2 = "text"; if( $ddsize != '' and $ddsize != 0 ) { switch($ddsize) { case 1: $dbtype2 = "text"; break; case 2: $dbtype2 = "mediumtext"; break; case 3: $dbtype2 = "longtext"; break; } } break; } if( $dbtype == "" and searchInArray($dbtable . "." . $ddcoldb, $coladds) == -1 ) { //debug("Add $dbtable . $ddcoldb"); //debug(print_r($coladds, true)); // Columna nueva if( $sql != "" ) $sql .= ", "; $sql .= ($sqlc == 'alter' ? "
add " : "") . " $ddcoldb $dbtype2"; if( $ddcoldb == 'id' ) $hasid = true; $coladds[] = $dbtable . "." . $ddcoldb; } else if( $dbcolname != "" ) { // Columna existente if( startsWith($dbtype, 'char') and $dbtype != 'char(1)' ) $dbtype = "var" . $dbtype; if( trim(strtolower($dbtype)) == 'timestamp' and trim(strtolower($dbtype2)) != 'timestamp' ) $dbtype = 'datetime'; if( $dbtype == 'double' ) $dbtype = 'decimal(15,6)'; if( $dbtype2 == 'double' ) $dbtype2 = 'decimal(15,6)'; if( trim(strtolower($dbtype)) == 'bigint(20) unsigned' ) $dbtype = 'int(11)'; if( trim(strtolower($dbtype)) == 'bigint(20)' ) $dbtype = 'int(11)'; if( startsWith($dbtype, 'enum') ) $dbtype = 'varchar(200)'; $dbtype = str_replace(' ', '', $dbtype); $dbtype2 = str_replace(' ', '', $dbtype2); if( $dbtype != $dbtype2 and searchInArray($dbtable . "." . $ddcoldb, $colmodifs) == -1 ) { if( $dbtype == 'varchar(1)' ) $dbtype = 'char(1)'; if( $dbtype2 == 'varchar(1)' ) $dbtype2 = 'char(1)'; if( strpos($dbtype, '(') === false or substr($dbtype, 0, strpos($dbtype, '(')) != substr($dbtype2, 0, strpos($dbtype2, '(')) ) { if( $sql != "" ) $sql .= ", "; $sql .= "
modify $dbcolname from $dbtype to $dbtype2"; //$sql .= "modify $dbcolname $dbtype2"; $colmodifs[] = $dbtable . "." . $ddcoldb; } } } } if( $sql != "" ) { if( $sqlc == "alter" ) { $sql = "alter table " . $dbtable . " " . $sql . ";
"; } else { $sql = "create table " . $dbtable . "( " . (!$hasid ? " id int not null primary key auto_increment, " : "" ) . $sql . ");
"; } $sql = "# Window $ddmodule/$ddwindow:
" . $sql; $sqls[] = $sql; } //print(arrayToHtmlTable($ddcols)); //print(arrayToHtmlTable($dbcols)); } //print(" SQLS: " . arrayToString($sqls, ";")); return $sqls; } while( has($_x,'btncontinuar') ) { /** CODIGO ORIGINAL ONCLICK $onclick **/ redirect("?cfg=$cfg"); // Si puso header location para ir a otra pagina cierra el script if( !isset($_x) and $__exiting ) { disconnectDb($Link); exit(0); } break; } if( isset($_GET['_x']) and empty($_x) ) { $_result['visibility']['barrainferior'] = (1 == 0); } if( has($_x, 'pdf') or has($_x, 'pdfprint') or has($_x, 'pdfprint2') ) { $_pdf->Output(); } ?> '); //echo(''); echo(''); ?> class="popup" >
$asqls) { print("

$db"); $url = sqlget($Link, "select url from servers where id = (select server from dbs where nombre = '$db')"); if( isset($ejecutar) ) { print("Volver"); print("

Ejecutando SQLs...
"); $host = MYSQL_HOST; $host = $url; $Link2 = mysql_connect($host, MYSQL_USER, MYSQL_PASS, true) or die ("ERROR: " . mysql_error() ); mysql_select_db($db, $Link2); foreach($asqls as $tsql) { $sql = $tsql; $sql = preg_replace('/]*>([\s\S]*?)<\/span[^>]*>/', '', $sql); $sql = strip_tags($sql); $Query = $sql; print($Query); print("
"); $Result = mysql_query($Query, $Link2); if( $Result == false ) { print("ERROR en SQL $Query : " . mysql_error($Link2)); } } mysql_close($Link2); } else { if( !empty($asqls) ) print("Ejecutar SQLs $db"); print(""); foreach($asqls as $tsql) { print("
"); print($tsql); print("
"); } }}?>