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; }
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}'"); } }
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(); }
/** * @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); } } }
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(); }
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}"); } } }
/** * 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); }
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(); }
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); } }
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)); }
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); } }
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()); } }
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*/"); }
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); }
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)); }