function error($texto)
 {
     toba_logger::instancia()->error($texto);
     $lineas = toba_texto::separar_texto_lineas($texto, self::$display_ancho);
     foreach ($lineas as $linea) {
         $this->_log .= self::display_prefijo_linea . $linea . "\n";
     }
 }
 function get_contenido_tabla_datos($tabla, $where_extra = null)
 {
     $definicion = toba_db_tablas_proyecto::$tabla();
     //Genero el SQL
     if (isset($definicion['dump_where']) && trim($definicion['dump_where']) != '') {
         $w = stripslashes($definicion['dump_where']);
         $where = str_replace("%%", $this->proyecto->get_id(), $w);
     } else {
         $where = " ( proyecto = '" . $this->proyecto->get_id() . "')";
     }
     if (isset($where_extra)) {
         $where = $where . ' AND (' . $where_extra . ')';
     }
     $sql = 'SELECT ' . implode(', ', $definicion['columnas']) . " FROM {$tabla} " . " WHERE {$where} " . " ORDER BY {$definicion['dump_order_by']} ;\n";
     $datos = $this->db->consultar($sql);
     $reorganizado = $this->reorganizar_tabla($datos, $definicion['clave_elemento']);
     $regs = count($datos);
     //		if ( $regs > 1 ) {
     //			$columnas_orden = array_map('trim', explode(',',$definicion['dump_order_by']) );
     //			$datos = rs_ordenar_por_columnas( $datos, $columnas_orden );
     //		}
     toba_logger::instancia()->debug("TABLA  {$tabla}  ({$regs} reg.)");
     return $reorganizado;
 }
