[Alba-desarrollo] SVN Alba r5735 - in prosistem/alba/trunk/alba:
data/sql web/instalar
commits en pressenter.com.ar
commits en pressenter.com.ar
Vie Jul 11 05:30:09 CEST 2008
Author: josx
Date: 2008-07-11 00:30:09 -0300 (Fri, 11 Jul 2008)
New Revision: 5735
Added:
prosistem/alba/trunk/alba/data/sql/datos_desde_cero_update_seq.sql
prosistem/alba/trunk/alba/data/sql/datos_ejemplo_update_seq.sql
Modified:
prosistem/alba/trunk/alba/web/instalar/funciones.php
prosistem/alba/trunk/alba/web/instalar/paso3.php
prosistem/alba/trunk/alba/web/instalar/paso6.php
Log:
Migrando instalador a PDO (a partir de esta version se necesita php 5.1 como minimo). Se arregla el soporte para postgresql pudiendose usar los sequence.
Added: prosistem/alba/trunk/alba/data/sql/datos_desde_cero_update_seq.sql
===================================================================
--- prosistem/alba/trunk/alba/data/sql/datos_desde_cero_update_seq.sql (rev 0)
+++ prosistem/alba/trunk/alba/data/sql/datos_desde_cero_update_seq.sql 2008-07-11 03:30:09 UTC (rev 5735)
@@ -0,0 +1,16 @@
+ALTER SEQUENCE tipodocumento_seq RESTART WITH 8;
+ALTER SEQUENCE tipoiva_seq RESTART WITH 5;
+ALTER SEQUENCE niveltipo_seq RESTART WITH 8;
+ALTER SEQUENCE pais_seq RESTART WITH 2;
+ALTER SEQUENCE provincia_seq RESTART WITH 28;
+ALTER SEQUENCE calendariovacunacion_seq RESTART WITH 27;
+ALTER SEQUENCE distritoescolar_seq RESTART WITH 2;
+ALTER SEQUENCE organizacion_seq RESTART WITH 2;
+ALTER SEQUENCE establecimiento_seq RESTART WITH 2;
+ALTER SEQUENCE usuario_seq RESTART WITH 2;
+ALTER SEQUENCE modulo_seq RESTART WITH 51;
+ALTER SEQUENCE permiso_seq RESTART WITH 63;
+ALTER SEQUENCE rel_usuario_permiso_seq RESTART WITH 57;
+ALTER SEQUENCE tipoinforme_seq RESTART WITH 3;
+ALTER SEQUENCE adjunto_seq RESTART WITH 11;
+ALTER SEQUENCE informe_seq RESTART WITH 11;
Property changes on: prosistem/alba/trunk/alba/data/sql/datos_desde_cero_update_seq.sql
___________________________________________________________________
Name: svn:executable
+ *
Added: prosistem/alba/trunk/alba/data/sql/datos_ejemplo_update_seq.sql
===================================================================
--- prosistem/alba/trunk/alba/data/sql/datos_ejemplo_update_seq.sql (rev 0)
+++ prosistem/alba/trunk/alba/data/sql/datos_ejemplo_update_seq.sql 2008-07-11 03:30:09 UTC (rev 5735)
@@ -0,0 +1,61 @@
+ALTER SEQUENCE conceptobaja_seq RESTART WITH 5;
+ALTER SEQUENCE tipodocumento_seq RESTART WITH 4;
+ALTER SEQUENCE tipoiva_seq RESTART WITH 5;
+ALTER SEQUENCE niveltipo_seq RESTART WITH 8;
+ALTER SEQUENCE pais_seq RESTART WITH 10;
+ALTER SEQUENCE tipoespacio_seq RESTART WITH 5;
+ALTER SEQUENCE tipolocacion_seq RESTART WITH 3;
+ALTER SEQUENCE locacion_seq RESTART WITH 3;
+ALTER SEQUENCE provincia_seq RESTART WITH 28;
+ALTER SEQUENCE calendariovacunacion_seq RESTART WITH 27;
+ALTER SEQUENCE distritoescolar_seq RESTART WITH 14;
+ALTER SEQUENCE organizacion_seq RESTART WITH 2;
+ALTER SEQUENCE establecimiento_seq RESTART WITH 2;
+ALTER SEQUENCE usuario_seq RESTART WITH 5;
+ALTER SEQUENCE modulo_seq RESTART WITH 51;
+ALTER SEQUENCE permiso_seq RESTART WITH 63;
+ALTER SEQUENCE rel_usuario_permiso_seq RESTART WITH 57;
+ALTER SEQUENCE tipoinforme_seq RESTART WITH 3;
+ALTER SEQUENCE adjunto_seq RESTART WITH 11;
+ALTER SEQUENCE informe_seq RESTART WITH 11;
+ALTER SEQUENCE espacio_seq RESTART WITH 12;
+ALTER SEQUENCE preferencia_seq RESTART WITH 2;
+ALTER SEQUENCE rol_seq RESTART WITH 3;
+ALTER SEQUENCE rel_establecimiento_locacion_seq RESTART WITH 3;
+ALTER SEQUENCE rel_rol_permiso_seq RESTART WITH 50;
+ALTER SEQUENCE rel_usuario_permiso_seq RESTART WITH 218;
+ALTER SEQUENCE cuenta_seq RESTART WITH 42;
+ALTER SEQUENCE alumno_seq RESTART WITH 64;
+ALTER SEQUENCE rol_responsable_seq RESTART WITH 4;
+ALTER SEQUENCE responsable_seq RESTART WITH 38;
+ALTER SEQUENCE ciclolectivo_seq RESTART WITH 2;
+ALTER SEQUENCE turno_seq RESTART WITH 7;
+ALTER SEQUENCE periodo_seq RESTART WITH 6;
+ALTER SEQUENCE tipodocente_seq RESTART WITH 5;
+ALTER SEQUENCE cargobaja_seq RESTART WITH 5;
+ALTER SEQUENCE calendariovacunacion_seq RESTART WITH 27;
+ALTER SEQUENCE rel_calendariovacunacion_a_seq_1 RESTART WITH 5;
+ALTER SEQUENCE legajocategoria_seq RESTART WITH 4;
+ALTER SEQUENCE legajopedagogico_seq RESTART WITH 3;
+ALTER SEQUENCE adjunto_seq RESTART WITH 11;
+ALTER SEQUENCE tipoasistencia_seq RESTART WITH 6;
+ALTER SEQUENCE asistencia_seq RESTART WITH 2220;
+ALTER SEQUENCE concepto_seq RESTART WITH 7;
+ALTER SEQUENCE escalanota_seq RESTART WITH 43;
+ALTER SEQUENCE boletin_conceptual_seq RESTART WITH 1141;
+ALTER SEQUENCE actividad_seq RESTART WITH 17;
+ALTER SEQUENCE boletin_actividades_seq RESTART WITH 428;
+ALTER SEQUENCE anio_seq RESTART WITH 8;
+ALTER SEQUENCE division_seq RESTART WITH 22;
+ALTER SEQUENCE repeticion_seq RESTART WITH 5;
+ALTER SEQUENCE rel_anio_actividad_seq RESTART WITH 22;
+ALTER SEQUENCE rel_alumno_division_seq RESTART WITH 80;
+ALTER SEQUENCE docente_seq RESTART WITH 21;
+ALTER SEQUENCE horarioescolartipo_seq RESTART WITH 4;
+ALTER SEQUENCE evento_seq RESTART WITH 33;
+ALTER SEQUENCE rel_division_actividad_doc_seq_2 RESTART WITH 9;
+ALTER SEQUENCE rel_docente_establecimiento_seq RESTART WITH 21;
+ALTER SEQUENCE feriado_seq RESTART WITH 13;
+ALTER SEQUENCE horarioescolar_seq RESTART WITH 19;
+ALTER SEQUENCE tipoinforme_seq RESTART WITH 3;
+ALTER SEQUENCE informe_seq RESTART WITH 11;
Property changes on: prosistem/alba/trunk/alba/data/sql/datos_ejemplo_update_seq.sql
___________________________________________________________________
Name: svn:executable
+ *
Modified: prosistem/alba/trunk/alba/web/instalar/funciones.php
===================================================================
--- prosistem/alba/trunk/alba/web/instalar/funciones.php 2008-07-11 02:44:34 UTC (rev 5734)
+++ prosistem/alba/trunk/alba/web/instalar/funciones.php 2008-07-11 03:30:09 UTC (rev 5735)
@@ -78,78 +78,56 @@
$aSql = dump2Array($file);
$error = false;
if(count($aSql) > 0 && file_exists($file)) {
+ if($protocol == 'mysql' OR $protocol == 'pgsql') {
+ $dsn = "$protocol:host=$host;dbname=$db"; // necesito saber como hacer conexion utf8
- // otro pedazo de codigo para cambiarlo por PDO
-
-
- if($protocol == 'mysql') {
- if (mysql_connect($host,$user,$pass)) {
- mysql_set_charset('utf8');
- if(mysql_select_db($db)) {
- DebugLog("executeDump(): ejecutando BEGIN" );
- mysql_query("BEGIN");
- foreach($aSql as $sql_line) {
- $res = mysql_query(trim($sql_line));
- if(!$res) {
- DebugLog("executeDump(): Fallo SQL: $sql_line");
- DebugLog("executeDump(): error:". mysql_error());
- $error = true;
- }
- }
- if($error == true) {
- DebugLog("executeDump(): Se encontraron errores ejecutando ROLLBACK y saliendo");
- mysql_query("ROLLBACK");
- return false;
- } else {
- DebugLog("executeDump(): Sin errores ejecutando COMMIT y saliendo");
- mysql_query("COMMIT");
- return true;
- }
- }
- else {
- DebugLog("executeDump(): Error al seleccionar la base: $db");
- return false;
- }
+ try {
+ $dbh = new PDO($dsn, $user, $pass);
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
- else {
- DebugLog("excuteDump(): No se puede conectar ala base de datos. " . mysql_error());
+ catch (PDOException $e) {
+ DebugLog("excuteDump(): No se puede conectar ala base de datos. " . $e->getMessage());
+ return false;
}
- }
-
- if($protocol == 'pgsql') {
- $conn = @pg_connect("host=$host user=$user password=$pass dbname=$db");
- if ($conn) {
+ try {
DebugLog("executeDump(): ejecutando BEGIN" );
- pg_query("BEGIN");
- DebugLog("executeDump(): ejecutando SET CONSTRAINTS ALL DEFERRED" );
- pg_query("SET CONSTRAINTS ALL DEFERRED");
+ $dbh->beginTransaction();
+
+ if($protocol == 'pgsql') {
+ DebugLog("executeDump(): ejecutando SET CONSTRAINTS ALL DEFERRED" );
+ $dbh->exec("SET CONSTRAINTS ALL DEFERRED");
+ }
+
foreach($aSql as $sql_line) {
- $res = pg_query(trim($sql_line));
- if(!$res) {
- DebugLog("executeDump(): Fallo SQL: $sql_line");
- DebugLog("executeDump(): error:". pg_last_error($conn));
- $error = true;
+ // esto es lamentable: saco los drop que genera el propel
+// if($protocol == 'pgsql' AND ( strstr($sql_line,'DROP') !== false)) {
+ // continue;
+ if($protocol == 'pgsql') {
+ $sql_line = str_replace('DROP TABLE', 'DROP TABLE IF EXISTS', $sql_line);
+ $sql_line = str_replace('DROP SEQUENCE', 'DROP SEQUENCE IF EXISTS', $sql_line);
}
+ $dbh->exec(trim($sql_line));
}
- if($error == true) {
- DebugLog("executeDump(): Se encontraron errores ejecutando ROLLBACK y saliendo");
- pg_query("ROLLBACK");
- return false;
- } else {
- DebugLog("executeDump(): Sin errores ejecutando COMMIT y saliendo");
- pg_query("COMMIT");
- return true;
- }
+
+ DebugLog("executeDump(): Sin errores ejecutando COMMIT y saliendo");
+ $dbh->commit();
}
- else {
- DebugLog("excuteDump(): No se puede conectar ala base de datos. " . mysql_error());
+ catch (PDOException $e) {
+ DebugLog("executeDump(): Error en". $e->getMessage());
+ DebugLog("executeDump(): Se encontraron errores ejecutando ROLLBACK y saliendo");
+ $dbh->rollBack();
+ return false;
}
- }
+ return true;
+ } else {
+ DebugLog("executeDump(): El protocolo no es ni mysql ni pgsql");
+ return false;
+ }
} else {
- DebugLog("executeDump(): No hay instrucciones SQL en el archivo");
+ DebugLog("executeDump(): No hay instrucciones SQL en el archivo");
return false;
}
@@ -300,7 +278,7 @@
return extension_loaded('mysql');
}
function check_memorylimit() {
- DebugLog("Comprobando limite de moeria de php");
+ DebugLog("Comprobando limite de memoria de php");
$limite = ini_get('memory_limit');
return ($limite >= 32);
}
@@ -400,4 +378,4 @@
-?>
\ No newline at end of file
+?>
Modified: prosistem/alba/trunk/alba/web/instalar/paso3.php
===================================================================
--- prosistem/alba/trunk/alba/web/instalar/paso3.php 2008-07-11 02:44:34 UTC (rev 5734)
+++ prosistem/alba/trunk/alba/web/instalar/paso3.php 2008-07-11 03:30:09 UTC (rev 5735)
@@ -50,100 +50,59 @@
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
- $db = $_POST['db'];
+ $db = $_POST['db'];
$creardb = (isset($_POST['creardb']) && $_POST['creardb'] == 1);
//probado conexion
DebugLog('Probando conexión');
- //Todo este codigo podria ser mejorado integrando PDO (a partir de PHP 5.1)
- //ya que no habria que repetir codigo
-
- //comprueba si completo opcion de motor de base de datos
- if($tipo_motor_base != 'mysql' AND $tipo_motor_base != 'pgsql') {
+ // Compruebo si estan los datos minimos completos
+ if($host == '' OR $user == '' OR $db == '' OR ($tipo_motor_base != 'mysql' AND $tipo_motor_base != 'pgsql')) {
$error_flag = true;
$cnx_error_flag = true;
- $cnx_error_msg = "No se sabe cual es el motor de bases de datos <br>";
+ $cnx_error_msg = "Debe completar al menos los campos Motor de bases de datos, Servidor, usuario y base de datos <br>";
DebugLog('Error al conectar con la base de datos','E');
} else {
- if($tipo_motor_base == 'mysql') {
- $conn = @mysql_connect($host,$user,$pass);
- if (!$conn) {
- $error_flag = true;
- $cnx_error_flag = true;
- $cnx_error_msg = "No se puede conectar a la base de datos: <br>" . mysql_error();
- DebugLog('Error al conectar con la base de datos','E');
- } else {
- //crear base si es necesario
- if ($creardb) {
- DebugLog('Probando crear base de datos...');
- $ret = @mysql_query('CREATE DATABASE ' . $db , $conn);
- if (!$ret) {
- $error_flag = true;
- $cnx_error_flag = true;
- $cnx_error_msg = "No se puede crear la base de datos: <br>" . mysql_error();
- DebugLog('No se puede crear la base de datos: ' . mysql_error() ,'E');
- } else {
- DebugLog("Base de datos $db creada correctamente");
- }
- } else {
- DebugLog("No se creara una base de datos");
- }
-
- //conectado a la base
- $ret = @mysql_select_db($db);
- if (!$ret) {
- $error_flag = true;
- $cnx_error_flag = true;
- $cnx_error_msg = "No es posible utilizar la base $db: " . mysql_error();
- DebugLog("No es posible conectar a la base de datos $db: " . mysql_error(), 'E');
- }
- mysql_close($conn);
- }
-
+ $dsn = ":host=$host";
+ switch($tipo_motor_base) {
+ case 'mysql': $dsn = 'mysql'.$dsn; break;
+ case 'pgsql': $dsn = 'pgsql'.$dsn.";port=5432;user=$user;password=$pass"; break;
+ default: $dsn = null;
}
+ if(!$creardb) {
+ $dsn .= ";dbname=$db";
+ }
+ try {
+ $dbh = new PDO($dsn, $user, $pass);
+ }
+ catch (PDOException $e) {
+ $dbh = null;
+ $error_flag = true;
+ $cnx_error_flag = true;
+ $cnx_error_msg = "No se puede conectar a la base de datos: <br>" . $e->getMessage();
+ DebugLog('Error al conectar con la base de datos','E');
+ }
- // Si es Postgresql
- if($tipo_motor_base == 'pgsql') {
- $conn = @pg_connect("host=$host user=$user password=$pass port=5432");
- if (!$conn) {
+ //crear base si es necesario
+ if ($creardb AND $dbh != null) {
+ DebugLog('Probando crear base de datos...');
+ try {
+ @$dbh->exec('CREATE DATABASE ' . $db);
+ DebugLog("Base de datos $db creada correctamente");
+ }
+ catch(PDOException $e) {
$error_flag = true;
$cnx_error_flag = true;
- $cnx_error_msg = "No se puede conectar a la base de datos: <br>";
- DebugLog('Error al conectar con la base de datos','E');
- } else {
- //crear base si es necesario
- if ($creardb) {
- DebugLog('Probando crear base de datos...');
- $ret = @pg_query($conn, 'CREATE DATABASE ' . $db);
- if (!$ret) {
- $error_flag = true;
- $cnx_error_flag = true;
- $cnx_error_msg = "No se puede crear la base de datos: <br>" . pg_last_error($conn);
- DebugLog('No se puede crear la base de datos: ' . pg_last_error($conn) ,'E');
- } else {
- DebugLog("Base de datos $db creada correctamente");
- }
- } else {
- DebugLog("No se creara una base de datos");
- }
-
- pg_close($conn);
-
- $conn = pg_connect("host=$host user=$user password=$pass port=5432 dbname=$db");
- //conectado a la base
- if (!$conn) {
- $error_flag = true;
- $cnx_error_flag = true;
- $cnx_error_msg = "No es posible utilizar la base $db: ";
- DebugLog("No es posible conectar a la base de datos $db", 'E');
- }
- pg_close($conn);
-
+ $cnx_error_msg = "No se puede crear la base de datos: <br>" . $e->getMessage();
+ DebugLog('No se puede crear la base de datos: ' . $e->getMessage() ,'E');
}
- }
+ } else {
+ DebugLog("No se creara una base de datos");
+ }
+ $dbh = null;
+
$_SESSION['albainstall']['tipo_motor_base'] = $tipo_motor_base;
$_SESSION['albainstall']['host'] = $host;
$_SESSION['albainstall']['user'] = $user;
@@ -155,6 +114,17 @@
else
$error_flag = true;
?>
+
+<script type="text/javascript">
+ function cambioTipo(bt) {
+ if(bt.value=="pgsql") {
+ document.forms[0].creardb.disabled = true;
+ } else {
+ document.forms[0].creardb.disabled = false;
+ }
+ }
+</script>
+
<div id="detalle">
<p>Detalle de conexión con la base de datos:</p>
</div>
@@ -170,8 +140,8 @@
<tr>
<td>Motor de bases de datos: </td>
- <td>Mysql<input type="radio" name="tipo_motor_base" value="mysql" <?php echo isset($tipo_motor_base) && $tipo_motor_base == 'mysql' ? 'checked' : ''?> >
- Postgresql<input type="radio" name="tipo_motor_base" value="pgsql" <?php echo isset($tipo_motor_base) && $tipo_motor_base == 'pgsql' ? 'checked' : ''?> ></td>
+ <td>Mysql<input type="radio" name="tipo_motor_base" value="mysql" onChange="cambioTipo(this)" <?php echo isset($tipo_motor_base) && $tipo_motor_base == 'mysql' ? 'checked' : ''?> >
+ Postgresql<input type="radio" name="tipo_motor_base" value="pgsql" onChange="cambioTipo(this)" <?php echo isset($tipo_motor_base) && $tipo_motor_base == 'pgsql' ? 'checked' : ''?> ></td>
</tr>
<tr>
<td>Servidor:</td>
@@ -190,9 +160,9 @@
<td><input type="text" name="db" value="<?php echo $db?>" class="texto"></td>
</tr>
<tr>
- <td>Crear base de datos:<br/><span style="font-size:9px">(debe tener los permisos para poder hacerlo)</style></td>
+ <td>Crear base de datos:<br/><span style="font-size:9px">(Debe tener los permisos para poder hacerlo)</style></td>
<td><input type="checkbox" name="creardb" value="1" <?php echo $creardb ? "checked" : ""?> class="check"></td>
- </tr>
+ </tr>
</table>
<br/>
<input type="submit" name="btTextConn" value="Comprobar conexión a la Base de Datos" class="boton">
@@ -210,4 +180,4 @@
// ir al siguiente paso
$paso = 4;
-?>
\ No newline at end of file
+?>
Modified: prosistem/alba/trunk/alba/web/instalar/paso6.php
===================================================================
--- prosistem/alba/trunk/alba/web/instalar/paso6.php 2008-07-11 02:44:34 UTC (rev 5734)
+++ prosistem/alba/trunk/alba/web/instalar/paso6.php 2008-07-11 03:30:09 UTC (rev 5735)
@@ -124,6 +124,17 @@
$error_flag = true;
DebugLog("Error al cargar modelo de base de datos: $archivo","E");
}
+
+ //Esto se agrego para hacer update a las secuencias de postgresql
+ if($tipo_motor_base == 'pgsql') {
+ $archivo = substr($archivo,0,-4)."_update_seq.sql";
+ $ret = crear_base_modelo($archivo, $tipo_motor_base, $host, $user, $pass, $db);
+ echo $ret ? IMG_OK : IMG_ERROR;
+ if (!$ret) {
+ $error_flag = true;
+ DebugLog("Error al cargar modelo de base de datos: $archivo","E");
+ }
+ }
?>
</td>
</tr>
@@ -148,4 +159,4 @@
// finaliznado los pasos
DebugLog ("============================ FIN INSTALACION ALBA - " .date('d-m-Y H:i:s'). "=======================");
$completo = true;
-?>
\ No newline at end of file
+?>
Más información sobre la lista de distribución Alba-desarrollo