示例#1
0
 function clonar_subclase($dr, $dir_subclases, $proyecto_dest)
 {
     if (isset($this->datos['subclase_archivo'])) {
         $filas = $dr->tabla('pantallas')->get_id_fila_condicion(array('pantalla' => $this->datos['pantalla']), false);
         if (count($filas) != 1) {
             throw new toba_error_modelo("Imposible clonar subclase de pantalla {$this->datos['pantalla']}");
         }
         $fila = current($filas);
         $archivo = $this->datos['subclase_archivo'];
         $nuevo_archivo = $dir_subclases . "/" . basename($archivo);
         $id_pm_origen = $this->get_punto_montaje();
         $id_pm_destino = $dr->tabla('base')->get_fila_columna(0, 'punto_montaje');
         //Busco los directorios de copia utilizando los puntos de montaje
         $path_origen = $this->get_path_clonacion($id_pm_origen, $this->proyecto);
         $path_destino = $this->get_path_clonacion($id_pm_destino, $proyecto_dest, $path_origen);
         //--- Si el dir. destino no existe, se lo crea
         if (!file_exists($path_destino . $dir_subclases)) {
             toba_manejador_archivos::crear_arbol_directorios($path_destino . $dir_subclases);
         }
         if (!copy($path_origen . $archivo, $path_destino . $nuevo_archivo)) {
             throw new toba_error('No es posible copiar el archivo desde ' . $path_origen . $archivo . ' hacia ' . $path_destino . $nuevo_archivo);
         }
         $dr->tabla('pantallas')->set_fila_columna_valor($fila, 'subclase_archivo', $nuevo_archivo);
     }
 }
 static function get_ini_server(toba_modelo_proyecto $proyecto, $id_servicio)
 {
     $directorio = $proyecto->get_dir_instalacion_proyecto() . "/servicios_serv/{$id_servicio}";
     //Directorio perteneciente al servicio
     toba_manejador_archivos::crear_arbol_directorios($directorio, 0755);
     $ini = new toba_ini($directorio . '/servicio.ini');
     return $ini;
 }
示例#3
0
 function guardar($path)
 {
     if (!file_exists(dirname($path))) {
         toba_manejador_archivos::crear_arbol_directorios(dirname($path));
     }
     $ok = file_put_contents($path, $this->salida);
     if ($ok === false) {
         throw new toba_error("Imposible guardar archivo '{$path}'");
     }
 }
示例#4
0
 function generar()
 {
     if (isset($this->archivo)) {
         if (!isset($this->carpeta_archivo)) {
             throw new toba_error_asistentes('La carpeta no fue definida.');
         }
         toba_manejador_archivos::crear_arbol_directorios(dirname($this->archivo_absoluto()));
         if ($this->generar_archivo()) {
             $this->asociar_archivo();
         }
     }
     $this->guardar_metadatos();
 }
