renaming folder edit_wp5_web_folder to map-service
[geo.git] / map-service / v1.1_dev / function_rest_gen.php
diff --git a/map-service/v1.1_dev/function_rest_gen.php b/map-service/v1.1_dev/function_rest_gen.php
new file mode 100644 (file)
index 0000000..8bdccec
--- /dev/null
@@ -0,0 +1,3074 @@
+<?php
+
+
+function fct_rest_gen($p_uri, $p_legend, $p_bck_layer, $p_areas_data, $p_areas_style, $p_size, $p_bbox, $p_occ_data, $p_occ_style, $p_title, $p_label, $p_img_url, $p_symbols, $p_recalculate, $p_foo, $p_callback, $p_img, $p_externalwms, $p_externalwms_layer, $p_externalwms_version, $p_externalwms_style, $p_mlp, $p_grayscale)
+{
+                               
+                               $flagDisplayPoints=false;
+                               //test ftheeten 14/03/2011
+                               $path_towrite_persistent_sld="/var/www/synthesys/www/v1/sld_persistent/";
+                               $url_persistent_sld='http://edit.br.fgov.be/synthesys/www/v1/sld_persistent';
+                               //topp: used in the name of the SLD file to address the layer to color
+                               
+                               $prefix_wms="topp:";
+                               
+                               
+                               
+                               $random=md5($p_uri ).".sld";
+                               
+                               $leg=$p_legend;
+                               
+                               
+                               //bug 16/04/2010 (pb with imagemagick package in filename?)
+                               $image_radical=md5($p_uri );
+                               $image_file=$image_radical."_layers.png";
+                               
+                               $random2="/var/www/synthesys/www/v1/img/".$image_file;
+                               $random2_www="http://edit.br.fgov.be/synthesys/www/v1/img/".$image_file;
+                               $random2_legend="/var/www/synthesys/www/v1/img/".$image_radical."_legend.png";
+                               //ftheeten 22/02/2011 (sometimes bug if image previously exists)
+                                       if(file_exists($random2))
+                                       {
+                                               unlink($random2);
+                               
+                                       }
+                               
+                               
+                               
+                               
+                               //print($random2);
+                               
+                               
+                               
+                               $sld_dir = "/var/www/synthesys/www/v1/sld"; 
+                               
+                               $img_dir = "/var/www/synthesys/www/v1/img";
+                               
+                               
+                               
+                               $d = dir($sld_dir);
+                               
+                               $e = dir($img_dir);
+                               
+                               
+                               
+                               $ad=$p_areas_data;
+                               
+                               
+                               
+                               
+                               
+                               //ftheeten 14/04/2011
+                               
+                               //$layers=$p_bck_layer;
+                               $layers_tmp=$p_bck_layer;
+                               $arrayTableStyles=associate_layer_to_style($layers_tmp,',',':', TRUE);
+                               $layers=array_keys($arrayTableStyles);
+                               //$layers=implode(',',array_keys($arrayTableStyles));
+                               
+                               if ( $p_areas_data ==null or $p_areas_style == null or $p_size == null)
+                               
+                               {
+                               
+                                       print("<br>");
+                               
+                                       print("<br>");
+                               
+                                       print("<b>The URL must be missing some values, or they have been wrongly defined.</b><br>");
+                               
+                                       print("<br>");
+                               
+                                       print("<b>Make sure you use the following syntax when adding the variables</b><br>");
+                               
+                                       print("Eg. http://edit.br.fgov.be/edit_wp5/v1/areas.php<b>?</b>*Layers<b>&</b>Area Data<b>&</b>Area Style<b>&</b>*Bounding Box<b>&</b>Map Size<br>");
+                               
+                                       if ($layers==null)
+                               
+                                       {
+                               
+                                               print("<br>");
+                               
+                                               print("<b>*Layers (l=) has not been defined</b><br>");
+                               
+                                               print("This defines the background layer.<br>");
+                               
+                                               print("Eg. l=earth will give your map a backgound of the full earth map with only country data.<br>");
+                               
+                                               print("where l=tdwg4 will make the earth your background as well but with the tdwg layer 4 areas defined.<br>");
+                               
+                                               print("The only options are earth, tdwg1, tdwg2, tdwg3, tdwg4.<br>");
+                               
+                                       }
+                               
+                                       if ($p_areas_data==null)
+                               
+                                       {
+                               
+                                               print("<br>");
+                               
+                                               print("<b>Area Data (ad=) has not been defined</b><br>");
+                               
+                                               print("This is to determin which areas will be symbolized specifically on the map in the format ad=layer name:a:area code1|b:area code2 etc<br>");
+                               
+                                               print("You can have information form more then one layer defined by using || as a seperator<br>");
+                               
+                                               print("Eg ad=layer1 name:a:area code1|b:area code2||layer2 name:c:area code1|d:area code2<br>");
+                               
+                                               print("The layers can only be earth, <a href=\"tdwgLevel1.html\">tdwg1</a>, <a href=\"tdwgLevel2.html\">tdwg2</a>, <a href=\"tdwgLevel3.html\">tdwg3</a> or <a href=\"tdwgLevel4.html\">tdwg4</a>. Click on the name to see a list of the area codes.<br>");
+                               
+                                       }
+                               
+                                       if ($p_bbox==null)
+                               
+                                       {
+                               
+                                               print("<br>");
+                               
+                                               print("<b>*Bounding Box (bbox=) has not been defined</b><br>");
+                               
+                               print("Bounding box defines the viewing area within the map.<br>");
+                               
+                               print("The numbers are based on Long/Lat coordinates <br>bbox=minX(minimum point Longtitude),minY(minimum point Latitude),maxX,maxY<br> Eg. bbox=13,-13,31,5 will give you a map showing the Democratic Republic of Congo.<br>");
+                               
+                                               print("bbox=-180,-90,180,90 is the full world view<br>");
+                               
+                                               print("If Bounding box is not defined the map will default to the  extent of the area data being requested (ad=)<br>");
+                               
+                                       }
+                               
+                                       if ($p_size==null)
+                               
+                                       {
+                               
+                                               print("<br>");
+                               
+                                               print("<b>Map Size (ms=) has not been defined</b></br>");
+                               
+                                               print("This defines the size of the map that will be displayed.<br>It can be only a single number representing the width of the image. The height is that number divided by 2.<br>eg. ms=1000 will give you a width of 1000 and a height of 500.<br>");
+                               
+                                               print("Or it can be ms=width,height where you assign both values.<br>");
+                               
+                                       }
+                               
+                                       if ($p_areas_style==null)
+                               
+                                       {
+                               
+                                               print("<br>");
+                               
+                                               print("<b>Area Style (as=) has not been defined</b><br>");
+                               
+                                               print("This defines the Area Data called earlier and fills in the color and optionally the border size and color<br>");         
+                               
+                                               print("Eg as=a:00ff00 will make the ad (area data) defined by a: the color green<br>");
+                               
+                                               print("If you wish to do more then just color:<br>");
+                               
+                                               print("Eg as=b:ff0000,0000ff,2 will make the ad (area data) defined by b: the color red (ff0000) and draw am outline with the width of 2 around its borders in the color blue (0000ff).<br>");
+                               
+                                               print("If you want to assign only a value (without changing the color) for border you must still format it like this<br>");
+                               
+                                               print("as=c:ffffff,0,4 This will make the ad (area data) defined by c: the white (ffffff) and draw am outline with the width of 4 around it.<br>");
+                               
+                                       }
+                               
+                               print("<br><br>");
+                               
+                               print("<b>*</b> Items are optional<br>");
+                               
+                               print("<b>Please refer to the wiki for how to setup the service:</b><br>");
+                               
+                               print("<b><a href=\"http://dev.e-taxonomy.eu/trac/wiki/MapRestServiceApi#Areas\">Wiki</a></b><br>");
+                               
+                               }
+                               
+                               else
+                               
+                               {
+                               //point part
+                               
+                               $od=$p_occ_data;
+                               
+                               $points=explode('||',$od);
+                               
+                               $geodata=array();
+                               
+                               
+                               
+                               foreach ($points as $k=>$v)
+                               
+                               {
+                               
+                                       $specie=explode(":",$v);
+                               
+                                       //id of the recordset
+                               
+                                       $id=$specie[0];
+                               
+                                       //geodata of each recordset
+                               
+                                       $geo=explode('|',$specie[1]);
+                               
+                                       foreach ($geo as $key=>$value)
+                               
+                                       {
+                               
+                                               $geos=explode(',',$value);
+                               
+                                               $geodata[$id]['geodata']['lon'][]=$geos[0];
+                               
+                                               $geodata[$id]['geodata']['lat'][]=$geos[1];
+                                               
+                               
+                                       }
+                               
+                               }
+                               
+                               
+                               
+                               //$os="1:c/f78755/10/Onthophagus semipunctatus|2:s/64cb48/15/Euoniticellus pallipes|3:sq/090b0a/30/Onthophagus joannae";
+                               
+                               
+                               
+                               $os=$p_occ_style;
+                               
+                               $sp=explode('|',$os);
+                               
+                               $species=array();
+                               
+                               
+                               foreach ($sp as $k=>$v)
+                               
+                               {
+                               
+                                       if(strlen($v)>0)
+                               
+                                       {
+                               
+                                               $sym=explode(':',$v);
+                               
+                               
+                               
+                                               $specie_id=$sym[0];     
+                               
+                                               $symbologies=explode('/',$sym[1]);
+                               
+                                               $geodata[$specie_id]['symbol']=$symbologies[0];
+                               
+                                               $geodata[$specie_id]['color']=$symbologies[1];
+                               
+                                               $geodata[$specie_id]['size']=$symbologies[2];
+                               
+                                               $geodata[$specie_id]['legend']=$symbologies[3];
+                               
+                                               
+                               
+                                       }
+                               
+                               }
+                               
+                               if(count($geodata)>0)
+                               {
+                                       $flagDisplayPoints=true;
+                               }
+                               if($flagDisplayPoints===true)
+                               {
+                                       //print("insert");      
+                                       $sqls=array();
+                                       $random=md5($p_uri );
+                                       foreach ($geodata as $key=>$val)
+                               
+                                       {
+                               
+                                               if(isset($geodata[$key]['geodata']['lat'] )===true)
+                               
+                                               {
+                                                       $sqls[]="delete from rest_points where userid='".$random."' AND id=".$key.";";
+                               
+                                                       foreach ($geodata[$key]['geodata']['lat'] as $k=>$v)
+                               
+                                                       {
+                               
+                                                               $sql="insert into rest_points(userid,id,the_geom,label,timestamp_point)         values('$random',".$key.",";
+                               
+                                                               $sql.="GeometryFromText('POINT(".$v." ";
+                               
+                                                               $sql.=$geodata[$key]['geodata']['lon'][$k];
+                               
+                                                               $sql.=")',4326),'".$geodata[$key]['legend']."',";
+                               
+                                                               $sql.=" current_timestamp);";
+                               
+                                                               $sqls[]=$sql;
+                               
+                                                       }
+                               
+                                               }
+                               
+                                       }
+                               
+                               
+                               
+                                       $sql_total="";
+                               
+                               
+                               
+                                       foreach ($sqls as $k=>$v)
+                               
+                                       {
+                               
+                                               //      echo $v."<br>";
+                               
+                                               $sql_total.=$v;
+                               
+                                       }
+                               
+                               
+                                       //print($sql_total);
+                                       $conn = pg_pconnect(POSTGIS_CS);
+                               
+                                       if (pg_ErrorMessage($conn))
+                               
+                                       { 
+                               
+                                               echo "<p><b>Ocurrio un error conectando a la base de datos: .</b></p>"; 
+                               
+                                       }
+                               
+                                       else
+                               
+                                       {
+                               
+                                               // echo $sql_total;
+                               
+                                               pg_exec($sql_total);    
+                                       }
+                                       $xml="<gml>";
+                               
+                                               $xml.="<feature>Species definition</feature>";
+                               
+                               
+                               
+                                       foreach ($geodata as $k=>$v)
+                               
+                                       {
+                               
+                                               switch ($geodata[$k]['symbol'])
+                               
+                                               {
+                               
+                                                       case('c'):$geodata[$k]['symbol']="Circle"; break; 
+                               
+                                                       case('s'):$geodata[$k]['symbol']="Star"; break;
+                               
+                                                       case('sq'):$geodata[$k]['symbol']="Square"; break;
+                               
+                                               }
+                               
+                                               //echo $geodata[$k]['legend']."<br>";
+                               
+                                               $xml.="<specie>";
+                               
+                                               $xml.="<id>".$k."</id>";
+                               
+                                               $xml.="<name>".$geodata[$k]['legend']."</name>";
+                               
+                                               $xml.="<style>";
+                               
+                                               $xml.="<color>".$geodata[$k]['color']."</color>";
+                               
+                                               $xml.="<symbol>".$geodata[$k]['symbol']."</symbol>";
+                               
+                                               $xml.="<size>".$geodata[$k]['size']."</size>";
+                               
+                                               $xml.="</style>";
+                               
+                                               $xml.="</specie>"; 
+                               
+                                       }
+                               
+                                       $xml.="</gml>";
+                               
+                                       //echo $xml;
+                               
+                                       $dom_new = new DOMDocument();
+                               
+                                       $xsl = new XSLTProcessor;
+                               
+                                       $xsl->setParameter( '', 'userid', $random);
+                               
+                                       $style = realpath('points.xsl');
+                               
+                                       $dom_new->load($style);
+                               
+                                       $xsl->importStyleSheet($dom_new);
+                               
+                                       $dom_new->loadXML($xml);
+                               
+                                       $out = $xsl->transformToXML($dom_new);
+                               
+                               
+                               
+                                       $path_towrite="/var/www/synthesys/www/v1/sld/point_".$random.".sld";
+                               
+                                       //print($path_towrite);
+                               
+                                       $fp=fopen("$path_towrite","w");
+                               
+                                       $write=fwrite($fp,$out);
+                               
+                               }
+                               
+                               //end point part
+                               
+                               
+                               //ftheeten 2011/04/13
+                               $arrayBackgroundStyle=array();
+                               
+                               
+                               if (count($layers)>0)//(ereg(",",$layers))
+                               
+                               {
+                               //print("case1");
+                               
+                                       
+                               
+                                       //$layers=explode(",",$layers);
+                               
+                                       $ls=array();
+                               
+                                       $ls_styles=array();
+                                       $ls_types=array();
+                                       $i=0;
+                               
+                                       //foreach ($layers as $k=>$v)
+                                       //print($layers);
+                                       //print_r($arrayTableStyles);
+                                       $v2="";
+                               
+                                       foreach($layers as $v)  
+                                       {
+                               
+                                               $k=$i;  
+                                               switch ($v)
+                               
+                                               {               
+                               
+                                                       case ('earth'): 
+                               
+                                                       $v2="country_earth";
+                               
+                                                       
+                               
+                                                               $ls[]=$v2;
+                                                               if(strlen($arrayTableStyles[$v]['value'])==0)
+                                                               {
+                                                                       $ls_styles[]='line';
+                                                               }
+                                                               else
+                                                               {
+                                                                       $ls_styles[]=$arrayTableStyles[$v]['value'];
+                                                               }
+                                                               $ls_types[]=$arrayTableStyles[$v]['type'];
+                                                               
+                               
+                                                       break;
+                               
+                                                       case ('tdwg1'): 
+                               
+                                                       $v2="topp:tdwg_level_1";
+                               
+                                                       //end loop array key in symbol$ls[]=$v2;
+                               
+                                                               if(strlen($arrayTableStyles[$v]['value'])==0)
+                                                               {
+                                                                       $ls_styles[]='line';
+                                                               }
+                                                               else
+                                                               {
+                                                                       $ls_styles[]=$arrayTableStyles[$v]['value'];
+                                                               }
+                                                               $ls_types[]=$arrayTableStyles[$v]['type'];
+                                                               
+                               
+                                               //      array_push($ls,$v);
+                               
+                                                       break;
+                               
+                                                       case ('tdwg2'): 
+                               
+                                                       $v2="topp:tdwg_level_2";
+                               
+                                                       $ls[]=$v2;
+                               
+                                                               if(strlen($arrayTableStyles[$v]['value'])==0)
+                                                               {
+                                                                       $ls_styles[]='line';
+                                                               }
+                                                               else
+                                                               {
+                                                                       $ls_styles[]=$arrayTableStyles[$v]['value'];
+                                                               }
+                                                               $ls_types[]=$arrayTableStyles[$v]['type'];
+                                                               
+                               
+                               //                      array_push($ls,$v);
+                               
+                                                       break;
+                               
+                                                       case ('tdwg3'): 
+                               
+                                                       $v2="topp:tdwg_level_3";
+                               
+                                                       $ls[]=$v2;
+                                                               if(strlen($arrayTableStyles[$v]['value'])==0)
+                                                               {
+                                                                       $ls_styles[]='line';
+                                                               }
+                                                               else
+                                                               {
+                                                                       $ls_styles[]=$arrayTableStyles[$v]['value'];
+                                                               }
+                                                               $ls_types[]=$arrayTableStyles[$v]['type'];
+                                                               
+                               
+                                                       break;
+                               
+                                                       case ('tdwg4'): 
+                               
+                                                       $v2="topp:tdwg_level_4";
+                               
+                                                       $ls[]=$v2;
+                                                               if(strlen($arrayTableStyles[$v]['value'])==0)
+                                                               {
+                                                                       $ls_styles[]='line';
+                                                               }
+                                                               else
+                                                               {
+                                                                       $ls_styles[]=$arrayTableStyles[$v]['value'];
+                                                               }
+                                                               $ls_types[]=$arrayTableStyles[$v]['type'];
+                                                               
+                               
+                                                       break;
+                                                       default:
+                               
+                                                               $ls[]=$v;
+                                                               
+                                                               if(strlen($arrayTableStyles[$v]['value'])==0)
+                                                               {
+                                                                       $ls_styles[]='';
+                                                               }
+                                                               else
+                                                               {
+                                                                       $ls_styles[]=$arrayTableStyles[$v]['value'];
+                                                               }
+                                                               $ls_types[]=$arrayTableStyles[$v]['type'];
+                                                               
+                                                       break;
+                               
+                                               }
+                               
+                                               $i++;
+                               
+                               //Æ? $v;
+                               
+                                       }
+                               
+                               
+                               
+                               $styles_string="";
+                               
+                                       //ftheeten april 2011   
+                                       $i=0;
+                               
+                                       foreach ($ls as $k=>$v)
+                               
+                                       {
+                               
+                               
+                               
+                                               $ls_string.=$v.",";
+                                               
+                                               //ftheeten
+                               
+                                               //$styles_string.="line,";
+                                               $styles_string.=$ls_styles[$i];
+                                               $arrayBackgroundStyle[$i]['name']=$v;
+                                               $arrayBackgroundStyle[$i]['style']=$ls_styles[$i];
+                                               $arrayBackgroundStyle[$i]['type']=$ls_types[$i];
+                                               $i++;
+                               
+                                       }
+                               
+                                               $ls_string=substr($ls_string,0,-1);
+                               
+                                               $styles_string=substr($styles_string,0,-1);
+                               
+                                               //      $styles_string.=$ls[count($ls)-1];
+                               
+                                               
+                               
+                               }
+                               
+                               else
+                               
+                               {
+                               //print("case 2");
+                                               $type_string="";
+                               
+                                               switch ($layers[0])
+                               
+                                               {
+                               
+                               
+                               
+                                                       case ('earth'): 
+                               
+                                                               $ls_string="topp:country_earth";
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="line";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                                               
+                               
+                                                       break;
+                               
+                                                               case ('e_prov'): 
+                               
+                                                               $ls_string="topp:province_europe";
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="line";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                                               
+                                                       
+                               
+                                                               break;
+                               
+                                                       case ('tdwg1'): 
+                               
+                                                               $ls_string="topp:tdwg_level_1";
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="line";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                                               
+                               
+                                                       break;
+                               
+                                                       case ('tdwg2'): 
+                               
+                                                               $ls_string="topp:tdwg_level_2";
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="line";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                               
+                                                       break;
+                               
+                                                       case ('tdwg3'): 
+                               
+                                                               $ls_string="topp:tdwg_level_3";
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="line";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                                               
+                               
+                               
+                                                       break;
+                               
+                                                       case ('tdwg4'): 
+                               
+                                                               $ls_string="topp:tdwg_level_4";
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="line";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                                               
+                               
+                                                       break;
+                               
+                                                       default:
+                               
+                                                               $ls_string=$layers;
+                                                               //ftheeten 13/04/2011   
+                                                               if(strlen($arrayTableStyles[$layers[0]]['value'])==0)
+                                                               {
+                                                                       $styles_string="";
+                                                               }
+                                                               else
+                                                               {
+                                                                       $style_string=$arrayTableStyles[$layers[0]]['value'];
+                                                               }
+                                                               $type_string=$arrayTableStyles[$layers[0]]['type'];
+                                               
+                               
+                                                       break;
+                               
+                                                       
+                               
+                                               }
+                               
+                               
+                               
+                                                       
+                                                       //comment out ftheeten 13/04/2011
+                               
+                                                       //$styles_string="line";
+                                                       $arrayBackgroundStyle[0]['name']=$ls_string;
+                                                       $arrayBackgroundStyle[0]['style']=$styles_string;
+                                                       $arrayBackgroundStyle[0]['type']=$type_string;
+                               
+                               
+                               
+                               }
+                               
+                               
+                               
+                               $ad=explode('||',$ad);
+                               
+                               
+                               
+                               foreach ($ad as $k=>$v)
+                               
+                               {// loop ad
+                               
+                                       //tdwg3:a:PHI,SPA|b:ITA
+                               
+                               
+                                       if ($p_title)
+                               
+                                       {//if title
+                               
+                                               $title=$p_title;
+                               
+                                       }//if title
+                               
+                                       //title=a:cultivated|b:forest
+                               
+                                       $t=explode('|',$title);
+                               
+                                       $title_array=array();
+                               
+                               
+                               
+                                       foreach ($t as $k=>$v)
+                               
+                                       {//loop t
+                               
+                                               $title=explode(':',$v);
+                               
+                                               $title_array[$title[0]]=$title[1];
+                               
+                                       }//loop t
+                               
+                               
+                               
+                                       if ($p_label)
+                               
+                                       {//if label
+                               
+                                               $label=$p_label;
+                               
+                                       }// if label
+                               
+                               
+                                       //$images=a,b:orange,green
+                               
+                                       if ($p_img_url)
+                               
+                                       {//if images_url
+                               
+                                               $images_url=$p_img_url;
+                               
+                                               //$images_url="a,b:edit.csic.es/fitxers/hatch_images|c:edit.csic.es/fitxers/hatch_images";
+                               
+                                               $images_url=explode('|',$images_url);
+                               
+                               
+                               
+                                       }//image_url
+                               
+                               
+                               
+                               
+                               
+                                       $symbols=$p_symbols;
+                               
+                                       //$symbols="a,b:hatch_orange.gif|c:hatch_green.gif";
+                               
+                                       $symbols=explode('|',$symbols);
+                               
+                                       $symbols_url=array();
+                               
+                                       foreach ($symbols as $k=>$v)
+                               
+                                       {//for symbols
+                               
+                                               $symbols=explode(':',$v);
+                               
+                                               $keys=explode(',',$symbols[0]);
+                               
+                                               $get_v=explode(',',$symbols[1]);
+                               
+                                       //              var_dump ($get_v);
+                               
+                                               if ($p_img_url)
+                               
+                                               {//if images urls
+                               
+                                                       foreach ($keys as $k=>$v)
+                               
+                                                       {
+                               
+                               
+                               
+                                                               $symbols_url[$v]['symbols']=$get_v[0];
+                               
+                                                               $symbols_url[$v]['size']=$get_v[1];     
+                               
+                                                               $symbols_url[$v]['format']=$get_v[2];   
+                               
+                                                       }       
+                               
+                                               }
+                               
+                                       }// for symbols
+                               
+                                       if ($p_img_url)
+                               
+                                       {//if images url
+                               
+                                               foreach ($images_url as $k=>$v)
+                               
+                                               {
+                               
+                                                       $images=explode(':',$v);
+                               
+                                                       //echo $images[0];
+                               
+                                                       $keys=explode(',',$images[0]);
+                               
+                                                       //var_dump($keys);
+                               
+                                                       foreach ($keys as $k=>$v)
+                               
+                                                       {
+                               
+                                                               $symbols_url[$v]['url']=$images[1];     
+                               
+                                                       }
+                               
+                                               }
+                               
+                                       }//end if images_url
+                               
+                               
+                               
+                               
+                               
+                               //$ad="tdwg2/d:Mexico,Caribbean||tdwg4/b:Chiapas,Oaxaca,Veracruz||tdwg3/a:MXC|b:MXE,MXG|c:MXS,MXT";
+                               
+                               
+                               
+                                       $color=$p_areas_style;
+                               
+                               
+                               
+                                               $ms=$p_size;
+                               
+                                               if (ereg(",",$ms))
+                               
+                                               {
+                               
+                                                       $ms=explode(',',$ms);
+                               
+                                                       $width=$ms[0];
+                               
+                                                       $height=$ms[1];
+                               
+                                               }
+                               
+                                               else 
+                               
+                                               {
+                               
+                                                       $width=$ms;     
+                               
+                                                       $height=$width/2;
+                               
+                                               };
+                               
+                                               
+                               
+                               
+                               
+                                       //var_dump($ls_string);
+                               
+                               
+                               
+                                       $col=explode('|',$color);
+                               
+                                       //no dóna error al haver-n'hi només un!
+                               
+                                       $total_symbols=array();
+                               
+                                       //$color="a:d7add2,AOOOOOF,2,dotted,cultivated|b:ab8dc9F";
+                               
+                                       foreach ($col as $color)
+                               
+                                       {//loop col
+                                               //ftheeten 14/03/2011
+                                               if(strpos($color,'http://')===false)
+                                               {
+                                                       $color=explode(':',$color);
+                               
+                                                       $symbols_key=$color[0];
+                               
+                                                       $symbols_val=$color[1];
+                                               }
+                                               else
+                                               {
+                                                       $color=explode(':',$color,2);
+                               
+                                                       $symbols_key=$color[0];
+                               
+                                                       $symbols_val=$color[1];
+                                               }
+                               
+                               
+                               
+                                               /*$color=explode(':',$color);
+                               
+                                               $symbols_key=$color[0];
+                               
+                                               $symbols_val=$color[1];
+                                               */
+                               
+                                               if (!ereg(",",$symbols_val))
+                               
+                                               {
+                               
+                                                       //only fill area; others are default
+                               
+                                                               $total_symbols[$symbols_key][]=$symbols_val;    
+                               
+                                               }       
+                               
+                                               else 
+                               
+                                               {
+                               
+                                                       $s=explode(',',$symbols_val);
+                               
+                                                       foreach ($s as $k=>$v)
+                               
+                                                       {
+                               
+                                                               $total_symbols[$symbols_key][]=$v;      
+                               
+                                                       }
+                               
+                                               }
+                               
+                                       //      $total_symbols[$symbols_key]=$col_val;
+                               
+                                       }//loop col
+                               
+                                       //var_dump($total_symbols);
+                               
+                                       //'a'-->array 'blue'
+                               
+                               
+                                               foreach ($total_symbols as $k=>$v)
+                               
+                                               {//loop total symbols
+                               
+                                       
+                               
+                                                       //foreach       ($total_symbols as $k2=>$v2)
+                               
+                                                       //echo $total_symbols[$k][0]."<br>";
+                               
+                                                               //var_dump($total_symbols[$k]);
+                               
+                                                       //$color="a:d7add2,AOOOOOF,2,dotted|b:ab8dc9F"; 
+                               
+                               
+                               
+                                                       for ($i=0;$i<5;$i++)
+                               
+                                                       {// for loop
+                               
+                                                               //echo $total_symbols[$k][$i]."<br>";
+                               
+                                                               switch ($i)
+                               
+                                                               {
+                               
+                               
+                                                                       case 0:
+                               
+                               
+                               
+                                                                       //   if (array_key_exists($i,$total_symbols[$k])){ 
+                               
+                                                                       if($total_symbols[$k][$i]=="")
+                               
+                                                                       {
+                               
+                                                                               $total_symbols[$k][$i]="c5bec0";
+                               
+                                                                       }
+                               
+                                                                       //}
+                               
+                               
+                               
+                                                                       case 1:
+                               
+                                                                               if($total_symbols[$k][$i]=="")
+                               
+                                                                               {
+                               
+                                                                                       $total_symbols[$k][$i]="10090b";                                
+                               
+                                                                               }
+                               
+                                                                       case 2:
+                               
+                                                                                if($total_symbols[$k][$i]=="")
+                               
+                                                                               {
+                               
+                                                                                       $total_symbols[$k][$i]="0.5";                           
+                               
+                                                                               }
+                               
+                                                                       /*      case 3:
+                               
+                                                                                        if($total_symbols[$k][$i]=="")
+                               
+                                                                                               {
+                               
+                                                                                       $total_symbols[$k][$i]="";                              
+                               
+                                                                                               }*/
+                               
+                                                                       /*      case 4:
+                               
+                                                                                       if($total_symbols[$k][$i]=="")
+                               
+                                                                                       {
+                               
+                                                                                                       $total_symbols[$k][$i]="no_style";
+                               
+                                                                                       }*/
+                               
+                                                                       case 3:
+                               
+                                                                               if($total_symbols[$k][$i]=="")
+                               
+                                                                               {
+                               
+                                                                                               $total_symbols[$k][$i]="no_style";
+                               
+                                                                               }
+                               
+                                                                       case 4:
+                               
+                                                                               if($total_symbols[$k][$i]=="")
+                               
+                                                                               {
+                               
+                                                                                               $total_symbols[$k][$i]="no_label";
+                               
+                                                                               }
+                               
+                                                                 }//fi switch
+                               
+                                                       }               //fi for
+                               
+                                                       if (array_key_exists($k,$symbols_url))
+                               
+                                                       {
+                               
+                                                               $total_symbols[$k]['5']=$symbols_url[$k]['url'];
+                               
+                                                               $total_symbols[$k]['6']=$symbols_url[$k]['symbols'];
+                               
+                                                               $total_symbols[$k]['7']=$symbols_url[$k]['size'];
+                               
+                                                               $total_symbols[$k]['8']=$symbols_url[$k]['format'];
+                               
+                               
+                               
+                                                       }
+                               
+                                                       
+                               
+                                               }//for total symbols
+                               
+                                               //var_dump($total_symbols);
+                               
+                               
+                               
+                                               $tdwg=array();
+                               
+                                               //ftheeten 21/02/2011
+                               
+                                               $wms_field_array=array();
+                               
+                                               foreach ($ad as $k=>$v)
+                               
+                                               {//for ad
+                               
+                                                       $v=explode('|',$v);
+                               
+                                                       foreach ($v as $k=>$v)
+                               
+                                                       {//for v
+                               
+                                                               if ($k==0)
+                               
+                                                               {//if k
+                               
+                                                         
+                               
+                                                                       $first_data=explode(':',$v);
+                               
+                                                                       /*$first_layer=$first_data[0];
+                               
+                                                                       $first_style=$first_data[1];
+                               
+                                                                       $first_pol=$first_data[2];
+                               
+                                                                       */
+                               
+                                                                       //ftheeten 21/02/2011 (WMS field for non hardcded tdwg layers)
+                               
+                                                                       $first_wms_field='';
+                               
+                                                                       if(count($first_data)==4)
+                               
+                                                                       {//loop first data
+                               
+                                                                       //print("WMS field found!!!!=");    
+                               
+                                                                       //print($first_data[1]);
+                               
+                                                                       //print("!!!!");
+                               
+                                                                               $first_layer=$first_data[0];
+                               
+                                                                               $first_wms_field=$first_data[1];
+                               
+                                                                               $first_style=$first_data[2];
+                               
+                                                                               $first_pol=$first_data[3];
+                               
+                                                                       }//loop first data
+                               
+                                                                       else
+                               
+                                                                       {//loop first data
+                               
+                                                                               $first_layer=$first_data[0];
+                               
+                                                                               $first_style=$first_data[1];
+                               
+                                                                               $first_pol=$first_data[2];
+                               
+                                       
+                               
+                                                                       }//loop first data      
+                               
+                                                                       //var_dump($v);
+                               
+                               
+                                                                       if (!ereg(",",$first_pol))
+                               
+                                                                       {//loop first pol
+                               
+                                                       
+                               
+                                                                               $tdwg[$first_layer][$first_style]['zones']=$first_pol;
+                               
+                                                                               //ftheeten 2010/02/21
+                               
+                                                                               $wms_field_array[$first_layer]=$first_wms_field;
+                               
+                                                       
+                               
+                                                                       }//loop first pol
+                               
+                                                                       else
+                               
+                                                                       {//loop first pol
+                               
+                                                                               //ftheeten 2010/02/21
+                               
+                                                                               $wms_field_array[$first_layer]=$first_wms_field;
+                               
+                                                                               //tdwg4:c:Nicaragua,Chiapas,Oaxaca,Veracruz
+                               
+                                                                               $l3=explode(',',$first_pol);
+                               
+                                                                               foreach($l3 as $value)
+                               
+                                                                               {
+                               
+                                                                                       $tdwg[$first_layer][$first_style]['zones'][]=$value;
+                               
+                                                                                       //echo $value."<br>";
+                               
+                                                                               }
+                               
+                                                                       }//loop first pol
+                               
+                               
+                               
+                                                               }//if k 
+                               
+                                                               else  //not the first data 
+                               
+                                                               {//if k 
+                               
+                                                                       //b:Mexico
+                               
+                                                                       //si no trobem cap comma, (ex: b:IRQ )d:NA o c:NA|b:PI
+                               
+                                                                       // a cada estil l'hi correspon només un país  
+                               
+                                                                       //      var_dump($v);
+                               
+                                                                       $data=explode(':',$v);
+                               
+                                                                       //ftheeten 2010/02/21
+                               
+                                                                       $wms_field_array[$first_layer]=$first_wms_field;
+                               
+                                                                       if (!ereg(",",$data[1]))
+                               
+                                                                       {//if data 1
+                               
+                               
+                                                                               $tdwg[$first_layer][$data[0]]['zones']=$data[1];
+                               
+                                                                               //      var_dump($tdwg[$first_layer]);
+                               
+                                                                               //var_dump($data[1]);
+                               
+                                                                               //$styles[$key]['zones'];
+                               
+                                                                               //      echo $val;
+                               
+                                                                       }//if data 1
+                               
+                                                                       else
+                               
+                                                                       {//if data 1
+                               
+                                                                               //c:Nicaragua,Chiapas,Oaxaca,Veracruz
+                               
+                                                                               $l3=explode(',',$data[1]);
+                               
+                                                                               foreach($l3 as $value)
+                               
+                                                                               {//$l3
+                               
+                                                                                       $tdwg[$first_layer][$data[0]]['zones'][]=$value;
+                                                                                       //echo $value."<br>";
+                               
+                                                                               }//$l3
+                               
+                                                                       }//if data 1
+                               
+                               
+                               
+                                                               }//if k
+                               
+                               
+                               
+                               
+                               
+                                                       }//for v        
+                               
+                               
+                               
+                                               }//for ad (line 566)
+                               
+                               
+                               
+                               }//for ad 
+                               
+                               
+                               
+                               
+                               $tdwg3_val=array();
+                               
+                               $tdwg3_total=array();
+                               
+                               
+                               
+                               $legend="<gml>";
+                               
+                               foreach ($total_symbols as $k=>$v)
+                               
+                               {//loop total symbols in gml
+                                       if(strlen($title_array[$k])>0)
+                                       {
+                               
+                                               //var_dump($k);  //a,b
+                               
+                                               $legend.="<style><name>".$title_array[$k]."</name>";
+                               
+                                               //$legend.="<style><name>".$total_symbols[$k][4]."</name>";
+                               
+                               
+                               
+                                               $legend.="<label>".$k."</label>";
+                               
+                               
+                               
+                                               if (array_key_exists($k['url'],$symbols_url))
+                               
+                                               {//if key in symbol
+                               
+                               
+                               
+                                                                       
+                               
+                                                       $legend.="<hatching>http://".$symbols_url[$k]['url']."/".$symbols_url[$k]['symbols'].".".$symbols_url[$k]['format']."</hatching>";
+                               
+                                                       switch ($symbols_url[$k]['format'])
+                               
+                                                       {
+                               
+                                                               case ('gif'): $format='image/gif';break;
+                               
+                                                               case ('png'): $format='image/png';break;
+                               
+                                                               case ('jpeg'): $format='image/jpeg';break;
+                               
+                                                       }
+                               
+                               
+                               
+                                                       $legend.="<symbol_size>".$symbols_url[$k]['size']."</symbol_size>";
+                               
+                                                       $legend.="<symbol_format>".$format."</symbol_format>";
+                               
+                                                       //$xml.="<hatch_symbol>".."</hatch_symbol>";
+                               
+                                                       $legend.="<color>hatching</color>";
+                               
+                                               }//end if array key in symbol
+                               
+                                               else 
+                                               { // if array key in symbol
+                               
+                                                       $legend.="<hatching>NO</hatching>";
+                               
+                                                       $legend.="<color>".$total_symbols[$k][0]."</color>";
+                               
+                                               } //end array key in symbol
+                               
+                               
+                               
+                               
+                               
+                                               $legend.="<stroke_color>".$total_symbols[$k][1]."</stroke_color>";
+                               
+                                               $legend.="<stroke_width>".$total_symbols[$k][2]."</stroke_width>";
+                               
+                                               switch ($total_symbols[$k][3])
+                               
+                                               {// switch total symbols
+                               
+                                                       case ('1_2'): 
+                                                               $total_symbols[$k][3]="1 2 1 2";
+                                                       break;
+                               
+                                                       case ('1_4'): 
+                                                               $total_symbols[$k][3]="1 4 1 4";
+                                                       break;
+                               
+                                                       case ('2_2'): 
+                                                               $total_symbols[$k][3]="2 2 2 2";
+                                                       break;
+                               
+                                                       case ('2_4'):
+                                                               $total_symbols[$k][3]="2 4 2 4";
+                                                       break;
+                               
+                                                       case ('5_7'): 
+                                                               $total_symbols[$k][3]="5 7 5 7";
+                                                       break;
+                               
+                                                       case ('10_5'): 
+                                                               $total_symbols[$k][3]="10 5 10 5";
+                                                       break;
+                               
+                                               }//end switch
+                               
+                                                       $legend.="<stroke_style>".$total_symbols[$k][3]."</stroke_style>";
+                               
+                                                       $legend.="</style>";
+                                       }
+                               
+                               }//end loop symbols in gml
+                               
+                                       
+                               $legend.="</gml>";
+                               
+                               $legend_xml[]=$legend;
+                               
+                               //var_dump($legend_xml);
+                               
+                               //echo $legend;
+                               
+                                $p=simplexml_load_string($legend_xml[0]);
+                               
+                               $hatching=$p->style->hatching;
+                               
+                               $xsl = new XSLTProcessor;
+                               
+                               $xsl->setParameter( '', 'symbol', $hatching);
+                               
+                               $xsl->setParameter( '', 'layer', $layer);
+                               
+                               $xsl->setParameter( '', 'field', $field);
+                               
+                               $xsl->setParameter( '', 'label_field', $label_field);
+                               
+                               $style = realpath('areas_legend_no.xsl');
+                               
+                               $dom_new = new DOMDocument();
+                               
+                               $dom_new->load($style);
+                               
+                               $xsl->importStyleSheet($dom_new);
+                               
+                               $dom_new->loadXML($legend_xml[0]);
+                               
+                               $out = $xsl->transformToXML($dom_new);
+                               
+                               
+                               
+                               //$random = (rand()%300).".sld";
+                               
+                               //$leg_path_towrite=DIR_PLATFORM."/edit_wp5/fitxers/sld/$random";
+                               
+                               $leg_path_towrite="/var/www/synthesys/www/v1/sld/$random";
+                               
+                               $fp=fopen("$leg_path_towrite","w");
+                               
+                               $write=fwrite($fp,$out);
+                               
+                               //$leg_url="/var/www/synthesys/www/v1/sld/$random";
+                               
+                               $leg_url=LEGEND_URL."/".$random;
+                               
+                               
+                               
+                               $legs=array();
+                               
+                               foreach ($tdwg as $k=>$v)
+                               
+                               {//loop tdwg 1
+                               
+                                       $tmp_wms_field="default";
+                               
+                                       foreach ($tdwg[$k] as $k2=>$v2)
+                               
+                                       {
+                               
+                               
+                                               $legs[$k2]=$k;
+                               
+                                       
+                               
+                                       }
+                               
+                               
+                               
+                                       $xml="<gml>";
+                               
+                                       $pos_prefix = substr_count($k,$prefix_wms);
+                               
+                                       $displayedLayer=$k;
+                               
+                                       //print("pos=".$pos_prefix."=");
+                               
+                                       if($pos_prefix===0) 
+                               
+                                       {
+                               
+                                               //print("prefix");
+                               
+                                               $displayedLayer=$prefix_wms.$k;
+                               
+                                       }
+                               
+                                               
+                               
+                                       $xml.="<feature>".$displayedLayer."</feature>";
+                               
+                                       
+                               
+                                       foreach ($v as $style=>$value)
+                               
+                                       {// loop style=>value
+                               
+                               
+                                               $xml.="<style><name>".$style."</name>";
+                               
+                                               $xml.="<label>".$label."</label>";
+                               
+                                       
+                               
+                                               if (array_key_exists($style,$symbols_url))
+                               
+                                               {//if key exists
+                               
+                                                       //var_dump($symbols_url[$style]);
+                               
+                                                       $xml.="<hatching>http://".$symbols_url[$style]['url']."/".$symbols_url[$style]['symbols'].".".$symbols_url[$style]['format']."</hatching>";
+                               
+                                                       switch ($symbols_url[$style]['format'])
+                               
+                                                       {
+                               
+                                                               case ('gif'): 
+                                                                       $format='image/gif';
+                                                               break;
+                               
+                                                               case ('png'): 
+                                                                       $format='image/png';
+                                                               break;
+                               
+                                                               case ('jpeg'): 
+                                                                       $format='image/jpeg';
+                                                               break;
+                               
+                                                       }
+                               
+                                                       $xml.="<symbol_size>".$symbols_url[$style]['size']."</symbol_size>";
+                               
+                                                       $xml.="<symbol_format>".$format."</symbol_format>";
+                               
+                                                       //$xml.="<hatch_symbol>".."</hatch_symbol>";
+                               
+                                                       $xml.="<color>hatching</color>";
+                               
+                                               }//if key exists
+                               
+                                               else 
+                               
+                                               {//if key not exists 
+                               
+                                                       $xml.="<hatching>NO</hatching>";
+                               
+                                                       $xml.="<color>".$total_symbols[$style][0]."</color>";
+                               
+                                               }//if key not exists
+                               
+                                               $xml.="<stroke_color>".$total_symbols[$style][1]."</stroke_color>";
+                               
+                                               $xml.="<stroke_width>".$total_symbols[$style][2]."</stroke_width>";
+                               
+                                               switch ($total_symbols[$style][3])
+                               
+                                               {//loop total symbols
+                               
+                                                       case ('1_2'): 
+                                                               $total_symbols[$style][3]="1 2 1 2";
+                                                       break;
+                               
+                                                       case ('1_4'): 
+                                                               $total_symbols[$style][3]="1 4 1 4";
+                                                       break;
+                               
+                                                       case ('2_2'): 
+                                                               $total_symbols[$style][3]="2 2 2 2";
+                                                       break;
+                               
+                                                       case ('2_4'): 
+                                                               $total_symbols[$style][3]="2 4 2 4";
+                                                       break;
+                               
+                                                       case ('5_7'): 
+                                                               $total_symbols[$style][3]="5 7 5 7";
+                                                       break;
+                               
+                                                       case ('10_5'): 
+                                                               $total_symbols[$style][3]="10 5 10 5";
+                                                       break;
+                               
+                                               }//loop total symbols
+                               
+                                               $xml.="<stroke_style>".$total_symbols[$style][3]."</stroke_style>";
+                               
+                                       
+                               
+                                               foreach ($value as $key=>$country)
+                               
+                                               {//loop key=> country
+                               
+                                                       if(!is_array($country))
+                               
+                                                       {
+                               
+                                       
+                               
+                                                               $xml.="<country>".$country."</country>";
+                               
+                                                               $xml.="</style>";
+                               
+                                                       }
+                               
+                                                       else 
+                               
+                                                       {
+                               
+                                                               foreach ($tdwg[$k][$style]['zones'] as $zones)
+                               
+                                                               {
+                               
+                                                                       $xml.="<country>".$zones."</country>";
+                               
+                                                               }
+                               
+                                                                       $xml.="</style>";
+                               
+                                                       } //fi foreach country
+                               
+                                               }// end loop key country
+                               
+                                       }//loop styles=>values
+                               
+                                       $xml.="</gml>";
+                               
+                                       //print($xml);
+                               
+                                       $gmls[$k]=$xml;
+                               
+                               }//end loop tdwg 1
+                               
+                               //var_dump($gmls[$k]);
+                               
+                               
+                               
+                                       if ($p_bbox)
+                               
+                                       {
+                               
+                                               $bbox=$p_bbox;
+                               
+                                       }
+                               
+                                       else
+                               
+                                       {
+                               
+                                               
+                               
+                                                       $conn = pg_pconnect(POSTGIS_CS);
+                               
+                                                               if (pg_ErrorMessage($conn)) 
+                               
+                                                               { 
+                               
+                                                                        echo "<p><b>Ocurrio un error conectando a la base de datos: .</b></p>"; 
+                               
+                                                                        }
+                               
+                                                               else
+                               
+                                                               {
+                               
+                                                                       
+                               
+                                                               
+                               
+                                       $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from tdwgs where ";                               
+                               
+                                       $c=0;
+                               
+                               //print("before switch");
+                                       $flagUserTable=false;
+                                       $ibbox=0;
+                               
+                                       foreach ($tdwg as $k=>$v)
+                               
+                                       {
+                               
+                               
+                               
+                               
+                               
+                                                       switch ($k)
+                               
+                                                       {
+                               
+                                               
+                               
+                                                       //ftheeten 21/02/2011: $db_layers and $layer_sh seem unused
+                               
+                                                       //see also line 830
+                               
+                                                       case ('tdwg1'): $layer='topp:tdwg_level_1';$db_layer='tdwg_level_1';
+                               
+                                                       $field='code';
+                               
+                                                       //??????????????????????????????????????$label_field='zona';
+                               
+                                                       
+                               
+                                                       break;
+                               
+                                                       case ('tdwg2'): $layer='topp:tdwg_level_2';$db_layer='tdwg_level_2';
+                               
+                                                       $field='code';
+                               
+                                                       $label_field='code';
+                               
+                                                       break;
+                               
+                                                       case ('tdwg3'): $layer='topp:tdwg_level_3'; $db_layer='tdwg_level_3';
+                               
+                                                       $field='code';$layer_sh="TDWG 3";$label_field='code';
+                               
+                                                       break;
+                               
+                                                       case ('tdwg4'): $layer='topp:tdwg_level_4';$db_layer='tdwg_level_4';
+                               
+                                                       $field="code";
+                               
+                                                       $label_field='code';$layer_sh="TDWG 4";
+                               
+                                                       break;
+                               
+                                                       case ('e_w_0'): $layer='topp:europe_west_level_0';$db_layer='europe_west_level_0';
+                               
+                                                       $field="code";
+                               
+                                                       $label_field='code';$layer_sh="EURW 0";
+                               
+                                                       break;
+                               
+                                                       case ('e_w_1'): $layer='topp:europe_west_level_1';$db_layer='europe_west_level_1';
+                               
+                                                       $field="code";
+                               
+                                                       $label_field='code';$layer_sh="EURW 1";
+                               
+                                                       break;
+                               
+                                                       //ftheeten 21/01/2011 (for other layers than tdwg)
+                               
+                                                       default:
+                               
+                                                               $layer=$k;
+                                                               $field=$wms_field_array[$k];
+                               
+                                                               $label_field=$wms_field_array[$k];//'?';
+                               
+                                                               //print("________________________layer=".$layer);
+                                                               //print("________________________field=".$field);
+                               //ftheeten auto boox 24/08/2011
+                                                               if($ibbox==0)
+                                                               {
+                                                                       $BBOX_sql="SELECT extent(g) FROM(select extent(the_geom) as g from ".$layer." where ";
+                                                               }
+                                                               elseif($ibbox>0)
+                                                               {
+                                                                       $BBOX_sql="UNION ALL select extent(the_geom) as g from ".$layer." where ";
+                                                               }       
+                                                               $flagUserTable=true;
+                                                               $ibbox++;
+                                                               //print('====>ibbox='.$ibbox);
+                               
+                                                               break;
+                                                                       
+                               
+                                                       }
+                               
+                               
+                               
+                               
+                               
+                                       foreach($v as $key=>$val)
+                               
+                                       {
+                               
+                               //      var_dump($val);
+                               
+                                   if ($c>0)
+                               
+                                   {
+                               
+                                    $BBOX_sql.="OR ";
+                               
+                                   }
+                               
+                                       if (count($val['zones'])==1)
+                               
+                                       {
+                               
+                               
+                               
+                                    //$BBOX_sql.="code='".$val['zones']."' ";
+                                       $BBOX_sql.=$field."='".$val['zones']."' ";
+                               
+                               
+                               
+                                       }else
+                               
+                                       {
+                               
+                                       $count=count($val['zones']);
+                               
+                                       //$BBOX_sql.="select extent(the_geom) from tdwgs where code=";
+                               
+                               
+                               
+                               
+                               
+                                       for ($i=0;$i<($count-1);$i++)
+                               
+                                                       {
+                               
+                                       
+                               
+                                               if ($i==0)
+                               
+                                               {
+                               
+                                               //$BBOX_sql.="code='".$val['zones'][0]."'";
+                                               $BBOX_sql.=$field."='".$val['zones'][0]."'";
+                               
+                                               }
+                               
+                                               else
+                               
+                                               {
+                               
+                                                               //$BBOX_sql.=" OR code='".$val['zones'][$i]."'";
+                                                               $BBOX_sql.=" OR ".$field."='".$val['zones'][$i]."'";
+                               
+                                               }
+                               
+                                                               
+                               
+                                                       }
+                               
+                               
+                               
+                                               //QUINA CUTRADA!!!!!
+                               
+                               
+                               
+                                                       $BBOX_sql.=" OR ".$field."='".$val['zones'][$count-1]."'";
+                               
+                               
+                               
+                               
+                               
+                                       }
+                               
+                                       $c++;
+                               
+                                       }
+                               
+                               
+                               
+                                       }//end if bbox
+                               
+                                       //ftheeten 24/08/2011
+                                       $BBOX_sql.=") AS foo;";
+                               
+                               
+                               
+                               
+                                                               $postgis_result=pg_query($BBOX_sql);
+                               
+                               
+                               
+                                                               while ($row = pg_fetch_array($postgis_result, NULL, PGSQL_ASSOC))
+                               
+                                                                        {
+                               
+                               
+                               
+                                                       $b=substr($row['extent'],4);
+                               
+                                               //      echo $height;
+                               
+                                                       $cadena=substr($b,0,-1); 
+                               
+                                                       $bbox=str_replace(' ',',',$cadena);
+                               
+                                       //              echo "this is bbox".$bbox;
+                               
+                                                                       }
+                               
+                                                               }
+                               
+                                                               
+                               
+                                       }
+                               
+                                       //print($BBOX_sql);
+                               
+                               $recalculate="true";
+                               
+                               if ($p_recalculate)
+                               
+                               {
+                               
+                               if ($p_recalculate=='false')
+                               
+                               {
+                               
+                               $recalculate='false';
+                               
+                               }
+                               
+                               };
+                               
+                               
+                               
+                               
+                               
+                                                       if ($recalculate=="true")
+                               
+                                                       {
+                               
+                                                                      $bbox2=explode(',',$bbox);               
+                               
+                               
+                               
+                                                       $ratio_x=$bbox2[2]-$bbox2[0];
+                               
+                                                       $ratio_y=abs($bbox2[1]-$bbox2[3]);
+                               
+                                                                       if (((($ratio_x)/$ratio_y))<2)
+                               
+                                                       {
+                               
+                                                               $to_change='x';
+                               
+                                               //      echo "yesss XXXX";
+                               
+                                                       //echo "ratio is   ".(($ratio_x*2)/$ratio_y)."<br>";
+                               
+                                                       }
+                               
+                                                       else 
+                               
+                                                       {       
+                               
+                                                               $to_change='y';
+                               
+                                                       }
+                               
+                                                       switch ($to_change)
+                               
+                                                       {
+                               
+                               
+                               
+                                                       case 'x':
+                               
+                                                       $diff_x=abs((($ratio_x)/2 -$ratio_y)/2);        
+                               
+                                                       $bbox2[0]=$bbox2[0]-$diff_x;    
+                               
+                                                       $bbox2[2]=$bbox2[2]+$diff_x;    
+                               
+                                                       $bbox=$bbox2[0].",".$bbox2[1].",".$bbox2[2].",".$bbox2[3];
+                               
+                                                       $ratio=$ratio_x/$ratio_y;
+                               
+                                                       $width = (int)($height+($ratio*30));
+                               
+                                                       break;  
+                               
+                               
+                               
+                               
+                               
+                                                       case 'y':
+                               
+                               
+                               
+                                                       $diff_x=abs((($ratio_x -$ratio_y)/2)/2);        
+                               
+                                                       if ($bbox2[1]<0)
+                               
+                                                       {
+                               
+                                                       //echo "bbox_1 negativa";
+                               
+                                                               $bbox2[1]=$bbox2[1]-$diff_x;
+                               
+                                                           if (abs($bbox2[1])>90)
+                               
+                                                               {
+                               
+                                                               $bbox2[1]=-90;
+                               
+                                                                }
+                               
+                                                       }
+                               
+                                                       else 
+                               
+                                                       {
+                               
+                                                        $bbox2[1]=$bbox2[1]-$diff_x;   
+                               
+                                                        if (abs($bbox2[1])>90)
+                               
+                                                       {
+                               
+                                                               $bbox2[1]=90; 
+                               
+                                                               }
+                               
+                                                       };
+                               
+                                                       if ($bbox2[3]<0 )
+                               
+                                                       {
+                               
+                                                       $bbox2[3]=$bbox2[3]+$diff_x;    
+                               
+                                                        if (abs($bbox2[3])>90)
+                               
+                                                         {
+                               
+                                                               $bbox2[3]=-90; 
+                               
+                                                               }
+                               
+                                                       }
+                               
+                                                       else
+                               
+                                                       {
+                               
+                                                       $bbox2[3]=$bbox2[3]+$diff_x;
+                               
+                                                       if (abs($bbox2[3])>90)
+                               
+                                                       {
+                               
+                                                               $bbox2[3]=90; 
+                               
+                                                       }
+                               
+                                                       }
+                               
+                                                       $bbox=$bbox2[0].",".$bbox2[1].",".$bbox2[2].",".$bbox2[3];
+                               
+                                                       break;
+                               
+                                                       }//fi switch
+                               
+                                               }//fi recalculate=true
+                               
+                                                       else
+                               
+                                                       {
+                               
+                                                               //Recalculate =false (we try to put everything)
+                               
+                                                               //test added by ftheeten 2010/04/09 to avoid error message
+                               
+                                                               if($ratio_y!=0)
+                               
+                                                               {
+                               
+                                                                       $ratio=$ratio_x/$ratio_y;
+                               
+                                                               }
+                               
+                                                               //echo $ratio;
+                               
+                               //                              $height = (int)($width / $ratio);
+                               
+                                       
+                               
+                                       }
+                               
+                                                       
+                               
+                               //echo $height;
+                               
+                               $url_list=array();
+                               
+                               $legend_list=array();
+                               
+                               $files_list=array();
+                               
+                               
+                               
+                               $c=count($gmls);
+                               
+                               
+                               
+                               global $bbox;
+                               
+                               if (isset($p_foo))
+                               
+                               {
+                               
+                                       $json='foo({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';             
+                               
+                               }
+                               
+                               elseif (isset($p_callback)) //addition ftheeten 16/06/2010
+                               
+                               {
+                               
+                                       $json=$p_callback.'({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';
+                                       //$json='({"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';
+                               
+                               }
+                               
+                               else
+                               
+                               {
+                               
+                               $json='[{"bbox":"'.$bbox.'","legend":"'.$leg_url.'","layers":[';
+                               
+                               }
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               $i=0;
+                               
+                               foreach ($gmls as $feature=>$v)
+                               
+                               {
+                               
+                               $i++;
+                               
+                               $dom_new = new DOMDocument();
+                               
+                               //print("-----------------------");
+                               
+                               //print_r($v);
+                               
+                               switch ($feature)
+                               
+                               {
+                               
+                               
+                               
+                               
+                               
+                                       case ('tdwg1'): $layer='topp:tdwg_level_1';$db_layer='tdwg_level_1';
+                               
+                                       $field='code';
+                               
+                                       $label_field='zona';
+                               
+                                       break;
+                               
+                                       case ('tdwg2'): $layer='topp:tdwg_level_2';$db_layer='tdwg_level_2';
+                               
+                                       $field='code';
+                               
+                                       $label_field='code';
+                               
+                                       break;
+                               
+                                       case ('tdwg3'): $layer='topp:tdwg_level_3'; $db_layer='tdwg_level_3';
+                               
+                                       $field='code';$layer_sh="TDWG 3";$label_field='code';
+                               
+                                       break;
+                               
+                                       case ('tdwg4'): $layer='topp:tdwg_level_4';$db_layer='tdwg_level_4';
+                               
+                                       $field="code";
+                               
+                                       $label_field='code';$layer_sh="TDWG 4";
+                               
+                                       break;
+                               
+                                       case ('e_w_0'): $layer='topp:europe_west_level_0';$db_layer='europe_west_level_0';
+                               
+                                       $field="code";
+                               
+                                       $label_field='code';$layer_sh="EURW 0";
+                               
+                                       break;
+                               
+                                       case ('e_w_1'): $layer='topp:europe_west_level_1';$db_layer='europe_west_level_1';
+                               
+                                       $field="code";
+                               
+                                       $label_field='code';$layer_sh="EURW 1";
+                               
+                                       break;
+                               
+                                               //ftheeten 21/02/2011
+                               
+                                               default:
+                               
+                                               $layer=$feature;
+                               
+                                               $field=$wms_field_array[$feature];
+                               
+                                               $label_field=$tmp_wms_field;
+                               
+                               
+                                               break;
+                               
+                               }
+                               
+                               
+                               
+                               $p=simplexml_load_string($gmls[$feature]);
+                               
+                               $hatching=$p->style->hatching;
+                               
+                               $xsl = new XSLTProcessor;
+                               
+                               $xsl->setParameter( '', 'symbol', $hatching);
+                               
+                                       $pos_prefix = substr_count($layer,$prefix_wms);
+                               
+                                               $displayedLayer=$layer;
+                               
+                                               //print("pos=".$pos_prefix."=");
+                               
+                                               if($pos_prefix===0) 
+                               
+                                               {
+                               
+                                                       //print("prefix");
+                               
+                                                       $displayedLayer=$prefix_wms.$layer;
+                               
+                                               }
+                               
+                               $xsl->setParameter( '', 'layer', $displayedLayer);
+                               //ftheeten 2011/05/27
+                               
+                               $xsl->setParameter( '', 'field', $field);
+                               
+                               //$xsl->setParameter( '', 'label_field', $label_field);
+                               $xsl->setParameter( '', 'label_field', $field);
+                               
+                               $style = realpath('areas_pattern.xsl');
+                               
+                               $dom_new->load($style);
+                               
+                               $xsl->importStyleSheet($dom_new);
+                               
+                               $dom_new->loadXML($gmls[$feature]);
+                               
+                               $out = $xsl->transformToXML($dom_new);
+                               
+                               srand(time());
+                               
+                               //$random = (rand()%300).".sld";
+                               
+                               $path_towrite="/var/www/synthesys/www/v1/sld/".$feature."_".$random;
+                               
+                               //echo $path_towrite;
+                               
+                               $fp=fopen("$path_towrite","w");
+                               
+                               $write=fwrite($fp,$out);
+                               
+                               array_push($files_list,$path_towrite);
+                               
+                               //echo $out;
+                               
+                               
+                               
+                               
+                               
+                               $json.='{"tdwg": "' . $feature. '","session": "'.$sessionid.'",';
+                               
+                               
+                               
+                               //$json.='"sld": "' . $feature."_".$random.'"}';
+                               
+                               //correction ftheeten 09/04/2010
+                               
+                               $nameSLDFile=$feature."_".$random;
+                               
+                               $json.='"sld": "' . V1_SLD_URL."/".$nameSLDFile.'"';
+                               
+                               
+                               $json.='}';
+                               
+                               
+                               
+                               if ($i < $c)
+                               
+                               {
+                               
+                               $json.=',';
+                               
+                               }
+                               
+                               //print("build URL");
+                               
+                               //print($layer);
+                               
+                               $url=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=";
+                               
+                               $url.=$layer."&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height."&SLD=".V1_SLD_URL."/".$nameSLDFile;
+                               
+                               
+                               
+                               //print($url);
+                               
+                               
+                               
+                               //provinces,world
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               global $height;
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               $url_list[]=$url;
+                               
+                               $legend_list[]=$legend_url;
+                               
+                               }
+                               
+                               //correction ftheeten 09/04/2010
+                               
+                               $json.="]";
+                               
+                               
+                               
+                               
+                               
+                               $json.=",\"geoserver\": \"".URL_GEOSERVER."\"";
+                               
+                               $json.="}";
+                               
+                               if (isset($p_foo))
+                               
+                               {
+                               
+                               $json.=")";     
+                               
+                               }
+                               
+                               elseif(isset($p_callback))////addition ftheeten 16/06/2010
+                               
+                               {
+                               
+                               $json.=");";    
+                               
+                               }
+                               
+                               else
+                               
+                               {
+                               
+                               $json.="]";     
+                               
+                               }
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               
+                               $img=$p_img;
+                               
+                               
+                               
+                               if ($img=='false')
+                               
+                               {
+                               
+                               //RMCA 09/04/2010
+                               
+                               
+                               
+                               //if ($img=='false')
+                               
+                               //{
+                               
+                                  $headerText="Content-Type: application/json";
+                               
+                               
+                               
+                               //}
+                               
+                               
+                               
+                               header($headerText);
+                               header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
+                               header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
+                               
+                               
+                               
+                               echo $json;
+                               
+                               }
+                               
+                               else
+                               
+                               {
+                               
+                                       //print("else");        
+                               
+                                       $random3="/var/www/synthesys/www/v1/img/".md5($p_uri )."bckgrd_layers.png";
+                                       $random4="/var/www/synthesys/www/v1/img/".md5($p_uri )."wms_layers.png";
+                               
+                               //ftheeten 22/02/2011 (sometimes bug if image previously exists)
+                                       if(file_exists($random3))
+                                       {
+                                               unlink($random3);
+                               
+                                       }
+                                       if(file_exists($random4))
+                                       {
+                                               unlink($random4);
+                               
+                                       }
+                                       
+                                       $url2_array=array();
+                                       $c="convert convert -size '".$width."x".$height."' xc:transparent $random3";
+                                       if(isset($arrayBackgroundStyle)===true)
+                                       {
+                                               if(count($arrayBackgroundStyle)>0)
+                                               {
+                                                       $c='';
+                                                       for ($i=0;$i<count($arrayBackgroundStyle);$i++)
+                               
+                                                       {
+                                                               $url2=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&TRANSPARENT=TRUE&SERVICE=WMS&EPSG=4326&layers=".$arrayBackgroundStyle[$i]['name'];
+                               
+                                                       $url2.="&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height;
+                                       
+                                                       if($arrayBackgroundStyle[$i]['type']=="sld")
+                                                       {
+                                                               $url2.="&SLD=".$arrayBackgroundStyle[$i]['style'];
+                                                       }
+                                                       elseif($arrayBackgroundStyle[$i]['type']=="wms_style")
+                                                       {
+                                                               $url2.="&STYLES=".$arrayBackgroundStyle[$i]['style'];
+                                                       }
+                                                       elseif($arrayBackgroundStyle[$i]['type']=="user_sld")
+                                                       {
+                               
+                               
+                                                               $pos_prefix_sld = substr_count($arrayBackgroundStyle[$i]['name'],$prefix_wms);
+                                                               $displayedLayer_sld=$arrayBackgroundStyle[$i]['name'];
+                                                               //print("pos=".$pos_prefix."=");
+                                                               if($pos_prefix_sld===0) 
+                                                               {
+                                                                       //print("prefix");
+                                                                       $displayedLayer_sld=$prefix_wms.$arrayBackgroundStyle[$i]['name'];
+                                                               }
+                                                               $returnedXML=generate_xml_simple_style_no_zone($displayedLayer_sld, $arrayBackgroundStyle[$i]['style'], $arrayBackgroundStyle[$i]['style'], $total_symbols, $symbols_url);
+                                                               //print($returnedXML);
+                                                               $path_towrite="/var/www/synthesys/www/v1/sld/"."_backsld_".$displayedLayer_sld.$random;
+                                                               //print($path_towrite);
+                                                               xml_to_sld_xslt($returnedXML, $displayedLayer_sld,'areas_pattern.xsl', $path_towrite );
+                                                               $url_back_sld=V1_SLD_URL."/_backsld_".$displayedLayer_sld.$random;
+                                                               $url2.="&SLD=".$url_back_sld;
+                                                       }
+                                                       
+                                                               $url2_array[]=$url2;
+                                                               //print($url2);
+                                                       }
+                                               }
+                                       }
+                                       if(strlen($c)>0)
+                                       {
+                                               shell_exec($c);
+                                       }
+                               
+                               
+                               
+                               
+                                               $c="convert convert -size '".$width."x".$height."' xc:transparent $random3";
+                               
+                                               shell_exec($c);
+                               
+                               if(count($url_list)>1)
+                               
+                               {
+                               
+                               
+                               
+                               
+                               
+                               
+                                       for ($i=0;$i<count($url_list);$i++)
+                                       {
+                               
+                                               
+                                               if($i==0)
+                                               {
+                                                       $c="composite '".$url_list[$i]."' '".$url_list[$i]."' '".$random4."'";
+                                                       shell_exec($c);
+                                       
+                                               }
+                                               else
+                                               {
+                                                       $c="composite '".$url_list[$i]."' '".$random4."' '".$random4."'";
+                                                       shell_exec($c); 
+                                                       //print($c);    
+                                               }
+                               
+                               }
+                               $c="composite  '$random4' '$random3' '$random2'";
+                               
+                               //print($c);
+                               //readfile($random2);
+                               
+                               shell_exec($c);
+                               
+                               //print($url2);
+                               
+                               }
+                               
+                               else
+                               
+                               {
+                               
+                               //SLDs over normal layers
+                               
+                                       $c="composite  '$url_list[0]' '$url_list[0]' '$random4'";
+                               
+                               
+                               
+                               shell_exec($c);
+                               $c="composite  '$random4' '$random3' '$random2'";
+                               
+                               
+                               
+                               shell_exec($c);
+
+
+
+
+
+       }
+       
+       
+       
+       
+       $headerText="Content-Type: image/png";
+       
+       
+       
+       //part ftheeten 12/08/2010 external WMS
+       
+       
+                       $flagExternalWMS=false;
+       
+                       $extWFURLArray=array();
+       
+                       $extWFSURL="";
+       
+                       
+       
+                       if(isset($p_externalwms)===true&&isset($p_externalwms_layer)===true)
+       
+                       {
+       
+                               $flagExternalWMS=true;
+       
+                               $versionWFS=NULL;
+       
+                               if(isset($p_externalwms_version)===true)
+       
+                               {
+       
+                                       $versionWFS=$p_externalwms_version;
+       
+                               }
+       
+                               $externalWMSStyle="";
+       
+                               if(isset($p_externalwms_style)===true)
+       
+                               {
+       
+                                       $externalWMSStyle=$p_externalwms_style;
+       
+                               }
+       
+                               if(strlen($p_externalwms)>0&&strlen($p_externalwms_layer)>0)
+       
+                               {
+       
+                                                                       $versionWFS=NULL;
+       
+                                                       if(isset($p_externalwms_version)===true)
+       
+                                                       {
+       
+                                                               $versionWFS=$p_externalwms_version;
+       
+                                                       }
+       
+                                                       $externalWMSStyle=NULL;
+       
+                                                       if(isset($p_externalwms_style)===true)
+       
+                                                       {
+       
+                                                               $externalWMSStyle=$p_externalwms_style;
+       
+                                                       }
+       
+                                       if(strpos($p_externalwms,"|")>0)
+       
+                                       {
+       
+                                                       $arrayWFS=array();
+       
+                       
+       
+                                                       $arrayWFS=f_checkWMSParams($arrayWFS,$p_externalwms,"URL","[\|]","[:]");
+       
+                                                       $arrayWFS=f_checkWMSParams($arrayWFS,$versionWFS,"VERSION","[\|]","[:]");
+       
+                                                       $arrayWFS=f_checkWMSParams($arrayWFS,$p_externalwms_layer,"LAYERS","[\|]","[:]");
+       
+                                                       $arrayWFS=f_checkWMSParams($arrayWFS,$externalWMSStyle,"STYLES","[\|]","[:]");
+       
+                                                       //print("!!!arrayWFS=>");
+       
+                                                       //print_r($arrayWFS);
+       
+                                                       foreach($arrayWFS as $key=>$arrayWFSitem)
+       
+                                                       {
+       
+                                                               $extWFSURLArray[]=f_writeKeyWFSURL($arrayWFS,$key,$bbox,$width,$height);
+       
+                                                       }
+       
+                                                       
+       
+                                       }
+       
+                                       else
+       
+                                       {
+       
+                                               $externalWMS=$p_externalwms;
+       
+                                               $externalWMSLayer=$p_externalwms_layer;
+       
+                                               
+       
+       
+       
+                                               $extWFSURL=f_autoFillWMSURL($externalWMS,$externalWMSVersion,$externalWMSLayer,$externalWMSStyle,$bbox,$width,$height);
+       
+                                               $extWFSURLArray[]=$extWFSURL;
+       
+                                       }
+       
+                               }
+       
+       
+       
+                       }
+       
+                       if($flagExternalWMS===true)
+       
+                       {
+       
+                               $cptLayers=count($extWFSURLArray);
+       
+                               for($i=$cptLayers-1;$i>=0;$i--)
+       
+                               {
+       
+                                       $c="composite '$random2' '$extWFSURLArray[$i]' '$random2'";
+       
+                                       shell_exec($c);
+       
+                               }               
+       
+                               
+       
+                       }
+                       if(isset($url2_array)===true)
+                       {
+                               if(count($url2_array)>0)
+       
+                               {
+       
+                                       $cptLayers=count($url2_array);
+       
+                                       for($i=$cptLayers-1;$i>=0;$i--)
+       
+                                       {
+       
+                                               $c="composite '$random2' '$url2_array[$i]' '$random2'";
+                                               //print($url2_array[$i]);
+       
+                                               shell_exec($c);
+       
+                                       }               
+       
+                               
+       
+                               }       
+                       }
+       /*
+                       if(strlen($url2)>0)
+                       {
+                               $c=" composite '$random2' '$url2' '$random2' ";
+                               shell_exec($c);
+                       }
+       
+       */
+       
+       
+       //---display points
+       if($flagDisplayPoints===true)
+       {       //print("point=true");
+               $sld_url.=URL_GEOSERVER."?SERVICE=WMS&VERSION=1.1.1&TRANSPARENT=true&STYLES=&REQUEST=GetMap&SERVICE=WMS&EPSG=4326&layers=rest_points&EPSG=4326&format=image/png&bbox=".$bbox."&WIDTH=".$width."&HEIGHT=".$height."&SLD=".URL_SITE."/synthesys/www/v1/sld/point_".$random.".sld";
+       
+               //print($sld_url);
+       
+               //$image=imagecreatefrompng($edit_url);
+       
+               $points= (rand()%300)."_p.png";
+       //ftheeten 22/02/2011 (sometimes bug if image previously exists)
+               if(file_exists('img/'.$points))
+               {
+                       unlink('img/'.$points);
+       
+               }
+       
+       //print($sld_url);
+       
+               $c="convert '$sld_url' 'img/$points'";
+       
+               shell_exec($c) ;
+       
+       
+       
+               $c="composite 'img/$points' '$random2' '$random2'";
+       
+               shell_exec($c);         
+       }
+       //end display points
+       
+       
+       
+       if ($leg=='1')
+       
+       {
+       
+               $legend_url=URL_GEOSERVER."/GetLegendGraphic?SERVICE=WMS&VERSION=1.1.1&format=image/png&TRANSPARENT=TRUE&WIDTH=64&HEIGHT=36&";
+       
+                                       $legend_url.="layer=topp:tdwg_level_3&LEGEND_OPTIONS=forceLabels:on;fontStyle:italic;fontSize:12&SLD=".$leg_url;
+       $com="convert  '$legend_url' '$random2_legend'";
+       shell_exec($com);
+               if($flagDisplayPoints===true)
+               {
+                       $legend_url_point.=URL_GEOSERVER."/GetLegendGraphic?SERVICE=WMS&LEGEND_OPTIONS=forceLabels:on;fontStyle:italic;fontSize:12&VERSION=1.1.1&format=image/png&WIDTH=20&HEIGHT=30&layer=rest_points&SLD=".URL_SITE."/synthesys/www/v1/sld/point_".$random.".sld";
+                       $com="convert -background white -append '$legend_url_point' '$random2_legend'  '$random2_legend' ";
+                       shell_exec($com);
+               }
+       
+               
+       
+               
+       
+       $mlp=$p_mlp;
+       if(strlen($mlp)==0)
+       {
+               //print("no");  
+               $mlp='3';
+       }
+       
+       switch ($mlp)
+       
+       {
+       
+       case ('1'):
+       
+               {
+       
+       
+       
+       $com="convert -background white +append '$random2_legend' '$random2'  '$random2'"; //-->exterior ul  
+       
+       break;
+       
+               }
+       
+       case ('2'):
+       
+               {
+       
+       $com="convert -background white -append '$random2_legend' '$random2'  '$random2' ";     //2
+       
+        break;
+       
+        }
+       
+        case ('3'):
+       
+               {
+       
+       $com="convert -background white +append  '$random2' '$random2_legend'   '$random2' "; //4
+       
+       break;
+       
+               }
+       
+               
+       
+       case ('4'):
+       
+               {
+       
+               
+       
+       $com="convert  -background white -append  '$random2' '$random2_legend'   '$random2'"; //7
+       
+       break;
+       
+               }
+       
+       case ('5'):
+       
+               {       
+       
+        $com="composite -gravity  SouthEast '$random2_legend'  '$random2'   '$random2'";//9
+       
+       break;
+       
+       }       
+       
+       case ('6'):
+       
+               {       
+       
+        $com="composite -gravity  SouthWest '$random2_legend'  '$random2'   '$random2'";//10
+       
+       break;
+       
+       }       
+       
+       case ('7'):
+       
+               {       
+       
+        $com="composite -gravity  NorthEast '$random2_legend'  '$random2'   '$random2'";//11
+       
+       break;
+       
+       }       
+       
+       case ('8'):
+       
+               {       
+       
+        $com="composite -gravity  NorthWest '$random2_legend'  '$random2'   '$random2'";//12
+       
+       break;$c.="'".$url_list[$i]."' ";
+       
+       }       
+       
+       }
+       
+       shell_exec($com);
+       
+       //B&W mode ftheeten 2011/07/05
+       
+       if (strtolower($p_grayscale)==='true')
+       {
+               $com_monochrome="convert -type Grayscale '$random2' '$random2'";
+               shell_exec($com_monochrome);
+       }
+       
+       }
+       
+       
+       
+       
+       
+       //RMCA 09/04/2010
+       
+       header($headerText);
+       header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
+       header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
+       
+       
+       
+       
+       
+       
+       
+       
+       
+               
+       
+       readfile($random2);
+       
+       unlink($random2);
+       
+       
+       
+       }
+       
+       clearstatcache();
+       
+       $time=time();
+       
+       
+       
+       
+       
+       /* commented by ftheeten 2010/04/13 (to have sld still available) -> should be repalced by a Cron job*/
+       
+       while($entry = $d->read()) { 
+       
+        if ($entry!= "." && $entry!= "..") { 
+       
+       
+       
+                    $f_last_modified = filemtime($sld_dir."/".$entry);
+       
+       
+       
+       if ($time-$f_last_modified >400)
+       
+       {
+       
+       unlink($sld_dir."/".$entry);
+       
+       }   
+       
+       
+       
+        } 
+       
+       } 
+       
+       
+       
+       
+       
+       while($entry = $e->read()) { 
+       
+        if ($entry!= "." && $entry!= "..") { 
+       
+       
+       
+                    $f_last_modified = filemtime($img_dir."/".$entry);
+       
+       
+       
+       if ($time-$f_last_modified >400000)
+       
+       {
+       
+       unlink($img_dir."/".$entry);
+       
+       }   
+       
+       
+       
+        } 
+       
+       } 
+       
+       
+       
+       
+       
+       
+       
+       //$d->close(); 
+       
+       $e->close();
+       
+       }
+
+
+}
+
+
+?>