Exemple #1
0
 function mostrar_ayuda()
 {
     $this->consola->titulo($this->get_info());
     $this->mostrar_observaciones();
     $this->consola->subtitulo('Lista de opciones');
     $opciones = $this->inspeccionar_opciones();
     $salida = array();
     $i = 0;
     foreach ($opciones as $id => $opcion) {
         if (!isset($opcion['tags']['consola_no_mostrar'])) {
             $salida[$id] = $opcion['ayuda'];
             if (isset($opcion['tags']['consola_parametros'])) {
                 $salida[$id] .= "\n" . $opcion['tags']['consola_parametros'];
             }
             if (isset($opcion['tags']['consola_separador']) && $i + 1 < count($opciones)) {
                 $salida[$id] .= "\n_________________________________\n";
             }
         }
         $i++;
     }
     $this->consola->coleccion($salida);
 }
Exemple #2
0
 function __construct($ubicacion_comandos, $clase_menu)
 {
     toba_nucleo::instancia();
     if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
         self::$display_ancho = 79;
     } else {
         self::$display_ancho = 1000;
     }
     ini_set("error_reporting", E_ALL);
     if (!is_dir($ubicacion_comandos)) {
         throw new toba_error("CONSOLA: El directorio de comandos '{$ubicacion_comandos}' es invalido");
     }
     $this->ubicacion_comandos = $ubicacion_comandos;
     require_once $this->ubicacion_comandos . "/{$clase_menu}.php";
     $this->menu = new $clase_menu($this);
     toba_cronometro::instancia()->marcar('Consola online');
 }
 /**
  * Importa una personalizacion, tiene 2 modos de accion:
  * Transaccion Global, se importa todo o nada.
  * Transaccion a nivel de componente, se importa solo lo que no da error.
  */
 function aplicar()
 {
     if (!$this->existe()) {
         throw new toba_error("PERSONALIZACION: No existe la carpeta de personalización");
     }
     //Instancio ambos importadores
     $importador_tablas = new toba_importador_tablas($this->dir_tablas . self::nombre_plan, $this->db);
     $importador_componentes = new toba_importador_componentes($this->dir_componentes . self::nombre_plan, $this->db);
     //Empiezo haciendo el chequeo de conflictos para los componentes
     //En una transaccion destinada a abortar
     //------------------------------------------------------------------------------------------//
     $this->db->abrir_transaccion();
     $this->analizar_conflictos($importador_tablas, false);
     $this->analizar_conflictos($importador_componentes, false);
     $this->db->abortar_transaccion();
     //------------------------------------------------------------------------------------------//
     //Comienzo la importacion propiamente dicha
     if ($this->ejecutar_en_transaccion_global()) {
         $this->db->abrir_transaccion();
         $this->db->retrazar_constraints();
         //Retraso los triggers para evitar problemas de fk
     }
     //Aplico la personalizacion a tablas y componentes
     try {
         $this->aplicar_cambios($importador_tablas);
         $this->aplicar_cambios($importador_componentes);
     } catch (toba_error_db $e) {
         $this->db->abortar_transaccion();
         //Hubo problemas de SQL, aborto todo
         if ($this->consola) {
             $this->consola->mensaje("Ocurrio un error en la importacion \n");
         }
     } catch (toba_error_usuario $e) {
         $this->db->abortar_transaccion();
         //El usuario decidio no continuar, saco mensaje por pantalla
         if ($this->consola) {
             $this->consola->mensaje($e->getMessage());
         }
     }
     if ($this->db->transaccion_abierta() && $this->ejecutar_en_transaccion_global()) {
         $this->db->cerrar_transaccion();
         //Cierro la transaccion si aun esta abierta. Esto es, se ejecuto sin problemas
     }
 }
Exemple #4
0
 protected function io_conflicto_irresoluble(consola $consola, toba_registro_conflicto $conflicto)
 {
     $consola->mensaje("Se encontro un error irrecuperable, se abortará la importación de esta tarea. El error fue: {$conflicto->get_descripcion()}.");
 }
Exemple #5
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!";
}