예제 #1
0
 static function get_path_archivo($path_relativo, $pm_id = null)
 {
     if (!is_null($pm_id)) {
         $pm = toba_modelo_pms::get_pm($pm_id, toba_editor::get_proyecto_cargado());
         $path = $pm->get_path_absoluto() . '/';
     } else {
         $path = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . '/php/';
     }
     return $path . $path_relativo;
 }
예제 #2
0
 function conf__listado()
 {
     $inicial = toba::memoria()->get_parametro('ef_popup_valor');
     if (!is_null($inicial)) {
         $id_pm = toba::memoria()->get_parametro('punto_montaje');
         $punto = toba_modelo_pms::get_pm($id_pm, toba_editor::get_proyecto_cargado());
         $absoluto = $punto->get_path_absoluto() . '/';
         $this->dependencia('listado')->set_path_absoluto($absoluto);
         $this->dependencia('listado')->set_path(dirname($inicial));
     }
 }
예제 #3
0
 function conf__listado(toba_ei_archivos $ei)
 {
     $ei->set_solo_carpetas(true);
     $inicial = toba::memoria()->get_parametro('ef_popup_valor');
     if (!isset($this->s__dir_absoluto)) {
         //Si no hay valor previo de la instancia esta
         $id_pm = toba::memoria()->get_parametro('punto_montaje');
         if (!is_null($id_pm)) {
             //Si existe PM cargo ese dir, sino el defecto del proyecto
             $punto = toba_modelo_pms::get_pm($id_pm, toba_editor::get_proyecto_cargado());
             $this->s__dir_absoluto = $punto->get_path_absoluto() . '/';
         } else {
             $this->s__dir_absoluto = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . '/php/';
         }
     }
     $ei->set_path_absoluto($this->s__dir_absoluto);
     if ($inicial != null) {
         $ei->set_path(dirname($inicial));
     }
 }
예제 #4
0
 function ini()
 {
     //Si viene 'archivo' asume la carpeta php
     //Si viene 'path' no asume carpeta php del proyecto (puede ser www u otra)
     $asume_php = true;
     $archivo = toba::memoria()->get_parametro('archivo');
     $path = toba::memoria()->get_parametro('path');
     if (!isset($archivo) && isset($path)) {
         $archivo = $path;
         $asume_php = false;
     }
     if (isset($archivo)) {
         if (strpos($archivo, '..') !== false) {
             //Evita que se pasen ../ en la url
             throw new toba_error_seguridad("El parámetro '{$archivo}' no es un path válido");
         }
         $pm_id = toba::memoria()->get_parametro('punto_montaje');
         if (!is_null($pm_id)) {
             $pm_obj = toba_modelo_pms::get_pm($pm_id, toba_editor::get_proyecto_cargado());
             $this->s__path_archivo = $pm_obj->get_path_absoluto() . '/' . $archivo;
         } else {
             $path_proyecto = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado());
             if (!$asume_php) {
                 $this->s__path_archivo = $path_proyecto . '/' . $archivo;
             } else {
                 $this->s__path_archivo = $path_proyecto . '/php/' . $archivo;
             }
         }
         $this->s__es_esclavo = false;
     }
     if (!isset($this->s__es_esclavo)) {
         //Es un esclavo
         $this->s__path_archivo = $this->controlador()->get_path_archivo();
         $this->s__es_esclavo = true;
     }
 }
예제 #5
0
 private function recuperar_punto_montaje()
 {
     if (!isset($this->s__pm)) {
         $pmp = toba::memoria()->get_parametro('pm_pers');
         //PM del evento de personalizacion
         $pm = toba::memoria()->get_parametro('punto_montaje');
         //PM del evento de extension
         if (isset($pmp)) {
             $this->s__pm = toba_modelo_pms::get_pm($pmp, toba_editor::get_proyecto_cargado());
         } elseif (isset($pm)) {
             $this->s__pm = toba_modelo_pms::get_pm($pm, toba_editor::get_proyecto_cargado());
         } else {
             $pm = $this->get_metaclase()->get_punto_montaje();
             $this->s__pm = toba_modelo_pms::get_pm($pm, toba_editor::get_proyecto_cargado());
         }
     }
     return $this->s__pm;
 }
예제 #6
0
 protected function tiene_extension_rota($dato)
 {
     $archivo = $dato['subclase_archivo'];
     if (isset($dato['punto_montaje'])) {
         $pm = toba_modelo_pms::get_pm($dato['punto_montaje'], toba_editor::get_proyecto_cargado());
         $path_proy = $pm->get_path_absoluto() . '/' . $archivo;
     } else {
         $path_proy = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . "/php/" . $archivo;
     }
     $path_toba = toba_dir() . "/php/" . $archivo;
     if (!file_exists($path_proy) && !file_exists($path_toba)) {
         $this->explicaciones[$dato['objeto']][] = "Extensión Rota, no se encuentra el archivo <em>{$archivo}</em>";
         return true;
     }
     //-- Tiene un AP?
     if ($dato['ap_archivo'] != '') {
         $archivo = $dato['ap_archivo'];
         if (isset($dato['ap_punto_montaje'])) {
             $pm = toba_modelo_pms::get_pm($dato['ap_punto_montaje'], toba_editor::get_proyecto_cargado());
             $path_proy = $pm->get_path_absoluto() . '/' . $archivo;
         } else {
             $path_proy = toba::instancia()->get_path_proyecto(toba_editor::get_proyecto_cargado()) . "/php/" . $archivo;
         }
         $path_toba = toba_dir() . "/php/" . $archivo;
         if (!file_exists($path_proy) && !file_exists($path_toba)) {
             $this->explicaciones[$dato['objeto']][] = "Extensión del AP Rota, no se encuentra el archivo <em>{$archivo}</em>";
             return true;
         }
     }
     return false;
 }
예제 #7
0
 function eliminar($datos)
 {
     $id = $datos['id'];
     $punto = $this->pms->get_por_id($id);
     $this->pms->baja($punto);
 }
예제 #8
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;
 }