Fatal error: Cannot declare class Hook, because the name is already in use.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 5 mois #980 par scoubinaire
GRR340-RC3
Bonjour, si un usager crée une réservation à modérer, puis modifie cette réservation, l'administrateur reçoit 2 notifications (Une demande de réservation est à modérer ...) avec les liens de modération
(.../GRR340RC3/validation.php?id=xxxxx) pour la réservation d'origine et pour la réservation modifiée. Le second lien fonctionne correctement, mais si l'on clique sur le premier lien on obtient:
Fatal error: Cannot declare class Hook, because the name is already in use in ...\GRR340RC3\include\hook.class.php on line 19

Connexion ou Créer un compte pour participer à la conversation.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 4 mois #1019 par scoubinaire
Bonjour, c'est le dernier problème un peu gênant pour moi avec GRR340RC3
Désolé, j'aurais dû mettre ce sujet sur le forum "Signaler un problème"
Pour le reproduire il suffit de chercher à valider une réservation avec un id invalide par exemple http://nom-du-site/validation.php?id=99999
Voici le bypass que j'ai trouvé (mais attention ceci n'est qu'un bypass à n'utiliser que si la fonction Export XML (ou XML+) est désactivée (à vérifier dans Administration > Configuration > Modules internes)

Mettre en commentaires dans include/functions.inc.php
les lignes suivantes
include $racine."/include/hook.class.php"; ligne 1047
Hook::Appel("hookHeader2"); ligne 1058
Hook::Appel("hookHeader1"); ligne 1084

Connexion ou Créer un compte pour participer à la conversation.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 1 mois #1266 par scoubinaire
Bonjour, je relance ce sujet car ce n'est pas résolu avec GRR 340a.
Informations supplémentaires :
1- le message fatal error ne se produit qu'avec GRR installé en localhost
2- si grr est installé sur un site web, il n'y a pas le message Fatal error mais une page blanche est affichée.
Le problème se produit lorsqu'un Usager fait une réservation à modérer puis supprime ou modifie sa réservation (dans ce cas l'id de la réservation est modifié). Si l'administrateur cherche à modérer la réservation à l'aide du lien indiqué dans son mail on arrive sur ce problème.
On doit pouvoir recréer facilement ce problème avec un id inutilisé comme grr.monsite.fr/validation.php?id=999999

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 1 mois #1268 par Yan
Bonjour,
le modérateur reçoit-il bien un mail pour la réservation modifiée ?

Connexion ou Créer un compte pour participer à la conversation.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 1 mois #1269 par scoubinaire
Bonjour, Oui.
Lorsque l'usager crée une réservation à modérer, l'administrateur reçoit une première notification pour, par exemple l'id 6000. Si l'usager modifie sa réservation, l'id change et l' administrateur reçoit une seconde notification pour l'id suivant (6001). Si l'administrateur clique sur le lien dans la première notification (id 6000) la fatal error se produit. Par contre, le lien dans la seconde notification fonctionne bien (id 6001). La Fatal error peut se produire aussi bien en local host ou sur un vrai site Internet. Il devrait y avoir à la place le message : Accès refusé (accessdenied)
La réservation que vous demandez n'existe pas. Il est probable qu'elle ait été supprimée. (noreservation)

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 1 mois #1276 par Yan
Bonjour,
je pense qu'il y a un problème en amont : pouvez-vous m'envoyer le lien que reçoit le gestionnaire ou l'administrateur afin de modérer la réservation ?

Connexion ou Créer un compte pour participer à la conversation.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 1 mois #1282 par scoubinaire
Bonjour, voici un exemple de message de réservation à modérer reçu par l'administrateur.
---
objet GRR : avis Salle 308 - 2018/10/06 - Réservation en attente de modération
voir l'en-tête complet
GRR ANRABB - Message automatique émis par le site GRR : grr.xxxxx.fr/
Une demande de réservation est à modérer :
grr.xxxxx.fr/validation.php?id=60097
Réservation effectuée par Hugo (hugo@xxxxx.fr)
Ressource : Salle 308 (MABB)
---
Voici le résultat de mes recherches :
Si j'essaie d'accéder à une réservation qui n'existe plus, par exemple avec
grr.xxxxx.fr/validation.php?id=99999
GRR devrait afficher les messages Accès refusé (accessdenied) suivi de
La réservation que vous demandez n'existe pas. Il est probable qu'elle ait été supprimée (noreservation)
Ces messages sont prévus dans validation.php
{ if (isset($reservation_is_delete))
showNoReservation($day, $month, $year, $back);
function showNoreservation se trouve dans functions.inc.php
on y trouve print_header($day, $month, $year, $type_session);
et dans function print_header : include $racine."/include/hook.class.php";
ce qui est curieux, c'est que la fonction print_header est exécutée 2 fois, ce qui cause le message de Fatal error la seconde fois.
---
cette solution fonctionne :
dans include/functions.inc.php
dans function showNoReservation($day, $month, $year, $back)
mettre en commentaire la ligne 3618 : print_header($day, $month, $year, $type_session);

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 1 mois #1284 par Yan
Bonjour,
comme je ne suis pas sûr que l'appel à showNoReservation ne se fasse que dans ce cas, j'ai filtré en amont.
Ce qui donne, sur la branche stable 3.4.0 : github.com/JeromeDevome/GRR/commit/3c689...8ea68bfbe1d2bd3e5ac9
et sur la branche de développement devel3 : github.com/JeromeDevome/GRR/commit/7ca28...614a5a6fa6314ebb88c4
Merci pour votre analyse, j'attends le retour de vos tests.
Cordialement,
YN

Connexion ou Créer un compte pour participer à la conversation.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 1 mois #1289 par scoubinaire
Bonjour
- pour GRR 3.4.0 tout fonctionne,
les messages indiquant que la réservation n'existe pas sortent comme prévu. Et la touche Retour qui ne fonctionnait pas, fonctionne.
Si je crée des nouvelles réservations à modérer ou non, ça fonctionne toujours.
Tout est OK
- pour GRR devel3
Comme ci-dessus : les messages indiquant que la réservation n'existe pas sortent comme prévu. Et la touche Retour qui ne fonctionnait pas, fonctionne.
Mais si j'essaie de créer une réservation (en cliquant sur la touche +) en étant administrateur ou pas j'obtient les messages suivants :
Warning: include(/include/hook.class.php): failed to open stream: No such file or directory in C:\xampp\htdocs\GRR-devel3\edit_entry.php on line 316

Warning: include(): Failed opening '/include/hook.class.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\GRR-devel3\edit_entry.php on line 316

Fatal error: Uncaught Error: Class 'Hook' not found in C:\xampp\htdocs\GRR-devel3\include\functions.inc.php:5058 Stack trace: #0 C:\xampp\htdocs\GRR-devel3\edit_entry.php(327): pageHeader2(6, 10, 2018, 'with_session') #1 {main} thrown in C:\xampp\htdocs\GRR-devel3\include\functions.inc.php on line 5058

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 1 mois #1291 par Yan
Bonjour,
merci pour votre retour.
Pour ce qui est de l'erreur de chargement du module Hook, je n'ai pas cette erreur...
Pouvez-vous essayer de remplacer la ligne 316 par
Code:
include "./include/hook.class.php";
et nous dire si c'est mieux ainsi ?
Cordialement,
YN
Les utilisateur(s) suivant ont remercié: scoubinaire

Connexion ou Créer un compte pour participer à la conversation.

Modérateurs: Yan