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(); } }
/** * 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 toba_dir() { return toba_nucleo::toba_dir(); }
function cargar_includes_basicos() { foreach (toba_nucleo::get_includes_funciones_globales() as $archivo) { require_once toba_nucleo::toba_dir() . $archivo; } }
/** * Retorna el path de la instalación de toba */ function get_path() { return toba_nucleo::toba_dir(); }
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; }