1 |
<?php |
---|
2 |
include_once("CatalogSearch.php"); |
---|
3 |
|
---|
4 |
include_once("../session.inc.php"); |
---|
5 |
|
---|
6 |
$nServiceId = $_GET['serviceId']; |
---|
7 |
$szFormat = $_GET['szFormat']; |
---|
8 |
$bCachedLayer = false; |
---|
9 |
$aszSessionLayer = array(); |
---|
10 |
$szSessionKey = ""; |
---|
11 |
|
---|
12 |
|
---|
13 |
if( isset( $_SESSION['CatalogSearchEmbeded_RESULT'] ) && |
---|
14 |
isset($_SESSION['CatalogSearchEmbeded_RESULT']) && |
---|
15 |
isset($_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']) && |
---|
16 |
isset($_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']['layers']) && |
---|
17 |
isset($_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']['layers']['LAYER']) && |
---|
18 |
is_array($_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']['layers']['LAYER']) ) |
---|
19 |
{ |
---|
20 |
$aLayers = $_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']['layers']['LAYER']; |
---|
21 |
|
---|
22 |
foreach($aLayers as $key => $aLayer) |
---|
23 |
{ |
---|
24 |
if( isset($aLayer['serviceId']) && $aLayer['serviceId'] == $nServiceId) |
---|
25 |
{ |
---|
26 |
$aszSessionLayer =& $_SESSION['CatalogSearchEmbeded_RESULT']['CatalogSearchResult']['layers']['LAYER'][$key]; |
---|
27 |
$szSessionKey = $key; |
---|
28 |
if( isset($aLayer['cached']) && $aLayer['cached'] ) |
---|
29 |
{ |
---|
30 |
$bCachedLayer = true; |
---|
31 |
} |
---|
32 |
} |
---|
33 |
} |
---|
34 |
} |
---|
35 |
|
---|
36 |
if( !$bCachedLayer ) |
---|
37 |
{ |
---|
38 |
$szGetServiceIdURL = "http://ceomap2.ccrs.nrcan.gc.ca/cgi-bin/cslt/wes/service_manager/catquery?RS=XML&ESN=f&DOCID=$nServiceId&DOIT=Get+Service"; |
---|
39 |
$fh = fopen($szGetServiceIdURL, "r"); |
---|
40 |
$szXMLDoc = ""; |
---|
41 |
while ($szString = fread($fh, 1024)) |
---|
42 |
{ |
---|
43 |
$szXMLDoc .= $szString; |
---|
44 |
} |
---|
45 |
|
---|
46 |
if ($szXMLDoc != "") |
---|
47 |
{ |
---|
48 |
$parser = xml_parser_create(); |
---|
49 |
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); |
---|
50 |
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); |
---|
51 |
xml_parse_into_struct($parser, $szXMLDoc, $aVals, $index); |
---|
52 |
xml_parser_free($parser); |
---|
53 |
|
---|
54 |
$oXMLDoc = xml_get_children($aVals); |
---|
55 |
} |
---|
56 |
|
---|
57 |
if (!isset($oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords']) || |
---|
58 |
$oXMLDoc->searchResponse->value->searchStatus->attributes['success'] == false || |
---|
59 |
$oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords'] <= 0) |
---|
60 |
{ |
---|
61 |
?> |
---|
62 |
<script language="javascript" type="text/javascript"> |
---|
63 |
var aszLayerAttributes = new Array("","","","","","","",""); |
---|
64 |
parent.catalogSearchCallback("", aszLayerAttributes ); |
---|
65 |
</script> |
---|
66 |
<?php |
---|
67 |
exit; |
---|
68 |
} |
---|
69 |
|
---|
70 |
|
---|
71 |
$oRes =& $oXMLDoc->searchResponse->value->searchResults->value->ISO19119->value; |
---|
72 |
|
---|
73 |
|
---|
74 |
|
---|
75 |
if (is_array($oRes->operationMetadata->value->DCP)) |
---|
76 |
$szLayerConnectString = $oRes->operationMetadata->value->DCP[0]->value->connectPoint->value->linkage->attributes['xlink:href']; |
---|
77 |
else |
---|
78 |
$szLayerConnectString = $oRes->operationMetadata->value->DCP->value->connectPoint->value->linkage->attributes['xlink:href']; |
---|
79 |
|
---|
80 |
|
---|
81 |
$szLayerTitle = $oRes->citation->value->title->value; |
---|
82 |
|
---|
83 |
|
---|
84 |
$szLayerName = $oRes->citation->value->alternateTitle->value; |
---|
85 |
|
---|
86 |
|
---|
87 |
$szServerVersion = $oRes->serviceTypeVersion->value; |
---|
88 |
|
---|
89 |
|
---|
90 |
$szLayerAbstract = $oRes->abstract->value; |
---|
91 |
|
---|
92 |
|
---|
93 |
$szBBox = str_replace(",", " ", substr(substr($oRes->typeProperty->value->typeValue->value->instanceValue->value->value->value, 1), 0, -1)); |
---|
94 |
|
---|
95 |
|
---|
96 |
|
---|
97 |
|
---|
98 |
|
---|
99 |
$nbParam = count($oRes->operationMetadata->value->parameter); |
---|
100 |
for($j=0;$j<$nbParam;$j++) |
---|
101 |
{ |
---|
102 |
|
---|
103 |
$oParam =& $oRes->operationMetadata->value->parameter[$j]; |
---|
104 |
|
---|
105 |
|
---|
106 |
if ($oParam->value->parameterName->value->nameValue->value == "STYLES") |
---|
107 |
{ |
---|
108 |
$szLayerStyles = ""; |
---|
109 |
|
---|
110 |
if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle)) |
---|
111 |
{ |
---|
112 |
|
---|
113 |
$nbStyle = count($oParam->value->permittedValues->value->enumValues->value->valueTitle); |
---|
114 |
for($k=0;$k<$nbStyle;$k++) |
---|
115 |
{ |
---|
116 |
|
---|
117 |
$szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value; |
---|
118 |
|
---|
119 |
$szOnlineRes = $oParam->value->permittedValues->value->enumValues->value->valueOnLineResource[$k]->value->linkage->attributes['xlink:href']; |
---|
120 |
|
---|
121 |
|
---|
122 |
$szLayerStyles .= $szTitle.">,< ".$szOnlineRes.">;<"; |
---|
123 |
} |
---|
124 |
} |
---|
125 |
else |
---|
126 |
{ |
---|
127 |
|
---|
128 |
$szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value; |
---|
129 |
|
---|
130 |
$szOnlineRes = $oParam->value->permittedValues->value->enumValues->value->valueOnLineResource->value->linkage->attributes['xlink:href']; |
---|
131 |
|
---|
132 |
|
---|
133 |
$szLayerStyles .= $szTitle.">,< ".$szOnlineRes.">;<"; |
---|
134 |
} |
---|
135 |
|
---|
136 |
$szLayerStyles = substr($szLayerStyles, 0, -3); |
---|
137 |
} |
---|
138 |
else |
---|
139 |
if ($oParam->value->parameterName->value->nameValue->value == "FORMAT") |
---|
140 |
{ |
---|
141 |
$szLayerFormat = ""; |
---|
142 |
|
---|
143 |
if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle)) |
---|
144 |
{ |
---|
145 |
|
---|
146 |
$nbFormat = count($oParam->value->permittedValues->value->enumValues->value->valueTitle); |
---|
147 |
for($k=0;$k<$nbFormat;$k++) |
---|
148 |
{ |
---|
149 |
|
---|
150 |
$szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value; |
---|
151 |
|
---|
152 |
$szValue = $oParam->value->permittedValues->value->enumValues->value->value[$k]->value; |
---|
153 |
|
---|
154 |
|
---|
155 |
$szLayerFormats .= $szValue.","; |
---|
156 |
} |
---|
157 |
} |
---|
158 |
else |
---|
159 |
{ |
---|
160 |
|
---|
161 |
$szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value; |
---|
162 |
|
---|
163 |
$szValue = $oParam->value->permittedValues->value->enumValues->value->value->value; |
---|
164 |
|
---|
165 |
|
---|
166 |
$szLayerFormats .= $szValue.","; |
---|
167 |
} |
---|
168 |
|
---|
169 |
$szLayerFormats = substr($szLayerFormats, 0, -1); |
---|
170 |
} |
---|
171 |
else |
---|
172 |
if ($oParam->value->parameterName->value->nameValue->value == "SRS") |
---|
173 |
{ |
---|
174 |
$szLayerSRSs = ""; |
---|
175 |
|
---|
176 |
if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle)) |
---|
177 |
{ |
---|
178 |
|
---|
179 |
$nbSRS = count($oParam->value->permittedValues->value->enumValues->value->valueTitle); |
---|
180 |
for($k=0;$k<$nbSRS;$k++) |
---|
181 |
{ |
---|
182 |
|
---|
183 |
$szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value; |
---|
184 |
|
---|
185 |
|
---|
186 |
$szLayerSRSs .= $szTitle." "; |
---|
187 |
} |
---|
188 |
} |
---|
189 |
else |
---|
190 |
{ |
---|
191 |
|
---|
192 |
$szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value; |
---|
193 |
|
---|
194 |
$szLayerSRSs .= $szTitle." "; |
---|
195 |
} |
---|
196 |
|
---|
197 |
$szLayerSRSs = substr($szLayerSRSs, 0, -1); |
---|
198 |
} |
---|
199 |
} |
---|
200 |
|
---|
201 |
|
---|
202 |
if( count($aszSessionLayer) > 0 ) |
---|
203 |
{ |
---|
204 |
$aszSessionLayer["cached"] = true; |
---|
205 |
$aszSessionLayer["name"] = $szLayerName; |
---|
206 |
$aszSessionLayer["title"] = $szLayerTitle; |
---|
207 |
$aszSessionLayer["abstract"] = $szLayerAbstract; |
---|
208 |
$aszSessionLayer["server_version"] = $szServerVersion; |
---|
209 |
$aszSessionLayer["connection_string"] = $szLayerConnectString; |
---|
210 |
$aszSessionLayer["bbox"] = $szBBox; |
---|
211 |
$aszSessionLayer["cached_styles"] = $szLayerStyles; |
---|
212 |
$aszSessionLayer["cached_formats"] = $szLayerFormats; |
---|
213 |
$aszSessionLayer["cached_srs"] = $szLayerSRSs; |
---|
214 |
} |
---|
215 |
} |
---|
216 |
else |
---|
217 |
{ |
---|
218 |
|
---|
219 |
$szLayerName = $aszSessionLayer["name"]; |
---|
220 |
$szLayerTitle = $aszSessionLayer["title"]; |
---|
221 |
$szLayerAbstract = $aszSessionLayer["abstract"]; |
---|
222 |
$szServerVersion = $aszSessionLayer["server_version"]; |
---|
223 |
$szLayerConnectString = $aszSessionLayer["connection_string"]; |
---|
224 |
$szBBox = $aszSessionLayer["bbox"]; |
---|
225 |
$szLayerStyles = $aszSessionLayer["cached_styles"]; |
---|
226 |
$szLayerFormats = $aszSessionLayer["cached_formats"]; |
---|
227 |
$szLayerSRSs = $aszSessionLayer["cached_srs"]; |
---|
228 |
} |
---|
229 |
|
---|
230 |
|
---|
231 |
$szURL = ""; |
---|
232 |
|
---|
233 |
$szURL = $szLayerConnectString; |
---|
234 |
|
---|
235 |
|
---|
236 |
if (strpos($szURL, '?') === false) |
---|
237 |
{ |
---|
238 |
|
---|
239 |
$szURL = $szURL . "?"; |
---|
240 |
} |
---|
241 |
else if (substring($szURL, -1) != "&" ) |
---|
242 |
{ |
---|
243 |
|
---|
244 |
$szURL .= "&"; |
---|
245 |
} |
---|
246 |
|
---|
247 |
$szURL .= "service=WMS&"; |
---|
248 |
$szURL .= "version=" . $szServerVersion . "&"; |
---|
249 |
$szURL .= "request=GetMap&"; |
---|
250 |
if (isset($_GET['SRS'])) |
---|
251 |
$szURL .= "SRS=".$_GET['SRS']."&"; |
---|
252 |
else |
---|
253 |
$szURL .= "SRS=EPSG:4326&"; |
---|
254 |
if (isset($_GET['BBOX'])) |
---|
255 |
{ |
---|
256 |
$szURL .= "BBOX=".$_GET['BBOX']."&"; |
---|
257 |
} |
---|
258 |
else |
---|
259 |
{ |
---|
260 |
|
---|
261 |
$aszTmpBBox = explode(" ", $szBBox); |
---|
262 |
$szTmpBBox = implode(",", array($aszTmpBBox[0], $aszTmpBBox[3], |
---|
263 |
$aszTmpBBox[1], $aszTmpBBox[2])); |
---|
264 |
$szURL .= "BBOX=". $szTmpBBox ."&"; |
---|
265 |
} |
---|
266 |
|
---|
267 |
$szURL .= "width=220&"; |
---|
268 |
$szURL .= "height=220&"; |
---|
269 |
$szURL .= "layers=" . $szLayerName . "&"; |
---|
270 |
$szURL .= "format=" . $szFormat . "&"; |
---|
271 |
$szURL .= "exceptions=application/vnd.ogc.se_inimage"; |
---|
272 |
|
---|
273 |
?> |
---|
274 |
<script language="javascript" type="text/javascript"> |
---|
275 |
|
---|
276 |
// Here we should handle the load WMS layer |
---|
277 |
aszLayerAttributes = new Array(); |
---|
278 |
aszLayerAttributes[0] = '<?php echo $szLayerTitle; ?>'; |
---|
279 |
aszLayerAttributes[1] = '<?php echo $szLayerName; ?>'; |
---|
280 |
aszLayerAttributes[2] = '<?php echo $szServerVersion; ?>'; |
---|
281 |
aszLayerAttributes[3] = '<?php echo $szLayerConnectString; ?>'; |
---|
282 |
aszLayerAttributes[4] = '<?php echo $szLayerAbstract; ?>'; |
---|
283 |
aszLayerAttributes[5] = '<?php echo $szBBox; ?>'; |
---|
284 |
aszLayerAttributes[6] = '<?php echo $szLayerStyles; ?>'; |
---|
285 |
aszLayerAttributes[7] = '<?php echo $szLayerFormats; ?>'; |
---|
286 |
aszLayerAttributes[8] = '<?php echo $szLayerSRSs; ?>'; |
---|
287 |
|
---|
288 |
parent.catalogSearchCallback("<?php echo $szURL; ?>", aszLayerAttributes); |
---|
289 |
</script> |
---|
290 |
|
---|