Allez, on continue. Donc pour ajouter des champs à la table, cela ne devrait pas trop poser de problèmes.
en suivant l'exemple Skeleton. Je vais peut être même les ajouter directement à partir de phpmyAdmin. Par contre je me pose des questions sur le nom de la table elle même ...
- j'ai trouvé dans le fichier piwigo-structures-mysql.sql le nom 'piwigo_categories' pour la table qui m'intéresse. Pourtant tous les accès à cette table dans les fichiers php semblent se faire par le nom de table 'CATEGORIES_TABLE'. Dans phpmyAdmin, la table s'apelle phpwebgallery_categories (du nom de l'ancien piwigo) ..... Quelque chose m’échappe là ....
- second point: je ne trouve pas où se trouve la requête pour updater cette table après avoir soumis les modifications depuis le formulaire de cat_modify.tpl
Merci encore pour vos réponses !
Hors ligne
quand on installe Piwigo, le programme charge le contenu du fichier SQL, modifie les noms des tables selon le prefixe qu'on a réglé ("phpmyadmin_" pour vous) puis execute les requetes
puisque le nom réel des tables dépend de chacun les valeurs sont stockée dans les constantes *_TABLE
se sont bien des constantes PHP, et c'est leur valeur qui est le nom de la table
donc dans vos codes utilisez CATEGORIES_TABLE et rien d'autre (et ça s'utilise comme une variable normale sauf qu'on ne peut pas la modifier)
--
ben c'est dans admin/cat_modify.php
Hors ligne
Ok, j'i été un peu bête de ne pas penser à regarder dans admin/cat_modify.php ...
Du coup nouvelle question ...
Si je modifie le formulaire d'entrée pour les categories, et ajoute des champs à CATEGORIES_TABLE,
je vais devoir modifier cat_modify.php, en particulier entre entre les lignes 115-120
$data = array( 'id' => $_GET['cat_id'], 'name' => @$_POST['name'], 'comment' => $conf['allow_html_descriptions'] ? @$_POST['comment'] : strip_tags(@$_POST['comment']), );
En faisant cela, je me rend incompatible avec les futures évolutions de piwigo, à moins de faire à chaque upgrade de piwigo un merge entre mes fichiers et les votres. Cela n'est pas vraiment le but d'un plugin ...
Il y a t'il une autre solution ?
Une autre solution, que je souhaiterai éviter, serait d'avoir un forumlaire séparé pour ces propriétés de catégorie supplémentaires, avec une table séparée dans la base de données. Mais si je pouvais éviter cela ...
Hors ligne
c'est pour ça qu'il y a les triggers
vous vous mettez sur loc_end_cat_modify et faites vos traitements quand $_POST est plein
Piwigo lui va ignorer vos champs mais vous pourrez les utiliser plus tard
ça fait une requete SQL de plus mais on s'en fou
Hors ligne
Je m'y remet un peu après une petite pause. Je dois faire quelque chose de faux pour le moment. Je tente de récupérer la variable $_POST avec un trigger ... mais elle est toujours vide.
J'ai un peu regardé dans le plugin META et l'ai un peu instrumentalisé avec des printf, chez eux ca marche sans problème.
Pourtant ma fonction est on ne peux plus simple pour le moment:
add_event_handler('loc_end_cat_modify', 'get_post_data'); function get_post_data(){ if (isset($_POST['submit'])){ printf("Get POST!"); } else { printf("Post empty!"); } }
Dans tous les cas, et quoique je fasse $_POST est vide ....
Hors ligne
Bonjour
le sumit il viens d'ou ?
tu as rajouter un bouton ou tu veux utiliser celui de la page ?
Hors ligne
Tu insères tes données dans le form du sumit de la page ?
Hors ligne
Oui je comtais faire comme ca. Je peux faire autrement si cela pose un problème. Mais dans mon cas actuel, j'ai tout supprimé, plus de prefiltre, je cherche juste à recupérer la variable $_POST du submit ... mais j'ai l'impression que cela se passe ailleurs ...
Hors ligne
dans cat_modify.php quand le formulaire est soumis (test sur $_POST['submit']) la page est redirigée (vers elle meme) après la sauvegarde
donc vous ne voyez jamais votre printf("Get POST!");
mettez un die; à la place et vous verrez que ça marche
ensuite mettez votre code de traitement à la place de printf("Get POST!"); et ça sera bon
Hors ligne
Effectivement, maintenant ça fonctionne. En fait ca fonctionnait depuis le début (j'avais essayé avec loc_begin au début), mais comme je ne voyais pas mon printf, je pensais que cela ne marchait pas.
Par contre je ne comprend pas pourquoi avec le loc_end je peux récuperer les $_POST des autres bouttons submit?
Hors ligne
parce que Piwigo se base sur le nom du bouton cliqué, et s'il ne le connait pas il ne traite pas le formulaire
cela dit c'est une mauvaise technique parce que si on presse Entrée en ayant le focus sur le nom de l'album ça ne sauvegarde pas, mais pour l'instant ça marche comme ça
Hors ligne