Destacada

La construcción del proyecto Alixar

Básicamente, Alixar es un fork de refactorización del ERP/CRM gratuíto Dolibarr, utilizando el patrón de diseño MVC y mejoras técnicas para hacerlo más sostenible.

El objetivo del proyecto, es utilizar técnicas modernas de programación, para refactorizar completamente el proyecto Dolibarr, cuyo código usa técnicas obsoletas, y convertirlo en una aplicación moderna y sostenible.

En este blog, se irá explicando paso a paso, los procesos (a veces, muy, muy largos), que habrá que dar para conseguir dicho objetivo.

La primera tarea, y una de las más largas y complicadas, consiste en ir analizando el código y documentando (en mi pobre inglés), prácticamente sin realizar ningún cambio, adaptando la estructura de los directorios, y prepararlo todo para tener un único punto de entrada en el index.php del directorio htdocs.

Integración con Alxarafe

Los únicos cambios que se van a realizar durante este proceso, es la eliminación del código que ya está desarrollado en Alxarafe, que simplificará la posterior actualización; entre ellos, el motor de base de datos, la gestión del fichero de configuración, la integración con un gestor de plantilla y el traductor.

Acceso al código fuente de Alixar

Puede encontrar el detalle de todos los cambios en el repositorio de GitHub del proyecto:

https://github.com/rsanjoseo/alixar

Si lo desea, puede contribuir de distintas formas:

Si detecta algún error, sugerencia, o petición de mejora, puede plantear un issue en GitHub.

https://github.com/rsanjoseo/alixar/issues

Si desea participar en el desarrollo del código, puede crear una rama y realizar un pull request sobre el repositorio.

Eliminación de las variables globales de Dolibarr

La verdad es que tratar de crear una primera versión MVC de Dolibarr, manteniendo más o menos el código actual, se está convirtiendo en una tarea bastante complicada.

En estos momentos, el código está totalmente destrozado. Sencillamente, no funciona. Es normal, no me preocupa en absoluto, ya que se están realizando cambios muy profundos en la estructura de la aplicación.

Establecer un único punto de entrada

En este punto, ya hemos conseguido establecer un único punto de entrada, accediendo exclusivamente a través de htdocs/index.php, en lugar de entrar desde cada archivo php.

El código a ejecutar, viene establecido por las variables GET module y controller.

Se ha creado una carpeta Dolibarr dónde estará el código original, con muy pocos cambios, organizado en clases y librerías. Las librerías estarán en una clase pasando las funciones originales, a ser métodos de dicha clase, que serán llamados de forma estática. Organizarlo de esta forma, nos va a facilitar el uso de Namespaces.

La clase DolibarrGlobals

Al organizar el código, una de las primeras cosas que tenemos que hacer, es eliminar las variables globales. Para conseguir ese objetivo, todas las variables que sean necesarias en distintos puntos de la aplicación, estarán definidas en la clase DolibarrGlobals.

Es necesario poder cargar una variable global desde cualquier punto, y que además, la variable sea la misma instancia.

Para ello, se crean dichas variables como variables estáticas dentro de la clase DolibarrGlobals, el constructor las asignará en el orden correcto, pues pueden existir dependencias entre ellas, y posteriormente, tendremos un método getNombreDeLaVariable para cada una de ellas, que nos retornará la instancia que deseamos tener.

Así por ejemplo getLangs() nos retornará una instancia del traductor. Allí dónde haga falta usar el traductor, podremos usar DolibarrGlobals::getLangs() para obtener una instancia del mismo:

$langs = DolibarrGlobals::getLangs();

No me he preocupado aún de mejorar el código. De momento, estoy reorganizándolo. A medio plazo, toda clase que comience con Dolibarr será eliminada y sutituída por código totalmente nuevo.