From 15e7e6a918f10f9f7feae6fcb79fb45958d51c0c Mon Sep 17 00:00:00 2001 From: Armand Bahi <armand.bahi@veremes.com> Date: Tue, 12 Feb 2019 16:32:22 +0100 Subject: [PATCH] Add Add sources on MapJSON --- .../web_service/ws/MapJSON.class.inc | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/module_vmap/web_service/ws/MapJSON.class.inc b/src/module_vmap/web_service/ws/MapJSON.class.inc index b31c07ba..7aff5053 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; + } + } ?> -- GitLab