Documentació
Descripció funcional, planificació, manual d'usuari i desplegament complet de Gestió de Monedes v1.1.20. Descripció, propòsit i entorn actual
Descripció general i propòsit
Gestió de Monedes és una aplicació web desenvolupada en PHP pur per registrar, consultar, editar, filtrar, importar i exportar una col·lecció de monedes. El propòsit principal del projecte és oferir una eina simple però completa per gestionar catàlegs numismàtics en un entorn acadèmic o personal sense dependre de frameworks externs.
El projecte resol tres necessitats concretes: mantenir una col·lecció ordenada, facilitar la consulta ràpida de dades i permetre la interoperabilitat amb altres eines mitjançant fitxers XML i CSV. La interfície està pensada perquè un usuari no tècnic pugui treballar-hi amb fluïdesa des del navegador.
| Aspecte | Detall |
|---|---|
| Nom del projecte | Gestió de Monedes |
| Versió actual | 1.1.2 |
| Objectiu | Gestionar una col·lecció de monedes amb operacions CRUD, filtres, imatges i importació/exportació. |
| Públic objectiu | Estudiants, professorat o col·leccionistes que necessiten una aplicació web senzilla i desplegable. |
| Tecnologies principals | PHP, MariaDB, HTML, CSS, JavaScript i Apache/Nginx. |
| Aplicació desplegada | https://fmehmood.cat/gestio_monedes |
| Manual wiki | Manual d'usuari de Gestió Monedes |
| Manual PDF | manual_usuari_gestio_monedes.pdf |
| Manual DOCX | manual_usuari_gestio_monedes.docx |
Visió general del sistema
flowchart TD
APP["App principal\nGestió de Monedes"]
CMS["CMS\nWordPress · MediaWiki · Joomla"]
DB[("MariaDB")]
FD[/"XML / CSV"/]
APP -->|"PDO"| DB
CMS -->|"PDO"| DB
APP -.->|"Exporta"| FD
CMS -.->|"Importa / exporta"| FD
Diagrama de propòsit i abast
flowchart TD
U(["Usuari/ària"])
F["CRUD · filtres · imatges\nimportació i exportació"]
APP["Gestió de Monedes"]
BD[("MariaDB")]
U --> F
F --> APP
APP -->|PDO| BD
Entorn actual
| Element | Valor actual |
|---|---|
| URL base | https://fmehmood.cat/gestio_monedes |
| Directori desplegat | /var/www/html/gestio_monedes |
| Base de dades | gestio_monedes |
| Usuari d'aplicació | gestio_monedes_app |
| Uploads | /var/www/html/gestio_monedes/uploads/ |
| Changelog | CHANGELOG.md |
Millores aplicades a la revisió general
- Configuració central més robusta: APP_URL auto-detectada, suport per variables d'entorn i mode debug controlat.
- Sessió i CSRF desacoblats de les vistes mitjançant helpers globals reutilitzables.
- Validació d'imatges més estricta amb MIME real, comprovació d'imatge vàlida i protecció automàtica del directori
uploads/. - Correcció del problema d'imatges òrfenes quan una validació o una escriptura a BD fallava després de la pujada.
- Edició millorada: ara es pot eliminar la imatge actual sense haver de pujar-ne una de nova.
- Importació/exportació reforçada: validació de mida/extensió/MIME, XML amb
LIBXML_NONET, CSV amb capçalera validada i exportacions protegides amb CSRF. - Millora d'UX al formulari: drag&drop real, previsualització coherent i missatges més ajustats a la configuració real.
- Redisseny visual complet: paleta més clara, contrast més net, superfícies més llegibles i coherència entre targetes, formularis i navegació.
- Documentació refeta visualment: llistes amb marques, espaiat corregit, blocs de codi llegibles i contingut alineat amb el desplegament real.
1. Planificació del sistema
Gestió de Monedes és una aplicació web desenvolupada en PHP pur (sense frameworks) que permet gestionar una col·lecció de monedes de curs legal, tant actuals com històriques. Utilitza MariaDB com a sistema de gestió de base de dades relacional i segueix el patró arquitectònic MVC (Model-Vista-Controlador).
Fases de planificació del projecte
La planificació s'ha estructurat en fases petites i acumulatives per garantir un resultat funcional des de les primeres iteracions i poder ampliar el projecte amb millores sense reescriure la base.
flowchart TD
F1["Fase 1\nAnàlisi del problema"] --> F2["Fase 2\nModel de dades"]
F2 --> F3["Fase 3\nDesenvolupament CRUD"]
F3 --> F4["Fase 4\nFuncionalitats avançades"]
F4 --> F5["Fase 5\nDesplegament i documentació"]
style F1 fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
style F2 fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
style F3 fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
style F4 fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
style F5 fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
Arquitectura MVC
El projecte està organitzat en tres capes ben diferenciades:
flowchart TB
V1["Vistes\nheader · llistat · formulari · detall"]
C1["Controladors\nindex.php · MonedaController · ImportExportController"]
M1["Models\nMoneda.php · GestorImatge.php"]
BD[("MariaDB\ngestio_monedes · taula monedes")]
V1 <-->|"HTML renderitzat"| C1
C1 <-->|"Crida al model"| M1
M1 <-->|"PDO"| BD
Flux de dades
flowchart TD
HTTP(["Petició HTTP GET/POST"])
Router["index.php · enrutador"]
ACCIO["Acció seleccionada\ncrear · editar · veure · eliminar · llistat"]
M["Moneda + GestorImatge"]
BD[("MariaDB\ntaula monedes")]
V["Vista HTML"]
HTTP --> Router
Router --> ACCIO
ACCIO --> M
M -->|"PDO singleton"| BD
M --> V
V --> Res(["Resposta al navegador"])
Esquema de base de dades
La base de dades consta d'una taula principal normalitzada:
| Camp | Tipus | Nul·lable | Descripció |
|---|---|---|---|
id | INT UNSIGNED PK AI | No | Identificador únic autoincremental |
nom | VARCHAR(150) | No | Nom oficial de la moneda |
pais | VARCHAR(100) | No | País o territori emissor |
valor | DECIMAL(15,4) | No | Valor facial o numismàtic |
any_emissio | SMALLINT | No | Any d'emissió (negatiu = a.C.) |
descripcio | TEXT | Sí | Descripció detallada |
imatge | VARCHAR(255) | Sí | Nom del fitxer d'imatge |
creat_el | DATETIME | No | Data de creació (automàtica) |
actualitzat | DATETIME | No | Data d'última actualització |
Índexs creats per optimitzar les consultes:
idx_nom— Cerca per nomidx_pais— Filtre per paísidx_any_emissio— Filtre per anyidx_valor— Filtre per valor
2. Manual d'usuari
Aquesta secció explica com fer servir l'aplicació des del navegador i actua com a manual d'usuari web del projecte. A més, el mateix manual també s'ha publicat en format wiki a MediaWiki i en formats PDF i DOCX descarregables.
2.0 Manual en format wiki, PDF i DOCX
| Recurs | Enllaç | Finalitat |
|---|---|---|
| Manual wiki | Manual d'usuari de Gestió Monedes | Versió navegable dins de MediaWiki, estructurada com a pàgina de consulta ràpida. |
| Manual PDF | manual_usuari_gestio_monedes.pdf | Versió imprimible i descarregable del manual per lliurament o consulta fora de línia. |
| Manual DOCX | manual_usuari_gestio_monedes.docx | Versió editable en format Word, generada a partir de la mateixa font documental que el PDF i la wiki. |
| Font del manual | manual_usuari_gestio_monedes.md | Text base utilitzat per generar PDF, DOCX i la versió wiki del manual. |
2.1 Gestió de monedes (CRUD)
Afegir una nova moneda
- Fes clic a «Nova moneda» a la barra de navegació superior o al botó del llistat.
- Omple els camps del formulari:
- Nom (obligatori): nom oficial o popular (ex: «Euro», «Pesseta», «Denari»).
- País (obligatori): territori emissor (ex: «Espanya», «Unió Europea»).
- Valor (obligatori): valor facial o numismàtic en format numèric (ex: 1.00, 0.50).
- Any (obligatori): any d'emissió. Per anys a.C., utilitza valors negatius (ex: -264).
- Descripció (opcional): informació addicional sobre la moneda.
- Imatge (opcional): foto de la moneda (JPG, PNG, GIF o WebP, màx. 5 MB).
- Fes clic a «Crear moneda».
- L'aplicació mostrarà un missatge de confirmació i tornarà al llistat.
Consultar i veure monedes
La pàgina principal mostra totes les monedes en format de targetes. Pots:
- Fer clic sobre la imatge o el nom per veure el detall complet.
- Ordenar el llistat fent clic a Nom, Any o Valor.
- Navegar per les pàgines si la col·lecció té més de 12 elements.
Editar una moneda
- A la targeta de la moneda, fes clic al botó «Editar».
- Modifica els camps que vulguis. Si no selecciones una nova imatge, la imatge actual es conserva.
- Fes clic a «Desar canvis».
Eliminar una moneda
- Fes clic al botó «Eliminar» (vermell) a la targeta o a la vista de detall.
- Apareixerà una finestra de confirmació. Revisa el nom de la moneda.
- Fes clic a «Eliminar» per confirmar, o «Cancel·lar» per abortar.
- ⚠️ Aquesta acció és permanent i elimina també la imatge del servidor.
2.2 Cerca i filtres
El panell de filtres es troba a la part superior del llistat. Pots combinar qualsevol dels filtres disponibles:
| Filtre | Descripció | Exemple |
|---|---|---|
| Nom | Cerca per coincidència parcial al nom | Euro → troba «Euro», «Euroasian»… |
| País | Cerca per coincidència parcial al país | Esp → troba «Espanya», «Esparta»… |
| Any emissió | Any exacte d'emissió | 1999 o -264 |
| Valor mínim | Filtra monedes amb valor ≥ al valor indicat | 0.50 |
| Valor màxim | Filtra monedes amb valor ≤ al valor indicat | 100 |
Per esborrar tots els filtres, fes clic al botó × que apareix quan hi ha filtres actius, o al link «Mostra-les totes».
2.3 Gestió d'imatges
- Formats admesos: JPG, JPEG, PNG, GIF, WebP.
- Mida màxima: 5 MB.
- Pots arrossegar la imatge directament sobre la zona de pujada (drag & drop).
- Es mostra una previsualització en temps real abans de desar.
- Les imatges s'emmagatzemen al directori
uploads/del servidor. - En eliminar una moneda, la seva imatge s'elimina automàticament del servidor.
2.4 Importació i Exportació
Exportar (XML i CSV)
- Ves a «Import/Export» a la navegació superior.
- Fes clic a «Descarregar XML» o «Descarregar CSV».
- El navegador descarregarà el fitxer automàticament amb el nom
monedes_YYYYMMDD_HHMMSS.xml/csv.
Importar XML
- Prepara el fitxer XML amb l'estructura correcta (mostrada a la pàgina).
- Selecciona el fitxer i fes clic a «Importar des de XML».
- L'aplicació processarà el fitxer i mostrarà quantes monedes s'han importat.
Importar CSV
- Prepara el fitxer CSV amb la capçalera:
nom;país;valor;any emissió;descripció. - Selecciona el fitxer i fes clic a «Importar des de CSV».
- El sistema detecta automàticament el separador (punt i coma o coma).
Compatibilitat
WordPress MediaWiki Joomla
- WordPress: l'XML és importable via plugins com WP All Import.
- Joomla: estructura compatible amb l'importador de continguts.
- MediaWiki: l'XML es pot processar amb bots per crear/actualitzar articles.
3. Guia d'instal·lació, configuració i dependències
3.1 Requisits del sistema
| Component | Versió mínima | Recomanada |
|---|---|---|
| PHP | 8.0 | 8.2 o superior |
| MariaDB | 10.5 | 10.11 o superior |
| Servidor web | Apache 2.4 / Nginx 1.18 | Apache 2.4+ |
| Extensions PHP | pdo, pdo_mysql, fileinfo, mbstring | — |
| Sistemes operatius | Linux, macOS, Windows (XAMPP/WAMP) | Ubuntu 22.04 LTS |
3.2 Dependències necessàries i com resoldre-les
Per desplegar l'aplicació cal disposar d'un entorn web PHP amb connexió a MariaDB i amb les extensions adequades. La taula següent resumeix les dependències mínimes, el paquet habitual i la forma de verificar-les.
| Dependència | Paquet habitual | Comprovació | Si falta |
|---|---|---|---|
| Servidor web | apache2 o nginx |
systemctl status apache2 |
sudo apt install apache2 -y |
| Motor PHP | php i libapache2-mod-php o PHP-FPM |
php -v |
sudo apt install php libapache2-mod-php -y |
| PDO MySQL | php-mysql |
php -m | grep pdo_mysql |
sudo apt install php-mysql -y |
| Multibyte strings | php-mbstring |
php -m | grep mbstring |
sudo apt install php-mbstring -y |
| XML | php-xml |
php -m | grep -E "dom|simplexml|xml" |
sudo apt install php-xml -y |
| Fileinfo | php-fileinfo o extensió integrada |
php -m | grep fileinfo |
sudo apt install php-fileinfo -y |
| MariaDB | mariadb-server |
systemctl status mariadb |
sudo apt install mariadb-server mariadb-client -y |
Després d'instal·lar o corregir dependències, reinicia el servidor web perquè PHP carregui els mòduls nous i comprova novament les ordres de verificació.
3.3 Instal·lació de MariaDB
Instal·lar MariaDB (Ubuntu/Debian)
sudo apt update
sudo apt install mariadb-server mariadb-client -y
sudo systemctl start mariadb
sudo systemctl enable mariadb
Assegurar la instal·lació
sudo mysql_secure_installation
# Respon les preguntes:
# - Canviar contrasenya de root: s (o n si és local)
# - Eliminar usuaris anònims: s
# - Desactivar login remot de root: s
# - Eliminar base de dades de prova: s
# - Recarregar privilegis: s
Verificar la connexió
mysql -u root -p
# Introdueix la contrasenya
# Ha de mostrar el prompt: MariaDB [(none)]>
exit;
3.4 Configuració de PHP
Instal·lar PHP i les extensions necessàries
sudo apt install php php-mysql php-mbstring php-fileinfo php-xml -y
# Verificar la versió
php -v
Configurar php.ini per a la pujada d'imatges
# Localitzar el fitxer php.ini
php --ini | grep "Loaded Configuration"
# Editar els valors:
file_uploads = On
upload_max_filesize = 10M
post_max_size = 12M
max_execution_time = 60
Reinicia el servidor web després de modificar php.ini:
sudo systemctl restart apache2
# o
sudo systemctl restart nginx
3.5 Configuració del projecte
Copiar els fitxers al servidor
# Copiar el projecte al directori web
cp -r gestio_monedes/ /var/www/html/
# o en local amb XAMPP:
cp -r gestio_monedes/ /opt/lampp/htdocs/
Configurar credencials i opcions d'entorn
// Opció A: editar config.php amb els valors necessaris
define('DB_HOST', 'localhost');
define('DB_NAME', 'gestio_monedes');
define('DB_USER', 'gestio_monedes_app');
define('DB_PASS', '********');
// APP_URL es detecta sola, però es pot sobreescriure:
export GESTIO_MONEDES_APP_URL="https://exemple.com/gestio_monedes"
// Opció B: usar variables d'entorn
export GESTIO_MONEDES_DB_HOST="localhost"
export GESTIO_MONEDES_DB_NAME="gestio_monedes"
export GESTIO_MONEDES_DB_USER="gestio_monedes_app"
export GESTIO_MONEDES_DB_PASS="********"
export GESTIO_MONEDES_APP_DEBUG="0"
Opció C: usar un fitxer privat fora del directori web:
/etc/gestio_monedes/config.local.php
Aquesta opció és la recomanada en desplegament perquè manté les credencials fora del codi públic i és la que utilitzen actualment l'aplicació principal, el plugin de WordPress, l'extensió de MediaWiki i el component de Joomla.
Crear el directori uploads amb els permisos correctes
mkdir -p /var/www/html/gestio_monedes/uploads
chmod 755 /var/www/html/gestio_monedes/uploads
chown www-data:www-data /var/www/html/gestio_monedes/uploads
Primera execució: la BD i la taula es validen automàticament
Obre el navegador i accedeix a https://fmehmood.cat/gestio_monedes/.
Si l'usuari de base de dades té permisos suficients, l'aplicació crearà
automàticament la base de dades gestio_monedes i la taula
monedes si no existeixen. Si no pot crear la BD, intentarà
connectar-se directament a una ja existent.
No cal executar cap script SQL manualment si l'entorn ja està preparat.
3.6 Resolució d'errors comuns
| Error | Causa probable | Solució |
|---|---|---|
| Error de connexió a la base de dades | Credencials incorrectes o MariaDB aturat | Verifica DB_USER/DB_PASS a config.php i que el servei mariadb estigui actiu (sudo systemctl status mariadb) |
| No s'ha pogut desar la imatge | Permisos incorrectes al directori uploads/ | Executa chmod 755 uploads/ i chown www-data uploads/ |
| Pàgina en blanc | Error de PHP ocult | Activa temporalment GESTIO_MONEDES_APP_DEBUG=1 o revisa els logs (/var/log/apache2/error.log) |
| Enllaços trencats en entorns especials | La detecció automàtica de la URL no encaixa amb el teu proxy o vhost | Defineix GESTIO_MONEDES_APP_URL amb la URL pública exacta de l'aplicació |
| Falta una extensió de PHP | No estan carregats pdo_mysql, mbstring, xml o fileinfo |
Instal·la el paquet corresponent amb apt, reinicia Apache/Nginx i verifica-ho amb php -m |
| Error 413 (Request Entity Too Large) | Imatge massa gran per al servidor web | Augmenta client_max_body_size a Nginx o LimitRequestBody a Apache |
| Codificació incorrecta dels caràcters | Charset de la BD incorrecte | La BD es crea amb utf8mb4. Si ja existia, executa: ALTER DATABASE gestio_monedes CHARACTER SET utf8mb4 |
Comandaments útils de verificació
# Verificar que les extensions PHP estan actives
php -m | grep -E "pdo|mysql|mbstring|fileinfo"
# Comprovar que MariaDB escolta al port correcte
sudo netstat -tlnp | grep 3306
# Verificar els logs de PHP
tail -f /var/log/php_errors.log
# Testar la connexió a la BD directament amb l'usuari de l'aplicació
MYSQL_PWD='********' mariadb -u gestio_monedes_app -e "SHOW DATABASES LIKE 'gestio_monedes';"
# Comprovar sintaxi dels fitxers PHP principals
find /var/www/html/gestio_monedes -name '*.php' -print0 | xargs -0 -n1 php -l
4. Extensió per a WordPress
4.1 Objectiu de l'extensió
El projecte incorpora una extensió específica per a WordPress anomenada Gestio Monedes WP. Aquesta extensió permet reutilitzar el catàleg de monedes dins d'un lloc WordPress sense reescriure la lògica de negoci de l'aplicació principal.
La seva funció és actuar com a connector entre WordPress i les dades del projecte, de manera que el catàleg es pugui mostrar en una pàgina o entrada i es pugui alimentar des de diferents fonts: MariaDB, CSV o XML. La versió actual també reforça l'experiència d'ús amb diagnòstic visual de les fonts, controls de consulta més rics i un frontend molt més alineat amb la resta del projecte, amb amplada ampla dins del tema i una capçalera introductòria centrada perquè el catàleg no quedi encaixonat visualment.
| Element | Detall |
|---|---|
| Nom del plugin | Gestio Monedes WP |
| Ubicació dins del projecte | /var/www/html/gestio_monedes/wordpress-plugin/gestio-monedes-wp |
| ZIP instal·lable | gestio-monedes-wp.zip |
| Documentació del plugin | README.md |
| Shortcode principal | [gestio_monedes_llistat] |
4.2 Funcionalitats implementades
- Llegeix informació de la base de dades MariaDB del projecte.
- Llegeix informació des d'un arxiu CSV extern.
- Llegeix informació des d'un arxiu XML extern.
- Permet inserir noves monedes a MariaDB, CSV o XML des del panell d'administració de WordPress.
- Mostra un diagnòstic independent per a cada font de dades: estat, lectura, escriptura i nombre de registres disponibles.
- Mostra les imatges de les monedes al frontend del lloc WordPress.
- Permet filtrar el catàleg per nom, país, any d'emissió i rang de valor.
- Permet ordenar el catàleg per nom, valor, any o darrera actualització, i definir un límit visible.
- Inclou un filtre específic per mostrar només les monedes que tenen imatge.
- Permet canviar la font de dades directament des del frontend quan el shortcode no fixa una font concreta.
- Mostra una vista prèvia enriquida de la font de dades activa a l'administració.
flowchart TD
WP["WordPress"]
Admin["Panell Admin\nResum · Diagnòstic · Configurar · Inserir · Previsualitzar"]
SC["Shortcode\ngestio_monedes_llistat\nHero · Diagnòstic · Filtres · Resultats"]
SM["GMWP_Source_Manager"]
DB[("MariaDB")]
CSV[/"CSV"/]
XML[/"XML"/]
WP --> Admin
WP --> SC
Admin --> SM
SC --> SM
SM --> DB
SM --> CSV
SM --> XML
4.3 Instal·lació i configuració a WordPress
Instal·lar el plugin
# Opció A: copiar la carpeta manualment
cp -r /var/www/html/gestio_monedes/wordpress-plugin/gestio-monedes-wp /ruta/al/wordpress/wp-content/plugins/
# Opció B: pujar el ZIP des de l'administració de WordPress
/var/www/html/gestio_monedes/wordpress-plugin/gestio-monedes-wp.zip
Activar-lo i revisar la configuració
Un cop activat, apareix una nova entrada de menú anomenada Gestió Monedes WP. Des d'allà es configura la font de dades per defecte, la connexió MariaDB, les rutes dels fitxers CSV/XML i les opcions d'imatges. El panell també mostra el diagnòstic real de les tres fonts i una vista prèvia enriquida de la font activa.
Publicar el catàleg al frontend
[gestio_monedes_llistat]
# Exemple forçant MariaDB i un títol personalitzat
[gestio_monedes_llistat source="mariadb" title="Catàleg de monedes"]
Si el shortcode no fixa una font concreta, el frontend permet canviar entre MariaDB, CSV i XML, ordenar el catàleg, limitar el nombre de resultats i filtrar només les monedes que tenen imatge.
4.4 Validació dels requisits de l'activitat
| Requisit | Com es compleix |
|---|---|
| Introduir noves dades a MariaDB, CSV o XML | El panell d'administració inclou un formulari d'inserció amb selector de destinació i ajuda contextual sobre validació, imatges i creació automàtica de fitxers. |
| Mostrar les imatges de les monedes | El shortcode mostra una targeta per moneda amb la imatge resolta per URL, ruta o placeholder i la vista prèvia d'administració reutilitza aquest mateix enfocament visual. |
| Filtrar per criteris de cerca | El frontend inclou filtres per nom, país, any d'emissió i valor mínim/màxim, a més del selector de font, l'ordenació, el límit visible i el filtre de monedes amb imatge. |
| Llegir informació de MariaDB, CSV o XML | La capa GMWP_Source_Manager encapsula la lectura de les tres fonts de dades i el plugin mostra també un diagnòstic explícit de l'estat real de MariaDB, CSV i XML. |
5. Extensió per a MediaWiki
5.1 Objectiu de l'extensió
El projecte incorpora una extensió pròpia per a MediaWiki anomenada GestioMonedes. L'objectiu és integrar el catàleg de monedes directament dins de la wiki mitjançant una pàgina especial que permet consultar, filtrar i inserir dades sense sortir de MediaWiki. La versió actual també reforça l'experiència d'ús amb una capçalera informativa, un resum ràpid de resultats, un diagnòstic visual de l'estat de cada font i controls de consulta més útils per ordenar, limitar i filtrar només les monedes que tenen imatge.
| Element | Detall |
|---|---|
| Nom de l'extensió | GestioMonedes |
| Codi font dins del projecte | /var/www/html/gestio_monedes/mediawiki-extension/GestioMonedes |
| Documentació de l'extensió | README.md |
| Pàgina especial activa | Especial:GestioMonedes |
5.2 Funcionalitats implementades
La pàgina especial Especial:GestioMonedes s'ha redissenyat perquè la integració dins de la wiki no sigui només funcional, sinó també agradable i coherent amb la resta del projecte.
- Llegeix dades de monedes des de MariaDB.
- Llegeix dades des d'un arxiu CSV.
- Llegeix dades des d'un arxiu XML.
- Permet inserir noves monedes a MariaDB, CSV o XML des d'una pàgina especial de la wiki.
- Mostra un diagnòstic independent per a cada font de dades: estat, lectura, escriptura i nombre de registres disponibles.
- Mostra les imatges de les monedes amb targetes compactes, valor destacat i metadades visibles.
- Permet filtrar per nom, país, any d'emissió i valor mínim/màxim.
- Permet ordenar els resultats per nom, valor, any o darrera actualització, i definir un límit visible.
- Inclou un filtre específic per mostrar només monedes amb imatge.
- Mostra els filtres actius en forma de pastilles perquè la cerca sigui més fàcil d'interpretar.
- Inclou un panell resum amb la font activa, el total de resultats i el nombre de països representats.
- Incorpora un bloc d'ajuda contextual al formulari d'inserció per explicar validació, imatges i creació automàtica de CSV/XML.
- Disposa d'un estat buit específic quan no hi ha coincidències, evitant una sortida visual pobra o confusa.
| Bloc visual | Funció dins de la pàgina especial |
|---|---|
| Capçalera introductòria | Resumeix què fa l'extensió i mostra d'un cop d'ull les fonts de dades disponibles. |
| Panell resum | Mostra la font activa, el nombre de resultats visibles, quantes fonts estan operatives i el volum total de registres de la font seleccionada. |
| Diagnòstic de fonts | Presenta una targeta per a MariaDB, CSV i XML amb l'estat real de la font, si es pot llegir, si s'hi pot escriure i quants registres conté. |
| Panell de filtres | Agrupa tots els criteris de cerca, l'ordenació, el límit visible i el filtre de monedes amb imatge, reflectint visualment els filtres actius. |
| Panell d'inserció | Permet crear noves monedes indicant la destinació exacta: MariaDB, CSV o XML, i afegeix ajuda contextual per evitar errors d'ús. |
| Targetes de resultat | Mostren imatge, valor, país, any, identificador, descripció i darrera actualització de forma homogènia i llegible. |
| Estat buit | Substitueix la graella de resultats per un missatge orientatiu quan la cerca no retorna monedes. |
flowchart TD
MW["MediaWiki"]
SP["Especial:GestioMonedes\nHero · Resum · Diagnòstic · Filtres · Inserció · Resultats"]
SM["GestioMonedesSourceManager"]
DB[("MariaDB")]
CSV[/"CSV"/]
XML[/"XML"/]
MW --> SP
SP --> SM
SM <--> DB
SM <--> CSV
SM <--> XML
5.3 Instal·lació i configuració
L'extensió es carrega des de LocalSettings.php i reutilitza la configuració privada de
/etc/gestio_monedes/config.local.php per obtenir la connexió MariaDB i les rutes dels fitxers CSV/XML.
wfLoadExtension( 'GestioMonedes' );
$wgGestioMonedesDefaultSource = 'mariadb';
En aquest desplegament l'extensió activa està enllaçada a la instal·lació de MediaWiki i queda disponible a: https://fmehmood.cat/mediawiki/index.php/Especial:GestioMonedes
5.4 Validació dels requisits de l'activitat
La implementació actual cobreix tant la part funcional com la presentació dins de MediaWiki. El flux de treball queda resolt des d'una única pàgina especial, sense dependències manuals ni sortides textuals poc clares.
| Requisit | Com es compleix |
|---|---|
| Introduir noves dades a MariaDB, CSV o XML | La pàgina especial incorpora un formulari d'inserció amb selector de destinació i ajuda contextual per informar sobre validació, imatges i creació de fitxers. |
| Mostrar les imatges de les monedes | Els resultats es mostren en targetes amb imatge resolta des de URL, ruta o placeholder i amb mida homogènia. |
| Filtrar les dades per criteris de cerca | La pàgina especial inclou filtres per nom, país, any d'emissió i rang de valor, més el filtre de monedes amb imatge, l'ordenació i el límit visible, a més d'indicar visualment quins filtres estan actius. |
| Llegir la informació de MariaDB, CSV o XML | La classe GestioMonedesSourceManager encapsula la lectura de les tres fonts i la pàgina especial mostra tant un resum contextual com un diagnòstic independent de l'estat real de MariaDB, CSV i XML. |
6. Extensió per a Joomla
6.1 Objectiu de l'extensió
El projecte incorpora també una extensió pròpia per a Joomla en forma de component instal·lable: com_gestiomonedes. Aquesta implementació segueix la mateixa idea funcional que les integracions de WordPress i MediaWiki, però adaptada al model de frontend/backend propi de Joomla.
L'objectiu és disposar d'una extensió real que permeti llegir, filtrar, mostrar imatges i introduir noves dades sobre MariaDB, CSV i XML des d'un entorn Joomla completament desplegat.
A nivell visual, la vista pública actual ja no depèn del layout per defecte de Cassiopeia: utilitza una capçalera pròpia, una amplada més coherent amb la resta del projecte i una composició centrada perquè la integració no es vegi com un mòdul genèric incrustat.
| Element | Detall |
|---|---|
| Nom del component | com_gestiomonedes |
| Codi font dins del projecte | /var/www/html/gestio_monedes/joomla-extension/com_gestiomonedes |
| ZIP instal·lable | com_gestiomonedes.zip |
| Documentació de l'extensió | README.md |
| Frontend actiu | https://fmehmood.cat/joomla/index.php/gestio-monedes-joomla |
| Administració del component | Component Gestió Monedes Joomla |
6.2 Funcionalitats implementades
- Llegeix dades de monedes des de MariaDB.
- Llegeix dades des d'un arxiu CSV específic de Joomla.
- Llegeix dades des d'un arxiu XML específic de Joomla.
- Permet inserir noves monedes a MariaDB, CSV o XML des del backend del component.
- Mostra les imatges de les monedes tant al frontend com a la vista prèvia d'administració.
- Permet filtrar el catàleg per nom, país, any d'emissió i rang de valor.
- Publica una pàgina real del menú principal de Joomla per consultar el catàleg.
flowchart TD
J["Joomla"]
FE["Frontend\nCatàleg · Filtres · Imatges"]
BE["Backend Admin\nConfiguració · Inserció · Vista prèvia"]
SM["SourceManager"]
DB[("MariaDB")]
CSV[/"CSV"/]
XML[/"XML"/]
J --> FE
J --> BE
FE & BE --> SM
SM <--> DB
SM <--> CSV
SM <--> XML
6.3 Instal·lació i configuració
El component es distribueix com a paquet ZIP instal·lable i es pot desplegar per línia d'ordres
amb el CLI oficial de Joomla. Reutilitza la configuració privada de
/etc/gestio_monedes/config.local.php i, a més, té fonts pròpies per a CSV i XML:
/var/www/html/gestio_monedes/data/monedes_joomla.csv/var/www/html/gestio_monedes/data/monedes_joomla.xml
cd /var/www/html/joomla
php cli/joomla.php extension:install --path=/var/www/html/gestio_monedes/joomla-extension/com_gestiomonedes.zip
En aquest desplegament, el component ha quedat instal·lat sobre una instància Joomla real i s'ha creat també un element de menú públic a Main Menu perquè la pàgina quedi visible directament des del lloc.
6.4 Validació dels requisits de l'activitat
| Requisit | Com es compleix |
|---|---|
| Introduir noves dades a MariaDB, CSV o XML | El backend del component incorpora un formulari d'inserció amb selector de destinació. |
| Mostrar les imatges de les monedes | El frontend mostra targetes amb imatge i el backend mostra miniatures a la vista prèvia. |
| Filtrar les dades per criteris de cerca | La vista pública inclou filtres per nom, país, any d'emissió i valor mínim/màxim. |
| Llegir la informació de MariaDB, CSV o XML | La classe SourceManager encapsula la lectura i la inserció de les tres fonts. |