Esempio n. 3
0
 function proyecto__ef_normalizacion_parametros()
 {
     $cant = 0;
     $correlacion = array('estado' => 'estado_defecto', 'predeterminado' => 'estado_defecto', 'solo_lectura' => 'solo_lectura', 'dao' => 'carga_metodo', 'clase' => 'carga_clase', 'include' => 'carga_include', 'clave' => 'carga_col_clave', 'sql' => 'carga_sql', 'fuente' => 'carga_fuente', 'lista' => 'carga_lista', 'dependencias' => 'carga_maestros', 'cascada_relajada' => 'carga_cascada_relaj', 'no_seteado' => 'carga_no_seteado', 'tamano' => 'edit_tamano', 'cifras' => 'edit_tamano', 'maximo' => 'edit_maximo', 'mascara' => 'edit_mascara', 'unidad' => 'edit_unidad', 'rango' => 'edit_rango', 'filas' => 'edit_filas', 'columnas' => 'edit_columnas', 'wrap' => 'edit_wrap', 'resaltar' => 'edit_resaltar', 'ajustable' => 'edit_ajustable', 'ventana' => 'popup_ventana', 'editable' => 'popup_editable', 'valor_no_seteado' => 'check_valor_no', 'valor_info' => 'check_desc_si', 'valor_info_no_seteado' => 'check_desc_no', 'sin_datos' => 'fijo_sin_estado', 'ancho' => 'editor_ancho', 'alto' => 'editor_alto', 'botonera' => 'editor_botonera', 'cant_minima' => 'selec_cant_minima', 'cant_maxima' => 'selec_cant_maxima', 'mostrar_utilidades' => 'selec_utilidades', 'tamanio' => 'selec_tamano', 'extensiones_validas' => 'upload_extensiones');
     $sql = "\n\t\t\tSELECT \n\t\t\t\tobjeto_ei_formulario_proyecto,\n\t\t\t\tobjeto_ei_formulario,\n\t\t\t\tobjeto_ei_formulario_fila,\n\t\t\t\telemento_formulario,\n\t\t\t\tidentificador,\n\t\t\t\tinicializacion\n\t\t\tFROM\n\t\t\t\tapex_objeto_ei_formulario_ef\n\t\t\tWHERE \n\t\t\t\tobjeto_ei_formulario_proyecto='{$this->elemento->get_id()}'\n\t\t";
     $rs = $this->elemento->get_db()->consultar($sql);
     foreach ($rs as $ef) {
         $param = parsear_propiedades($ef['inicializacion'], '_');
         $nuevos = array();
         foreach ($param as $clave => $valor) {
             if (isset($correlacion[$clave])) {
                 $nuevos[$correlacion[$clave]] = $valor;
             } elseif ($clave == 'tipo') {
                 if (!is_numeric($valor)) {
                     $valor = $valor == 'i' ? 0 : 1;
                 }
                 $nuevos['fieldset_fin'] = $valor;
             } elseif ($clave == 'valor') {
                 if ($ef['elemento_formulario'] == 'ef_checkbox') {
                     $nuevos['check_valor_si'] = $valor;
                 } else {
                     $nuevos['carga_col_desc'] = $valor;
                 }
             } elseif ($clave == 'item_destino') {
                 $partes = explode(',', $valor);
                 $p_item = $partes[0];
                 if (count($partes) == 2) {
                     $p_proyecto = $partes[1];
                 } else {
                     $p_proyecto = $this->elemento->get_id();
                 }
                 $nuevos['popup_item'] = $p_item;
                 $nuevos['popup_proyecto'] = $p_proyecto;
             } else {
                 $msg = "El parametro '{$clave}' de los EF no tiene correlacion en la migracion.";
                 $extendido = "Se decarta el valor '{$valor}' del parámetro '{$clave}' en el ef '{$ef['identificador']}' del formulario" . " '{$ef['objeto_ei_formulario']}'";
                 toba_logger::instancia()->warning($extendido);
                 $this->manejador_interface->mensaje("{$msg} (Ver log para más detalles)\n");
             }
         }
         if (!empty($nuevos)) {
             $sql = "\n\t\t\t\t\tUPDATE apex_objeto_ei_formulario_ef \n\t\t\t\t\tSET \n\t\t\t\t\t\tinicializacion = NULL,\n\t\t\t\t";
             foreach ($nuevos as $id => $valor) {
                 $valor = addslashes($valor);
                 $sql .= "{$id} = '{$valor}', ";
             }
             $sql = substr($sql, 0, -2);
             $sql .= "\tWHERE\n\t\t\t\t\t\t\tobjeto_ei_formulario_proyecto = '{$ef['objeto_ei_formulario_proyecto']}' \n\t\t\t\t\t\tAND\tobjeto_ei_formulario = '{$ef['objeto_ei_formulario']}'  \n\t\t\t\t\t\tAND objeto_ei_formulario_fila = '{$ef['objeto_ei_formulario_fila']}'\n\t\t\t\t\t";
             //echo $sql."\n";
             $rs = $this->elemento->get_db()->ejecutar($sql);
             $cant++;
         }
     }
     //--- Pone las inicializaciones en NULL para no volver a migrarlas sin querer
     $sql = "UPDATE apex_objeto_ei_formulario_ef SET inicializacion = NULL\n\t\t\t\t\tWHERE objeto_ei_formulario_proyecto='{$this->elemento->get_id()}'";
     $this->elemento->get_db()->ejecutar($sql);
     return $cant;
 }
Esempio n. 4
0
 function grabar_logs()
 {
     $dir_logs = toba_modelo_instalacion::dir_base() . "/logs_comandos";
     toba_logger::instancia()->set_directorio_logs($dir_logs);
     toba_logger::instancia()->guardar_en_archivo('comandos.log');
 }
Esempio n. 5
0
 function liberar_savepoint($nombre)
 {
     $sql = "RELEASE SAVEPOINT {$nombre};";
     $this->ejecutar($sql);
     toba_logger::instancia()->debug("************ liberar savepoint {$nombre} ({$this->base}@{$this->profile}) ****************", 'toba');
 }