示例#5
0
 /**
  * @ignore 
  */
 function disparar_eventos()
 {
     if (isset($_POST[$this->_submit]) && $_POST[$this->_submit] != "") {
         $evento = $_POST[$this->_submit];
         //El evento estaba entre los ofrecidos?
         if (isset($this->_memoria['eventos'][$evento])) {
             $parametros = $_POST[$this->_submit . "__seleccion"];
             switch ($evento) {
                 case 'ir_a_carpeta':
                     if ($parametros == '..') {
                         //volver una carpeta
                         $seleccion = dirname($this->_dir_actual) . "/";
                     } else {
                         $seleccion = $this->_dir_actual . "/{$parametros}";
                     }
                     //--- Chequeo de seguridad
                     if (isset($this->_path_absoluto)) {
                         if (strpos(realpath($seleccion), realpath($this->_path_absoluto)) !== 0) {
                             throw new toba_error_seguridad("El path es invalido");
                         }
                     }
                     $this->_dir_actual = toba_manejador_archivos::path_a_unix(realpath($seleccion));
                     $this->reportar_evento($evento, $seleccion);
                     break;
                 case 'crear_carpeta':
                     $this->validar_nombre_carpeta($parametros);
                     $seleccion = $this->_dir_actual . "/{$parametros}";
                     toba_manejador_archivos::crear_arbol_directorios($seleccion);
                     break;
                 case 'crear_archivo':
                     $this->validar_nombre_archivo($parametros);
                     $seleccion = $this->_dir_actual . "/{$parametros}";
                     toba_manejador_archivos::crear_archivo_con_datos($seleccion, "");
                     break;
                 default:
                     $this->reportar_evento($evento, $seleccion);
             }
         }
     }
     $this->borrar_memoria_eventos_atendidos();
 }
 /**
  * La clonacion del DR puede implicar clonar su AP
  */
 protected function clonar_subclase($dr, $dir_subclases, $proyecto_dest)
 {
     parent::clonar_subclase($dr, $dir_subclases, $proyecto_dest);
     if (isset($this->datos['_info_estructura']['ap_archivo'])) {
         $archivo = $this->datos['_info_estructura']['ap_archivo'];
         $nuevo_archivo = $dir_subclases . "/" . basename($archivo);
         $id_pm_origen = $this->get_punto_montaje();
         $id_pm_destino = $dr->tabla('base')->get_fila_columna(0, 'punto_montaje');
         //Busco los directorios de copia utilizando los puntos de montaje
         $path_origen = $this->get_path_clonacion($id_pm_origen, $this->proyecto);
         $path_destino = $this->get_path_clonacion($id_pm_destino, $proyecto_dest, $path_origen);
         $dr->tabla('prop_basicas')->set_fila_columna_valor(0, 'ap_archivo', $nuevo_archivo);
         //--- Si el dir. destino no existe, se lo crea
         if (!file_exists($path_destino . $dir_subclases)) {
             toba_manejador_archivos::crear_arbol_directorios($path_destino . $dir_subclases);
         }
         if (!copy($path_origen . $archivo, $path_destino . $nuevo_archivo)) {
             throw new toba_error('No es posible copiar el archivo desde ' . $path_origen . $archivo . ' hacia ' . $path_destino . $nuevo_archivo);
         }
     }
 }
示例#7
0
 function evt__form_paleta__generar($datos)
 {
     $this->evt__form_paleta__modificacion($datos);
     $datos = $this->dep('datos')->get();
     $paleta = unserialize($datos['paleta']);
     $template = file_get_contents($this->template);
     if ($datos['proyecto'] == 'toba') {
         $dir_salida = toba_dir();
     } else {
         $dir_salida = toba::instancia()->get_path_proyecto($datos['proyecto']);
     }
     $dir_salida = $dir_salida . '/www/skins/' . $datos['estilo'];
     if (!file_exists($dir_salida)) {
         toba_manejador_archivos::crear_arbol_directorios($dir_salida);
     }
     $archivo_salida = $dir_salida . '/toba.css';
     foreach ($paleta as $clave => $valor) {
         $template = str_replace('{$' . $clave . '}', $valor, $template);
     }
     file_put_contents($archivo_salida, $template);
     $this->pantalla()->set_descripcion('Plantilla css generada. Recuerde generar una imagen <b>barra-sup.gif</b> (o copiarlo de un skin existente) ' . "y guardarla en <b>{$dir_salida}</b>", 'warning');
     $this->dep('datos')->sincronizar();
 }
