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

  • scoubinaire
  • Topic Author
  • Elite Member
  • Elite Member
More
5 years 11 months ago #980 by 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

Please Log in or Create an account to join the conversation.

  • scoubinaire
  • Topic Author
  • Elite Member
  • Elite Member
More
5 years 10 months ago #1019 by 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

Please Log in or Create an account to join the conversation.

  • scoubinaire
  • Topic Author
  • Elite Member
  • Elite Member
More
5 years 7 months ago #1266 by 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

Please Log in or Create an account to join the conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
More
5 years 7 months ago #1268 by Yan
Bonjour,
le modérateur reçoit-il bien un mail pour la réservation modifiée ?

Please Log in or Create an account to join the conversation.

  • scoubinaire
  • Topic Author
  • Elite Member
  • Elite Member
More
5 years 7 months ago #1269 by 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)

Please Log in or Create an account to join the conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
More
5 years 7 months ago #1276 by 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 ?

Please Log in or Create an account to join the conversation.

  • scoubinaire
  • Topic Author
  • Elite Member
  • Elite Member
More
5 years 7 months ago #1282 by 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);

Please Log in or Create an account to join the conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
More
5 years 7 months ago #1284 by 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

Please Log in or Create an account to join the conversation.

  • scoubinaire
  • Topic Author
  • Elite Member
  • Elite Member
More
5 years 7 months ago #1289 by 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

Please Log in or Create an account to join the conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
More
5 years 7 months ago #1291 by 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
The following user(s) said Thank You: scoubinaire

Please Log in or Create an account to join the conversation.

Moderators: Yan