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); }
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 } }
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()}."); }
/* 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!"; }