} // Suche durchführen bzw. Karte ausgeben: if($suche_durchgefuehrt) { // Fehlerabfragen: if(empty($_GET['suchtext']) && empty($_GET['ort'])) { $location = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR'])); $center_lat=$location['geoplugin_latitude']; $center_long=$location['geoplugin_longitude']; $_GET['ort']=$location['geoplugin_city']; } $radius=(int)$_GET['umkreis']; if($radius>100) $radius=100; if($radius<1) $radius=1; if(empty($radius)) $radius=10; $_GET['plz']=preg_replace('![^0-9]!', '', $_GET['plz']);; $plz=$_GET['plz']; $_GET['ort']=strip_tags($_GET['ort']); $ort=trim($_GET['ort']); // Zoom festlegen je nach Radius: if($radius<=10) { $zoom=11; } elseif($radius>10 && $radius<=50) { $zoom=9; } elseif($radius>50) { $zoom=8; } // Sonderfall Schleswig: if(empty($plz) && strtolower($ort)=='schleswig') $ort='Stadt+Schleswig'; $address = $plz.' '.$ort.', Deutschland'; // in Datenbank nachschauen ob vorhanden: $query=urlencode($address); $archiv=mysql_query("SELECT * FROM wp_event_list_temp WHERE query LIKE '".$query."'"); if(mysql_num_rows($archiv)>0) { $ar=mysql_fetch_object($archiv); $center_lat=$ar->lat; $center_long=$ar->long; } else { $path = 'https://maps.google.com/maps/api/geocode/json?address='.$query.'&sensor=false'; #echo $path; $geocode = file_get_contents($path); $output = json_decode($geocode); #print_r($output); $center_lat=$output->results[0]->geometry->location->lat; $center_long=$output->results[0]->geometry->location->lng; // lat 50.xxx wert // in Archiv speichern: $qu="REPLACE INTO wp_event_list_temp (`query`, `lat`, `long`) VALUES ('".$query."', '$center_lat', '$center_long') "; mysql_query($qu); } #$anwaltsuche_content.=print_r($output,true); $coords = getBoundingBox($center_lat, $center_long, $radius); $anwaltsuche_content.= '

Suchergebnisse

'; #if(!empty($_GET['plz'])) $umkreis_text='PLZ '.$plz; if(!empty($_GET['ort'])) { $umkreis_text='"'.$_GET['ort'].'"'; $where_position="AND geo_lat>=".$coords['untenlinks']['lat']." AND geo_lat<=".$coords['obenlinks']['lat']." AND geo_long>=".$coords['obenlinks']['lon']." AND geo_long<=".$coords['obenrechts']['lon']; $suchtext_ort='im Radius von '.$radius.' km um '.UcFirst($umkreis_text); $order_by='ORDER BY entfernung ASC, start_date ASC'; $sortierung_klartext='nach Entfernung'; } if(!empty($_GET['suchtext'])) { $suchtext_text=' mit dem Suchtext "'.htmlspecialchars($_GET['suchtext']).'"'; // 2013-06-10: neu Suche Volltext $suchbegriffe = trim($_GET['suchtext']); $suchbegriffe=explode(" ", $suchbegriffe); foreach($suchbegriffe as $suchbegriff) { $suchbegriff=trim($suchbegriff); if(!empty($suchbegriff)) { $keywordAND .= "$suchbegriff"; $suchbegriff = ereg_replace("ß", "-_-",$suchbegriff); $suchbegriff = ereg_replace("ss","-_-",$suchbegriff); $suchbegriff = ereg_replace("-_-", "(ss|ß)", $suchbegriff); $suchbegriff = ereg_replace("é", "-_-",$suchbegriff); $suchbegriff = ereg_replace("e","-_-",$suchbegriff); $suchbegriff = ereg_replace("-_-", "(é|e)", $suchbegriff); $where_suchtext .= " AND "; $where_suchtext .= "(title REGEXP '$suchbegriff' OR referent REGEXP '$suchbegriff' )"; } } } // keine Ortsangabe, aber Suchtext: if(empty($_GET['ort']) && !empty($_GET['suchtext'])) { $zoom=5; $order_by='ORDER BY start_date ASC'; $sortierung_klartext='alphabetisch nach Name'; } $anwaltsuche_content.= '

Gesucht wurde nach Veranstaltungen '.$suchtext_ort.$suchtext_text.'. Es werden maximal 15 Ergebnisse angezeigt.