示例#8
0
 function generar_ini_rest($proyecto)
 {
     $path_rest = $this->get_dir_instalacion_proyecto($proyecto) . '/rest';
     try {
         toba_manejador_archivos::crear_arbol_directorios($path_rest);
     } catch (Exception $e) {
         $this->manejador_interface->mensaje("No se pudo crear la carpeta {$path_rest}");
         return;
     }
     //--1- Servidor
     if (!file_exists($path_rest . '/servidor.ini')) {
         copy(toba_dir() . '/php/modelo/var/rest_servidor.ini', $path_rest . '/servidor.ini');
     }
     if (!file_exists($path_rest . '/servidor_usuarios.ini')) {
         copy(toba_dir() . '/php/modelo/var/rest_servidor_usuarios.ini', $path_rest . '/servidor_usuarios.ini');
     }
     //--2- Clientes
     $sql = "\n\t\t\tSELECT servicio_web FROM apex_servicio_web WHERE tipo = 'rest' AND proyecto = " . $this->get_db()->quote($proyecto);
     $rs = $this->get_db()->consultar($sql);
     foreach ($rs as $fila) {
         $path_rest_cliente = $path_rest . "/{$fila['servicio_web']}";
         try {
             toba_manejador_archivos::crear_arbol_directorios($path_rest_cliente);
             if (!file_exists($path_rest_cliente . '/cliente.ini')) {
                 copy(toba_dir() . '/php/modelo/var/rest_cliente.ini', $path_rest_cliente . '/cliente.ini');
             }
         } catch (Exception $e) {
             $this->manejador_interface->mensaje("No se pudo crear la carpeta {$path_rest_cliente}");
         }
     }
 }
示例#9
0
 /**
  * Cierra el archivo
  */
 function edicion_fin()
 {
     /*		echo "Contenido: <pre>";
     		echo htmlentities($this->contenido);
     		echo "</pre>";
     */
     toba_manejador_archivos::crear_arbol_directorios(dirname($this->nombre));
     $contenido = self::convertir_formato_so($this->contenido);
     file_put_contents($this->nombre, $contenido);
 }
示例#10
0
 function opcion__foto_schema($parametro = null)
 {
     $base = $this->consola->dialogo_ingresar_texto('Introduzca la base donde se encuentra el schema');
     $schema = $this->consola->dialogo_ingresar_texto('Introduzca el schema a sacar la foto');
     $path = toba_dir() . '/temp/sql';
     toba_manejador_archivos::crear_arbol_directorios($path);
     $db = $this->get_instalacion()->conectar_base($base);
     $tablas = $db->get_lista_tablas();
     foreach ($tablas as $tabla) {
         // Exporto los datos
         $archivo = toba_dir() . '/temp/sql/' . $tabla['nombre'] . '.old';
         $this->exportar_tabla_inserts($base, $schema, $tabla['nombre'], $archivo);
         $this->consola->progreso_avanzar();
     }
     $this->consola->progreso_fin();
     $this->consola->mensaje("La foto de la base se guardó en {$path}");
 }
 private function generar_componente_nueva(&$componente, $path)
 {
     toba_manejador_archivos::crear_arbol_directorios(dirname($path));
     //Creo el directorio si aun no existe
     $xml = new toba_xml($path);
     $xml->abrir_elemento(toba_pers_xml_elementos::componente);
     $xml->add_atributo(toba_pers_xml_atributos::id, $componente['id']['componente'], true);
     $xml->add_atributo(toba_pers_xml_atributos::descripcion, $componente['tipo'], true);
     foreach ($componente['metadata'] as $key_tabla => $contenido) {
         if (empty($contenido)) {
             continue;
         }
         $xml->abrir_elemento(toba_pers_xml_elementos::tabla);
         $xml->add_atributo(toba_pers_xml_atributos::nombre, $key_tabla, true);
         foreach ($contenido as $registro) {
             $xml->abrir_elemento(toba_pers_xml_elementos::registro);
             foreach (array_eliminar_nulls($registro) as $columna => $valor) {
                 $xml->abrir_elemento(toba_pers_xml_elementos::columna);
                 $xml->add_atributo(toba_pers_xml_atributos::nombre, $columna, true);
                 $xml->add_atributo(toba_pers_xml_atributos::valor, $valor, true);
                 $xml->cerrar_elemento();
             }
             $xml->cerrar_elemento();
         }
         $xml->cerrar_elemento();
     }
     $xml->cerrar_elemento();
     $xml->cerrar_documento();
 }
