Exemple #1
0
 function directorio_logs()
 {
     if (!isset($this->dir_logs)) {
         $id_instancia = toba_instancia::get_id();
         $this->dir_logs = toba_nucleo::toba_instalacion_dir() . "/i__{$id_instancia}/p__{$this->proyecto_actual}/logs/web_services";
     }
     return $this->dir_logs;
 }
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');
 }
 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();
     }
 }
Exemple #4
0
 /**
  * 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));
 }
Exemple #5
0
<?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')");
}
//--------------------------------------------------------------------------
Exemple #6
0
function toba_dir()
{
    return toba_nucleo::toba_dir();
}
Exemple #7
0
<?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')");
}
//--------------------------------------------------------------------------
Exemple #8
0
 static function get_directorio_compilacion()
 {
     if (!self::$dir_compilacion) {
         self::$dir_compilacion = toba_proyecto::get_path() . '/metadatos_compilados';
     }
     return self::$dir_compilacion;
 }
Exemple #9
0
 static function get_metodos_consulta_php($consulta_php, $proyecto = null)
 {
     if (is_null($proyecto)) {
         $proyecto = toba_contexto_info::get_proyecto();
     }
     //Busco nombre de clase y de archivo.
     if (is_array($consulta_php)) {
         $archivo_nombre = $consulta_php['carga_php_include'];
         $clase_nombre = $consulta_php['carga_php_clase'];
     } else {
         $datos = self::get_consulta_php($consulta_php, $proyecto);
         $archivo_nombre = $datos['archivo'];
         $clase_nombre = !is_null($datos['archivo_clase']) ? $datos['archivo_clase'] : $datos['clase'];
     }
     if (is_null($clase_nombre)) {
         toba::logger()->error('Se intento cargar una clase de consulta con nombre nulo, pertenece al archivo ' . $archivo_nombre);
         throw new toba_error_usuario('La clase de consulta seleccionada para la carga no es válida, verifique su definición');
     }
     //Si hay puntos de montaje, cargo el autoload de c/u
     if (isset($datos['punto_montaje'])) {
         $puntos = self::get_pms($proyecto);
         $pm_obj = array();
         foreach ($puntos as $punto) {
             $pm_obj[$punto['id']] = toba_modelo_pms::get_pm($punto['id'], $proyecto);
             $pm_obj[$punto['id']]->registrar_autoload();
         }
         //Busco el path al archivo
         $punto = $pm_obj[$datos['punto_montaje']];
         //toba_modelo_pms::get_pm($datos['punto_montaje'], $proyecto);
         $archivo = $punto->get_path_absoluto() . '/' . $archivo_nombre;
     } else {
         $archivo = toba::instancia()->get_path_proyecto($proyecto) . '/php/' . $archivo_nombre;
     }
     //Si aun no existe el archivo, puede estar buscandose un archivo de toba
     if (!file_exists($archivo)) {
         $archivo = toba_nucleo::toba_dir() . '/php/' . $archivo_nombre;
     }
     $metodos = array();
     if (file_exists($archivo)) {
         include_once $archivo;
         //Incluyo el archivo porque no se si esta en un autoload o no.
         //Usar Reflexion para obtener los metodos.
         $reflector = new ReflectionClass($clase_nombre);
         $metodos = $reflector->getMethods(ReflectionMethod::IS_STATIC | ReflectionMethod::IS_PUBLIC);
         //$metodos = toba_archivo_php::codigo_get_nombre_metodos(file_get_contents($archivo), true);
     }
     //Armo la salida con los nombres de los metodos accesibles
     $salida = array();
     foreach ($metodos as $obj) {
         $salida[] = array('metodo' => $obj->getName());
     }
     //Desregistro el autoload de los puntos de montaje existentes para que no interfieran con el editor.
     if (!empty($pm_obj)) {
         foreach ($pm_obj as $klave => $obj) {
             $pm_obj[$klave]->desregistrar_autoload();
         }
     }
     return $salida;
 }
Exemple #10
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;
 }
 /**
  * @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");
     }
 }
Exemple #12
0
<?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();
Exemple #13
0
 /**
  * Retorna la ruta a la carpeta 'instalacion'
  */
 function get_path_carpeta_instalacion()
 {
     return toba_nucleo::toba_instalacion_dir();
 }
 /**
  * @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);
 }
Exemple #15
0
 /**
  * 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();
 }
Exemple #16
0
<?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')");
}
//--------------------------------------------------------------------------
Exemple #17
0
 /**
  * Retorna un modelo de comandos administrativos disponibles
  */
 function cargar_comandos($seleccionar_proyecto = null)
 {
     $instalacion = $this->toba_instalador->get_instalacion();
     //---El formato es Nombre,Imagen,Clave, Label
     $modelo = new GtkTreeStore(Gtk::TYPE_STRING, Gtk::TYPE_OBJECT, Gtk::TYPE_STRING, Gtk::TYPE_STRING);
     $path = toba_nucleo::toba_dir() . '/www/img/instalacion.png';
     $img = GdkPixbuf::new_from_file($path);
     $raiz = null;
     $path_inst = $instalacion->get_dir();
     $nodo_instal = $modelo->append($raiz, array('Instalación', $img, 'instalacion', "Instalación"));
     $seleccion = null;
     if ($instalacion->existe_info_basica()) {
         //---Agrega las instancias
         foreach ($instalacion->get_lista_instancias() as $id_instancia) {
             $instancia = $instalacion->get_instancia($id_instancia);
             $path = toba_nucleo::toba_dir() . '/www/img/instancia.gif';
             $img = GdkPixbuf::new_from_file($path);
             $nodo_inst = $modelo->append($nodo_instal, array($id_instancia, $img, 'instalacion/' . $id_instancia, "Instancia {$id_instancia}"));
             //---Agrega los proyectos
             $path = toba_nucleo::toba_dir() . '/www/img/nucleo/proyecto.gif';
             $img = GdkPixbuf::new_from_file($path);
             foreach ($instancia->get_lista_proyectos_vinculados() as $id_proyecto) {
                 $nodo_pro = $modelo->append($nodo_inst, array($id_proyecto, $img, 'instalacion/' . $id_instancia . '/' . $id_proyecto, "Proyecto {$id_proyecto}"));
                 if ($id_proyecto == $seleccionar_proyecto) {
                     $seleccion = $nodo_pro;
                 }
             }
         }
         //---BASES
         $path = toba_nucleo::toba_dir() . '/www/img/fuente.png';
         $img = GdkPixbuf::new_from_file($path);
         $nodo_bases = $modelo->append($raiz, array('Bases', $img, 'base', 'Bases de Toba'));
         foreach ($instalacion->get_lista_bases() as $db) {
             $modelo->append($nodo_bases, array($db, $img, 'base_' . $db, "Base '{$db}'"));
         }
     }
     //--- Comandos extra
     $path = toba_nucleo::toba_dir() . '/www/img/cpu.png';
     $img = GdkPixbuf::new_from_file($path);
     $modelo->append($raiz, array('Núcleo', $img, 'nucleo', 'Núcleo de Toba'));
     $path = toba_nucleo::toba_dir() . '/www/img/ayuda.png';
     $img = GdkPixbuf::new_from_file($path);
     $modelo->append($raiz, array('Documentación', $img, 'doc', 'Documentación'));
     $path = toba_nucleo::toba_dir() . '/www/img/objetos/item.gif';
     $img = GdkPixbuf::new_from_file($path);
     $modelo->append($raiz, array('Items', $img, 'item', 'Items'));
     $path = toba_nucleo::toba_dir() . '/www/img/testing.gif';
     $img = GdkPixbuf::new_from_file($path);
     $modelo->append($raiz, array('Testing', $img, 'test', 'Testing'));
     //--- Expansion
     $this->comp['arbol_comandos']->set_model($modelo);
     $this->comp['arbol_comandos']->expand_row(0, true);
     if (isset($seleccion)) {
         return $seleccion;
     }
 }
Exemple #18
0
 function cargar_includes_basicos()
 {
     foreach (toba_nucleo::get_includes_funciones_globales() as $archivo) {
         require_once toba_nucleo::toba_dir() . $archivo;
     }
 }