Esempio n. 6
0
 function proyecto__migrar_datos_para_mysql()
 {
     /*
     	Hacer que el ID de los items sea numerico
     */
     $sql = "SELECT item FROM apex_item WHERE proyecto = '{$this->elemento->get_id()}'";
     $datos = $this->elemento->get_db()->consultar($sql);
     $renombrar = array();
     $sqls_items = array();
     foreach ($datos as $dato) {
         if ((string) (int) $dato['item'] != $dato['item']) {
             //-- Cambio en ID del item en la base --
             $id_viejo = $dato['item'];
             $id_nuevo = $this->elemento->get_db()->recuperar_nuevo_valor_secuencia('apex_item_seq');
             $id_nuevo++;
             $sql = "UPDATE apex_item SET item = '{$id_nuevo}' WHERE item = '{$id_viejo}' AND proyecto='{$this->elemento->get_id()}';";
             $sqls_items[] = $sql;
             $this->elemento->get_db()->ejecutar($sql);
             //-- Cambio el ID del item en el codigo
             $renombrar[$id_viejo] = $id_nuevo;
         }
     }
     //Renombrar los .php que consumieron estos ids
     $editor = new toba_editor_archivos();
     foreach ($renombrar as $viejo => $nuevo) {
         $msg = "El id del item '{$viejo}' pasa a ser '{$nuevo}'.";
         toba_logger::instancia()->warning($msg);
         $this->manejador_interface->mensaje($msg);
         $viejo = str_replace('/', '\\/', $viejo);
         $editor->agregar_sustitucion("/\\'{$viejo}\\'/", $nuevo);
         $editor->agregar_sustitucion("/\\\"{$viejo}\\\"/", $nuevo);
     }
     $archivos = toba_manejador_archivos::get_archivos_directorio($this->elemento->get_dir(), '/.php$/', true);
     $editor->procesar_archivos($archivos);
     //-- Generar un .sql para poder migrar las instalaciones
     $migracion = "BEGIN;\n";
     $migracion .= "SET CONSTRAINTS ALL DEFERRED;\n";
     $migracion .= "\n\n--------- Se crean las constraints con UPDATE CASCADE\n";
     $migracion .= implode("\n", $this->sql_migracion);
     $migracion .= "\n\n--------- Se migran los ids de los items\n";
     $migracion .= implode("\n", $sqls_items);
     $migracion .= "\n\nCOMMIT;\n";
     file_put_contents($this->elemento->get_dir() . '/migracion_instalaciones_1.2.0.sql', $migracion);
     /*
     	Renumerar las que poseen 0
     	* completar las que no tienen registros con un registro fantasma
     		o hacer que las secuencias comiencen si o si desde 1...
     */
     /*foreach( toba_db_secuencias::get_lista() as $secuencia => $tabla) {
     			$sql = "SELECT '$secuencia' as seq, min({$tabla['campo']}) as minimo FROM {$tabla['tabla']}\n";
     			//echo $sql;
     			$datos = $this->elemento->get_db()->consultar_fila($sql);
     			if($datos['minimo'] === 0){
     				echo "TABLA: {$tabla['tabla']} CAMPO {$tabla['campo']}\n";
     			}
     		}*/
     //throw new toba_error('no');
 }
Esempio n. 7
0
 /**
  * Ejecuta un COMMIT en la conexión
  */
 function cerrar_transaccion()
 {
     $this->conexion->commit();
     toba_logger::instancia()->debug("************ CERRAR transaccion ({$this->base}@{$this->profile}) ****************", 'toba');
 }
Esempio n. 8
0
 function __construct($proyecto)
 {
     $this->log = toba_logger::instancia($proyecto);
 }
