![]() |
Documentación del módulo DocDB |
echo muestra un texto en la pantalla del navegador, strpos devuelve la posición de una cadena de caracteres dentro de otra, y sort ordena una matriz de valores. Estas funciones son muy numerosas y abarcan casi todos los problemas a los que se enfrentan los desarrolladores.opendir, readdir o readfile, que leen directorios o archivos en el disco del servidor, y también exif_read_data, imagejpeg o getimagesize, que trabajan con imágenes. Hay muchas otras funciones, y hasta el momento en que escribo estas líneas he contado 99.opendir se reemplaza por opendir_Bypass. Mientras que opendir abre un directorio en el disco, opendir_Bypass abre y lee una tabla de la base de datos. Esto se llama un emulador. Las funciones originales son emuladas por las funciones de emulación. Producen los mismos resultados, pero con un método subyacente totalmente diferente, y lo mismo se aplica a todas las funciones relacionadas con los documentos. Una terminología más moderna podría hablar de programación orientada a aspectos.install.lock, así como el subdirectorio api necesario para algunas operaciones. En cualquier caso, ya no almacena nada y los documentos pueden eliminarse. Ahora se almacenan en dos tablas (llx_doc_data y llx_doc_directory) y, por lo tanto, están naturalmente asociados a cualquier operación de producción relacionada con la base de datos.docDBmigrateScripts.py y docDBmigrateFiles.py) que se utilizan una vez cada uno. El primero modifica el código de los scripts de Dolibarr y el segundo copia el directorio de documentos en la base de datos. Estas dos operaciones son reversibles, lo que permite probar y revertir si es necesario.install-es_ES.html suministrado con el módulo. La operación es bastante sencilla y rápida para aquellos que tienen un mínimo de experiencia en la línea de comandos.
--reverse para recrear los mismos documentos, solo se generarán los directorios que no estén vacíos. En realidad, esto no es importante, ya que Dolibarr puede crear un directorio cuando lo necesita, y esto no afectará su funcionamiento.htdocs/custom.docDBmigrateScripts.py para migrar tu módulo. El comando solo verá las modificaciones a realizar en el módulo, ya que los scripts de Dolibarr ya habrán sido migrados. No dudes en utilizar la opción --dry-run en el primer intento para ver claramente lo que ocurrirá.| Módulo | Versión | Fecha de prueba | Nombre del probador |
|---|---|---|---|
| Scanner | 17.0.0 | 15/05/2023 | jmbc |
| Lista de operaciones incluidas en el protocolo: |
| - migración de docDB |
| - comparación de documentos iniciales/después de revertir |
| - agregar/eliminar logotipo |
| - caracteres acentuados en el nombre de un documento |
| - verificación de generación de facturas en PDF para clientes |
| - acceso a miniaturas de documentos |
| - acceso al documento completo |
| - almacenamiento de documentos de terceros |
| - recorte de documentos de terceros |
| - almacenamiento de documentos de proyectos |
| - espacio GED: creación de carpetas |
| - espacio GED: carga de archivos |
| - espacio GED: creación de subcarpetas |
| - espacio GED: eliminación de carpetas/subcarpetas |
| - espacio GED: renombrar carpetas/subcarpetas/carpetas con archivos |
| - espacio GED: renombrar archivo con acentos |
| - espacio GED: estructura de carpetas automática - desarrollo |
| - espacio GED: estructura de carpetas automática - vista previa |
| - espacio GED: estructura de carpetas automática - acceso a facturas de clientes |
| - espacio GED: estructura de carpetas automática - acceso a proyectos |
| - espacio GED: estructura de carpetas automática - acceso a terceros |
| - prueba adicional - creación de 10 clientes mediante API |
| - prueba adicional - creación de 100 facturas por cliente |
| - prueba adicional - descarga de 100 documentos por cliente |
| - acceso a documentos después de revertir |
select default_character_set_name from information_schema.schemata where schema_name = "nombre_base_dolibarr";utf8mb4 o utf8mb3.É es diferente de E, à es diferente de a, etc.), mientras que en una consulta SQL se consideran equivalentes. Esto presenta un inconveniente para emular el comportamiento de los sistemas de archivos en una consulta SQL, por lo que docDB utiliza CHARSET=utf8 COLLATE=utf8_bin, lo que proporciona los resultados que necesita.
install-es_ES.html incluida con el módulo para obtener ejemplos de funcionamiento.| docDBmigrateScripts |
Linux: python3 docDBmigrateScripts.py --dolibarrDir=ruta_nombre [--reverse] [--dry-run]Windows: py -X utf8 docDBmigrateScripts.py --dolibarrDir=ruta_nombre [--reverse] [--dry-run]Modifica el contenido de los scripts en el directorio htdocs de Dolibarr para realizar el acceso a la base de datos.Por ejemplo, una secuencia de instrucciones if (file_exists($file)) se transformará en if (file_exists_Bypass($file)). Este procesamiento se realiza en todos los scripts PHP, excepto aquellos que se copian desde la carpeta install/scriptFiles de docDB.La opción --reverse restaura los scripts al estado original.
|
|
|---|---|---|
| --dolibarrDir | Ruta completa del directorio htdocs de Dolibarr.Si Dolibarr está ubicado en /var/www/dolibarr, entonces --dolibarrDir= debe apuntar a /var/www/dolibarr/htdocs |
|
| --reverse | Solicita restaurar los scripts PHP de Dolibarr a su estado original. No se trata de una restauración a partir de archivos de respaldo, sino de una reversión de los scripts encontrados en el directorio. |
|
| --dry-run | Solicita una prueba del procesamiento. El algoritmo se sigue de manera exacta hasta el punto de modificación del elemento procesado, que finalmente no se lleva a cabo. |
|
| -X utf8 | Windows. Indica a Python que el juego de caracteres utilizado en el script es utf8. | |
| docDBmigrateFiles |
Linux: python3 docDBmigrateFiles.py --dolibarrDir=ruta_nombre [--reverse] [--dry-run]Windows: py -X utf8 docDBmigrateFiles.py --dolibarrDir=ruta_nombre [--reverse] [--dry-run] [--phpdir=ruta_binarios_php]Lee el contenido del directorio "documents" de Dolibarr y lo carga en la base de datos. La ruta del directorio se conoce a través de la variable $dolibarr_main_data_root en el archivo de configuración de Dolibarr (htdocs/conf/conf.php). Este archivo también proporciona los parámetros de acceso a la base de datos.Si se indica un archivo como faltante, se debe corregir ya sea en la base de datos (tabla llx_ecm_files) o en la carpeta donde falta el archivo. Es preferible realizar la corrección para evitar problemas posteriores durante la operación. Por ejemplo, se puede utilizar una consulta SQL como delete from llx_ecm_files where filename like '%missing_file_name%'; para eliminar la referencia a un documento que ya no existe. En este caso, primero verifique la seguridad de la consulta utilizando una consulta de selección como select filepath,filename from llx_ecm_files where filename like '%missing_file_name%'; para listar cualquier documento no relacionado que pueda eliminarse incorrectamente.
|
|
|---|---|---|
| --dolibarrDir | Ruta completa del directorio htdocs de Dolibarr.Si Dolibarr está ubicado en /var/www/dolibarr, entonces --dolibarrDir= debe apuntar a /var/www/dolibarr/htdocs |
|
| --reverse | Solicita la carga de los documentos GED desde la base de datos al directorio de documentos de Dolibarr. | |
| --dry-run | Solicita una prueba del procesamiento. El algoritmo se sigue de manera exacta hasta el punto de modificación del elemento procesado, que no tiene lugar. |
|
| -X utf8 | Windows. Indica a Python que el juego de caracteres utilizado en el script es utf8. | |
| --phpdir | Windows. Indica la ruta de acceso al ejecutable de PHP. Esta opción es necesaria si esta ruta de acceso no está en el |
|
| Consulta SQL | Ejemplo de resultado | Explicación |
|---|---|---|
select * from llx_doc_directory; |
| rowid | path_name |
| 1 | |
| 2 | /adherent |
| 3 | /adherent/1 |
| 4 | /adherent/10 |
| 5 | /adherent/11 |
|
La tabla docDB llx_doc_directory contiene la lista de directorios que se supone contienen los documentos. |
select rowid,path_name,filemtime, |
| rowid | path_name | filemtime | filesize | exif_data | imagesize |
| 1 | /adherent/1/Jean.pdf | 2023-01-27 21:36:39 | 153092 | 4 | 4 |
| 2 | /adherent/10/Jeanne.pdf | 2023-01-27 21:36:39 | 44421 | 4 | 4 |
| 3 | /adherent/11/Léo.pdf | 2023-01-30 09:56:36 | 16135 | 4 | 4 |
| 4 | /adherent/14/Charlie.pdf | 2023-01-30 09:56:18 | 25034 | 4 | 4 |
| 5 | /adherent/2/Arthur.pdf | 2023-01-27 21:36:39 | 44844 | 4 | 4 |
|
La tabla docDB llx_doc_data contiene los documentos. La columna datablob no es visible. En su lugar, filesize indica el tamaño del documento. exif_data e imagesize son cadenas codificadas que contienen características de las imágenes, si las hay (están vacías en el caso de archivos PDF). |
select filepath,filename from llx_ecm_files; |
| filepath | filename |
| adherent/1 | Jean.pdf |
| adherent/10 | Jeanne.pdf |
| adherent/11 | Léo.pdf |
| adherent/14 | Charlie.pdf |
| adherent/2 | Arthur.pdf |
|
La tabla Dolibarr llx_ecm_files contiene la lista de documentos y las rutas de acceso que se supone que los acceden. |
select label from llx_ecm_directories; |
| label |
| Documents annuels |
|
La tabla Dolibarr llx_ecm_directories contiene la lista de algunos directorios, aquellos que son creados por los usuarios en el espacio GED. |
file_exists, transformada por docDB en file_exists_Bypass, la cual realiza la consulta select rowid from llx_doc_data where path_name='/facture/FA2304-0001/FA2304-0001.pdf'. Si la consulta tiene éxito, es decir, si el documento existe en la tabla llx_doc_data, docDB devuelve el valor true.filectime para conocer la fecha de creación de un archivo. Esto sucede de vez en cuando, pero nunca para un documento. La correspondiente función de docDB filectime_Bypass simplemente llama a PHP y devuelve el resultado obtenido por PHP a Dolibarr.filectime_Bypass. Esto implicaría verificar si el archivo en cuestión es un documento (if ($useByPass && doc_in_db($filename))) y utilizar la consulta SQL adecuada en ese caso. Las funciones de docDB son relativamente simples y su uso y extensión están al alcance de un programador PHP con experiencia razonable.docDBmigrateScripts.py en la variable KEYWORDS_FOUND_16.filebypass.php después del comentario The following functions are not used in the Dolibarr documents context.
LOG_DEBUG(7).2023-05-12 15:00:02 DEBUG n.n.n.n DOC_DB ++ filesize /projet/PJ2303-0025/contrat_signé [370816]. En este ejemplo, la mención DOC_DB ++ indica la llamada a la función filesize para el documento /projet/PJ2303-0025/contrat_signé con un tamaño de 370816 devuelto como resultado.DOC_DB --, significa que los datos devueltos son los proporcionados por PHP, sin ningún procesamiento especial realizado por docDB.docDBmigrateFiles.py en Windows, es posible que se produzca un error con el mensaje fieldnotfound error. Esto indica que debe especificar la ruta de PHP con la opción --phpdir.exif_data esté activada. Para ello, puede seguir el procedimiento explicado en la guía de instalación.
COPYING para obtener más detalles.