NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

root/Chameleon/trunk/Chameleon/CatalogSearch/CatalogSearchPopup.phtml

Revision 13 (checked in by jcleary, 17 years ago)

Latest Chameleon code checkout from previous repository

Line 
1 <?php
2 include_once("CatalogSearch.php");
3
4 define("LOAD_MAPSESSION", 1);
5 //set the language resource file
6 $szLanguageResource = str_replace("\\","/",dirname(__FILE__))."/CatalogSearchPopup.dbf";
7
8
9 include("../session.inc.php");
10 include_once(COMMON."wrapper/map_navigator.php");
11 include_once("../CWC2ButtonCache.php");
12
13 if (isset($http_form_vars['bRetrieve']) && $http_form_vars['bRetrieve'] == '1')
14 {
15     $szServiceId = $http_form_vars['serviceId'];
16     $szGetServiceIdURL = "http://ceomap2.ccrs.nrcan.gc.ca/cgi-bin/cslt/wes/service_manager/catquery?RS=XML&ESN=f&DOCID=$szServiceId&DOIT=Get+Service";
17     $fh = fopen($szGetServiceIdURL, "r");
18     $szXMLDoc = "";
19     while ($szString = fread($fh, 1024))
20     {
21         $szXMLDoc .= $szString;
22     }
23    
24     if ($szXMLDoc != "")
25     {
26         $parser = xml_parser_create();
27         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
28         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE,   1);
29         xml_parse_into_struct($parser, $szXMLDoc, $aVals, $index);
30         xml_parser_free($parser);
31
32         $oXMLDoc =  xml_get_children($aVals);
33     }
34    
35     if (!isset($oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords']) ||
36                 $oXMLDoc->searchResponse->value->searchStatus->attributes['success'] == false ||
37                 $oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords'] <= 0)
38     {
39         //THIS IS AN ERROR CONDITION - THE SERVICEID CAME FROM THE RESULTS BUT NOW CANNOT BE FOUND?
40     }
41     else
42     {
43         // Get result count
44         $oRes =& $oXMLDoc->searchResponse->value->searchResults->value->ISO19119->value;
45         // Start building the layer info parameters
46         $szLayerTitle    = $oRes->citation->value->title->value;
47         $szLayerAltTitle = $oRes->citation->value->alternateTitle->value;
48         $szServerVersion = $oRes->serviceTypeVersion->value;
49
50         // if DCP is a array, take the first one
51         if (is_array($oRes->operationMetadata->value->DCP))
52             $szLayerConnectString = $oRes->operationMetadata->value->DCP[0]->value->connectPoint->value->linkage->attributes['xlink:href'];
53         else
54             $szLayerConnectString = $oRes->operationMetadata->value->DCP->value->connectPoint->value->linkage->attributes['xlink:href'];
55
56         // Add abstract data to layer info
57         $szLayerAbstract = $oRes->abstract->value;
58
59         // Add LatLong BBox
60         $szLayerLLBB = str_replace(",", " ", substr(substr($oRes->typeProperty->value->typeValue->value->instanceValue->value->value->value, 1), 0, -1));
61
62         // Get parameter count
63         $nbParam = count($oRes->operationMetadata->value->parameter);
64         for($j=0;$j<$nbParam;$j++)
65         {
66             // Get parameter object
67             $oParam =& $oRes->operationMetadata->value->parameter[$j];
68
69             // If parameter is a STYLE
70             if ($oParam->value->parameterName->value->nameValue->value == "STYLES")
71             {
72                 $szLayerStyles = "";
73                 // Is there more than one style ?
74                 if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle))
75                 {
76                     // Yes, then get style objects count
77                     $nbStyle = count($oParam->value->permittedValues->value->enumValues->value->valueTitle);
78                     for($k=0;$k<$nbStyle;$k++)
79                     {
80                       // Get style title
81                       $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value;
82                       // Get style online resource
83                       $szOnlineRes = $oParam->value->permittedValues->value->enumValues->value->valueOnLineResource[$k]->value->linkage->attributes['xlink:href'];
84
85                       // add them to layer info string.
86                       $szLayerStyles .= $szTitle.">,<   ".$szOnlineRes.">;<";
87                     }
88                 }
89                 else
90                 {
91                     // Get style title
92                     $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value;
93                     // Get style online resource
94                     $szOnlineRes = $oParam->value->permittedValues->value->enumValues->value->valueOnLineResource->value->linkage->attributes['xlink:href'];
95
96                     // add them to layer info string.
97                     $szLayerStyles .= $szTitle.">,<   ".$szOnlineRes.">;<";
98                 }
99
100                 $szLayerStyles = substr($szLayerStyles, 0, -3);
101             }
102             else
103             if ($oParam->value->parameterName->value->nameValue->value == "FORMAT")
104             {
105                 $szLayerFormats = "";
106                 // Is there more than one format ?
107                 if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle))
108                 {
109                     // Yes, then get format objects count
110                     $nbFormat = count($oParam->value->permittedValues->value->enumValues->value->valueTitle);
111                     for($k=0;$k<$nbFormat;$k++)
112                     {
113                       // Get format title
114                       $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value;
115                       // Get format value
116                       $szValue = $oParam->value->permittedValues->value->enumValues->value->value[$k]->value;
117
118                       // add them to layer info string.
119                       $szLayerFormats .= $szValue.",";
120                     }
121                 }
122                 else
123                 {
124                     // Get format title
125                     $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value;
126                     // Get format value
127                     $szValue = $oParam->value->permittedValues->value->enumValues->value->value->value;
128
129                     // add them to layer info string.
130                     $szLayerFormats .= $szValue.",";
131                 }
132
133                 $szLayerFormats = substr($szLayerFormats, 0, -1);
134             }
135             else
136             if ($oParam->value->parameterName->value->nameValue->value == "SRS")
137             {
138                 $szLayerSRSs = "";
139                 // Is there more than one srs
140                 if (is_array($oParam->value->permittedValues->value->enumValues->value->valueTitle))
141                 {
142                     // Yes, then get srs objects count
143                     $nbSRS = count($oParam->value->permittedValues->value->enumValues->value->valueTitle);
144                     for($k=0;$k<$nbSRS;$k++)
145                     {
146                       // Get SRS title
147                       $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle[$k]->value;
148
149                       // add them to layer info string.
150                       $szLayerSRSs .= $szTitle." ";
151                     }
152                 }
153                 else
154                 {
155                     // Get SRS title
156                     $szTitle = $oParam->value->permittedValues->value->enumValues->value->valueTitle->value;
157                     // add them to layer info string.
158                     $szLayerSRSs .= $szTitle." ";
159                 }
160
161                 $szLayerSRSs = substr($szLayerSRSs, 0, -1);
162             }
163         }
164     }
165
166     $szScript = "<script language=\"JavaScript\" type=\"text/javascript\">\n".
167     "var LayerTitle = '$szLayerTitle';\n".
168     "var LayerAltTitle = '$szLayerAltTitle';\n".
169     "var LayerServerVersion = '$szServerVersion';\n".
170     "var LayerConnectString = '$szLayerConnectString';\n".
171     "var LayerAbstract = '$szLayerAbstract';\n".
172     "var LayerLLBB = '$szLayerLLBB';\n".
173     "var LayerStyles = '$szLayerStyles';\n".
174     "var LayerFormats = '$szLayerFormats';\n".
175     "var LayerSRSs = '$szLayerSRSs';\n";
176
177     if (!isset($http_form_vars['szCallbackFunc']))
178     {
179         $_SESSION['gErrorManager']->setError(ERR_WARNING, trim($oCommonMLT->get("CBNotSet", "Callback function not set in CatalogSearchPopup.phtml")));
180         $szScript .= "window.close();\n";
181     }
182     else
183     {
184         $szScript .= "opener.".$http_form_vars['szCallbackFunc']."(0, self);\n";
185     }
186
187     $szScript .= "</SCRIPT>\n";
188     echo $szScript;
189     exit;
190 }
191
192 if (isset($http_form_vars['bSearch']) && $http_form_vars['bSearch'] == '1')
193 {
194     $oMapNavigator = new MapNavigator( $oMapSession );
195     $oMap = $oMapSession->oMap;
196
197     $szUrl = "http://ceomap2.ccrs.nrcan.gc.ca/cgi-bin/cslt/wes/service_manager/catquery?RS=XML&catalog=http%3A%2F%2Fceomap2.ccrs.nrcan.gc.ca%2Fcgi-bin%2Fcslt%2Fwes%2Fservice_manager%2Fcatquery&QUERY=";
198         $szQuery = "SRS='".substr(
199            $oMapSession->oMap->getmetadata("original_projection"), 5)."' AND ";
200     $szQuery.= "(title like '%".$http_form_vars['szSearchString']."%' OR ";
201     $szQuery.= "abstract like '%".$http_form_vars['szSearchString']."%' ) ";
202     $szQuery.= "AND Format='".(($oMapSession->oMap->imagetype == "png24")?"png":
203                             $oMapSession->oMap->imagetype)."' AND ";
204     $szQuery.= "ServiceType='Web Mapping Layer' AND ";
205
206     // reproject full_extents metadata if different from projection
207     $szOriginalProjection = $oMap->getMetaData("original_projection");
208     $szOriginalExtents = $oMap->getMetaData("original_extents");
209
210     if (strlen($szOriginalExtents) > 0)
211     {
212         $aszExtents = explode(",", $szOriginalExtents);
213         if (count($aszExtents) == 4 &&
214             $szOriginalProjection != "init=epsg:4326")
215         {
216             $aszExtents = $oMapNavigator->reprojectExtentFromCenter($aszExtents, $oMap->width, $oMap->height, $szOriginalProjection,"init=epsg:4326");
217         }
218         else
219         {
220 //            $_SESSION['gErrorManager']->setError(ERR_WARNING,
221 //                                                 trim($oCommonMLT->get("ErrInvExt", "ERROR: Invalid extent specified in "))."CatalogSearch.widget.php.");
222         }
223     }
224     else
225     {
226 //        $_SESSION['gErrorManager']->setError(ERR_WARNING,
227 //                                             trim($oCommonMLT->get("ErrInvExt", "ERROR: Invalid extent specified in "))."CatalogSearch.widget.php.");
228     }
229
230     $szQuery.= "Intersects(LatLongBoundingBox, Envelope(".
231                       implode(",", $aszExtents)."))";
232
233     $szUrl .= urlencode($szQuery);
234     $szUrl .= "&SCHEMA=ISO19119&ESN=b&WANTCONTENT=XML";
235     //echo "url is $szUrl<BR>";
236    
237     $fh = fopen($szUrl, "r");
238     $szXMLDoc = "";
239     while ($szString = fread($fh, 1024))
240     {
241         $szXMLDoc .= $szString;
242     }
243    
244     if ($szXMLDoc != "")
245     {
246         $parser = xml_parser_create();
247         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
248         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE,   1);
249         xml_parse_into_struct($parser, $szXMLDoc, $aVals, $index);
250         xml_parser_free($parser);
251
252         $oXMLDoc =  xml_get_children($aVals);
253     }
254 }
255 ?>
256 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
257 <html>
258 <head>
259 <title><?php echo trim($oMLT->get("0", "Catalog Search")); ?></title>
260 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
261 <script language="JavaScript" src="<?php echo $_SESSION['gszCoreWebPath']; ?>/widgets/js/cwc_dhtml.js" type="text/javascript"></script>
262 <script language="JavaScript" src="<?php echo $_SESSION['gszCoreWebPath']; ?>/widgets/js/cwc_button.js" type="text/javascript"></script>
263 <script language="JavaScript" type="text/javascript">
264
265 function addLayer( serviceId )
266 {
267     document.forms[0].serviceId.value = serviceId;
268     retrieveLayer();
269 }
270
271
272 function CallBackFunc(actionId)
273 {
274 <?php
275 if (!isset($http_form_vars['szCallbackFunc']))
276 {
277     $_SESSION['gErrorManager']->setError(ERR_WARNING, trim($oCommonMLT->get("CBNotSet", "Callback function not set in CatalogSearchPopup.phtml")));
278     echo "window.close();\n";
279 }
280 else
281     echo "opener.".$http_form_vars['szCallbackFunc']."(actionId, self);\n";
282 ?>
283 }
284
285 function CloseWindow()
286 {
287     CallBackFunc(2);
288 }
289
290 function OpenWindow()
291 {
292 //    CallBackFunc(3);
293
294 //    self.focus();
295 }
296
297 function startSearch()
298 {
299     document.forms[0].bSearch.value = 1;
300     document.forms[0].bRetrieve.value = 0;
301     document.forms[0].submit();
302 }
303
304 function retrieveLayer()
305 {
306     document.forms[0].bSearch.value = 0;
307     document.forms[0].bRetrieve.value = 1;
308     document.forms[0].submit();
309 }
310 </script>
311 <link href="<?php echo $szCSSFile; ?>" rel="stylesheet" type="text/css">
312 </head>
313 <body class="page" onLoad="OpenWindow()">
314 <form method=post>
315 <table border=0 cellpadding=1 cellspacing=10>
316   <tr>
317     <td class="layoutTable">
318       <table class="titleArea" width="100%" border="0" cellpadding="4" cellspacing="0">
319         <tr>
320           <td><img src="title_find_layer.gif" width="22" height="22" align="texttop">&nbsp;<span class="title"><?php echo trim($oMLT->get("1", "Search for Layers")); ?></span></td>
321         </tr>
322       </table>
323       <table class="contentArea" width="100%" border="0" cellpadding="4" cellspacing="0">
324         <tr>
325           <td align="center"><p class="helpArea"><?php echo trim($oMLT->get("2", "Please enter a keyword to identify the layer that you are trying to find in the field below.")); ?></p></td>
326         </tr>
327       </table>
328       <table class="contentArea" border="0" cellspacing="0" cellpadding="4" width="100%">
329         <tr>
330           <td><span class="label"><?php echo trim($oMLT->get("3", "Keyword")); ?>:</span></td>
331           <td><input class="inputBox" type="text" name="szSearchString" size="20" value="<?php echo ((isset($http_form_vars['szSearchString'])) ? $http_form_vars['szSearchString'] : ''); ?>"></td>
332           <td><?php echo makeButton( 'startSearch', '', 'CatalogSearch', "icons/icon_find_layer.png", trim($oMLT->get("13", "Locate Layer")), trim($oMLT->get("14", "Locate Place")), array( 'width' => 115 ) ); ?></td>
333         </tr>
334       </table>
335     </td>
336   </tr>
337   <tr>
338     <td class="layoutTable">
339       <table class="titleArea" width="100%" border="0" cellpadding="4" cellspacing="0">
340         <tr>
341           <td><img src="title_layers.gif" width="22" height="22" align="texttop">&nbsp;<span class="title"><?php echo trim($oMLT->get("4", "Search Results")); ?></span></td>
342         </tr>
343       </table>
344       <table class="contentArea" width="100%" border="0" cellpadding="4" cellspacing="0">
345         <tr>
346           <td align="center"><p class="helpArea"><?php echo trim($oMLT->get("5", "Below are the results of the search. Select one of the layers from the list to add to your map.")); ?></p></td>
347         </tr>
348       </table>
349       <table class="contentArea" border="0" cellspacing="0" cellpadding="4" width="100%">
350         <tr>
351           <td>
352             <table class="subLayoutTable" border="0" cellspacing="1" cellpadding="4">
353               <tr>
354                 <td class="subContentArea1"><span class="label"><strong><?php echo trim($oMLT->get("7", "Title")); ?></strong></span></td>
355                 <td class="subContentArea1"><span class="label"><strong><?php echo trim($oMLT->get("8", "Name")); ?></strong></span></td>
356                 <td class="subContentArea1"><span class="label"><strong><?php echo trim($oMLT->get("9", "Add")); ?></strong></span></td>
357               </tr>
358
359 <?php
360 // First, make sure the document is what we expect.
361 if (isset($http_form_vars['bSearch']))
362 {
363     if (!isset($oXMLDoc->searchResponse->attributes['DTD_Version']) ||
364         $oXMLDoc->searchResponse->attributes['DTD_Version'] < "1.1.0")
365     {
366         echo "<tr><td class='subContentArea2' colspan=4><span class='label'>".trim($oMLT->get("10", "Wrong DTD version. 1.1.0 or higher required."))."</span></td></tr>";
367     }
368     else
369     {
370         // check search status
371         if (!isset($oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords']) ||
372             $oXMLDoc->searchResponse->value->searchStatus->attributes['success'] == false ||
373             $oXMLDoc->searchResponse->value->searchStatus->attributes['numberOfRecords'] <= 0)
374         {
375             echo "<tr><td class='subContentArea2' colspan=4><span class='label'>".trim($oMLT->get("11", "No Results"))."</span></td></tr>";
376         }
377         else
378         {
379             // Get result count
380             $nbIso = count($oXMLDoc->searchResponse->value->searchResults->value->ISO19119);
381             for($i=0;$i<$nbIso;$i++)
382             {
383               // Get result object
384               $oRes =& $oXMLDoc->searchResponse->value->searchResults->value->ISO19119[$i];
385
386               // Start building the layer info parameters
387               $szLayerTitle    = $oRes->value->title->value;
388               $szLayerAltTitle = $oRes->value->serviceName->value;
389               $szServiceID = $oRes->attributes["serviceId"];
390               $szServerVersion = $oRes->value->serviceTypeVersion->value;
391               //$szOnlineResource = $oRes->value->onlineResource->value->linkage->attributes["xlink:href"];
392 ?>
393               <tr>
394                 <td class="subContentArea2"><span class="label"><?php echo $szLayerTitle; ?></span></td>
395                 <td class="subContentArea2"><span class="label"><?php echo $szLayerAltTitle; ?></span></td>
396                 <td class="subContentArea2"><span class="label">&nbsp;<a href="javascript:addLayer('<?php echo $szServiceID; ?>');"><img src="<?php echo $_SESSION['gszCoreWebPath']."/skins/default/icons/icon_add.png"?>" width="20" height="20" border=0></a></span></td>
397               </tr>
398 <?php
399             }
400         }
401     }
402 }
403 else
404 {
405   echo "<tr><td class='subContentArea2' colspan=4><span class='label'>".trim($oMLT->get("11", "No Results"))."</span></td></tr>";
406 }
407 ?>
408             </table>
409           </td>
410         </tr>
411       </table>
412     </td>
413   </tr>
414   <tr>
415     <td align=right><?php echo makeButton( 'CloseWindow', '', 'CatalogSearch', "icons/icon_cancel.png", trim($oCommonMLT->get("Cancel", "Cancel")), trim($oCommonMLT->get("CloseTip", "Close Dialog")), array('width'=>75) ); ?></td>
416   </tr>
417 </table>
418 <input type=hidden name=bSearch value=1>
419 <input type=hidden name=bRetrieve value=0>
420 <input type=hidden name=serviceId value=''>
421 <input type=hidden name=szCallbackFunc value=<?php echo $http_form_vars['szCallbackFunc']; ?>>
422 </form>
423 </body>
424 </html>
Note: See TracBrowser for help on using the browser.