Esempio n. 9
0
 /**
  *  Se deserializan los campos de la sumatoria del corte de control y se generan registros nuevos
  */
 function proyecto__normalizar_suma_cortes_cuadro()
 {
     $sql = "SELECT col.objeto_cuadro_proyecto, col.objeto_cuadro, col.objeto_cuadro_col, col.total_cc\n\t\t\t\t\t FROM    apex_objeto_ei_cuadro_columna col\n\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tcol.total_cc IS NOT NULL AND\n\t\t\t\t\t\t\tcol.total_cc <> '' AND\n\t\t\t\t\t\t\tcol.objeto_cuadro_proyecto = '{$this->elemento->get_id()}'; ";
     $datos = $this->elemento->get_db()->consultar($sql);
     toba_logger::instancia()->debug('Sql ejecutada: ' . $sql . "\n datos devueltos:");
     toba_logger::instancia()->var_dump($datos);
     $sql = array();
     foreach ($datos as $corte) {
         $cols_involucradas = explode(',', $corte['total_cc']);
         $cols_involucradas = array_map('trim', $cols_involucradas);
         foreach ($cols_involucradas as $columna) {
             $sql[] = "INSERT INTO apex_objeto_cuadro_col_cc(objeto_cuadro_cc, objeto_cuadro_proyecto, objeto_cuadro, objeto_cuadro_col, total) \n\t\t\t\t\t\t\t\t(SELECT  objeto_cuadro_cc, '{$corte['objeto_cuadro_proyecto']}',\n\t\t\t\t\t\t\t\t\t\t\t\t   '{$corte['objeto_cuadro']}', '{$corte['objeto_cuadro_col']}', '1'\n\t\t\t\t\t\t\t\t FROM\tapex_objeto_cuadro_cc\n\t\t\t\t\t\t\t\t WHERE\n\t\t\t\t\t\t\t\t\tobjeto_cuadro_proyecto =  '{$corte['objeto_cuadro_proyecto']}' AND\n\t\t\t\t\t\t\t\t\tobjeto_cuadro = '{$corte['objeto_cuadro']}' AND\n\t\t\t\t\t\t\t\t\tidentificador = '{$columna}'\n\t\t\t\t\t\t\t\t);";
         }
     }
     $this->elemento->get_db()->ejecutar($sql);
 }
 function purgar_auditoria($tiempo = 0, $tablas = array(), $prefijo_tablas = null, $con_transaccion = true)
 {
     $this->manejador_interface->mensaje('Limpiando las tablas de auditoria', true);
     $fuentes = $this->proyecto->get_indice_fuentes();
     toba_logger::instancia()->var_dump($fuentes, 'fuentes activas');
     if (empty($fuentes)) {
         return;
     }
     $schemas = array();
     foreach ($fuentes as $fuente) {
         $schemas[$fuente] = aplanar_matriz(toba_info_editores::get_schemas_fuente($this->proyecto->get_id(), $fuente), 'schema');
     }
     toba_logger::instancia()->var_dump($schemas, 'schemas de fuentes');
     foreach ($fuentes as $fuente) {
         try {
             $base = $this->proyecto->get_db_negocio($fuente);
             $this->procesar_schemas_fuente($base, $schemas[$fuente], $con_transaccion, $tablas, $prefijo_tablas, 'purgar', $tiempo);
             unset($base);
         } catch (toba_error_db $e) {
             if (isset($base)) {
                 $base->abortar_transaccion();
                 //Si hay algun error hace revert y anula el objeto de la bd
                 unset($base);
             }
         }
     }
 }
Esempio n. 11
0
 /**
  *	Retorna el logger de mensajes internos
  *	@return toba_logger
  */
 static function logger()
 {
     return toba_logger::instancia();
 }
 function sincro_fs()
 {
     $obs = array();
     foreach ($this->archivos_eliminados as $archivo) {
         unlink($archivo);
         toba_logger::instancia()->info("Sincronizacion: Eliminando archivo {$archivo}");
         $obs[] = "SINCRO: eliminar '{$archivo}'";
     }
     return $obs;
 }
