require_once('../include/orm.php');
require_once('../include/globals.php');
require_once('../include/util.php');
$_install_checkdb_db_connected = $Link == '';
if($_install_checkdb_db_connected) $Link = connectDb();
define('DBCONNECTED', 1);
debugstartpage();
if( isset($_x) ) {
//if( $_x != '' ) {
$_x = $_x == '' ? array() : StringTokenize($_x, ",");
$_result = array();
$_result['version'] = array('actual' => 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("$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("");
foreach($dbs as $_i => $db) {
print("$db ");
}
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();
}
?>
if( !isset($_x) ) {
?>
if( isset($_export) ) { ?>
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=checkdb.xls");
//echo('');
//echo('');
echo(' ');
?> } else { ?>
if( !isset($_popup) ) { ?>
} ?>
class="popup" } ?>
>
} ?>
if( !isset($_export) ) { ?>
} ?>