0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
tikiwiki
/
1.9.7-31
/
htdocs
/
[
Home
]
File: tiki-map.phtml
<?php $_SERVER["SCRIPT_NAME"]=basename(__FILE__); require_once('tiki-setup.php'); include_once ('lib/stats/statslib.php'); if (!function_exists('ms_newMapObj')) { $smarty->assign('msg',tra("The php extension MapScript of the Mapserver has not been loaded")); $smarty->display("error.tpl"); die; } if(@$feature_maps != 'y') { $smarty->assign('msg',tra("Feature disabled")); $smarty->display("error.tpl"); die; } if($tiki_p_map_view != 'y') { $smarty->assign('msg',tra("You do not have permissions to view the maps")); $smarty->display("error.tpl"); die; } //handling the layer manager menu: visible by default if never used before if (getCookie('layermenu', "menu") != 'o' && getCookie('layermenu', "menu") != 'c') { $smarty->assign('mnu_layermenu', 'display:block;'); } $smarty->assign('tiki_p_map_edit',$tiki_p_map_edit); if (isset($_REQUEST['mapfile'])) { // Validate to prevent displaying any file if (strstr($_REQUEST["mapfile"], '..')) { $smarty->assign('msg', tra("You do not have permission to do that")); $smarty->display('error.tpl'); die; } $mapfile = $_REQUEST['mapfile']; } else { $mapfile = $default_map; } $map_path = preg_replace("/\/?$/","/",$map_path); //checking the mapfile if (!is_file($map_path.$mapfile) || preg_match("/(\/\.)/", $map_path.$mapfile)) { $smarty->assign('msg',tra("invalid mapfile name")); $smarty->display("error.tpl"); die; } // user defined error handling function to handle errors in loading mapfile function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { global $smarty; global $style_base; global $map_path; global $mapfile; global $tiki_p_map_edit; $msg=tra("An error as occured with the mapfile: ").$mapfile."<br /><br />".$errmsg."<br />"; $pos=strpos($errmsg,":("); if ($errmsg[$pos+2]=='l') { $line=substr($errmsg,$pos+6); } else { $line=substr($errmsg,$pos+2); } $pos=strpos($line,")"); $line=substr($line,0,$pos); if ($errmsg[$pos+2]!='l') $line++; $fcontents = file($map_path.$mapfile); $msg .="<pre>"; if ($line>=4) { $msg.=" ".$fcontents[$line-4]; $msg.=" ".$fcontents[$line-3]; $msg.=" ".$fcontents[$line-2]; } $msg.="-->".$fcontents[$line-1]; if ($line+3<count($fcontents)) { $msg.=" ".$fcontents[$line+0]; $msg.=" ".$fcontents[$line+1]; $msg.=" ".$fcontents[$line+2]; $msg.=" ".$fcontents[$line+3]; } $msg.="<pre/><br />"; if ($tiki_p_map_edit == 'y') { $msg.='<a class="link" href="tiki-map_edit.php?mapfile='.$mapfile.'&mode=editing">'; $msg.='<img src="img/icons/config.gif" border="0" alt="'.tra("edit").'" title="'.tra("edit").'" />'; $msg.='</a>'; } $smarty->assign('msg',$msg); $smarty->display("error.tpl"); die; } $old_error_handler = set_error_handler("userErrorHandler"); $map = ms_newMapObj($map_path.$mapfile); restore_error_handler(); $page=$map->name." Map"; $smarty->assign("page",$page); if($tikilib->page_exists($page)) { $pagelink='<a href="tiki-index.php?page='.$page.'">'.$page.'</a>'; } else { $pagelink=$page.'<a href="tiki-editpage.php?page='.$page.'">?</a>'; } $smarty->assign("pagelink",$pagelink); $layerbol=FALSE; if (isset($_REQUEST['oldsize'])) { $layerbol=TRUE; } if(isset($_REQUEST['size'])&&is_numeric($_REQUEST['size'])&&($_REQUEST['size']>0)&&($_REQUEST['size']<2000)) { $xsize=floor($_REQUEST['size']); $ysize=floor(($_REQUEST['size']*$map->height/$map->width)); $size = $_REQUEST['size']; } else { $xsize = $map->width; $ysize = $map->height; $size = $map->width; } $map->Set("width",$xsize); $map->Set("height",$ysize); $map->scalebar->Set("width",$xsize); //Mapview. Get first view, to check if view is !/empty $map_view=$map->getMetaData("VIEW1"); $smarty->assign('map_view', $map_view); $number_of_views=30; $counter=0; $view_name[]=""; $view_values[]=0; for($i=1;$i<$number_of_views;$i++) { $viewdata=$map->getMetaData("VIEW".$i); if(!empty($viewdata)){ $v_data=explode(',',$viewdata,5); $view_name[$i]=$v_data[0]; $v_minx=$v_data[1]; $v_miny=$v_data[2]; $v_maxx=$v_data[3]; $v_maxy=$v_data[4]; $view_values[$i]=array($v_minx,$v_miny,$v_maxx,$v_maxy); $counter++; } } $smarty->assign('view_name',$view_name); $smarty->assign('view_values',$view_values); if (isset($_REQUEST['minx']) && isset($_REQUEST['miny'])&& isset($_REQUEST['maxx']) && isset($_REQUEST['maxy'])) { if(isset($_REQUEST['Go'])) { if(empty($map_view)||!(in_array($_REQUEST['view'],$view_name))||empty($_REQUEST['view'])){ $my_extent = ms_newrectObj(); $my_extent->setextent($map->extent->minx,$map->extent->miny,$map->extent->maxx,$map->extent->maxy); } else { //set view extents for($view_count=1;$view_count<$counter+1;$view_count++){ if($_REQUEST['view']==$view_name[$view_count]){ $j=$view_count; $view_minx=$view_values[$j][0]; $view_miny=$view_values[$j][1]; $view_maxx=$view_values[$j][2]; $view_maxy=$view_values[$j][3]; $my_extent=ms_newrectObj(); $my_extent->setextent($view_minx,$view_miny,$view_maxx,$view_maxy); $view=$_REQUEST['view']; } }//end of for loop }//end of if else loop } else { $my_extent = ms_newrectObj(); $my_extent->setextent($_REQUEST['minx'],$_REQUEST['miny'],$_REQUEST['maxx'],$_REQUEST['maxy']); } } else { if(isset($_REQUEST['view'])&& in_array($_REQUEST['view'],$view_name)){ //set view extents for($view_count=1;$view_count<$counter+1;$view_count++){ if($_REQUEST['view']==$view_name[$view_count]){ // $view=$_REQUEST['view']; $j=$view_count; $view_minx=$view_values[$j][0]; $view_miny=$view_values[$j][1]; $view_maxx=$view_values[$j][2]; $view_maxy=$view_values[$j][3]; $my_extent=ms_newrectObj(); $my_extent->setextent($view_minx,$view_miny,$view_maxx,$view_maxy); $view=$_REQUEST['view']; } }//end of for loop } else { $my_extent = ms_newrectObj(); $my_extent->setextent($map->extent->minx,$map->extent->miny,$map->extent->maxx,$map->extent->maxy); } } $query=FALSE; $map_querymsg='<table class="normal">'; if (isset($_REQUEST['zoom'])) { $zoom=$_REQUEST['zoom']; $my_point = ms_newpointObj(); if (isset($_REQUEST['x']) && isset($_REQUEST['y']) && $zoom!=0) { if (isset($_REQUEST['oldsize'])) { $my_point->setXY(floor($_REQUEST['x']*$size/$_REQUEST['oldsize']),floor($_REQUEST['y']*$size/$_REQUEST['oldsize'])); } else { $my_point->setXY(floor($_REQUEST['x']),floor($_REQUEST['y'])); } } else{ $my_point->setXY(($map->width)/2,($map->height)/2); } if($zoom==0){ // It is a query $map->zoompoint(1,$my_point,$map->width,$map->height,$my_extent); if (isset($_REQUEST['x']) && isset($_REQUEST['y'])) { //get the real world coordinates $x=$_REQUEST['x']; $y=$_REQUEST['y']; $width=$map->width-1; $height=$map->height-1; $minx=$map->extent->minx; $maxx=$map->extent->maxx; $miny=$map->extent->miny; $maxy=$map->extent->maxy; $dx=$maxx-$minx; $dy=$maxy-$miny; $factorx=$dx/$width; $factory=$dy/$height; $corx=$x*$factorx+$minx; $cory=$maxy-$y*$factory; $query_point= ms_newpointObj(); $query_point->setXY($corx,$cory); $map_querymsg.='<tr><td class="heading" colspan="2">'.tra('Query point:').' <b>'.$corx.' / '.$cory.'</b></td><tr>'; $query=TRUE; } } else { $map->zoompoint($zoom,$my_point,$map->width,$map->height,$my_extent); } } else { $zoom=1; } $count_group=0; //define which layer is visible for ($j=0;$j<$map->numlayers;$j++) { $my_layer=$map->getLayer($j); if (isset($_REQUEST[str_replace(" ","_",$my_layer->name)])) { if ($_REQUEST[str_replace(" ","_",$my_layer->name)]==1) { $my_layer->Set("status",MS_ON); } }else { // test to see if we are not on the first drawing if ($layerbol) { $my_layer->Set("status",MS_OFF); } } //Display labels if ($my_layer->labelitem!="") { $layer_label[$j]="On"; if (isset($_REQUEST[str_replace(" ","_",$my_layer->name)."_label"])) { $my_layers_label_checked[$j]="checked"; } else { $my_layers_label_checked[$j]=""; $my_layer->Set("labelmaxscale",0); } } else { $layer_label[$j]="Off"; } if ($my_layer->tolerance!=-1) { $layer_query[$j]="On"; } else { $layer_query[$j]="Off"; } if ($query && ($my_layer->status==MS_ON)) // We have a query { if (@$my_layer->queryByPoint($query_point,MS_MULTIPLE,0)==MS_SUCCESS) { $my_layer->open(); $map_querymsg.='<tr><td class="heading" colspan="2">'.tra('layer:').' <b>'.$my_layer->name.'</b></td></tr>'; for($k=0;$k<$my_layer->getNumResults();$k++) { $my_resultcache=$my_layer->getResult($k); $my_shape=$my_layer->getShape($my_resultcache->tileindex,$my_resultcache->shapeindex); $my_array=$my_shape->values; $map_querymsg.='<tr><td class="heading" colspan="2"><small>'.tra('Record:').' '.$my_resultcache->shapeindex.'</small></td></tr>'; $col=0; foreach ($my_array as $key => $value) { if ($col %2) { $map_querymsg.='<tr><td class="even"><small>'.$key.'</small></td><td class="even"><small>'.$value.'</small></td></tr>'; } else { $map_querymsg.='<tr><td class="odd"><small>'.$key.'</small></td><td class="odd"><small>'.$value.'</small></td></tr>'; } $col++; } } $my_layer->close(); } } } $map_querymsg.="</table>"; $smarty->assign('map_querymsg',$map_querymsg); if (@$_REQUEST['maponly']=='frame') { $scalebar=$map->scalebar; $scalebar->set("status",MS_EMBED); $scalebar->set("transparent",TRUE); } $image = $map->drawquery(); $image_url = $image->saveWebImage(); //the user wants an image only if (isset($_REQUEST['maponly']) && $_REQUEST['maponly']=='yes') { header("Content-type: image/png"); $image_file=str_replace($image->imageurl,$image->imagepath,$image_url); readfile($image_file); $image->free(); die; } $image->free(); if (@$_REQUEST['maponly']!='frame') { $image_ref = $map->drawReferenceMap(); $image_ref_url = $image_ref->saveWebImage(); $image_ref->free(); $image_leg = $map->drawLegend(); $image_leg_url = $image_leg->saveWebImage(); $image_leg->free(); $image_scale = $map->drawScaleBar(); $image_scale_url = $image_scale->saveWebImage(); $image_scale->free(); } $minx=$map->extent->minx; $miny=$map->extent->miny; $maxx=$map->extent->maxx; $maxy=$map->extent->maxy; $smarty->assign('mapfile',$mapfile); $smarty->assign('image_url',$image_url); if (@$_REQUEST['maponly']!='frame') { $smarty->assign('image_ref_url',$image_ref_url); $smarty->assign('image_leg_url',$image_leg_url); $smarty->assign('image_scale_url',$image_scale_url); } $smarty->assign('minx',$minx); $smarty->assign('miny',$miny); $smarty->assign('maxx',$maxx); $smarty->assign('maxy',$maxy); $smarty->assign('size',$size); $smarty->assign('xsize',$xsize); $smarty->assign('ysize',$ysize); $smarty->assign('possiblesizes',array(200,300,400,600,800,1000)); $smarty->assign('displaysizes',array(200,300,400,600,800,1000)); $smarty->assign_by_ref('layer_label',$layer_label); $smarty->assign_by_ref('my_layers_label_checked',$my_layers_label_checked); $smarty->assign_by_ref('layer_query',$layer_query); // is the user registered? if(isset($_REQUEST['view_user'])) { $userwatch = $_REQUEST['view_user']; } else { if($user) { $userwatch = $user; } else { $userwatch =""; } } for ($j=0;$j<$map->numlayers;$j++) { $my_layers[$j]=$map->getLayer($j); //getting layer by group if(!empty($my_layers[$j]->group)){ $my_layer_group[$j]=$my_layers[$j]->group; $smarty->assign('unique_layer_group', array_unique($my_layer_group)); } //Metadata handling $link=$my_layers[$j]->getMetadata("WIKI"); if ($link!="") { if($tikilib->page_exists($link)) { $layer_wiki[$j]='<a href="tiki-index.php?page='.$link.'"><small>'.$my_layers[$j]->name.'</small></a>'; } else { $layer_wiki[$j]='<small>'.$my_layers[$j]->name.'<a href="tiki-editpage.php?page='.$link.'">?</a></small>'; } } else { $layer_wiki[$j]='<small>'.$my_layers[$j]->name.'</small>'; } if ($userwatch!="") { $layer_download[$j]=$my_layers[$j]->getMetadata("DOWNLOAD"); } else { $layer_download[$j]=""; } //Layer display Handling if ($my_layers[$j]->status==MS_ON) { $my_layers_checked[$j]="checked"; $bolcheck=1; } else { $my_layers_checked[$j]=""; $bolcheck=0; } } $smarty->assign_by_ref('my_layers',$my_layers); $smarty->assign_by_ref('my_layers_checked',$my_layers_checked); $smarty->assign_by_ref('layer_wiki',$layer_wiki); $smarty->assign_by_ref('layer_download',$layer_download); $smarty->assign('userwatch',$userwatch); for ($i=-4;$i<=4;$i++) { switch($i) { case "-4": case "-3": case "-2": $zoom_values[]=$i; $zoom_display[]='zoom out '.$i.'x'; break; case "0": $zoom_values[]=$i; $zoom_display[]='query'; break; case "1": $zoom_values[]=$i; $zoom_display[]='pan'; break; case "2": case "3": case "4": $zoom_values[]=$i; $zoom_display[]='zoom in '.$i.'x'; break; } } $smarty->assign('zoom',$zoom); $smarty->assign_by_ref('zoom_values',$zoom_values); $smarty->assign_by_ref('zoom_display',$zoom_display); //add a hit $statslib->stats_hit($mapfile,"map"); //get some stats info $data=nl2br(file_get_contents($map_path.$mapfile)); $ip=""; $lastUser=tra("unknown"); $lastModif=""; if (strpos($data,"##TIKIMAPS HEADER: END##")!=FALSE) { $searchdata=substr($data,0,strpos($data,"##TIKIMAPS HEADER: END##")); if (strpos($searchdata,"#IP: ")!=FALSE) { $IP=substr($searchdata,strpos($searchdata,"#IP: ")+4); $ip=substr($IP,0,strpos($IP,"<br")); } if (strpos($searchdata,"#Modified by: ")!=FALSE) { $IP=substr($searchdata,strpos($searchdata,"#Modified by: ")+13); $lastUser=substr($IP,0,strpos($IP,"<br")); } if (strpos($searchdata,"#GMT Date: ")!=FALSE) { $IP=substr($searchdata,strpos($searchdata,"#GMT Date: ")+10); $IP=substr($IP,0,strpos($IP,"<br")); $lastModif=gmmktime(substr($IP,10,2),substr($IP,12,2),substr($IP,14,2),substr($IP,5,2),substr($IP,7,2),substr($IP,1,4)); } } $smarty->assign('ip',$ip); $smarty->assign('lastUser',$lastUser); $smarty->assign('lastModif',$lastModif); $mapstats = $statslib->object_hits($mapfile,"map"); $mapstats7days = $statslib->object_hits($mapfile,"map",7); $smarty->assign('mapstats', $mapstats); $smarty->assign('mapstats7days', $mapstats7days); //display the template if (@$_REQUEST['maponly']!='frame') { $smarty->assign('mid','map/tiki-map.tpl'); $smarty->display("tiki.tpl"); } else { $smarty->assign("maponly","frame"); $smarty->display('map/tiki-map_frame.tpl'); } ?>