Bonjour à tous,
Je rencontre un problème sur un smart album lorsque je clique sur le bouton "compter" :
Warning: [mysql error 1305] FUNCTION ic.image_id does not exist
select
Max(D) D
from
(
select
D
from
(
select
DATEDIFF(CURRENT_DATE, date_available) D
from
phpwebgallery_images INNER JOIN phpwebgallery_image_category AS ic ON id=image_id
WHERE (ic.image_id ())
) as ListDate
where
D >= 0
group by D
order by D asc
limit 0,5
) as MaxD
; in /home/monsite/public_html/gallery/include/dblayer/functions_mysql.inc.php on line 770
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/monsite/public_html/gallery/plugins/dynareceperio/period.inc.php on line 77
Fatal error: Call to undefined function get_tag_ids() in /home/monsite/public_html/gallery/plugins/SmartAlbums/include/functions.inc.php on line 454
Je pense à un problème de compatibilité entre les plugins SmartAlbum et Dynamic Recent Period. Qui est en cause ? Un fix pour corriger cela ?
Merci par avance :-)
Dernière modification par Eric (2012-12-08 17:56:19)
Hors ligne
je ne reproduis pas
par contre je crois savoir d'ou ça vient,
ce n'est pas DynaRecePeriod qui est en cause mais la fonction get_sql_condition_FandF() qui utilise $filter en global, moi aussi j'ai une variable $filter (parce qu'il y a de filtres :-) )
à l'occasion je ferais une liste des variables réservées
Hors ligne
J'ai remplacé la variable $filter par $sa_filter comme tu le proposes, dans tous les fichiers du plugin.
Pas concluant : Cà m'a mis le bazar dans mes smart albums. Bien que toujours reconnus comme SA, ces albums n'ont plus la case "Cet album est un SmartAlbum" de cochée. En la recochant, les filtres ne sont plus visibles et pas moyen de les remettre. La validation est sans effet.
Une restauration du plugin n'a rien changé et j'ai dû supprimer mes SA et le plugin pour le réinstaller et reconfigurer mes SA.
Soit la solution du remplacement brutal de la variable $filter n'est pas la bonne, soit le changement de variable génère un autre problème.
Je vais retenter le coup en regardant bien ce qui est remplacé au lieu de partir à l'aveugle ;-)
Hors ligne
J'ai refais des essais sur une galerie de test avec SA et DRP actifs. Le filtrage du smart album repose sur la présence d'un tag et il fonctionne bien car à la validation j'ai bien le nombre d'images attendu. Mais si je clique sur "compter", je reproduis l'erreur mentionnée dans mon post initial.
La modification massive de la variable $filter en $sa_filter a les mêmes conséquences que précédemment : Mon smart album est HS.
J'ai ensuite essayé en ne conservant que SA d'activé sur ce même smart album. En cliquant sur le bouton "compter", cette fois j'ai ceci :
Fatal error: Call to undefined function get_tag_ids() in E:\www\monsite\gallery\plugins\SmartAlbums\include\functions.inc.php on line 454
Du coup, j'ai un doute sur l'implication de DRP...
Hors ligne
Poursuite des tests en modifiant le type de filtrage : Je remplace le filtrage par tags par un filtrage par date (ajoutée le, avant, après - créée le, avant, après) puis "compter".
Là, pas de message d'erreur et le comptage se passe bien. Il doit donc y avoir une coquille avec le filtrage par tags.
Hors ligne
je vois vraiment pas comment c'est possible
dans les fonctions SA je n'ai pas de global sur des variables autre que $page et $conf
DRP fonctionne sur "init", donc avant le traitement des données par le script php appelé en AJAX (fichier include/count_images)
et que ça bloque que pour les tags ça me parait encore plus délirant
Hors ligne
mistic100 a écrit:
et que ça bloque que pour les tags ça me parait encore plus délirant
J'ai moi aussi du mal à cerner le problème. Je viens de tester à nouveau sur une galerie toute neuve sur laquelle j'ai activé uniquement SA et ajouté 5 photos avec des tags récupérés via IPTC.
Si je créé un smart album avec n'importe quel autre filtrage que sur les tags, le bouton de comptage fonctionne. Mais dès que je choisi de filtrer sur les tags, c'est l'erreur
Fatal error: Call to undefined function get_tag_ids() in E:\www\monsite\gallery\plugins\SmartAlbums\include\functions.inc.php on line 454
Ce qui est encore plus bizarre c'est que tu ne puisses pas reproduire le problème...
Hors ligne
Tiens, pour être vraiment certain, j'ai même essayé sur une galerie 2.5b2.
Dernière modification par Eric (2012-12-06 22:29:01)
Hors ligne
J'ai modifié le titre du topic car Dynamic Recent Period ne semble pas lié au problème.
Hors ligne
tu as essayé sans aucun autre plugin ? je vois pas trop ce que ça peut changer mais bon
get_tag_ids() est dans admin/include/functions.php que j'appelle dans meon count_images.php, fin de l'histoire...
Hors ligne
mistic100 a écrit:
tu as essayé sans aucun autre plugin ? je vois pas trop ce que ça peut changer mais bon
Oui. Sur mes galeries de test (2.4.5 et 2.5b2), il n'y a que SA d'installé et d'activé.
Hors ligne
mistic100 a écrit:
get_tag_ids() est dans admin/include/functions.php que j'appelle dans meon count_images.php, fin de l'histoire...
mistic100 a écrit:
je reproduis l'erreur d'origine
Donc bug dans Piwigo ?
Hors ligne
bon ce problème SQL vient de la fonction get_sql_condition_FandF() et de son utilisation dans DynaRecePeriod
le code fautif est
case 'forbidden_images': if ( !empty($user['image_access_list']) or $user['image_access_type']!='NOT IN' ) { $table_prefix=null; if ($field_name=='id') { $table_prefix = ''; } elseif ($field_name=='i.id') { $table_prefix = 'i.'; } if ( isset($table_prefix) ) { $sql_list[]=$table_prefix.'level<='.$user['level']; } else { $sql_list[]=$field_name.' '.$user['image_access_type'] .' ('.$user['image_access_list'].')'; } }
dans le cas ou
$user['image_access_list'] = NULL
$user['image_access_type'] = NULL
$field_name != i.id ou id (ici ic.image_id)
on se retrouve avec une conditions SQL foireuse du type WHERE (ic.image_id ())
Hors ligne