Esempio n. 13
0
/*
	Este script abre una consola del SIU-TOBA 
*/
if (!isset($_SERVER['TOBA_DIR']) && isset($_SERVER['toba_dir'])) {
    $_SERVER['TOBA_DIR'] = $_SERVER['toba_dir'];
}
if (!isset($_SERVER['TOBA_INSTANCIA']) && isset($_SERVER['toba_instancia'])) {
    $_SERVER['TOBA_INSTANCIA'] = $_SERVER['toba_instancia'];
}
if (isset($_SERVER['TOBA_DIR'])) {
    //----------------------------------------------
    // Defino el 'include_path'
    //----------------------------------------------
    $dir = $_SERVER['TOBA_DIR'] . "/php";
    $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:';
    ini_set('include_path', ini_get('include_path') . $separador . $dir);
    //----------------------------------------------
    // Invoco la consola
    //----------------------------------------------
    require_once 'consola/consola.php';
    $directorio_comandos = $dir . "/consola/comandos";
    $clase_menu = 'menu_toba';
    array_shift($argv);
    $consola = new consola($directorio_comandos, $clase_menu);
    $consola->run($argv);
    $dir_logs = toba_modelo_instalacion::dir_base() . "/logs_comandos";
    toba_logger::instancia()->set_directorio_logs($dir_logs);
    toba_logger::instancia()->guardar_en_archivo('comandos.log');
} else {
    echo "  ATENCION: La variable de entorno 'toba_dir' no esta definida!";
}
Esempio n. 14
0
 function get_logger()
 {
     return toba_logger::instancia($this->s__opciones['proyecto']);
 }
Esempio n. 15
0
 private static function actualizar_version($version)
 {
     $numero = $version->__toString();
     file_put_contents(self::dir_base() . "/VERSION", $numero);
     toba_logger::instancia()->debug("Actualizada instalación a versión {$numero}");
 }
Esempio n. 16
0
 function set_checksum_proyecto($proyecto, $checksum)
 {
     $proy_qtd = $this->get_db()->quote($proyecto);
     $cks_qtd = $this->get_db()->quote($checksum);
     $sql = "UPDATE apex_checksum_proyectos SET checksum = {$cks_qtd} WHERE proyecto = {$proy_qtd};";
     $modificados = $this->get_db()->sentencia($sql);
     if ($modificados == '0') {
         $sql = "INSERT INTO apex_checksum_proyectos (proyecto, checksum) VALUES ({$proy_qtd}, {$cks_qtd});";
         $modificados = $this->get_db()->sentencia($sql);
     }
     toba_logger::instancia()->debug("Actualizado el checksum del proyecto {$proyecto}");
 }
Esempio n. 17
0
 function eliminar_permisos_editables()
 {
     $this->manejador_interface->mensaje("Eliminando perfiles editables", false);
     toba_logger::instancia()->debug("Eliminando perfiles editables '{$this->identificador}'");
     $proyecto = $this->db->quote($this->identificador);
     $where = "proyecto = {$proyecto} AND usuario_grupo_acc IN (SELECT gc.usuario_grupo_acc FROM apex_usuario_grupo_acc AS gc WHERE gc.proyecto = {$proyecto} AND gc.permite_edicion = 1)";
     foreach (array_reverse($this->get_lista_tablas_perfil_funcional()) as $tabla) {
         $sql = "DELETE FROM {$tabla} WHERE {$where}";
         $cant = $this->db->ejecutar($sql);
         toba_logger::instancia()->debug("{$tabla} ({$cant})");
         $this->manejador_interface->progreso_avanzar();
     }
     toba_logger::instancia()->debug("Eliminando restricciones editables '{$this->identificador}'");
     $where = "proyecto = {$proyecto} AND restriccion_funcional IN (SELECT res.restriccion_funcional FROM apex_restriccion_funcional AS res WHERE res.proyecto = {$proyecto} AND res.permite_edicion = 1)";
     foreach (array_reverse($this->get_lista_tablas_restricciones()) as $tabla) {
         $sql = "DELETE FROM {$tabla} WHERE {$where}";
         $this->db->ejecutar($sql);
         $cant = $this->db->ejecutar($sql);
         toba_logger::instancia()->debug("{$tabla} ({$cant})");
         $this->manejador_interface->progreso_avanzar();
     }
     $this->manejador_interface->progreso_fin();
 }
