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; }
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)); } }
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)); } }
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; } }
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; }
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; }
function eliminar($datos) { $id = $datos['id']; $punto = $this->pms->get_por_id($id); $this->pms->baja($punto); }
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; }