static function instancia() { if (!isset(self::$instancia)) { self::$instancia = new toba_nucleo(); } return self::$instancia; }
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'); }
private function __construct() { define('TOBA_DIR', toba_nucleo::toba_dir()); if (PHP_SAPI != 'cli') { if (session_id() != '') { throw new toba_error("Ya existe una sesión abierta, probablemente tenga activado session.auto_start = 1 en el php.ini"); } if (!toba_nucleo::instancia()->es_acceso_rest()) { session_name(toba::instalacion()->get_session_name()); session_start(); } } $this->instancia = toba_instancia::get_id(); $this->proyecto = toba_proyecto::get_id(); if (session_status() == PHP_SESSION_ACTIVE && !isset($_SESSION[TOBA_DIR]['nucleo'])) { //Primer acceso al sistema $_SESSION[TOBA_DIR]['nucleo']['inicio'] = time(); } }
<?php # Proyecto define('apex_pa_proyecto', 'burgos_v2'); # Ejecuta con metadatos compilados #define('apex_pa_metadatos_compilados', 1); # Deshabilita el autologin #define("apex_pa_validacion_debug", 0); # Activa el logger en modo 'debug'. Para modo info pasar a '6' define('apex_pa_log_archivo', true); define('apex_pa_log_archivo_nivel', 7); //-------------------------------------------------------------------------- //------ Invocacion del nucleo del toba ------------------------------------ //-------------------------------------------------------------------------- if (isset($_SERVER['TOBA_DIR'])) { $dir = $_SERVER['TOBA_DIR'] . '/php'; $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:'; ini_set('include_path', ini_get('include_path') . $separador . $dir); require_once 'nucleo/toba_nucleo.php'; toba_nucleo::instancia()->acceso_web(); } else { die("Es necesario definir la variable 'TOBA_DIR' en el archivo de configuracion de apache\r\n\t\t\t(Utilize la directiva 'SetEnv')"); } //--------------------------------------------------------------------------
/** * Ejecuta la batería de test automáticos de un proyecto * @consola_parametros Parámetros: -p Proyecto [-c Cat] [-t Caso] */ function opcion__automaticos() { $path_autoload_sel = '/php/testing/selenium/test_selenium_autoload.php'; require_once 'modelo/lib/testing_unitario/toba_test_lista_casos.php'; require_once toba_dir() . '/php/3ros/simpletest/unit_tester.php'; require_once toba_dir() . '/php/3ros/simpletest/reporter.php'; $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); $path = $this->get_instancia()->get_path_proyecto($proyecto); if (file_exists($path . $path_autoload_sel)) { require_once $path . $path_autoload_sel; spl_autoload_register(array('test_selenium_autoload', 'cargar')); } toba_test_lista_casos::$proyecto = $proyecto; toba_test_lista_casos::$instancia = $instancia; //Selecciono una categoria if (isset($param['-c'])) { $seleccionados = toba_test_lista_casos::get_casos($param['-c']); } //Seleccion de un test particular if (isset($param['-t'])) { $seleccionados = toba_test_lista_casos::get_casos(); $particular = false; foreach ($seleccionados as $caso) { if ($caso['id'] == $param["-t"]) { $particular = $caso; } } if ($particular) { $seleccionados = array($particular); } else { $seleccionados = array(); } } elseif (!isset($param['-c'])) { //Ni categoria ni test, elijo de una lista presentada $seleccionados = toba_test_lista_casos::get_casos(); $lista = array(); $klaves = array_keys($seleccionados); foreach ($seleccionados as $caso) { $lista[$caso['id']] = $caso['nombre']; } $elegidos = $this->consola->dialogo_lista_opciones($lista, 'Seleccione el caso de test', true, null, false); foreach ($klaves as $klave) { if (!in_array($seleccionados[$klave]['id'], $elegidos)) { unset($seleccionados[$klave]); } } } $resultado = null; try { $separar_casos = isset($param["-l"]) ? true : false; $separar_pruebas = isset($param["-l"]) ? true : false; $test = new toba_test_grupo_casos('Casos de TEST', $separar_casos, $separar_pruebas); foreach ($seleccionados as $caso) { require_once $caso['archivo']; $test->addTestCase(new $caso['id']($caso['nombre'])); } //Termina la ejecución con 0 o 1 para que pueda comunicarse con al consola $resultado = $test->run(new TextReporter()); } catch (Exception $e) { if (method_exists($e, 'mensaje_consola')) { $this->consola->mensaje($e->mensaje_consola()); } else { $this->consola->mensaje($e); } $resultado = 1; } //Guardar LOGS? if (isset($param["-l"])) { toba::logger()->debug('Tiempo utilizado: ' . toba::cronometro()->tiempo_acumulado() . ' seg.'); toba::logger()->guardar(); } exit(intval($resultado)); }
<?php # apex_proyecto: Proyecto PRIMARIO define('apex_pa_proyecto', '__proyecto__'); //-------------------------------------------------------------------------- //------ Invocacion del nucleo del toba ------------------------------------ //-------------------------------------------------------------------------- if (isset($_SERVER['TOBA_DIR'])) { $dir = $_SERVER['TOBA_DIR'] . '/php'; $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:'; ini_set('include_path', ini_get('include_path') . $separador . $dir); require_once 'nucleo/toba_nucleo.php'; toba_nucleo::instancia()->acceso_rest(); } else { die("Es necesario definir la variable 'TOBA_DIR' en el archivo de configuracion de apache\n\t\t\t(Utilize la directiva 'SetEnv')"); } //--------------------------------------------------------------------------
<?php # apex_proyecto: Proyecto PRIMARIO define('apex_pa_proyecto', 'libro_unco'); //-------------------------------------------------------------------------- //------ Invocacion del nucleo del toba ------------------------------------ //-------------------------------------------------------------------------- if (isset($_SERVER['TOBA_DIR'])) { $dir = $_SERVER['TOBA_DIR'] . '/php'; $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:'; ini_set('include_path', ini_get('include_path') . $separador . $dir); require_once 'nucleo/toba_nucleo.php'; toba_nucleo::instancia()->acceso_servicio(); } else { die("Es necesario definir la variable 'TOBA_DIR' en el archivo de configuracion de apache\r\n\t\t\t(Utilize la directiva 'SetEnv')"); } //--------------------------------------------------------------------------
/** * 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; }
/** * @todo Cuando los toba_info_editores se puedan usar desde consola, cambiar la consulta manual */ function actualizar_login($pisar_anterior = false) { //--- ¿Existe el proyecto editor? if (!$this->instancia->existen_metadatos_proyecto(toba_editor::get_id())) { $msg = "No se crea la operación de login porque el proyecto editor no está cargado en la instancia"; toba_logger::instancia()->info($msg); $this->manejador_interface->error($msg); return; } // Contextualizo al nucleo en el proyecto "toba_editor" toba_nucleo::instancia()->iniciar_contexto_desde_consola($this->instancia->get_id(), toba_editor::get_id()); //--- Averiguo la fuente destino $sql = "SELECT fuente_datos, pm_contexto FROM apex_proyecto WHERE proyecto = " . quote($this->identificador); $defecto = toba::db()->consultar_fila($sql); if (empty($defecto['fuente_datos'])) { throw new toba_error("El proyecto no tiene definida una fuente de datos."); } if (empty($defecto['pm_contexto'])) { throw new toba_error("El proyecto no tiene definida un punto de montaje para el contexto."); } //--- Clonando $id = array('proyecto' => toba_editor::get_id(), 'componente' => 1000042); $info_item = toba_constructor::get_info($id, 'toba_item'); $nuevos_datos = array(); $nuevos_datos['proyecto'] = $this->identificador; $nuevos_datos['padre_proyecto'] = $this->identificador; $nuevos_datos['padre'] = toba_info_editores::get_item_raiz($this->identificador); $nuevos_datos['fuente_datos'] = $defecto['fuente_datos']; $nuevos_datos['fuente_datos_proyecto'] = $this->identificador; $nuevos_datos['punto_montaje'] = $defecto['pm_contexto']; $directorio = 'login'; $clave = $info_item->clonar($nuevos_datos, $directorio); $this->manejador_interface->progreso_fin(); //--- Actualizar el item de login $this->manejador_interface->mensaje("Actualizando el proyecto...", false); $sql = "UPDATE apex_proyecto SET item_pre_sesion='{$clave['componente']}'\n\t\t\t\tWHERE proyecto='{$this->identificador}'"; $this->get_db()->ejecutar($sql); $this->manejador_interface->progreso_fin(); //--- Borrar el item viejo if ($pisar_anterior) { $this->manejador_interface->mensaje("Aun no está implementada la eliminación desde consola"); } }
<?php $dir = $_SERVER['TOBA_DIR'] . "/php"; $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:'; ini_set('include_path', ini_get('include_path') . $separador . $dir); require_once "nucleo/toba_nucleo.php"; toba_nucleo::instancia()->iniciar_contexto_desde_consola($_SERVER['TOBA_INSTANCIA'], $_SERVER['TOBA_PROYECTO']); //$dir_logs = toba_modelo_instalacion::dir_base()."/logs_test"; //toba_logger::instancia()->set_directorio_logs($dir_logs); //toba_logger::instancia()->guardar_en_archivo('comandos.log'); //toba::logger()->guardar();
/** * @return toba_modelo_instalacion * @throws \Exception */ protected function cargarToba() { //--Carga nucleo toba $dir = $this->getTobaDir() . "/php"; $separador = substr(PHP_OS, 0, 3) == 'WIN' ? ';.;' : ':.:'; ini_set('include_path', ini_get('include_path') . $separador . $dir); require_once "nucleo/toba_nucleo.php"; \toba_nucleo::instancia()->iniciar_contexto_desde_consola($this->getInstanciaId(), $this->getProyectoId()); return \toba_modelo_catalogo::instanciacion()->get_instalacion(null); }
/** * Una zona representa un menu alrededor de un concepto central. Utilizada por ejemplo para mostrar un menú de opciones relacionado con un cliente particular. * @return toba_zona */ static function zona() { return toba_nucleo::instancia()->get_solicitud()->zona(); }