4. Modificaciones a las fuentes

Aunque modificar las fuentes de SIVeL, como con cualquier otro proyecto requiere previo estudio de estas, algunos detalles facilitarán la labor: se emplean estándares de programación de Pear; se cuenta con pruebas de regresión que facilitan la detección de errores que podrían introducirse al modificar las fuentes; se emplean librerías estándares de Pear (resaltamos DB_DataObject_FormBuilder).

4.1. Estándares de programación

En cuanto a base de datos se emplea SQL estándar. Para las partes en PHP se emplean estándares de PEAR (ver [pearcs]) que se verifican parcialmente con la herramienta phpcs del paquete PHP_CodeSniffer (ver [phpcs]), la cual una vez instalada puede ejecutarse con:

herram/estandares.sh
			

Los errores quedarán en el archivo /tmp/e

4.2. Documentación técnica

Siguiendo el estándar adoptado para PHP, las fuentes incluyen comentarios que permiten generar documentación técnica con la herramienta phpdoc (ver [phpdoc]). Se genera con:

sudo pear install PhpDocumentor
make tecdoc
		    

El resultado queda en el directorio tdoc o puede consultarse en http://sivel.sf.net/1.0//tec/.

4.3. Base de Datos

En cuanto a base de datos la estructura en SQL (ver [sqlpost]) está en el archivo estructura.sql y los datos iniciales en archivos con nombres de la forma datos-*.sql. A continuación se incluye un grafo extaido de estructura.sql y generado con GraphViz (ver [graphviz]).

Estructura de la Base de Datos

4.4. Interfaz

La interfaz se desarrolló en PHP (ver [php]) empleando diversas librerías de Pear (ver [pear]), entre las que destacamos:

DB_DataObject_FormBuilder

Que permite generar formularios semiautomáticamente a partir de objetos DB_DataObject empleando algún sistema de presentación como HTML_QuickForm (ver [dbdataobjectformbuilder]).

DB_DataObject

Que abstrae una base de datos SQL, identificando tablas con clases y registros con objetos (ver [dbdataobject]).

Se empleo programación orientada a objetos, las clases y su jerarquía pueden verse en la documentación técnica (ver Sección 4.2, “Documentación técnica”)

4.5. Modificaciones a la ficha de captura

Modificar la ficha de captura es posiblemente la operación más compleja en las fuentes de SIVeL, pues puede requerir cambiar la estructura de la base de datos, cambiar la forma de las búsquedas, los reportes y los conteos. El diseño actual de SIVeL permite hacer varios cambios al formulario de captura con relativa facilidad así como añadir tablas básicas y que las búsquedas por Consulta Externa operen sobre nuevos datos añadidos a la ficha. Para esto tenga en cuenta:

  • El único dato indispensable para abrir un caso es la fecha. Para agregar un presunto responsable requiere una clasificación de violencia. Para agregar una víctima requiere clasificación de violencia y presunto responsable.

  • Considere nuevos datos que se pondrán y su ubicación.

  • Modifique el modelo de datos para dar espacio a nuevos datos, preferiblemente en una nueva tabla o en su defecto en una tabla existente.

Se sugiere que los cambios que deban hacerse a la base se especifiquen en SQL en un script nuevo (digamos miorganizaion.sql) que pueda ejecutarse después de crear la base típica de SIVeL (i.e procurar no modificar estructura.sql). También se sugiere no eliminar campos ni tablas de la base de datos, sino más bien no hacerlos visibles en la interfaz.

Si requiere agregar una nueva tabla tenga en cuenta:

  • Agregar definición en miorganizacion.sql y ejecutar con bin/psql.sh.

  • Agregar alfabéticamente definición de tabla y llaves en sivel.ini e integridad referencial en sivel.links.ini --en el primero los códigos resultan de la suma de:

    128 NOT NULL
    1 INTEGER
    2 VARCHAR o TEXT
    4 DATE
    8 TIME
    16 BOOLEAN
    32 LOG TEXT
    64 BLOB
    				

  • Crear archivo con datos de tabla como descendiente de DB_DataObject, el nombre debe ser el mismo de la tabla primera letra mayúscula y demás minúsculas. Esta clase deberá tener toda la información necesaria para editar información de la tabla desde el menú tablas básicas (uno simple para emplear como plantilla es Escrito_caso.php)

  • Si efectivamente la tabla agregada es una tabla básica agregar referencia en la variable tablas_basicas en el archivo aut/conf.php

Para efectuar cambios a la interfaz tener en cuenta:

  • Puede crear o modificar una pestaña, cada pestaña corresponde a un archivo de interfaz, cuyo nombre comienza con Pag (PagMemo.php es uno simple para comenzar)

  • Algunos detalles de la presentación de la información de una pestaña se determinan en las clases que corresponden a tablas, y que son descendientes de DB_DataObject. Los detalles por cuadrar los específica la librería DB_DataObject_FormBuilder. En estas mismas clases puede cuadrar otros detalles con las funciones preGenerateForm y postGenerateForm que se llaman antes y después de generar el formulario.

  • Si necesita agregar o eliminar pestañas asegure que se referencian las pestañas en el orden que se desean en la variable ficha_tabuladores de aut/conf.php. Puede verse la descripción de las funciones por definir en PagBaseSimple (ver documentación técnica) y como orden posible para probar después de hacer cambios se sugiere:

    1. Vea que la interfaz sea como la espera modificando la constructora de la clase y las funciones iniVar, nullVar, formularioAgrega y formularioValores.

    2. Verifique que se procesen los datos examinando la base de datos después de cambiarse de pestaña. Note que tras procesar cada pestaña debe llamarse la función funcionario_caso

    3. Agregue instrucciones para eliminar en las funciones eliminaDep y elimina.

    4. Agregue información para búsquedas desde Consulta Web en la función datosBusqueda.