openMairie.org | Démonstration | Documentation | Forum

Erreur PEAR om_dashboard

Bonjour à tous,

Je rencontre une erreur sur la gestion des widgets dans le tableau de bord.

Avec un tableau de bord paramétré pour 3 colonnes (défaut) : sur un profil nous exploitons 2 colonnes.

Un des widgets présent est en mode fichier avec référence à la classe de surcharge d’om_application (utils dans mon cas) :

require_once « …/obj/utils.class.php »;

$f = new utils(« nohtml »);
$f->isAccredited(array(« presence »,« presence_manage »), « OR »);
$f->disableLog();

Un message d’erreur est remonté sur le tableau de bord : « Erreur de base de données. Contactez votre administrateur. ». Le message est remonté par om_dashboard (fonction view_dashboard(), ligne 287).

Au niveau fichier de log :

2020-03-19 16:11:52 ERROR [admin] /app/index.php?module=dashboard
2020-03-19 16:11:52 database::isError(): QUERY => SELECT om_dashboard.om_dashboard, om_widget.om_widget as widget, om_widget.libelle as libelle, CASE WHEN om_widget.type = ‹ web › THEN om_widget.lien ELSE om_widget.script END as lien, CASE WHEN om_widget.type = ‹ web › THEN om_widget.texte ELSE om_widget.arguments END as texte, om_widget.type as type, om_dashboard.position FROM public.om_dashboard INNER JOIN public.om_widget ON om_dashboard.om_widget=om_widget.om_widget WHERE om_dashboard.bloc =‹ C3 › AND om_dashboard.om_profil = 1 ORDER BY position [DEBUG]
2020-03-19 16:11:52 database::isError(): SGBD ERROR => nativecode=Database connection has been lost. [DEBUG]
2020-03-19 16:11:52 database::isError(): PEAR ERROR => DB Error: connect failed [DEBUG]

Si nous forçons le passage du nombre de colonne du tableau de bord à 2, le message disparait.

Le problème semble lié à l’initialisation de la classe utils ; si nous retirons l’instanciation, l’erreur disparait.

La classe utils.class.php est des plus simple :

  • appel des dépendances de base vers fichiers « dyn »,
  • modification du nom d’application,
  • modification du nom de session,
  • initialisation setDefaultValues(),
  • initialisation set_config__menu(),

J’ai essayé de commenter toutes les méthodes de la classe utils mais le problème persiste.

Avez-vous rencontrer déjà ce problème ?

La version du framework est la dernière : 4.9.2

Merci par avance !

Bonjour,

Un exemple de widget de type fichier est fourni ici dans la documentation :
https://docs.openmairie.org/?project=framework&version=4.9&path=/reference/dashboard.html#le-widget-de-type-script

Voici l’instanciation de la classe utils comme elle est présentée dans le widget d’exemple :

require_once "../obj/utils.class.php";
if (!isset($f)) {
    $f = new utils(null, "forbidden");
}

Tout devrait fonctionner normalement en respectant l’instanciation d’utils de cette manière.

Florent

Bonjour merci pour votre réponse.

Si je bascule en « forbidden », le widget m’affiche le contenu de la page de login et un 2ème menu s’affiche sur la gauche sans prise en compte des droits d’accès… En creusant le code de la page, une div id=« menu »> est créée dans le container du widget et elle s’affiche naturellement à gauche par application du CSS.

Bonjour,

Le point important de mon exemple de code n’est pas la permission mais la condition, il ne faut instancier la classe utils que si elle ne l’est pas déjà. Et dans les widgets c’est le cas puisque les scripts app/widget_*.php sont inclus par la vue du tableau de bord.

Florent

Ok je n’avais effectivement pas fait le lien avec la classe om_dashboard qui instancie la class utils.
Après correction, tout fonctionne bien.

Merci @flohcim