Esempio n. 18
0
 function ejecutar_migracion($prefijo, $elemento, $metodo_part = null, $interface = null)
 {
     $nombre_clase = "toba_migracion_" . $this->partes[0] . '_' . $this->partes[1] . '_' . $this->partes[2];
     $archivo = $this->path_migraciones() . "/{$nombre_clase}.php";
     require_once $archivo;
     $migracion = new $nombre_clase($elemento);
     $clase = new ReflectionClass($nombre_clase);
     foreach ($clase->getMethods() as $metodo) {
         $nombre_metodo = $metodo->getName();
         $es_metodo = $nombre_metodo == $metodo_part || !isset($metodo_part) && strpos($nombre_metodo, $prefijo . "__") === 0;
         if ($es_metodo) {
             $cant = $metodo->invoke($migracion);
             if (isset($cant)) {
                 toba_logger::instancia()->info("Migración {$nombre_metodo}: {$cant} registros.");
             }
             if (isset($interface)) {
                 $interface->progreso_avanzar();
             }
         }
     }
     $interface->progreso_fin();
 }
Esempio n. 19
0
 /**
  * Muestra los LOGS del proyecto
  * @consola_parametros Opcional: [-n 'numero'] Muestra un log específico. Por defecto se muestra el último
  */
 function opcion__ver_log()
 {
     $param = $this->get_parametros();
     $proyecto = isset($param["-p"]) ? $param["-p"] : $this->get_id_proyecto_actual(true);
     $instancia = isset($param["-i"]) ? $param["-i"] : $this->get_id_instancia_actual(true);
     toba_nucleo::instancia()->iniciar_contexto_desde_consola($instancia, $proyecto);
     $logger = toba_logger::instancia($proyecto);
     $archivo = $logger->directorio_logs() . "/sistema.log";
     $analizador = new toba_analizador_logger_fs($archivo);
     $analizador->procesar_entidades_html(false);
     //Identifico el ID de log a cargar
     $param = $this->get_parametros();
     if (isset($param['-n'])) {
         $pedido = $param['-n'];
         if ($pedido < 1 || $pedido > $analizador->get_cantidad_pedidos()) {
             $this->consola->mensaje("El log específico solicitado no existe.");
             return;
         }
     } else {
         $pedido = $analizador->get_cantidad_pedidos();
     }
     //Muestro el log
     $res = $analizador->get_pedido($pedido);
     echo $res;
 }
Esempio n. 20
0
 protected function restaurar_schema_trabajo()
 {
     $schema_o = $this->get_schema_original();
     $schema_logs_o = $schema_o . '_logs';
     $schema_t = $this->get_schema_personalizacion();
     $schema_logs_t = $schema_t . '_logs';
     $this->get_db()->abrir_transaccion();
     try {
         //Elimino los schemas con los metadatos originales
         $this->kill_schemas($schema_o);
         //Renombro los schemas de metadatos personalizados para que pueda seguir trabajando
         $this->get_db()->renombrar_schema($schema_logs_t, $schema_logs_o);
         $this->get_db()->renombrar_schema($schema_t, $schema_o);
         $this->get_db()->cerrar_transaccion();
     } catch (toba_error_db $e) {
         $this->get_db()->abortar_transaccion();
         toba_logger::instancia()->error($e->getMessage());
         throw new toba_error_usuario('Hubo un inconveniente al intentar restaurar la instancia de trabajo, revise el log');
     }
 }
Esempio n. 21
0
 /**
  * Registra un error en la apl., este nivel es que el se usa en las excepciones
  */
 function error($mensaje)
 {
     $this->logger->error($mensaje);
 }