diff --git a/src/module_vmap/web_service/ws/MapJSON.class.inc b/src/module_vmap/web_service/ws/MapJSON.class.inc index b31c07ba67f8e470f522349c22e86321e0e9e9db..7aff50530df0a36ce101dc6531bb6d32af351328 100755 --- a/src/module_vmap/web_service/ws/MapJSON.class.inc +++ b/src/module_vmap/web_service/ws/MapJSON.class.inc @@ -267,6 +267,11 @@ class MapJSON extends Vmap { else $tmp['is_queryable_getfeatureinfo'] = false; + if (!empty($oLayer->aFields['service_vm4ms'])) + $tmp['is_vm4ms_layer'] = $oLayer->aFields['service_vm4ms']; + else + $tmp['is_vm4ms_layer'] = false; + if (!empty($oLayer->aFields['is_filtered']) && !empty($oLayer->aFields['filter_form'])) $tmp['is_filtered'] = $oLayer->aFields['is_filtered']; else @@ -339,6 +344,11 @@ class MapJSON extends Vmap { $tmp['layer_id'] = $oLayer->aFields['layer_id']; + // Sources des couches + if (($tmp['is_vm4ms_layer'] === true) && !empty($oLayer->aFields['layer_list'])) { + $tmp['vm4ms_sources'] = $this->getLayersSources(explode(',', $oLayer->aFields['layer_list'])); + } + array_push($aThemes[$oLayer->aFields['theme_name']], $tmp); unset($tmp); } @@ -346,6 +356,41 @@ class MapJSON extends Vmap { return $aThemes; } + /** + * Get the vm4ms layers sources + * + * @param {array} $aLayers layers names + * @return {array} avaliable sources + */ + function getLayersSources($aLayers) { + + $aSources = array(); + if (!empty($this->aProperties['schema_vm4ms'])) { + + $aFilter = $this->decodeJSONFilter(array( + 'column' => 'name', + 'compare_operator' => 'IN', + 'value' => $aLayers, + )); + + $aSQLParams = $aFilter['params']; + $aSQLParams['sSchema'] = array('value' => $this->aProperties['schema_vm4ms'], 'type' => 'column_name'); + + $sSql = "SELECT name, source_label FROM [sSchema].v_ms_layer WHERE " . $aFilter['request']; + + $oResult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); + if (!$this->oConnection->oBd->enErreur()) { + while ($aLigne = $this->oConnection->oBd->ligneSuivante($oResult)) { + if (!empty($aLigne['source_label'])) { + $aSources[$aLigne['name']] = $aLigne['source_label']; + } + } + } + } + + return $aSources; + } + } ?>