示例#12
0
 protected function guardar_archivo_log($texto, $archivo)
 {
     $permisos = 0774;
     //--- Asegura que el path esta creado
     $path = $this->directorio_logs();
     $path_completo = $path . "/" . $archivo;
     toba_manejador_archivos::crear_arbol_directorios($path, $permisos);
     $es_nuevo = false;
     if (!file_exists($path_completo)) {
         //Caso base el archivo no existe
         $this->anexar_a_archivo($texto, $path_completo);
         $es_nuevo = true;
     } else {
         //El archivo existe, ¿Hay que ciclarlo?
         $excede_tamanio = filesize($path_completo) > apex_log_archivo_tamanio * 1024;
         if (apex_log_archivo_tamanio != null && $excede_tamanio) {
             $this->ciclar_archivos_logs($path, $archivo);
             $es_nuevo = true;
         }
         $this->anexar_a_archivo($texto, $path_completo);
     }
     if ($es_nuevo) {
         //Cambiar permisos
         @toba_manejador_archivos::chmod_recursivo($path, $permisos);
     }
 }
示例#13
0
 function empaquetar_en_carpeta($destino, $librerias_en_uso = array(), $proyectos_en_uso = array())
 {
     $path_base = toba_dir();
     $excepciones = array();
     $excepciones[] = $path_base . '/doc';
     $excepciones[] = $path_base . '/instalacion';
     $excepciones[] = $path_base . '/var';
     //Excepciones de php/3eros
     foreach (toba_manejador_archivos::get_subdirectorios($path_base . '/php/3ros') as $libreria) {
         if (!in_array(basename($libreria), $librerias_en_uso)) {
             $excepciones[] = $libreria;
         }
     }
     //Excepciones de www/js
     $candidatas = array('fckeditor', 'junit', 'yui');
     foreach (toba_manejador_archivos::get_subdirectorios($path_base . '/www/js') as $libreria) {
         $nombre = basename($libreria);
         if (in_array($nombre, $candidatas) && !in_array($nombre, $librerias_en_uso)) {
             $excepciones[] = $libreria;
         }
     }
     //Excepciones de proyectos
     foreach (toba_manejador_archivos::get_subdirectorios($path_base . '/proyectos') as $proyecto) {
         $nombre = basename($proyecto);
         if (!in_array($nombre, $proyectos_en_uso)) {
             $excepciones[] = $proyecto;
         }
     }
     //Carpeta php
     toba_manejador_archivos::crear_arbol_directorios($destino);
     toba_manejador_archivos::copiar_directorio($path_base, $destino, $excepciones, $this->manejador_interface, false);
     //Crea un archivo revision con la actual de toba
     file_put_contents($destino . '/REVISION', revision_svn(toba_dir(), true));
 }
示例#14
0
 protected function guardar_archivo_log($texto, $archivo)
 {
     $permisos = 0774;
     //--- Asegura que el path esta creado
     $path = $this->directorio_logs();
     $path_completo = $path . "/" . $archivo;
     toba_manejador_archivos::crear_arbol_directorios($path, $permisos);
     //Grabo el archivo
     $es_nuevo = !file_exists($path_completo);
     $this->anexar_a_archivo($texto, $path_completo);
     //Reseteo las variables internas para no escribir lo mismo varias veces
     $this->proyectos = array();
     $this->mensajes = array();
     $this->niveles = array();
     $this->proximo = 0;
     if ($es_nuevo) {
         //Cambiar permisos
         @toba_manejador_archivos::chmod_recursivo($path, $permisos);
     }
 }
