MedShake / MedShakeEHR-base

Base pour MedShakeEHR
GNU General Public License v3.0
36 stars 21 forks source link

Fichier de configuration d'agenda vide provoque foreach sur null #138

Closed bugeaud closed 1 year ago

bugeaud commented 1 year ago

En cas de création d'agenda par defaut sans type de RDV, un tableau vide sera évalué en https://github.com/MedShake/MedShakeEHR-base/blob/master/class/msAgenda.php#L732 ceci va générer un avertissement qui vapoluer les logs en masse

[Mon Jan 09 15:14:44.080066 2023] [php:warn] [pid 1909] [client host:port] PHP Warning: foreach() argument must be of type array|object, null given in /app/MedShakeEHR-base/class/msAgenda.php on line 732, referer: http://192.168.1.57/patient/2788/ Un test devra être ajouté pour éviter ce cas limite.

Par exemple au lieu de

      if($all == true) {
        return $typesRdv;
      } else {
        foreach($typesRdv as $k=>$v) {
          if(isset($v['utilisable']) and $v['utilisable']=="non") unset($typesRdv[$k]);
        }
        return $typesRdv;
      }

on peut ajouter un test vide

          if($all == true or empty($typesRdv) ) {
            return $typesRdv;
          } else {
            foreach($typesRdv as $k=>$v) {
              if(isset($v['utilisable']) and $v['utilisable']=="non") unset($typesRdv[$k]);
            }
            return $typesRdv;
          }

Ceci ne produit plus de traces dans les logs et ne semble pas poser de problème dans les autres couches.

MedShake commented 1 year ago

Merci, c'est fixé. Je suis parti sur une solution un peu différente qui assure que c'est bien un array qui est fourni en sortie. La solution est peut-être un peu légère, ceci-dit, en termes de contrôle du contenu du yaml, mais son contenu n'est pas censé non plus venir d'une entrée incontrôlée.