protected static function _getAllConfigs($class, $key, $value) { // Chargement des etablissements $group = new CGroups(); /** @var CGroups[] $groups */ $groups = $group->loadList(); // Chargement des services $service = new CService(); $services = $service->loadList(); // Chargement de toutes les configs /** @var self $config */ $config = new $class(); /** @var self[] $all_configs */ $all_configs = $config->loadList(); if ($all_configs == null) { return null; } /** @var self[] $configs_default */ // Creation du tableau de valeur par defaut (quelque soit l'etablissement) foreach ($all_configs as $_config) { if (!$_config->service_id && !$_config->group_id) { $configs_default[$_config->{$key}] = $_config; } else { if ($_config->service_id) { $configs_service[$_config->service_id][$_config->{$key}] = $_config->{$value}; } else { $configs_group[$_config->group_id][$_config->{$key}] = $_config->{$value}; } } } $configs = array(); // Parcours des etablissements foreach ($groups as $group_id => $group) { $group->loadRefsServices(); // Parcours des services foreach ($group->_ref_services as $service_id => $_service) { foreach ($configs_default as $_config_default) { $configs[$group_id][$service_id][$_config_default->{$key}] = $_config_default->{$value}; if (isset($configs_group[$group_id][$_config_default->{$key}])) { $configs[$group_id][$service_id][$_config_default->{$key}] = $configs_group[$group_id][$_config_default->{$key}]; } if (isset($configs_service[$service_id][$_config_default->{$key}])) { $configs[$group_id][$service_id][$_config_default->{$key}] = $configs_service[$service_id][$_config_default->{$key}]; } } } // Si aucun service foreach ($configs_default as $_config_default) { if (isset($configs_group[$group_id][$_config_default->{$key}])) { $configs[$group_id]["none"][$_config_default->{$key}] = $configs_group[$group_id][$_config_default->{$key}]; } else { $configs[$group_id]["none"][$_config_default->{$key}] = $_config_default->{$value}; } } } return $configs; }