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; }
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(); } }
/** * 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')"); } //--------------------------------------------------------------------------
function toba_dir() { return toba_nucleo::toba_dir(); }
<?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')"); } //--------------------------------------------------------------------------
static function get_directorio_compilacion() { if (!self::$dir_compilacion) { self::$dir_compilacion = toba_proyecto::get_path() . '/metadatos_compilados'; } return self::$dir_compilacion; }
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; }
/** * 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();
/** * 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); }
/** * 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(); }
<?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')"); } //--------------------------------------------------------------------------
/** * 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; } }
function cargar_includes_basicos() { foreach (toba_nucleo::get_includes_funciones_globales() as $archivo) { require_once toba_nucleo::toba_dir() . $archivo; } }