C'est un peu le moment d'ouvrir une discussion sur le forum central. Là on n'est plus dans la discussion sur une fonctionnalité, mais sur son implémentation dans le core.
pourriez-vous tester ? [Subversion] r10157
chez moi tout fonctionne, y compris avec un site distant
pour le back-office :
- calcul des dimensions pendant l'upload
- calcul des dimensions pendant la synchro locale
- calcul des dimensions pendant le listing distant
mise à jour "progressive" :
- pour chaque image je verifie si les dimensions hd sont enregistrées, sinon j'essaye des les obtenir (c'est là que ça peut bloquer pour certains hebergeurs... mais j'ai mis un @ devant la fonction)
j'ai pris le parti de n'afficher sur la page picture.php que les dimensions HD (si elles existent) qui viennent écraser les dimensions normales.
nan désolé j'ai lu trop vite, les champs sont bien mis à jour (et il suffit de cocher la bonne case ^^)
ok j'ai trouvé : ça se fait dans les fichiers site_reader_*.php
(pour le moment je ne fais que la synchro locale, je verrais par la suite pour les sites distants)
j'ai réussi à ajouter le champ lors de l'ajout d'une image, par contre j'ai une question pour la mise à jour :
pourquoi il n'y a que les champs 'tn_ext', 'has_high', 'representative_ext' qui sont mis à jours ? pourquoi ne pas mettre à jour aussi 'filesize', 'width', 'height', 'high_filesize' ? (et donc par suite 'high_width', 'high_height')
hs : c'est quoi $conf['flip_picture_ext'] ? je ne l'ai pas trouvé dans config_defaults
Faut que je refasse des tests sur ma galerie locale car, chez moi, le champ est à NULL pour toutes les photos...
il est alimenté oui, en tout cas sur mon installation il l'est, et je ne fonctionne que par ftp
mistic100 a écrit:
par contre je bloque sur la synchronisation, je ne vois pas à quel moment la taille (octets) du fichier hd est récupérée en inscrite dans la bdd... c'est à ce moment là que je veux récupérer les dimensions
Probablement parce que la taille du fichier HD n'est pas récupérée ? Le champ en bdd existe mais est-il alimenté ? Je n'ai pas trop le temps de me pencher sur le code en ce moment mais çà va revenir ;-)
bien, j'aurais peut être une chance de faire la modif sans apprendre le [language de pLoader]
par contre je bloque sur la synchronisation, je ne vois pas à quel moment la taille (octets) du fichier hd est récupérée en inscrite dans la bdd... c'est à ce moment là que je veux récupérer les dimensions.
pour l'upload pas de problème, il y a une belle variable $high_infos avec tout ce qu'il faut ^^
mistic100 a écrit:
quand pLoader, de quelle façon ça marche pour la taille ? pLoader prépare les données et dit à Piwigo "inscrit cette valeur pour cette image" (dans ce cas je ne peux pas le faire moi-même...) ; ou il envoie l'image et Piwigo "l'analyse" ?
pLoader envoie *les* images (dans le différentes tailles TN, Web size et HD si la photo originale est plus grande que les paramètres web size) et c'est l'API de Piwigo qui traite. Enfin, si j'ai bien tout compris ;-)
Eric a écrit:
Cela ne suffira pas, à mon avis. Il faudrait stocker les valeurs de hauteur et de largeur des photos dans de nouveaux champs.
tu penses à un plugin qui voudrait réutiliser indépendamment les valeurs ? (sans avoir à faire de explode)
et de toute façon c'est plus propre ^^
quand à la mise à jour je pense effectivement qu'une lecture à la volée n'est pas la solution, c'est pourquoi avec mon code ça ne le fait la première fois, ça a l'avantage de ne pas demander beaucoup de ressources en une fois
mais ceci n'est que la première partie, et la plus facile, il faut que j'implémente ça dans la fonction de synchronisation FTP et dans la fonction d'upload
quand pLoader, de quelle façon ça marche pour la taille ? pLoader prépare les données et dit à Piwigo "inscrit cette valeur pour cette image" (dans ce cas je ne peux pas le faire moi-même...) ; ou il envoie l'image et Piwigo "l'analyse" ?
Eric a écrit:
Après, l'intérêt est aussi de mettre à jour les données sur une galerie existante soit par re-synchronisation manuelle des photos par le webmaster soit par un autre mécanisme plus automatisé et géré par Piwigo.
Ca sera certainement plus compliqué d'implémenter un tel mécanisme alors qu'une synchronisation fera tout aussi bien l'affaire. Donc le mécanisme automatique ne me semble pas important.
Bon par contre, inscrire ces informations dans la BDD c'est certainement mieux que la lecture à la volée (évoqué sur le forum central).
La problématique soulevée par VDigital, à l'époque, est que les dimensions des photos HD ne sont pas stockées en base de données (table #_images).
Et il faut aussi se placer dans le contexte de dépôt de photos par FTP donc impliquant une synchronisation "à l'ancienne". Dans ce cas, les données de taille enregistrées en base de données sont celles de la version "web_size" des photos. J'ai d'ailleurs toujours trouvé çà bizarre et inapproprié.
Dans ton code, tu mets à jour un champ unique "high_dimensions". Cela ne suffira pas, à mon avis. Il faudrait stocker les valeurs de hauteur et de largeur des photos dans de nouveaux champs. A la manière des champs "filesize", "width" et "height" existant mais qui sont dédiés (comme je le dis plus haut) aux valeurs des "web_size".
On a déjà un champ "high_filesize" (où tout est à NULL chez moi) existant qui pourrait convenir pour stocker le poids des photos HD. Ne manque plus que "high_width" et "high_height" ;-)
Après, l'intérêt est aussi de mettre à jour les données sur une galerie existante soit par re-synchronisation manuelle des photos par le webmaster soit par un autre mécanisme plus automatisé et géré par Piwigo.
il y a plusieurs bugs à propos de ça dites donc ^^
[Bugtracker] ticket 1791
je n'ai pas compris le problème qu'essayait de faire comprendre VDigital :S
j'ai tout de même essayé ma cuisine dans la section 'picture information' de picture.php
if ($picture['current']['is_picture'] AND $picture['current']['has_high']) { if (!empty($picture['current']['high_dimensions'])) { $infos['INFO_DIMENSIONS_HD'] = $picture['current']['high_dimensions']; } else { $hi_size = @getimagesize($hi_url); if ($hi_size !== false) { pwg_query(' UPDATE ' . IMAGES_TABLE . ' SET high_dimensions = "' . $hi_size[0].'*'.$hi_size[1] .'" WHERE id = ' . $picture['current']['id'] . '; '); $infos['INFO_DIMENSIONS_HD'] = $hi_size[0].'*'.$hi_size[1]; } } }
ya juste à ajouter un champs de langue et créer le script de mise à jour de la bdd et le tour est joué pour Piwigo 2.3 ^^
On peut aussi envisager un plugin qui générerait toutes les données d'un coup, mais ce n'est pas dans mes cordes, il faut sans doute utiliser de l'ajax pour passer outre les timeout...
Merci Vincent :-)
pour pLoader
[Bugtracker] ticket 1628
pour l'admin ...
[Bugtracker] ticket 1629