示例#15
0
 function exportar_tablas_nucleo(toba_modelo_instancia $instancia)
 {
     try {
         $this->manejador_interface->titulo("Tablas NUCLEO");
         toba_manejador_archivos::crear_arbol_directorios($this->get_dir_metadatos());
         foreach (toba_db_tablas_nucleo::get_lista() as $tabla) {
             $this->manejador_interface->mensaje("tabla  --  {$tabla}");
             $definicion = toba_db_tablas_nucleo::$tabla();
             //Genero el SQL
             $sql = 'SELECT ' . implode(', ', $definicion['columnas']) . " FROM {$tabla} " . " ORDER BY {$definicion['dump_order_by']} ;\n";
             $contenido = "";
             $datos = $instancia->get_db()->consultar($sql);
             $regs = count($datos);
             if ($regs > 1) {
                 $columnas_orden = array_map('trim', explode(',', $definicion['dump_order_by']));
                 $datos = rs_ordenar_por_columnas($datos, $columnas_orden);
             }
             for ($a = 0; $a < $regs; $a++) {
                 $contenido .= sql_array_a_insert($tabla, $datos[$a], $instancia->get_db()) . "\n";
             }
             if (trim($contenido) != '') {
                 $this->guardar_tabla_archivo($tabla, $contenido);
             }
         }
     } catch (toba_error $e) {
         $this->manejador_interface->error('Ha ocurrido un error durante la exportacion.');
         $this->manejador_interface->error($e->getMessage());
     }
 }
示例#16
0
 static function crear_arbol_personalizacion($path_proyecto)
 {
     $path_pers = $path_proyecto . '/' . toba_personalizacion::dir_personalizacion;
     $path_logs = $path_pers . '/' . toba_personalizacion::dir_logs;
     $path_php = $path_pers . '/' . toba_personalizacion::dir_php;
     $path_www = $path_pers . '/' . toba_personalizacion::dir_www;
     $path_img = $path_pers . '/' . toba_personalizacion::dir_www . '/img';
     $path_css = $path_pers . '/' . toba_personalizacion::dir_www . '/css';
     $path_ext = $path_pers . '/php/extension_toba/componentes';
     $archivo_css = $path_pers . '/' . toba_personalizacion::dir_www . '/css/toba.css';
     $archivo_ini = $path_pers . '/' . toba_personalizacion::archivo_ini;
     toba_manejador_archivos::crear_arbol_directorios($path_pers);
     toba_manejador_archivos::crear_arbol_directorios($path_logs);
     toba_manejador_archivos::crear_arbol_directorios($path_php);
     toba_manejador_archivos::crear_arbol_directorios($path_www);
     toba_manejador_archivos::crear_arbol_directorios($path_img);
     toba_manejador_archivos::crear_arbol_directorios($path_css);
     toba_manejador_archivos::crear_arbol_directorios($path_ext);
     toba_manejador_archivos::crear_archivo_con_datos($archivo_ini, toba_personalizacion::iniciada . ' = no');
     toba_manejador_archivos::crear_archivo_con_datos($archivo_css, "/*\nIncluir aquí las reglas css personalizadas del proyecto\n*/");
 }
示例#17
0
 protected function crear_directorios()
 {
     toba_manejador_archivos::crear_arbol_directorios($this->dir);
     toba_manejador_archivos::crear_arbol_directorios($this->dir_tablas);
     toba_manejador_archivos::crear_arbol_directorios($this->dir_componentes);
     toba_manejador_archivos::crear_arbol_directorios($this->dir_componentes . self::dir_nuevos);
     toba_manejador_archivos::crear_arbol_directorios($this->dir_componentes . self::dir_modificados);
     toba_manejador_archivos::crear_arbol_directorios($this->dir_componentes . self::dir_borrados);
 }
示例#18
0
 protected function empaquetar_proyecto($destino, $excepciones)
 {
     $origen = $this->get_dir();
     toba_manejador_archivos::crear_arbol_directorios($destino);
     toba_manejador_archivos::copiar_directorio($origen, $destino, $excepciones, $this->manejador_interface, false);
     //-- Crea un archivo revision con la actual de toba
     file_put_contents($destino . '/REVISION', revision_svn($origen, true));
 }