'; // Query für alle Ergebnisse: $qu= "SELECT *, ( 3959 * acos( cos( radians(".$center_lat.") ) * cos( radians( geo_lat ) ) * cos( radians( geo_long ) - radians(".$center_long.") ) + sin( radians(".$center_lat.") ) * sin( radians( geo_lat ) ) ) )*1.60934400061 AS entfernung FROM wp_event_list WHERE start_date>'".date('Y-m-d')."' $where_position $where_suchtext $order_by LIMIT 15"; $where_clause="1 $where_position $where_suchtext "; $results=mysql_query($qu); if(@mysql_num_rows($results)==0) { $anwaltsuche_content.= '

Es wurden keine Ergebnisse gefunden. Bitte vergrößern Sie ggf. den Suchradius.

'; } else { $anwaltsuche_content.= '

Suchergebnisse '.$sortierung_klartext.' sortiert:

'; $anwaltsuche_content.= ''; while($r=mysql_fetch_object($results)) { $x1=$center_long; $x2=$r->geo_long; $y1=$center_lat; $y2=$r->geo_lat; $entfernung= acos(sin($x1=deg2rad($x1))*sin($x2=deg2rad($x2))+cos($x1)*cos($x2)*cos(deg2rad($y2) - deg2rad($y1)))*(6378.137); $anwaltsuche_content.= '

'.$r->title.'

'; if(!empty($r->referent)) $anwaltsuche_content.= ''.$r->referent.'
'; setlocale(LC_ALL, 'de_DE'); $r->start_date = strtotime($r->start_date); $r->start_date = date('d.m.Y', $r->start_date); $r->end_date = strtotime($r->end_date); $r->end_date = date('d.m.Y', $r->end_date); if($r->start_date!=$r->end_date) $tmp_datum=$r->start_date.' bis '.$r->end_date; else $tmp_datum=$r->start_date; if(!empty($r->location)) $anwaltsuche_content.= $tmp_datum.' - '.$r->location.'
'; $anwaltsuche_content.= '
'; if(!empty($_GET['ort'])) $anwaltsuche_content.= 'Entfernung ca. '.number_format($r->entfernung,1,',','.').' km'; else $anwaltsuche_content.= '
 
'; $anwaltsuche_content .= '
'; // Link aus dem Details-Text zum PDF herausfinden: $reg_exUrl = "/.*href=\"(.*?)\".*?/"; if(preg_match($reg_exUrl, $r->details, $tmpurl)) $details_pdf='Details (PDF) | '; $details='['.$r->time.'] '.$details_pdf.' jetzt anmelden »'; #kiki $anwaltsuche_content .=$details.'
'; } $anwaltsuche_content.= ''; } } // $suche_durchgefuehrt /* Standardfall: Startseite: */ if(!$suche_durchgefuehrt && !$detailansicht) { // eigene Position möglichst genau bestimmen anhand der IP Adresse, wenn keine Suche durchgeführt: $location = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR'])); $center_lat=$location['geoplugin_latitude']; $center_long=$location['geoplugin_longitude']; $zoom=9; // Startseite: $anwaltsuche_content .= '

Geben Sie auf der linken Seite Ihren Ort oder Ihre Postleitzahl ein, wenn Sie eine Veranstaltung in Ihrer Nähe . Sie können auch im Namen der Veranstaltungen und Referenten suchen - die Eingabe von Postleitzahl oder Ort ist dann optional.

Alternativ können Sie die untenstehende Landkarte nutzen.

'; } /** * lat (breitengrad = nord -> sued): 50 ist noerdlicher als 49 * lon (längengrad = west -> ost): 5 ist westlicher als 6 */ function getBoundingBox($lat, $lon, $radius) { $earth_radius = 6371; $maxLat = $lat + rad2deg($radius/$earth_radius); $minLat = $lat - rad2deg($radius/$earth_radius); $maxLon = $lon + rad2deg($radius/$earth_radius/cos(deg2rad($lat))); $minLon = $lon - rad2deg($radius/$earth_radius/cos(deg2rad($lat))); return array ( "center" => array("lat" => $lat, "lon" => $lon), "obenlinks" => array("lat" => $maxLat, "lon" => $minLon), "obenrechts" => array("lat" => $maxLat, "lon" => $maxLon), "untenlinks" => array("lat" => $minLat, "lon" => $minLon), "untenrechts" => array("lat" => $minLat, "lon" => $maxLon) ); } $_GLOBALS['test']='DAV'; ?>