Error sur affichage agenda via FullCalendar

Bonjour,

Sans doute depuis la dernière màj de spip,
La page agenda d’un site n’affiche plus les événements en mode « calendrier » via « FullCalendar Facile » :

Pourtant les événements sont bien présents et s’affichent ailleurs.

Le site est en SPIP 3.2.16 (avant il était sans doute en 3.2.14), avec plugins Agenda 4.5.3 et Agenda Fullcalendar Facile 2.5.2

voici le message erreur quand on recalcule la page agenda :
Erreur SQL 1064
You have an error in your SQL syntax ; check the manual that corresponds to your MariaDB server version for the right syntax to use near ’agendafull ’date_fin’) AND ((evenements.id_article NOT IN (SELECT * FROM( SE…’ at line 5

voir saisie écran plus complète ci-jointe

Sur un autre site, avec le même Spip et les deux mêmes plugins Agenda (mais qui est chez un autre hébergeur), il n’y a pas ce problème.

J’ai désactiver/réactiver ces 2 plugins, rien n’a changé.
J’ai lancé « réparation de la base », ça mettait ok, rien de changé

J’ai tenté ?var_mode=inclure et ?var_mode=debug comme indiqué ici : SPIP 3.2, Agenda et FullCalendar - SPIP-Contrib
mais j’ai rien vu comme info intéressante (mais j’ai peut-être raté qq chose, je sais pas)

merci si vous avez d’autres pistes…
Cordialement

Bonjour DavidMM et bienvenue sur discuter.spip,

Sur le forum j’ai indiqué « dans ta copie d’écran on voit que la requête SQL générée par SPIP a une syntaxe foireuse : ... WHERE (evenements.statut='publie') AND (evenements.date_debut agendafull 'date_fin')... »

Ça semble donc une erreur du compilateur, car « agendafull » n’est pas un opérateur de comparaison valable ! OU une erreur du squelette qui génère ça et donc il faudrait savoir quelle est la boucle qui produit cela c’est pour ça que j’invitais à cerner avec ?var_mode=inclure et ?var_mode=debug

Salut,

merci mais j’ai testé &var_mode=inclure et &var_mode=debug
mais j’ai rien vu d’intéressant… que le code lié à agenda

Peut-être une piste ici même s’il s’agit de spip 4 ?

Sur ce site où il y a erreur je vois que Agenda Fullcalendar Facile est en version 2.5.2
Sur un autre site « similaire » où là y a pas de bug c’est la version 2.4.4.

peut-être que la version récente de Agenda Fullcalendar Facile pose problème ici ?

Cordialement

Je n’ai pas de pb dans une configuration similaire.
Peut être un fichier est il corrompu sur ton install.
Ça expliquerait l’erreur zarbi du source SQL compilé.
Mais activer désactiver comme tu l’as fait ne nettoie pas les fichiers.

Tu pourrais

  • mettre à jour ton plugin Agenda car il y a une version 4.5.4 ,
  • désinstaller (pas désactiver) fullcalendar facile, supprimer les fichiers de /plugins/fullcalendar_facile s’il en reste, puis le réinstaller

Et hop ça pourrait aller mieux

Merci, mais j’ai fait ça (désinstaller et retélécharger/installer), mais rien de changé hélas.
j’avais déjà Agenda maj en 4.5.4 en fait depuis

L’inspecteur web indique que la requête XHR qui devrait alimenter le calendrier fullcalendar ne renvoie rien : https://hydre.casa/spip.php?page=agenda.json&start=2022-09-26&end=2022-11-07 et donc tout normalement il n’apparaît rien dans le calendrier. C’est probablement l’erreur SQL que tu cites qui fait que ce json servi est vide et donc l’erreur SQL viendrait de la compilation foireuse de la boucle agenda_fullcalendar_facile/agenda.json.html at master - agenda_fullcalendar_facile - SPIP on GIT

Mais il y a pas grand chose à voir entre ce que ça devrait faire et ce que ça fait… C’est comme si le WHERE des 2 critères {!evenement_passe #ENV{start}}{!evenement_a_venir #ENV{end}} se prenait un méchant accident et qu’il en ressorte ce gros pâté (evenements.date_debut agendafull 'date_fin') révélé par le message d’erreur.

Ça pourrait venir d’un autre plugin.

  • le site utilise acces_restreint et ça semble entraîner une grosse complication inutile dans le sql généré avec une tentative d’exclusion d’articles as subquery qui n’exclue rien en fait puisque id_article NOT IN ... WHERE 0=1. Si acces_restreint ne sert à rien il faut l’enlever car c’est assez coûteux.
  • le site utilise couteau suisse. Essaie sans, au moins le temps du debug, car le CS peut toucher à tout
  • le site utilise minicalendrier aussi : peux tu essayer temporairement sans ? Car peut être ces différents plugins en rapport avec la même fonctionnalité interfèrent ils ?

Hmmm en fait le agendafull qui souille le WHERE semble être le nom d’un critère obsolète de agenda.
Je sais pas d’où il vient dans ton site… Peut être tu l’utilises dans un squelette perso ? Ou ce serait aveline ou un autre plugin squelette ?

Pour le définir il faut ajouter include_spip('inc/agenda_vieilles_def');
dans ton fichier de _fonctions (ou d’options, si jamais ça suffit pas dans certains contextes).
Ça peut pas faire de mal de le faire.

Et d’ailleurs c’est ce que fait aussi un plugin « fullcalendarcompat »
qui permet « de passer à SPIP 4.0 sans avoir à adapter ses squelettes pour la nouvelle version de FullCalendar »
Cf spip-contrib-extensions/fullcalendarcompat: Permet de passer à SPIP 3.3 sans avoir à adapter ses squelettes pour la nouvelle version de FullCalendar - fullcalendarcompat - SPIP on GIT

Et donc si ça suffit pas d’ajouter include_spip('inc/agenda_vieilles_def');
– ben euh ya pas de doc pour fullcalendarcompat donc je sais pas comment ça marche, mais –
tu pourrais essayer de désactiver fullcalendar_facile et installer et activer fullcalendarcompat à la place.

Remarque ton site est encore en 3.2 donc probablement pas pertinent d’installer fullcalendarcompat.
Juste l’include_spip alors.

Salut,

Merci,
j’ai ajouté cet include dans mes_options.php, mais ça n’a rien changé hélas

à suivre…