示例#1
0
 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();
     }
 }
示例#2
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;
     }
 }
示例#3
0
function toba_dir()
{
    return toba_nucleo::toba_dir();
}
示例#4
0
 function cargar_includes_basicos()
 {
     foreach (toba_nucleo::get_includes_funciones_globales() as $archivo) {
         require_once toba_nucleo::toba_dir() . $archivo;
     }
 }
示例#5
0
 /**
  * Retorna el path de la instalación de toba
  */
 function get_path()
 {
     return toba_nucleo::toba_dir();
 }
示例#6
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;
 }