re-added search1.php for testing

This commit is contained in:
following
2013-07-13 12:20:19 +02:00
parent f5565a918c
commit 7024ebb440
21 changed files with 5633 additions and 6 deletions

View File

@@ -59,7 +59,7 @@ $menu = array(
'menustring' => t('Search'),
'visible' => true,
'filename' => 'search.php',
'siteid' => 'search',
'siteid' => 'search1/search',
'submenu' => array(
array(
'title' => t('Show Geocache'),
@@ -131,14 +131,14 @@ $menu = array(
'menustring' => t('Select city'),
'visible' => false,
'filename' => 'search.php',
'siteid' => 'selectlocid'
'siteid' => 'search1/selectlocid'
),
array(
'title' => t('Show search result'),
'menustring' => t('Result'),
'visible' => false,
'filename' => 'search.php',
'siteid' => 'search.result.caches'
'siteid' => 'search1/search.result.caches'
),
array(
'title' => t('Recommendations'),

View File

@@ -0,0 +1,152 @@
<?php
/****************************************************************************
./lang/de/ocstyle/search.inc.php
-------------------
begin : July 25 2004
For license information see doc/license.txt
****************************************************************************/
/****************************************************************************
Unicode Reminder メモ
set template specific language variables
****************************************************************************/
$outputformat_notexist = t('The selected output format is unknown!');
$error_query_not_found = t('The search operation could not be executed, please reenter the search data.');
$caches_newstring = '<b class="newsymbol">&nbsp;' . t('NEW') . '&nbsp;</b>&nbsp;';
$caches_olddays = 14; // changed from 7 to 14 -- following 2013/6/17
$caches_oconlystring = '<img src="resource2/ocstyle/images/misc/is_oconly.png" alt="OConly" title="OConly" style="margin:0px; padding:0px" width="64" height="35" />';
$bgcolor1 = 'odd'; // even lines
$bgcolor2 = 'even'; // odd lines
$bgcolor_found = "#66FFCC"; // if cache was found by user
$bgcolor_owner = "#ffffc5"; // if user is owner
$bgcolor_inactive = "#fafafa"; // if cache is inactive
$string_by = t('by');
$logdateformat = 'd.m.Y';
$logpics[1] = '<img alt="' . t('Find') . '" border="0" src="images/ok.gif">';
$logpics[2] = '<img alt="' . t('Didn\'t find') . '" border="0" src="images/redcross.gif">';
$logpics[3] = '<img alt="' . t('Note') . '" border="0" src="images/info.gif">';
$diffpics[2] = 'diff-10.gif';
$diffpics[3] = 'diff-15.gif';
$diffpics[4] = 'diff-20.gif';
$diffpics[5] = 'diff-25.gif';
$diffpics[6] = 'diff-30.gif';
$diffpics[7] = 'diff-35.gif';
$diffpics[8] = 'diff-40.gif';
$diffpics[9] = 'diff-45.gif';
$diffpics[10] = 'diff-50.gif';
$terrpics[2] = 'terr-10.gif';
$terrpics[3] = 'terr-15.gif';
$terrpics[4] = 'terr-20.gif';
$terrpics[5] = 'terr-25.gif';
$terrpics[6] = 'terr-30.gif';
$terrpics[7] = 'terr-35.gif';
$terrpics[8] = 'terr-40.gif';
$terrpics[9] = 'terr-45.gif';
$terrpics[10] = 'terr-50.gif';
$terrpics[1] = 'rat-10.gif';
$terrpics[2] = 'rat-20.gif';
$terrpics[3] = 'rat-30.gif';
$terrpics[4] = 'rat-40.gif';
$terrpics[5] = 'rat-50.gif';
$difficulty_text_diff = t("Difficulty: %01.1f of 5.0");
$difficulty_text_terr = t("Terrain: %01.1f of 5.0");
$rating_text = t("Rating: {rating}%");
$not_rated = t('No Rating');
$error_plz = '<tr><td colspan="3"><span class="errormsg">' . t('The postal code could not be found') . '</span></td></tr>';
$error_ort = '<tr><td colspan="3"><span class="errormsg">' . t('There does no city exist with this name') . '</span></td></tr>';
$error_locidnocoords = '<tr><td colspan="3"><span class="errormsg">' . t('There are no Koordinates available for the selected city') . '</span></td></tr>';
$error_noort = '<tr><td colspan="3"><span class="errormsg">' . t('The entered city is not valid.') . '</span></td></tr>';
$error_nofulltext = '<tr><td colspan="3"><span class="errormsg">' . t('The entered text is invalid.') . '</span></td></tr>';
$error_fulltexttoolong = '<tr><td colspan="3"><span class="errormsg">' . t('The entered text contains more than 50 words.') . '</span></td></tr>';
$gns_countries['GM'] = t('Germany');
$gns_countries['AU'] = t('Austria');
$gns_countries['SZ'] = t('Switzerland');
$default_lang = t('EN');
$search_all_countries = '<option value="" selected="selected">' . t('All countries') . '</option>';
$search_all_cachetypes = '<option value="" selected="selected">' . t('All cachetypes') . '</option>';
$cache_attrib_group =
'<div class="attribgroup"><table cellspacing="0">
<tr><td bgcolor="{color}" style="line-height:9px;padding-top:2px;margin:0 0 0 0;border-left:1px solid gray;border-right:1px solid gray;border-top:1px solid gray;"><font size="1">{name}</font></td></tr>
<tr><td bgcolor="#F8F8F8" style="margin:0 0 0 0;border-left:1px solid gray;border-right:1px solid gray;border-bottom:1px solid gray;">{attribs}</td></tr>
</table></div>';
$cache_attrib_jsarray_line = "new Array('{id}', {state}, '{text_long}', '{icon}', '{icon_no}', '{icon_undef}', '{search_default}')";
$cache_attrib_img_line1 = '<img id="attrimg1_{id}" src="{icon}" onmousedown="switchAttribute({id})" onmouseover="Tip(\'{html_desc}\', TITLE, \'{name}\', TITLEBGCOLOR, \'{color}\', TITLEFONTCOLOR, \'#000000\', BGCOLOR, \'#FFFFFF\', BORDERCOLOR, \'{color}\', CLICKCLOSE, true, DELAY, 0, FADEIN, false, FADEOUT, false, FONTCOLOR, \'#000080\', WIDTH, 500)" onmouseout="UnTip()" />&nbsp;';
$cache_attrib_img_line2 = '<img id="attrimg2_{id}" src="{icon}" onmousedown="switchAttribute({id})" onmouseover="Tip(\'{html_desc}\', TITLE, \'{name}\', TITLEBGCOLOR, \'{color}\', TITLEFONTCOLOR, \'#000000\', BGCOLOR, \'#FFFFFF\', BORDERCOLOR, \'{color}\', CLICKCLOSE, true, DELAY, 0, FADEIN, false, FADEOUT, false, FONTCOLOR, \'#000080\', WIDTH, 500)" onmouseout="UnTip()" />&nbsp;';
$search_in_gm = '<a href="http://maps.google.de/maps?f=q&hl=de&q=' . urlencode("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']."&output=kml") . '" title="' . $translate->t('Show in Google Maps','','',0) . '">' . $translate->t('(in GM)','','',0) . '</a>';
$search_in_gm_zip = '<a href="http://maps.google.de/maps?f=q&hl=de&q=' . urlencode("http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']."&output=kml&zip=1&count=max") . '" title="' . $translate->t('Show in Google Maps','','',0) . '">' . $translate->t('(in GM)','','',0) . '</a>';
$unknown_searchtype = t('unknown search type');
$showonmap = t('Show on map');
$converted_from_html = t('converted from HTML');
$state_temporarily_na = t('Temporary not available');
$state_archived = t('Archived');
$state_locked = t('Locked');
$cache_note_text = t('Personal cache note');
function dateDiff($interval, $dateTimeBegin, $dateTimeEnd)
{
//Parse about any English textual datetime
//$dateTimeBegin, $dateTimeEnd
$dateTimeBegin = strtotime($dateTimeBegin);
if ($dateTimeBegin === -1)
return("..begin date Invalid");
$dateTimeEnd = strtotime($dateTimeEnd);
if ($dateTimeEnd === -1)
return("..end date Invalid");
$dif = $dateTimeEnd - $dateTimeBegin;
switch($interval)
{
case "s"://seconds
return($dif);
case "n"://minutes
return(floor($dif/60)); //60s=1m
case "h"://hours
return(floor($dif/3600)); //3600s=1h
case "d"://days
return(floor($dif/86400)); //86400s=1d
case "ww"://Week
return(floor($dif/604800)); //604800s=1week=1semana
case "m": //similar result "m" dateDiff Microsoft
$monthBegin = (date("Y",$dateTimeBegin)*12) + date("n",$dateTimeBegin);
$monthEnd = (date("Y",$dateTimeEnd)*12) + date("n",$dateTimeEnd);
$monthDiff = $monthEnd - $monthBegin;
return($monthDiff);
case "yyyy": //similar result "yyyy" dateDiff Microsoft
return(date("Y",$dateTimeEnd) - date("Y",$dateTimeBegin));
default:
return(floor($dif/86400)); //86400s=1d
}
}
?>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Style id="tradi">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/tradi.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="multi">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/multi.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="virtual">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/virtual.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="webcam">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/webcam.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="event">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/event.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="mystery">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/myst.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="mathe">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/math.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="drivein">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/drivein.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="moving">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/moving.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="other">
<IconStyle>
<scale>1</scale>
<Icon>
<href>http://www.opencaching.de/resource2/misc/google-earth/unknown.png</href>
</Icon>
</IconStyle>
</Style>
<Folder>
<Name>Geocaches (Opencaching)</Name>
<Open>0</Open>

View File

@@ -0,0 +1,17 @@
<!--m-->
<tr>
<td width="18" class="{bgcolor}" style="{line_style}">&nbsp;{position}&nbsp;</td>
<td width="45" class="{bgcolor}" style="{line_style}">{distance}&nbsp;</td>
<td width="32" class="{bgcolor}" rowspan="2"><img src='lang/de/ocstyle/images/{icon_large}' alt='{cachetype}' title='{cachetype}'></td>
<td width="46" class="{bgcolor}" rowspan="2" nowrap="nowarp">{diffpic}{terrpic}</td>
<td width="448" class="{bgcolor}">{new} <span style="{status_style}"><a href="viewcache.php?cacheid={urlencode_cacheid}"><span style="{name_style}">{cachename}</span></a></span> &nbsp;<span style="{line_style}">{string_by}</span> <a href="viewprofile.php?userid={urlencode_userid}" style="{line_style}">{username}</a><!-- Ocprop: <a href="viewcache.php?cacheid={urlencode_cacheid}">{cachename}</a> {string_by} <a href="viewprofile.php?userid={urlencode_userid}">{username}</a> --></td>
<td width="74" class="{bgcolor}" rowspan="2" style="padding: 0px">{oconly}</td>
<td width="110" valign="top" class="{bgcolor}">{logimage1} {logdate1}&nbsp;</td>
</tr>
<!--n-->
<tr>
<td width="25" class="{bgcolor}">&nbsp;</td>
<td width="32" class="{bgcolor}" valign="top" style="{line_style}">{direction}&nbsp;</td>
<td width="448" class="{bgcolor}" valign="top"><p style="{line_style}">{ratpic}{desclangs} {short_desc} &nbsp;</p></td>
<td width="110" class="{bgcolor}" valign="top">{lastlogs}&nbsp;</td>
</tr>

View File

@@ -0,0 +1,136 @@
<?php
/***************************************************************************
./lang/de/ocstyle/search.result.tpl.php
-------------------
begin : July 25 2004
copyright : (C) 2004 The OpenCaching Group
forum contact at : http://www.opencaching.com/phpBB2
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
/****************************************************************************
Unicode Reminder メモ
(X)HTML search output template
****************************************************************************/
?>
<div class="content2-container bg-blue02" style="margin-top:20px;">
<table cellspacing="0" cellpadding="0" width="100%" border="0"><tr>
<td style="white-space:nowrap">
<p class="content-title-noshade-size15" style="padding:0; margin:4px;">&nbsp;{t}{results_count} caches<span style="{search_headline_caches}"> matched</span>{/t}&nbsp;</p>
</td>
<td style="text-align:right; width:1px">
<a href="search1.php?queryid={queryid}&output=map2bounds&showresult=1&skipqueryid=1&expert=0&utf8=1" class="nooutline"><img src="resource2/ocstyle/images/misc/32x32-world.png"/></a>
</td>
<td style="white-space:nowrap; text-align:left; padding-bottom:2px">
<p class="inheader"><a href="search1.php?queryid={queryid}&output=map2bounds&showresult=1&skipqueryid=1&expert=0&utf8=1">{showonmap}</a></p>
</td>
<td style="text-align:right; padding-bottom:2px"><p class="inheader">
<span style="white-space:nowrap">[<a href="query.php?action=save&queryid={queryid}">{t}Save options{/t}</a>]</span>
&nbsp;<span style="white-space:nowrap">[<a href="search1.php?queryid={queryid}&showresult=0">{t}Edit options{/t}</a>]</span></p>
</td>
</tr></table>
</div>
<div class="buffer" style="height:5px;"></div>
<font size="2">
<table class="content" border="0" cellspacing="0px" cellpadding="0px">
<tr>
<td class="header-small" colspan="2">
<table width="98.5%">
<tr>
<td rowspan="1" style="vertical-align:top; width:300px">{pages}</td>
<td style="text-align:right;">{t}Download{/t}:&nbsp;</td>
<td><nobr>
<select name="wpdownload-page" class="wpdownload" onChange="location.href=this.options[this.selectedIndex].value">
<option value="#">{t}Results on this page{/t}</option>
<option value="search1.php?queryid={queryid}&output=gpx&startat={startat}">GPX</option>
<option value="search1.php?queryid={queryid}&output=loc&startat={startat}">LOC</option>
<option value="search1.php?queryid={queryid}&output=kml&startat={startat}">KML</option>
<option value="search1.php?queryid={queryid}&output=ov2&startat={startat}">OV2</option>
<option value="search1.php?queryid={queryid}&output=ovl&startat={startat}">OVL</option>
<option value="search1.php?queryid={queryid}&output=txt&startat={startat}">TXT</option>
</select>
<select name="wpdownload-all" class="wpdownload" onChange="location.href=this.options[this.selectedIndex].value">
<option value="#">{t}Result {startatp1} to {endat} (as zip){/t}</option>
<option value="search1.php?queryid={queryid}&output=gpx&startat={startat}&count=max&zip=1">GPX</option>
<option value="search1.php?queryid={queryid}&output=loc&startat={startat}&count=max&zip=1">LOC</option>
<option value="search1.php?queryid={queryid}&output=kml&startat={startat}&count=max&zip=1">KML</option>
<option value="search1.php?queryid={queryid}&output=ov2&startat={startat}&count=max&zip=1">OV2</option>
<option value="search1.php?queryid={queryid}&output=ovl&startat={startat}&count=max&zip=1">OVL</option>
<option value="search1.php?queryid={queryid}&output=txt&startat={startat}&count=max&zip=1">TXT</option>
</select></nobr>
</td>
</tr>
</table>
</td>
</tr>
<tr><td class="spacer" colspan="2">&nbsp;</td></tr>
<tr>
<td colspan="2" style="padding-left: 0px; padding-right: 0px;">
<table border="0" cellspacing="0px" cellpadding="0px" class="searchtable">
<tr>
<th width="18" height="13" >&nbsp;#&nbsp;</th>
<th width="45" height="13">{distanceunit}</th>
<th width="32" height="13">{t}Type{/t}</th>
<th width="46" height="13">{t}D/T{/t}</th>
<th width="448" height="13">{t}Name{/t}</th>
<th width="48" height="13">&nbsp;</th>
<th width="126" height="13"><span style="display:{displaylastlogs}">{t}Last logs{/t}<span style="display:{displayownlogs}">{t}Own logs{/t}</th>
</tr>
<tr><td></td></tr>
<!--a-->{results}<!--z-->
</table>
</td>
<tr><td class="spacer" colspan="2">&nbsp;</td></tr>
</tr>
<tr>
<td colspan="2" class="header-small">{pages}</td>
</tr>
<tr><td style="height:0.6em"></td></tr>
</table>
<table width="100%">
<tr>
<td style="text-align:right; width:50%">{t}Download{/t}:&nbsp;&nbsp;</td>
<td align="right" style="padding-right:20px; white-space:nowrap">
<b>{t}Results on this page:{/t}</b>
<a href="search1.php?queryid={queryid}&output=gpx&startat={startat}" title="{t}GPS Exchange Format .gpx{/t}">GPX</a>
<a href="search1.php?queryid={queryid}&output=loc&startat={startat}" title="{t}Waypointfile .loc{/t}">LOC</a>
<a href="search1.php?queryid={queryid}&output=kml&startat={startat}" title="{t}Google Earth .kml{/t}">KML</a>
{search_in_gm}
<a href="search1.php?queryid={queryid}&output=ov2&startat={startat}" title="{t}TomTom POI .ov2{/t}">OV2</a>
<a href="search1.php?queryid={queryid}&output=ovl&startat={startat}" title="{t}TOP50-Overlay .ovl{/t}">OVL</a>
<a href="search1.php?queryid={queryid}&output=txt&startat={startat}" title="{t}Textfile .txt{/t}">TXT</a>
<br />
<b>{t}Result {startatp1} to {endat} (as zip):{/t}</b>
<a href="search1.php?queryid={queryid}&output=gpx&startat={startat}&count=max&zip=1" title="{t}GPS Exchange Format .gpx{/t}">GPX</a>
<a href="search1.php?queryid={queryid}&output=loc&startat={startat}&count=max&zip=1" title="{t}Waypointfile .loc{/t}">LOC</a>
<a href="search1.php?queryid={queryid}&output=kml&startat={startat}&count=max&zip=1" title="{t}Google Earth .kml{/t}">KML</a>
{search_in_gm_zip}
<a href="search1.php?queryid={queryid}&output=ov2&startat={startat}&count=max&zip=1" title="{t}TomTom POI .ov2{/t}">OV2</a>
<a href="search1.php?queryid={queryid}&output=ovl&startat={startat}&count=max&zip=1" title="{t}TOP50-Overlay .ovl{/t}">OVL</a>
<a href="search1.php?queryid={queryid}&output=txt&startat={startat}&count=max&zip=1" title="{t}Textfile .txt{/t}">TXT</a>
</td>
</tr>
<tr>
<td class="help" colspan="2" align="right" style="line-height:2em;">
{t}With the download you accept the <a href="articles.php?page=impressum#tos">terms of use</a> from opencaching.de.&nbsp;&nbsp;{/t}
</td>
</tr>
</table>
<p>({t}old{/t})</p>
</font>

View File

@@ -0,0 +1,841 @@
<?php
/***************************************************************************
./lang/de/ocstyle/search.simple.tpl.php
-------------------
begin : July 25 2004
For license information see doc/license.txt
****************************************************************************/
/****************************************************************************
Unicode Reminder メモ
simple filter template for XHTML search form
****************************************************************************/
?>
<script type="text/javascript" src="resource2/ocstyle/js/wz_tooltip.js"></script>
<script type="text/javascript">
<!--
var mnAttributesShowCat2 = 1;
var maAttributes = new Array({attributes_jsarray});
var cachesizes = {cachesizes};
function _sbn_click()
{
if (document.searchbyname.cachename.value == "")
{
alert("{t}Enter a name, please!{/t}");
resetbutton('submit_cachename');
return false;
}
return true;
}
function _sbft_click()
{
if (document.searchbyfulltext.fulltext.value == "")
{
alert("{t}Fill out the text field, please!{/t}");
resetbutton('submit_ft');
return false;
}
if ((document.searchbyfulltext.ft_name.checked == false) &&
(document.searchbyfulltext.ft_desc.checked == false) &&
(document.searchbyfulltext.ft_logs.checked == false) &&
(document.searchbyfulltext.ft_pictures.checked == false))
{
alert("{t}You have to check at least one field!{/t}");
resetbutton('submit_ft');
return false;
}
return true;
}
function _sbd_click()
{
if (isNaN(document.searchbydistance.lon_h.value) || isNaN(document.searchbydistance.lon_min.value))
{
alert("{t}Longitude has to be a number!\nFormat: hh° mm.mmm{/t}");
resetbutton('submit_dist');
return false;
}
else if (isNaN(document.searchbydistance.lat_h.value) || isNaN(document.searchbydistance.lat_min.value))
{
alert("{t}Latitude has to be a number!\nFormat: hh° mm.mmm{/t}");
resetbutton('submit_dist');
return false;
}
else if (isNaN(document.searchbydistance.distance.value))
{
alert("{t}The maximum distance has to be a number!{/t}");
resetbutton('submit_dist');
return false;
}
else if (document.searchbydistance.distance.value <= 0 || document.searchbydistance.distance.value > 9999)
{
alert("{t}The distance has to be between 0 and 9999{/t}");
resetbutton('submit_dist');
return false;
}
return true;
}
function _sbplz_click()
{
if (document.searchbyplz.plz.value == "")
{
alert("{t}Enter the postal code, please!{/t}");
resetbutton('submit_plz');
return false;
}
return true;
}
function _sbort_click()
{
if (document.searchbyort.ort.value == "")
{
alert("{t}Enter the city, please!{/t}");
resetbutton('submit_city');
return false;
}
return true;
}
function _sbo_click()
{
if (document.searchbyowner.owner.value == "")
{
alert("{t}Enter the owner, please!{/t}");
resetbutton('submit_owner');
return false;
}
return true;
}
function _sbf_click()
{
if (document.searchbyfinder.finder.value == "")
{
alert("{t}Enter the username, please!{/t}");
resetbutton('submit_finder');
return false;
}
return true;
}
function sync_options(element)
{
var formnames = new Array();
formnames[0] = "searchbyname";
formnames[1] = "searchbydistance";
formnames[2] = "searchbyowner";
formnames[3] = "searchbyfinder";
formnames[4] = "searchbyplz";
formnames[5] = "searchbyort";
formnames[6] = "searchbyfulltext";
var sortby = "";
if (document.optionsform.sort[0].checked == true)
sortby = "byname";
else if (document.optionsform.sort[1].checked == true)
sortby = "bydistance";
else if (document.optionsform.sort[2].checked == true)
sortby = "bycreated";
else if (document.optionsform.sort[3].checked == true)
sortby = "bylastlog";
else if (document.optionsform.sort[4].checked == true)
sortby = "bymylastlog";
var tmpattrib = "";
for (i = 0; i < maAttributes.length; i++)
if (maAttributes[i][1] == 1)
tmpattrib = '' + tmpattrib + maAttributes[i][0] + ';';
if(tmpattrib.length > 0)
tmpattrib = tmpattrib.substr(0, tmpattrib.length-1);
var tmpattrib_not = "";
for (i = 0; i < maAttributes.length; i++)
if (maAttributes[i][1] == 2)
tmpattrib_not = '' + tmpattrib_not + maAttributes[i][0] + ';';
if(tmpattrib_not.length > 0)
tmpattrib_not = tmpattrib_not.substr(0, tmpattrib_not.length-1);
var tmpcachetype = "";
for (i = 1; i <= 10; i++)
{
if (document.getElementById('cachetype' + i).checked == true)
{
if (tmpcachetype != "") tmpcachetype = tmpcachetype + ";";
tmpcachetype = tmpcachetype + i;
}
}
if (tmpcachetype == "") tmpcachetype = "none";
var tmpcachesize = "";
for (i = 1; i <= cachesizes; i++)
{
if (document.getElementById('cachesize' + i).checked == true)
{
if (tmpcachesize != "") tmpcachesize = tmpcachesize + ";";
tmpcachesize = tmpcachesize + i;
}
}
if (tmpcachesize == "") tmpcachesize = "none";
for (var i in formnames)
{
document.forms[formnames[i]].sort.value = sortby;
document.forms[formnames[i]].orderRatingFirst.value = document.optionsform.orderRatingFirst.checked ? 1 : 0;
document.forms[formnames[i]].f_userowner.value = document.optionsform.f_userowner.checked ? 1 : 0;
document.forms[formnames[i]].f_userfound.value = document.optionsform.f_userfound.checked ? 1 : 0;
document.forms[formnames[i]].f_inactive.value = document.optionsform.f_inactive.checked ? 1 : 0;
document.forms[formnames[i]].f_disabled.value = document.optionsform.f_disabled.checked ? 1 : 0;
document.forms[formnames[i]].f_ignored.value = document.optionsform.f_ignored.checked ? 1 : 0;
document.forms[formnames[i]].f_otherPlatforms.value = document.optionsform.f_otherPlatforms.checked ? 1 : 0;
document.forms[formnames[i]].country.value = document.optionsform.country.value;
document.forms[formnames[i]].difficultymin.value = document.optionsform.difficultymin.value;
document.forms[formnames[i]].difficultymax.value = document.optionsform.difficultymax.value;
document.forms[formnames[i]].terrainmin.value = document.optionsform.terrainmin.value;
document.forms[formnames[i]].terrainmax.value = document.optionsform.terrainmax.value;
document.forms[formnames[i]].cachetype.value = tmpcachetype;
document.forms[formnames[i]].cachesize.value = tmpcachesize;
document.forms[formnames[i]].cache_attribs.value = tmpattrib;
document.forms[formnames[i]].cache_attribs_not.value = tmpattrib_not;
}
}
function switchAttribute(id)
{
var attrImg1 = document.getElementById("attrimg1_" + id);
var attrImg2 = document.getElementById("attrimg2_" + id);
var nArrayIndex = 0;
for (nArrayIndex = 0; nArrayIndex < maAttributes.length; nArrayIndex++)
{
if (maAttributes[nArrayIndex][0] == id)
break;
}
if (maAttributes[nArrayIndex][1] == 0)
{
if (attrImg1) attrImg1.src = maAttributes[nArrayIndex][3];
if (attrImg2) attrImg2.src = maAttributes[nArrayIndex][3];
maAttributes[nArrayIndex][1] = 1;
}
else if (maAttributes[nArrayIndex][1] == 1)
{
if (attrImg1) attrImg1.src = maAttributes[nArrayIndex][4];
if (attrImg2) attrImg2.src = maAttributes[nArrayIndex][4];
maAttributes[nArrayIndex][1] = 2;
}
else if (maAttributes[nArrayIndex][1] == 2)
{
if (attrImg1) attrImg1.src = maAttributes[nArrayIndex][5];
if (attrImg2) attrImg2.src = maAttributes[nArrayIndex][5];
maAttributes[nArrayIndex][1] = 0;
}
sync_options(null);
}
function hideAttributesCat2()
{
mnAttributesShowCat2 = 0;
document.getElementById('attributesCat1').style.display = "block";
document.getElementById('attributesCat2').style.display = "none";
document.getElementById('toggleAttributesCaption').firstChild.nodeValue = "{t}Show all{/t}";
}
function showAttributesCat2()
{
mnAttributesShowCat2 = 1;
document.getElementById('attributesCat1').style.display = "none";
document.getElementById('attributesCat2').style.display = "block";
document.getElementById('toggleAttributesCaption').firstChild.nodeValue = "{t}Less{/t}";
}
function switchAttributeCat2()
{
if (mnAttributesShowCat2 != 0)
hideAttributesCat2();
else
showAttributesCat2();
}
//-->
</script>
<div class="content2-pagetitle"><img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="32" height="32" alt="{t}Search for caches{/t}" />{t}Search for caches{/t} &nbsp; <small style="font-weight:normal">({t}old{/t})</small></div>
<form name="optionsform" style="display:inline;">
<div class="searchdiv">
<table class="table">
<tr>
<td style="vertical-align:top">{t}Sorting of result:{/t}</td>
<td colspan="2">
<div style="padding:0 0 5px 0">
<input type="radio" name="sort" value="byname" index="0" id="l_sortbyname" class="radio" onclick="sync_options(this)" {byname_checked} > <label for="l_sortbyname">{t}Cachename{/t}</label>&nbsp;
<input type="radio" name="sort" value="bydistance" index="1" id="l_sortbydistance" class="radio" onclick="sync_options(this)" {bydistance_checked} {bydistance_enabled} {disable_nologin}> <label for="l_sortbydistance" {grey_nologin}>{t}Distance from <a href="myprofile.php">user-profile home coordinates</a>{/t}</label></div>
<input type="radio" name="sort" value="bycreated" index="2" id="l_sortbycreated" class="radio" onclick="sync_options(this)" {bycreated_checked}> <label for="l_sortbycreated">{t}Listed since{/t}</label>&nbsp;
<input type="radio" name="sort" value="bylastlog" index="3" id="l_sortbylastlog" class="radio" onclick="sync_options(this)" {bylastlog_checked}> <label for="l_sortbylastlog" >{t}Last log{/t}</label>&nbsp;
<input type="radio" name="sort" value="bymylastlog" index="4" id="l_sortbymylastlog" class="radio" onclick="sync_options(this)" {bymylastlog_checked} {disable_nologin}> <label for="l_sortbymylastlog" {grey_nologin}>{t}My last log{/t}</label>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input id="orderRatingFirst" type="checkbox" name="orderRatingFirst" class="checkbox" value="1" onclick="sync_options(this)" {orderRatingFirst_checked} />
<label for="orderRatingFirst">{t}Show recommendation from other users first{/t}</label>
</td>
</tr>
</table>
</div>
<div class="searchdiv">
<table class="table">
<tr>
<td>{t}Hide following caches:{/t}</td>
<td colspan="2">
<input type="checkbox" name="f_userowner" value="1" id="l_userowner" class="checkbox" onclick="sync_options(this)" {f_userowner_disabled} /> <label for="l_userowner" {grey_nologin}>{t}My owned{/t}</label>&nbsp;&nbsp;
<input type="checkbox" name="f_userfound" value="1" id="l_userfound" class="checkbox" onclick="sync_options(this)" {f_userfound_disabled} /> <label for="l_userfound" {grey_nologin}>{t}My finds{/t}</label>&nbsp;&nbsp;
<input type="checkbox" name="f_ignored" value="1" id="l_ignored" class="checkbox" onclick="sync_options(this)" {f_ignored_disabled} > <label for="l_ignored" {grey_nologin}>{t}My ignored{/t}</label>&nbsp;&nbsp;
<img src="lang/de/ocstyle/images/misc/hint.gif" border="0" width="15" height="11" alt="{t}Notice{/t}" title="{t}Notice{/t}" align="middle">{t}Only usable if signed in.{/t}
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="2">
<input type="checkbox" name="f_disabled" value="1" id="l_disabled" class="checkbox" onclick="sync_options(this)" {f_disabled_checked} > <label for="l_disabled">{t}disabled[pl]{/t}</label>&nbsp;
<input type="checkbox" name="f_inactive" value="1" id="l_inactive" class="checkbox" onclick="sync_options(this)" {f_inactive_checked} > <label for="l_inactive">{t}archived[pl]{/t}</label>&nbsp;
<input type="checkbox" name="f_otherPlatforms" value="1" id="l_otherPlatforms" class="checkbox" onclick="sync_options(this)" {f_otherPlatforms_checked} > <label for="l_otherPlatforms">{t}GC listings (also listed at gc.com){/t}</label>
</td>
</tr>
</table>
</div>
<div class="searchdiv">
<table class="table">
<tr>
<td>{t}Cachetype:{/t}</td>
<td><input type="checkbox" id="cachetype2" name="cachetype2" value="2" onclick="sync_options(this)" class="checkbox" {cachetype2checked} /> <label for="cachetype2">{t}Traditional Cache{/t}</label></td>
<td><input type="checkbox" id="cachetype3" name="cachetype3" value="3" onclick="sync_options(this)" class="checkbox" {cachetype3checked} /> <label for="cachetype3">{t}Multicache{/t}</label></td>
<td><input type="checkbox" id="cachetype5" name="cachetype5" value="5" onclick="sync_options(this)" class="checkbox" {cachetype5checked} /> <label for="cachetype5">{t}Webcam Cache{/t}</label></td>
<td><input type="checkbox" id="cachetype6" name="cachetype6" value="6" onclick="sync_options(this)" class="checkbox" {cachetype6checked} /> <label for="cachetype6">{t}Event Cache{/t}</label></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" id="cachetype7" name="cachetype7" value="7" onclick="sync_options(this)" class="checkbox" {cachetype7checked} /> <label for="cachetype7">{t}Quizcache{/t}</label></td>
<td><input type="checkbox" id="cachetype8" name="cachetype8" value="8" onclick="sync_options(this)" class="checkbox" {cachetype8checked} /> <label for="cachetype8">{t}Math/Physics-Cache{/t}</label></td>
<td><input type="checkbox" id="cachetype9" name="cachetype9" value="9" onclick="sync_options(this)" class="checkbox" {cachetype9checked} /> <label for="cachetype9">{t}Moving Cache{/t}</label></td>
<td><input type="checkbox" id="cachetype10" name="cachetype10" value="10" onclick="sync_options(this)" class="checkbox" {cachetype10checked} /> <label for="cachetype10">{t}Drive-In{/t}</label></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" id="cachetype4" name="cachetype4" value="4" onclick="sync_options(this)" class="checkbox" {cachetype4checked} /> <label for="cachetype4">{t}virtual Cache{/t}</label></td>
<td><input type="checkbox" id="cachetype1" name="cachetype1" value="1" onclick="sync_options(this)" class="checkbox" {cachetype1checked} /> <label for="cachetype1">{t}unknown cachetyp{/t}</label></td>
</tr>
</table>
</div>
<div class="searchdiv">
<table class="table">
<tr>
<td>{t}Cachesize:{/t}</td>
<td><input type="checkbox" id="cachesize8" name="cachesize8" value="8" onclick="sync_options(this)" class="checkbox" {cachesize8checked} /> <label for="cachesize8">{t}nano{/t}</label>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td><input type="checkbox" id="cachesize2" name="cachesize2" value="2" onclick="sync_options(this)" class="checkbox" {cachesize2checked} /> <label for="cachesize2">{t}micro{/t}</label></td>
<td><input type="checkbox" id="cachesize3" name="cachesize3" value="3" onclick="sync_options(this)" class="checkbox" {cachesize3checked} /> <label for="cachesize3">{t}small{/t}</label></td>
<td><input type="checkbox" id="cachesize4" name="cachesize4" value="4" onclick="sync_options(this)" class="checkbox" {cachesize4checked} /> <label for="cachesize4">{t}normal{/t}</label></td>
</tr>
<tr>
<td></td>
<td><input type="checkbox" id="cachesize5" name="cachesize5" value="5" onclick="sync_options(this)" class="checkbox" {cachesize5checked} /> <label for="cachesize5">{t}large{/t}</label></td>
<td><input type="checkbox" id="cachesize6" name="cachesize6" value="6" onclick="sync_options(this)" class="checkbox" {cachesize6checked} /> <label for="cachesize6">{t}very large{/t}</label></td>
<td><input type="checkbox" id="cachesize7" name="cachesize7" value="7" onclick="sync_options(this)" class="checkbox" {cachesize7checked} /> <label for="cachesize7">{t}no container{/t}</label></td>
<td><input type="checkbox" id="cachesize1" name="cachesize1" value="1" onclick="sync_options(this)" class="checkbox" {cachesize1checked} /> <label for="cachesize1">{t}other size{/t}</label></td>
</tr>
</table>
</div>
<div class="searchdiv">
<table class="table">
<tr>
<td>{t}Difficulty:{/t}</td>
<td>
<select name="difficultymin" class="input80" onchange="sync_options(this)">
{difficultymin_options}
</select>
&nbsp;&nbsp;&nbsp;{t}to{/t}&nbsp;&nbsp;&nbsp;
<select name="difficultymax" class="input80" onchange="sync_options(this)">
{difficultymax_options}
</select>
</td>
</tr>
<tr>
<td>{t}Terrain:{/t}</td>
<td>
<select name="terrainmin" class="input80" onchange="sync_options(this)">
{terrainmin_options}
</select>
&nbsp;&nbsp;&nbsp;{t}to{/t}&nbsp;&nbsp;&nbsp;
<select name="terrainmax" class="input80" onchange="sync_options(this)">
{terrainmax_options}
</select>
</td>
</tr>
</table>
</div>
<div class="searchdiv">
<table class="table">
<tr>
<td>{t}Country:{/t}&nbsp;&nbsp;</td>
<td>
<select name="country" class="input200" onchange="sync_options(this)">
{countryoptions}
</select>
</td>
</tr>
</table>
</div>
<div class="searchdiv">
<table class="table">
<tr>
<td valign="top">
{t}Cache attributes:{/t}<br />
(<a href="javascript:switchAttributeCat2()"><span id="toggleAttributesCaption">{t}Show all{/t}</span></a>)
</td>
<td>
<div id="attributesCat1" style="display:none;">{cache_attribCat1_list}</div>
<div id="attributesCat2" style="display:block;">{cache_attribCat2_list}</div>
</td>
</tr>
</table>
</div>
</form>
<div id="scriptwarning" style="margin:0 5px 0 5px;">
<p><span class="errormsg">{t}JavaScript is not activated, you cannot use the above options (sorting to attributes) - basic search is supported nevertheless.{/t}</span></p>
</div>
<script language="javascript">
<!--
document.getElementById("scriptwarning").style.display = "none";
// hide advanced attributes if none is selected
var i = 0;
var bHide = true;
for (i = 0; i < maAttributes.length; i++)
{
if (maAttributes[i][1] != 0 && maAttributes[i][6] != 1)
{
bHide = false;
break;
}
}
if (bHide == true)
hideAttributesCat2();
-->
</script>
<form action="search1.php" onsubmit="return(_sbn_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbyname" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbyname" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<div class="buffer" style="width: 500px;">&nbsp;</div>
<div class="content2-container bg-blue02">
<p class="content-title-noshade-size2">
<img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="22" height="22" alt="" />
{t}Search by cachename{/t}
</p>
</div>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
<tr>
<td>{t}Name:{/t}</td>
<td><input type="text" name="cachename" value="{cachename}" class="input200" /></td>
<td><input type="submit" name="submit_cachename" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_cachename')" /></td>
</tr>
<tr><td class="spacer" colspan="3"></td></tr>
</table>
</form>
<form action="search1.php" onsubmit="return(_sbd_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbydistance" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbydistance" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<div class="buffer" style="width: 500px;">&nbsp;</div>
<div class="content2-container bg-blue02">
<p class="content-title-noshade-size2">
<img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="22" height="22" alt="" />
{t}Search by distance{/t}
</p>
</div>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
<tr>
<td valign="top">{t}Of coordinates:{/t}</td>
<td colspan="2" valign="top">
<select name="latNS" class="input40">
<option value="N" {latN_sel}>{t}N{/t}</option>
<option value="S" {latS_sel}>{t}S{/t}</option>
</select>&nbsp;
<input type="text" name="lat_h" maxlength="2" value="{lat_h}" class="input30" />&nbsp;°&nbsp;
<input type="text" name="lat_min" maxlength="6" value="{lat_min}" class="input40" />&nbsp;'&nbsp;
<br>
<select name="lonEW" class="input40">
<option value="E" {lonE_sel}>{t}E{/t}</option>
<option value="W" {lonW_sel}>{t}W{/t}</option>
</select>&nbsp;
<input type="text" name="lon_h" maxlength="3" value="{lon_h}" class="input30" />&nbsp;°&nbsp;
<input type="text" name="lon_min" maxlength="6" value="{lon_min}" class="input40" />&nbsp;'&nbsp;
</td>
</tr>
<tr>
<td>{t}Maximum distance:{/t}</td>
<td>
<input type="text" name="distance" value="{distance}" maxlength="4" class="input50" />&nbsp;
<select name="unit" class="input100">
<option value="km" {sel_km}>{t}Kilometer{/t}</option>
<option value="sm" {sel_sm}>{t}Miles{/t}</option>
<option value="nm" {sel_nm}>{t}Seamiles{/t}</option>
</select>
</td>
<td><input type="submit" name="submit_dist" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_dist')" /></td>
</tr>
<tr><td class="spacer" colspan="3"></td></tr>
</table>
</form>
<div class="buffer" style="width: 500px;">&nbsp;</div>
<div class="content2-container bg-blue02">
<p class="content-title-noshade-size2">
<img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="22" height="22" alt="" />
{t}Search for city{/t}
</p>
</div>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
{ortserror}
</table>
<form action="search1.php" onsubmit="return(_sbplz_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbyplz" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbyplz" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr>
<td>{t}Postal code:{/t}</td>
<td><input type="text" name="plz" value="{plz}" maxlength="5" class="input50" /></td>
<td><input type="submit" name="submit_plz" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_plz')" /></td>
</tr>
</table>
</form>
<form action="search1.php" onsubmit="return(_sbort_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbyort" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbyort" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr>
<td>{t}City:{/t}</td>
<td><input type="text" name="ort" value="{ort}" class="input200" /></td>
<td><input type="submit" name="submit_city" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_city')" /></td>
</tr>
</table>
</form>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
</table>
<form action="search1.php" onsubmit="return(_sbft_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbyfulltext" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbyfulltext" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<div class="buffer" style="width: 500px;">&nbsp;</div>
<div class="content2-container bg-blue02">
<p class="content-title-noshade-size2">
<img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="22" height="22" alt="" />
{t}Search for text{/t}
</p>
</div>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
{fulltexterror}
<tr>
<td>Text:</td>
<td><input type="text" name="fulltext" value="{fulltext}" class="input200" /></td>
<td><input type="submit" name="submit_ft" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_ft')" /></td>
</tr>
<tr>
<td></td>
<td colspan="2">
<table class="table" width="250px">
<tr>
<td><input type="checkbox" name="ft_name" id="ft_name" class="checkbox" value="1" {ft_name_checked} /> <label for="ft_name">{t}Name{/t}</label></td>
<td><input type="checkbox" name="ft_desc" id="ft_desc" class="checkbox" value="1" {ft_desc_checked} /> <label for="ft_desc">{t}Description{/t}</label></td>
</tr>
<tr>
<td><input type="checkbox" name="ft_logs" id="ft_logs" class="checkbox" value="1" {ft_logs_checked} /> <label for="ft_logs">{t}Logs{/t}</label></td>
<td><input type="checkbox" name="ft_pictures" id="ft_pictures" class="checkbox" value="1" {ft_pictures_checked} /> <label for="ft_pictures">{t}Pictures{/t}</label></td>
</tr>
</table>
</td>
</tr>
<tr><td class="spacer" colspan="3"></td></tr>
</table>
</form>
<form action="search1.php" onsubmit="return(_sbo_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbyowner" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbyowner" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<div class="buffer" style="width: 500px;">&nbsp;</div>
<div class="content2-container bg-blue02">
<p class="content-title-noshade-size2">
<img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="22" height="22" alt="" />
{t}Search for Owner{/t}
</p>
</div>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
<tr>
<td>{t}Owner:{/t}</td>
<td><input type="text" name="owner" value="{owner}" maxlength="40" class="input200" /></td>
<td><input type="submit" name="submit_owner" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_owner')" /></td>
</tr>
<tr><td class="spacer" colspan="3"></td></tr>
</table>
</form>
<form action="search1.php" onsubmit="return(_sbf_click());" method="{formmethod}" enctype="application/x-www-form-urlencoded" name="searchbyfinder" dir="ltr" style="display:inline;">
<input type="hidden" name="searchto" value="searchbyfinder" />
<input type="hidden" name="showresult" value="1" />
<input type="hidden" name="expert" value="0" />
<input type="hidden" name="output" value="HTML" />
<input type="hidden" name="utf8" value="1" />
<input type="hidden" name="sort" value="{hidopt_sort}" />
<input type="hidden" name="orderRatingFirst" value="{hidopt_orderRatingFirst}" />
<input type="hidden" name="f_userowner" value="{hidopt_userowner}" />
<input type="hidden" name="f_userfound" value="{hidopt_userfound}" />
<input type="hidden" name="f_inactive" value="{hidopt_inactive}" />
<input type="hidden" name="f_disabled" value="{hidopt_disabled}" />
<input type="hidden" name="f_ignored" value="{hidopt_ignored}" />
<input type="hidden" name="f_otherPlatforms" value="{hidopt_otherPlatforms}" />
<input type="hidden" name="country" value="{country}" />
<input type="hidden" name="difficultymin" value="{difficultymin}" />
<input type="hidden" name="difficultymax" value="{difficultymax}" />
<input type="hidden" name="terrainmin" value="{terrainmin}" />
<input type="hidden" name="terrainmax" value="{terrainmax}" />
<input type="hidden" name="cachetype" value="{cachetype}" />
<input type="hidden" name="cachesize" value="{cachesize}" />
<input type="hidden" name="cache_attribs" value="{hidopt_attribs}" />
<input type="hidden" name="cache_attribs_not" value="{hidopt_attribs_not}" />
<div class="buffer" style="width: 500px;">&nbsp;</div>
<div class="content2-container bg-blue02">
<p class="content-title-noshade-size2">
<img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="22" height="22" alt="" />
{t}Search for Logs{/t}
</p>
</div>
<table class="table">
<colgroup>
<col width="200">
<col width="220">
<col>
</colgroup>
<tr><td class="spacer" colspan="3"></td></tr>
<tr>
<td>{t}Logtype:{/t}</td>
<td colspan="2">
<select name="logtype">
{logtype_options}
</select>
</td>
</tr>
<tr>
<td>{t}Username:{/t}</td>
<td><input type="text" name="finder" value="{finder}" maxlength="40" class="input200" /></td>
<td><input type="submit" name="submit_finder" value="{t}Search{/t}" class="formbutton" onclick="submitbutton('submit_finder')" /></td>
</tr>
<tr><td class="spacer" colspan="3"></td></tr>
</table>
</form>
<div class="buffer" style="width: 500px;">&nbsp;</div>

View File

@@ -15,7 +15,7 @@
****************************************************************************/
$locline = '<tr><td width="50px"><p>{nr}.&nbsp;</p></td><td><p><b><a href="search.php?{urlparams}">{locationname}</a>{secondlocationname}</b></p></td></tr>
$locline = '<tr><td width="50px"><p>{nr}.&nbsp;</p></td><td><p><b><a href="search1.php?{urlparams}">{locationname}</a>{secondlocationname}</b></p></td></tr>
<tr><td width="50px">&nbsp;</td><td><p>{coords}</p></td></tr>
<tr><td width="50px">&nbsp;</td><td style="padding-bottom:3px;"><span style="color:#001BBC">{parentlocations}</span></td></tr>';

View File

@@ -0,0 +1,21 @@
<?php
/****************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
****************************************************************************/
?>
<div class="content2-pagetitle"><img src="resource2/ocstyle/images/cacheicon/traditional.gif" style="align: left; margin-right: 10px;" width="32" height="32" alt="{t}Search result{/t}" />{t}Selection of city{/t} - {t}Total of {resultscount} cities matched{/t}</div>
<p>{t}For the search criterion no clear result was found. Please choose the correct location.{/t}</p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr><td colspan="2" style="margin-bottom:1px;">{pages}</td></tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
{locations}
</table>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr><td colspan="2" style="margin-top:1px;">{pages}</td></tr>
</table>

View File

@@ -0,0 +1,329 @@
<?php
/****************************************************************************
./lib/ftsearch.inc.php
--------------------
begin : January 10 2007
For license information see doc/license.txt
****************************************************************************/
/****************************************************************************
Unicode Reminder メモ
functions for the full text search-engine
****************************************************************************/
/* begin conversion rules */
$ftsearch_simplerules[] = array('qu', 'k');
$ftsearch_simplerules[] = array('ts', 'z');
$ftsearch_simplerules[] = array('tz', 'z');
$ftsearch_simplerules[] = array('alp', 'alb');
$ftsearch_simplerules[] = array('y', 'i');
$ftsearch_simplerules[] = array('ai', 'ei');
$ftsearch_simplerules[] = array('ou', 'u');
$ftsearch_simplerules[] = array('th', 't');
$ftsearch_simplerules[] = array('ph', 'f');
$ftsearch_simplerules[] = array('oh', 'o');
$ftsearch_simplerules[] = array('ah', 'a');
$ftsearch_simplerules[] = array('eh', 'e');
$ftsearch_simplerules[] = array('aux', 'o');
$ftsearch_simplerules[] = array('eau', 'o');
$ftsearch_simplerules[] = array('eux', 'oe');
$ftsearch_simplerules[] = array('^ch', 'sch');
$ftsearch_simplerules[] = array('ck', 'k');
$ftsearch_simplerules[] = array('ie', 'i');
$ftsearch_simplerules[] = array('ih', 'i');
$ftsearch_simplerules[] = array('ent', 'end');
$ftsearch_simplerules[] = array('uh', 'u');
$ftsearch_simplerules[] = array('sh', 'sch');
$ftsearch_simplerules[] = array('ver', 'wer');
$ftsearch_simplerules[] = array('dt', 't');
$ftsearch_simplerules[] = array('hard', 'hart');
$ftsearch_simplerules[] = array('egg', 'ek');
$ftsearch_simplerules[] = array('eg', 'ek');
$ftsearch_simplerules[] = array('cr', 'kr');
$ftsearch_simplerules[] = array('ca', 'ka');
$ftsearch_simplerules[] = array('ce', 'ze');
$ftsearch_simplerules[] = array('x', 'ks');
$ftsearch_simplerules[] = array('ve', 'we');
$ftsearch_simplerules[] = array('va', 'wa');
/* end conversion rules */
function ftsearch_hash(&$str)
{
$astr = ftsearch_split($str, true);
foreach ($astr AS $k => $s)
{
if (strlen($s) > 2)
$astr[$k] = sprintf("%u", crc32($s));
else
unset($astr[$k]);
}
return $astr;
}
// str = long text
function ftsearch_split(&$str, $simple)
{
global $ftsearch_ignores;
// interpunktion
$str = mb_ereg_replace('\\?', ' ', $str);
$str = mb_ereg_replace('\\)', ' ', $str);
$str = mb_ereg_replace('\\(', ' ', $str);
$str = mb_ereg_replace('\\.', ' ', $str);
$str = mb_ereg_replace('´', ' ', $str);
$str = mb_ereg_replace('`', ' ', $str);
$str = mb_ereg_replace('\'', ' ', $str);
$str = mb_ereg_replace('/', ' ', $str);
$str = mb_ereg_replace(':', ' ', $str);
$str = mb_ereg_replace(',', ' ', $str);
$str = mb_ereg_replace("\r\n", ' ', $str);
$str = mb_ereg_replace("\n", ' ', $str);
$str = mb_ereg_replace("\r", ' ', $str);
$ostr = '';
while ($ostr != $str)
{
$ostr = $str;
$str = mb_ereg_replace(' ', ' ', $str);
}
$astr = mb_split(' ', $str);
$str = '';
ftsearch_load_ignores();
for ($i = count($astr) - 1; $i >= 0; $i--)
{
// ignore?
if (array_search(mb_strtolower($astr[$i]), $ftsearch_ignores) !== false)
unset($astr[$i]);
else
{
if ($simple)
$astr[$i] = ftsearch_text2simple($astr[$i]);
if ($astr[$i] == '')
unset($astr[$i]);
}
}
return $astr;
}
function ftsearch_load_ignores()
{
global $ftsearch_ignores;
global $ftsearch_ignores_loaded;
if ($ftsearch_ignores_loaded != true)
{
$ftsearch_ignores = array();
$rs = sql('SELECT `word` FROM `search_ignore`');
while ($r = sql_fetch_assoc($rs))
$ftsearch_ignores[] = $r['word'];
sql_free_result($rs);
$ftsearch_ignores_loaded = true;
}
}
// str = single word
function ftsearch_text2simple($str)
{
global $ftsearch_simplerules;
$str = ftsearch_text2sort($str);
// regeln anwenden
foreach ($ftsearch_simplerules AS $rule)
{
$str = mb_ereg_replace($rule[0], $rule[1], $str);
}
// doppelte chars ersetzen
for ($c = ord('a'); $c <= ord('z'); $c++)
{
$old_str = '';
while ($old_str != $str)
{
$old_str = $str;
$str = mb_ereg_replace(chr($c) . chr($c), chr($c), $str);
}
$old_str = '';
}
return $str;
}
// str = single word
function ftsearch_text2sort($str)
{
$str = mb_strtolower($str);
// deutsches
$str = mb_ereg_replace('ä', 'ae', $str);
$str = mb_ereg_replace('ö', 'oe', $str);
$str = mb_ereg_replace('ü', 'ue', $str);
$str = mb_ereg_replace('Ä', 'ae', $str);
$str = mb_ereg_replace('Ö', 'oe', $str);
$str = mb_ereg_replace('Ü', 'ue', $str);
$str = mb_ereg_replace('ß', 'ss', $str);
// akzente usw.
$str = mb_ereg_replace('à', 'a', $str);
$str = mb_ereg_replace('á', 'a', $str);
$str = mb_ereg_replace('â', 'a', $str);
$str = mb_ereg_replace('è', 'e', $str);
$str = mb_ereg_replace('é', 'e', $str);
$str = mb_ereg_replace('ë', 'e', $str);
$str = mb_ereg_replace('É', 'e', $str);
$str = mb_ereg_replace('ô', 'o', $str);
$str = mb_ereg_replace('ó', 'o', $str);
$str = mb_ereg_replace('ò', 'o', $str);
$str = mb_ereg_replace('ê', 'e', $str);
$str = mb_ereg_replace('ě', 'e', $str);
$str = mb_ereg_replace('û', 'u', $str);
$str = mb_ereg_replace('ç', 'c', $str);
$str = mb_ereg_replace('c', 'c', $str);
$str = mb_ereg_replace('ć', 'c', $str);
$str = mb_ereg_replace('î', 'i', $str);
$str = mb_ereg_replace('ï', 'i', $str);
$str = mb_ereg_replace('ì', 'i', $str);
$str = mb_ereg_replace('í', 'i', $str);
$str = mb_ereg_replace('ł', 'l', $str);
$str = mb_ereg_replace('š', 's', $str);
$str = mb_ereg_replace('Š', 's', $str);
$str = mb_ereg_replace('u', 'u', $str);
$str = mb_ereg_replace('ý', 'y', $str);
$str = mb_ereg_replace('ž', 'z', $str);
$str = mb_ereg_replace('Ž', 'Z', $str);
$str = mb_ereg_replace('Æ', 'ae', $str);
$str = mb_ereg_replace('æ', 'ae', $str);
$str = mb_ereg_replace('œ', 'oe', $str);
// sonstiges
$str = mb_ereg_replace('[^A-Za-z ]', '', $str);
return $str;
}
function ftsearch_refresh()
{
ftsearch_refresh_all_caches();
ftsearch_refresh_all_cache_desc();
ftsearch_refresh_all_pictures();
ftsearch_refresh_all_cache_logs();
}
function ftsearch_refresh_all_caches()
{
$rs = sql('SELECT `caches`.`cache_id` FROM `caches` LEFT JOIN `search_index_times` ON `caches`.`cache_id`=`search_index_times`.`object_id` AND 2=`search_index_times`.`object_type` WHERE `caches`.`status`!=5 AND ISNULL(`search_index_times`.`object_id`) UNION DISTINCT SELECT `caches`.`cache_id` FROM `caches` INNER JOIN `search_index_times` ON `search_index_times`.`object_type`=2 AND `caches`.`cache_id`=`search_index_times`.`object_id` WHERE `caches`.`last_modified`>`search_index_times`.`last_refresh` AND `caches`.`status`!=5');
while ($r = sql_fetch_assoc($rs))
ftsearch_refresh_cache($r['cache_id']);
sql_free_result($rs);
}
function ftsearch_refresh_cache($cache_id)
{
$rs = sql("SELECT `name`, `last_modified` FROM `caches` WHERE `cache_id`='&1'", $cache_id);
if ($r = sql_fetch_assoc($rs))
{
ftsearch_set_entries(2, $cache_id, $cache_id, $r['name'], $r['last_modified']);
}
sql_free_result($rs);
}
function ftsearch_refresh_all_cache_desc()
{
$rs = sql('SELECT `cache_desc`.`id` FROM `cache_desc` INNER JOIN `caches` ON `caches`.`cache_id`=`cache_desc`.`cache_id` LEFT JOIN `search_index_times` ON `cache_desc`.`id`=`search_index_times`.`object_id` AND 3=`search_index_times`.`object_type` WHERE `caches`.`status`!=5 AND ISNULL(`search_index_times`.`object_id`) UNION DISTINCT SELECT `cache_desc`.`id` FROM `cache_desc` INNER JOIN `caches` ON `caches`.`cache_id`=`cache_desc`.`cache_id` INNER JOIN `search_index_times` ON `search_index_times`.`object_type`=3 AND `cache_desc`.`id`=`search_index_times`.`object_id` WHERE `cache_desc`.`last_modified`>`search_index_times`.`last_refresh` AND `caches`.`status`!=5');
while ($r = sql_fetch_assoc($rs))
ftsearch_refresh_cache_desc($r['id']);
sql_free_result($rs);
}
function ftsearch_refresh_cache_desc($id)
{
$rs = sql("SELECT `cache_id`, `desc`, `last_modified` FROM `cache_desc` WHERE `id`='&1'", $id);
if ($r = sql_fetch_assoc($rs))
{
$r['desc'] = ftsearch_strip_html($r['desc']);
ftsearch_set_entries(3, $id, $r['cache_id'], $r['desc'], $r['last_modified']);
}
sql_free_result($rs);
}
function ftsearch_refresh_all_pictures()
{
$rs = sql('SELECT `pictures`.`id` FROM `pictures` LEFT JOIN `search_index_times` ON `pictures`.`id`=`search_index_times`.`object_id` AND 6=`search_index_times`.`object_type` WHERE ISNULL(`search_index_times`.`object_id`) UNION DISTINCT SELECT `pictures`.`id` FROM `pictures` INNER JOIN `search_index_times` ON `search_index_times`.`object_type`=6 AND `pictures`.`id`=`search_index_times`.`object_id` WHERE `pictures`.`last_modified`>`search_index_times`.`last_refresh`');
while ($r = sql_fetch_assoc($rs))
ftsearch_refresh_picture($r['id']);
sql_free_result($rs);
}
function ftsearch_refresh_picture($id)
{
$rs = sql("SELECT `caches`.`cache_id`, `pictures`.`title`, `pictures`.`last_modified` FROM `pictures` INNER JOIN `caches` ON `pictures`.`object_type`=2 AND `caches`.`cache_id`=`pictures`.`object_id` WHERE `pictures`.`id`='&1' UNION DISTINCT SELECT `cache_logs`.`cache_id` , `pictures`.`title`, `pictures`.`last_modified` FROM `pictures` INNER JOIN `cache_logs` ON `pictures`.`object_type`=1 AND `cache_logs`.`id`=`pictures`.`object_id` WHERE `pictures`.`id`='&1' LIMIT 1", $id);
if ($r = sql_fetch_assoc($rs))
{
ftsearch_set_entries(6, $id, $r['cache_id'], $r['title'], $r['last_modified']);
}
sql_free_result($rs);
}
function ftsearch_refresh_all_cache_logs()
{
$rs = sql('SELECT `cache_logs`.`id` FROM `cache_logs` LEFT JOIN `search_index_times` ON `cache_logs`.`id`=`search_index_times`.`object_id` AND 1=`search_index_times`.`object_type` WHERE ISNULL(`search_index_times`.`object_id`) UNION DISTINCT SELECT `cache_logs`.`id` FROM `cache_logs` INNER JOIN `search_index_times` ON `search_index_times`.`object_type`=1 AND `cache_logs`.`id`=`search_index_times`.`object_id` WHERE `cache_logs`.`last_modified`>`search_index_times`.`last_refresh`');
while ($r = sql_fetch_assoc($rs))
ftsearch_refresh_cache_logs($r['id']);
sql_free_result($rs);
}
function ftsearch_refresh_cache_logs($id)
{
$rs = sql("SELECT `cache_id`, `text`, `last_modified` FROM `cache_logs` WHERE `id`='&1'", $id);
if ($r = sql_fetch_assoc($rs))
{
$r['text'] = ftsearch_strip_html($r['text']);
ftsearch_set_entries(1, $id, $r['cache_id'], $r['text'], $r['last_modified']);
}
sql_free_result($rs);
}
function ftsearch_delete_entries($object_type, $object_id, $cache_id)
{
sql("DELETE FROM `search_index` WHERE `object_type`='&1' AND `cache_id`='&2'", $object_type, $cache_id);
sql("DELETE FROM `search_index_times` WHERE `object_type`='&1' AND `object_id`='&2'", $object_type, $object_id);
}
function ftsearch_set_entries($object_type, $object_id, $cache_id, &$text, $last_modified)
{
ftsearch_delete_entries($object_type, $object_id, $cache_id);
$ahash = ftsearch_hash($text);
foreach ($ahash AS $k => $h)
{
sql("INSERT INTO `search_index` (`object_type`, `cache_id`, `hash`, `count`) VALUES ('&1', '&2', '&3', '&4') ON DUPLICATE KEY UPDATE `count`=`count`+1", $object_type, $cache_id, $h, 1);
}
sql("INSERT INTO `search_index_times` (`object_id`, `object_type`, `last_refresh`) VALUES ('&1', '&2', '&3') ON DUPLICATE KEY UPDATE `last_refresh`='&3'", $object_id, $object_type, $last_modified);
}
function ftsearch_strip_html($text)
{
$text = str_replace("\n", ' ', $text);
$text = str_replace("\r", ' ', $text);
$text = str_replace('<br />', ' ', $text);
$text = str_replace('<br/>', ' ', $text);
$text = str_replace('<br>', ' ', $text);
$text = strip_tags($text);
$text = html_entity_decode($text, ENT_COMPAT, 'UTF-8');
return $text;
}
?>

View File

@@ -0,0 +1,514 @@
<?php
/****************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
GPX search output (GC compatible)
used by Ocprop
****************************************************************************/
require_once('lib2/logic/npas.inc.php');
$search_output_file_download = true;
$content_type_plain = 'application/gpx';
function search_output()
{
global $absolute_server_URI, $locale, $usr, $login;
global $cache_note_text;
$gpxHead =
'<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0" creator="Opencaching.de - http://www.opencaching.de" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd" xmlns="http://www.topografix.com/GPX/1/0">
<name>Cache listing generated from Opencaching.de</name>
<desc>This is a waypoint file generated from Opencaching.de{wpchildren}</desc>
<author>Opencaching.de</author>
<email>contact@opencaching.de</email>
<url>http://www.opencaching.de</url>
<urlname>Opencaching.de - Geocaching in Deutschland, Oesterreich und der Schweiz</urlname>
<time>{time}</time>
<keywords>cache, geocache, opencaching, waypoint</keywords>
';
$gpxLine =
' <wpt lat="{lat}" lon="{lon}">
<time>{time}</time>
<name>{waypoint}</name>
<desc>{cachename}</desc>
<src>www.opencaching.de</src>
<url>' . $absolute_server_URI . 'viewcache.php?cacheid={cacheid}</url>
<urlname>{cachename}</urlname>
<sym>{sym}</sym>
<type>Geocache|{type}</type>
<groundspeak:cache id="{cacheid}" {status} xmlns:groundspeak="http://www.groundspeak.com/cache/1/0/1">
<groundspeak:name>{cachename}</groundspeak:name>
<groundspeak:placed_by>{owner}</groundspeak:placed_by>
<groundspeak:owner id="{userid}">{owner}</groundspeak:owner>
<groundspeak:type>{type}</groundspeak:type>
<groundspeak:container>{container}</groundspeak:container>
<groundspeak:attributes>
{attributes} </groundspeak:attributes>
<groundspeak:difficulty>{difficulty}</groundspeak:difficulty>
<groundspeak:terrain>{terrain}</groundspeak:terrain>
<groundspeak:country>{country}</groundspeak:country>
<groundspeak:state>{state}</groundspeak:state>
<groundspeak:short_description html="True">{shortdesc}</groundspeak:short_description>
<groundspeak:long_description html="True">{desc}&lt;br /&gt;{images}</groundspeak:long_description>
{hints} <groundspeak:logs>
{logs} </groundspeak:logs>
<groundspeak:travelbugs>
{geokrety} </groundspeak:travelbugs>
</groundspeak:cache>
</wpt>
{cache_waypoints}';
/* Ocprop:
* <wpt\s+lat=\"([0-9\-\+\.]+)\"\s+lon=\"([0-9\-\+\.]+)\">
* <time>(.*?)<\/time>
* (Date: ^([0-9]{4})\-([0-9]{2})\-([0-9]{2})T[0-9\:\-\.]+(Z)?$/s)
* <name>(.*?)<\/name>
* <url>http:\/\/www\.opencaching\.de\/viewcache\.php\?cacheid=([0-9]+)<\/url>
* <sym>(.*?)<\/sym>
* <groundspeak:cache\s+id=\"[0-9]+\"\s+available=\"(True|False)\"\s+archived=\"(True|False)\"
* <groundspeak:name>(.*?)<\/groundspeak:name>
* <groundspeak:placed_by>(.*?)<\/groundspeak:placed_by>
* <groundspeak:owner id="([0-9])+">(.*?)<\/groundspeak:owner>
* <groundspeak:type>(.*?)<\/groundspeak:type>
* <groundspeak:container>(.*?)<\/groundspeak:container>
* <groundspeak:difficulty>(.*?)<\/groundspeak:difficulty>
* <groundspeak:terrain>(.*?)<\/groundspeak:terrain>
* <groundspeak:country>(.*?)<\/groundspeak:country>
* <groundspeak:state>(.*?)<\/groundspeak:state>
* <groundspeak:short_description html="(.*?)".*?>(.*?)<\/groundspeak:short_description>
* <groundspeak:long_description html="(.*?)".*?>(.*?)<\/groundspeak:long_description>
* <groundspeak:encoded_hints>(.*?)<\/groundspeak:encoded_hints>
*/
$gpxAttributes = ' <groundspeak:attribute id="{attrib_id}" inc="{attrib_inc}">{attrib_name}</groundspeak:attribute>';
$gpxLog = ' <groundspeak:log id="{id}">
<groundspeak:date>{date}</groundspeak:date>
<groundspeak:type>{type}</groundspeak:type>
<groundspeak:finder id="{userid}">{username}</groundspeak:finder>
<groundspeak:text encoded="False">{text}</groundspeak:text>
</groundspeak:log>';
$gpxGeokrety = ' <groundspeak:travelbug id="{gkid}" ref="{gkref}">
<groundspeak:name>{gkname}</groundspeak:name>
</groundspeak:travelbug>';
$gpxWaypoints = ' <wpt lat="{wp_lat}" lon="{wp_lon}">
<time>{time}</time>
<name>{name}</name>
<cmt>{comment}</cmt>
<desc>{desc}</desc>
<url>' . $absolute_server_URI . 'viewcache.php?cacheid={cacheid}</url>
<urlname>{parent} {cachename}</urlname>
<sym>{type}</sym>
<type>Waypoint|{type}</type>
<gsak:wptExtension xmlns:gsak="http://www.gsak.net/xmlv1/4">
<gsak:Parent>{parent}</gsak:Parent>
</gsak:wptExtension>
</wpt>
';
$gpxFoot = '</gpx>';
$gpxTimeFormat = 'Y-m-d\TH:i:s\Z';
$gpxStatus[0] = 'available="False" archived="False"'; // other (unavailable, not archived)
$gpxStatus[1] = 'available="True" archived="False"'; //available, not archived
$gpxStatus[2] = 'available="False" archived="False"'; //unavailable, not archived
$gpxStatus[3] = 'available="False" archived="True"'; //unavailable, archived
$gpxStatus[6] = 'available="False" archived="True"'; //locked, visible
$gpxContainer[0] = 'Other';
$gpxContainer[2] = 'Micro';
$gpxContainer[3] = 'Small';
$gpxContainer[4] = 'Regular';
$gpxContainer[5] = 'Large';
$gpxContainer[6] = 'Large';
$gpxContainer[7] = 'Virtual';
$gpxContainer[8] = 'Micro';
// cache types known by gpx
$gpxType[0] = 'Unknown Cache';
$gpxType[2] = 'Traditional Cache';
$gpxType[3] = 'Multi-cache';
$gpxType[4] = 'Virtual Cache';
$gpxType[5] = 'Webcam Cache';
$gpxType[6] = 'Event Cache';
// unknown ... converted
$gpxType[7] = 'Unknown Cache';
$gpxType[8] = 'Unknown Cache';
$gpxType[10] = 'Traditional Cache';
$gpxLogType[0] = 'Other';
$gpxLogType[1] = 'Found it';
$gpxLogType[2] = 'Didn\'t find it';
$gpxLogType[3] = 'Write note';
$gpxLogType[7] = 'Attended';
$gpxLogType[8] = 'Will attend';
$gpxLogType[9] = 'Archive';
$gpxLogType[10] = 'Owner Maintenance';
$gpxLogType[11] = 'Temporarily Disable Listing';
$gpxLogType[13] = 'Archive';
$gpxLogType[14] = 'Archive';
$gpxSymNormal = 'Geocache';
$gpxSymFound = 'Geocache Found';
$childwphandler = new ChildWp_Handler();
$children='';
$rs = sql('SELECT `searchtmp`.`cache_id` `cacheid` FROM `searchtmp`');
while ($r = sql_fetch_array($rs))
if (count($childwphandler->getChildWps($r['cacheid'])))
$children=" (HasChildren)";
mysql_free_result($rs);
$gpxHead = mb_ereg_replace('{wpchildren}', $children, $gpxHead);
$gpxHead = mb_ereg_replace('{time}', date($gpxTimeFormat, time()), $gpxHead);
append_output($gpxHead);
if ($usr === false)
$user_id = 0;
else
$user_id = $usr['userid'];
$rs = sql_slave("SELECT SQL_BUFFER_RESULT `searchtmp`.`cache_id` `cacheid`, `searchtmp`.`longitude` `longitude`, `searchtmp`.`latitude` `latitude`,
`cache_location`.`adm2` `state`, `caches`.`wp_oc` `waypoint`, `caches`.`date_hidden` `date_hidden`, `caches`.`name` `name`,
`caches`.`country` `country`, `countries`.`name` AS `country_name`, `caches`.`terrain` `terrain`, `caches`.`difficulty` `difficulty`, `caches`.`desc_languages` `desc_languages`,
`caches`.`size` `size`, `caches`.`type` `type`, `caches`.`status` `status`, `user`.`username` `username`, `caches`.`user_id` `userid`, `user`.`data_license`,
`cache_desc`.`desc` `desc`, `cache_desc`.`short_desc` `short_desc`, `cache_desc`.`hint` `hint`,
IFNULL(`stat_cache_logs`.`found`, 0) AS `found`
FROM `searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
INNER JOIN `countries` ON `caches`.`country`=`countries`.`short`
INNER JOIN `user` ON `searchtmp`.`user_id`=`user`.`user_id`
INNER JOIN `cache_desc` ON `caches`.`cache_id`=`cache_desc`.`cache_id`AND `caches`.`default_desclang`=`cache_desc`.`language`
LEFT JOIN `cache_location` ON `searchtmp`.`cache_id`=`cache_location`.`cache_id`
LEFT JOIN `stat_cache_logs` ON `searchtmp`.`cache_id`=`stat_cache_logs`.`cache_id` AND `stat_cache_logs`.`user_id`='&1'", $user_id);
while ($r = sql_fetch_array($rs))
{
$thisline = $gpxLine;
$lat = sprintf('%01.5f', $r['latitude']);
$thisline = mb_ereg_replace('{lat}', $lat, $thisline);
$lon = sprintf('%01.5f', $r['longitude']);
$thisline = mb_ereg_replace('{lon}', $lon, $thisline);
$time = date($gpxTimeFormat, strtotime($r['date_hidden']));
$thisline = mb_ereg_replace('{time}', $time, $thisline);
$thisline = mb_ereg_replace('{waypoint}', $r['waypoint'], $thisline);
$thisline = mb_ereg_replace('{cacheid}', $r['cacheid'], $thisline);
$thisline = mb_ereg_replace('{cachename}', xmlentities($r['name']), $thisline);
$thisline = mb_ereg_replace('{country}', $r['country_name'], $thisline);
$thisline = mb_ereg_replace('{state}', xmlentities($r['state']), $thisline);
if ($r['hint'] == '')
$thisline = mb_ereg_replace('{hints}', '', $thisline);
else
// Ocprop: <groundspeak:encoded_hints>(.*?)<\/groundspeak:encoded_hints>
$hint = html_entity_decode(strip_tags($r['hint']), ENT_COMPAT, "UTF-8");
$thisline = mb_ereg_replace('{hints}', ' <groundspeak:encoded_hints>' . xmlentities($hint) . '</groundspeak:encoded_hints>
', $thisline);
$thisline = mb_ereg_replace('{shortdesc}', xmlentities($r['short_desc']), $thisline);
$desc = str_replace('<img src="images/uploads/','<img src="' . $absolute_server_URI . 'images/uploads/', $r['desc']);
$license = getLicenseDisclaimer(
$r['userid'], $r['username'], $r['data_license'], $r['cacheid'], $locale, true, true);
if ($license != "")
$desc .= "<p><em>$license</em></p>\n";
$desc .= get_desc_npas($r['cacheid']);
$thisline = mb_ereg_replace('{desc}', xmlentities(decodeEntities($desc)), $thisline);
$thisline = mb_ereg_replace('{images}', xmlentities(getPictures($r['cacheid'])), $thisline);
if (isset($gpxType[$r['type']]))
$thisline = mb_ereg_replace('{type}', $gpxType[$r['type']], $thisline);
else
$thisline = mb_ereg_replace('{type}', $gpxType[0], $thisline);
if (isset($gpxContainer[$r['size']]))
$thisline = mb_ereg_replace('{container}', $gpxContainer[$r['size']], $thisline);
else
$thisline = mb_ereg_replace('{container}', $gpxContainer[0], $thisline);
if (isset($gpxStatus[$r['status']]))
$thisline = mb_ereg_replace('{status}', $gpxStatus[$r['status']], $thisline);
else
$thisline = mb_ereg_replace('{status}', $gpxStatus[0], $thisline);
$sDiffDecimals = '';
if ($r['difficulty'] % 2) $sDiffDecimals = '.5';
$r['difficulty'] -= $r['difficulty'] % 2;
$thisline = mb_ereg_replace('{difficulty}', ($r['difficulty']/2) . $sDiffDecimals, $thisline);
$sTerrDecimals = '';
if ($r['terrain'] % 2) $sTerrDecimals = '.5';
$r['terrain'] -= $r['terrain'] % 2;
$thisline = mb_ereg_replace('{terrain}', ($r['terrain']/2) . $sTerrDecimals, $thisline);
$thisline = mb_ereg_replace('{owner}', xmlentities($r['username']), $thisline);
$thisline = mb_ereg_replace('{userid}', xmlentities($r['userid']), $thisline);
if ($r['found'] > 0)
$thisline = mb_ereg_replace('{sym}', xmlentities($gpxSymFound), $thisline);
else
$thisline = mb_ereg_replace('{sym}', xmlentities($gpxSymNormal), $thisline);
// clear cache specific data
$logentries = '';
$cache_note = false;
$attribentries = '';
$waypoints = '';
$gkentries = '';
// fetch logs
if ($user_id != 0)
{
// insert personal note
$cacheNote = getCacheNote($user_id, $r['cacheid']);
if ($cacheNote)
{
$thislog = $gpxLog;
$thislog = mb_ereg_replace('{id}', 0, $thislog);
$thislog = mb_ereg_replace('{date}', date($gpxTimeFormat), $thislog);
$thislog = mb_ereg_replace('{userid}', $user_id, $thislog);
$thislog = mb_ereg_replace('{username}', xmlentities($login->username), $thislog);
$thislog = mb_ereg_replace('{type}', $gpxLogType[3], $thislog);
$thislog = mb_ereg_replace('{text}', xmlentities($cacheNote['note']), $thislog);
$logentries .= $thislog . "\n";
}
// current users logs
$rsLogs = sql_slave("SELECT `cache_logs`.`id`, `cache_logs`.`type`, `cache_logs`.`date`, `cache_logs`.`text`, `user`.`username`, `user`.`user_id` FROM `cache_logs`, `user` WHERE `cache_logs`.`user_id`=`user`.`user_id` AND `cache_logs`.`cache_id`=&1 AND `user`.`user_id`=&2 ORDER BY `cache_logs`.`date` DESC", $r['cacheid'], $user_id);
while ($rLog = sql_fetch_array($rsLogs))
{
$thislog = $gpxLog;
$thislog = mb_ereg_replace('{id}', $rLog['id'], $thislog);
$thislog = mb_ereg_replace('{date}', date($gpxTimeFormat, strtotime($rLog['date'])), $thislog);
$thislog = mb_ereg_replace('{userid}', xmlentities($rLog['user_id']), $thislog);
$thislog = mb_ereg_replace('{username}', xmlentities($rLog['username']), $thislog);
if (isset($gpxLogType[$rLog['type']]))
$logtype = $gpxLogType[$rLog['type']];
else
$logtype = $gpxLogType[0];
$thislog = mb_ereg_replace('{type}', $logtype, $thislog);
$thislog = mb_ereg_replace('{text}', xmlentities(decodeEntities($rLog['text'])), $thislog);
$logentries .= $thislog . "\n";
}
mysql_free_result($rsLogs);
}
// newest 20 logs (except current users)
$rsLogs = sql_slave("SELECT `cache_logs`.`id`, `cache_logs`.`type`, `cache_logs`.`date`, `cache_logs`.`text`, `user`.`username`, `user`.`user_id` FROM `cache_logs`, `user` WHERE `cache_logs`.`user_id`=`user`.`user_id` AND `cache_logs`.`cache_id`=&1 AND `user`.`user_id`!=&2 ORDER BY `cache_logs`.`date` DESC LIMIT 20", $r['cacheid'], $user_id);
while ($rLog = sql_fetch_array($rsLogs))
{
$thislog = $gpxLog;
$thislog = mb_ereg_replace('{id}', $rLog['id'], $thislog);
$thislog = mb_ereg_replace('{date}', date($gpxTimeFormat, strtotime($rLog['date'])), $thislog);
$thislog = mb_ereg_replace('{userid}', xmlentities($rLog['user_id']), $thislog);
$thislog = mb_ereg_replace('{username}', xmlentities($rLog['username']), $thislog);
if (isset($gpxLogType[$rLog['type']]))
$logtype = $gpxLogType[$rLog['type']];
else
$logtype = $gpxLogType[0];
$thislog = mb_ereg_replace('{type}', $logtype, $thislog);
$thislog = mb_ereg_replace('{text}', xmlentities(decodeEntities($rLog['text'])), $thislog);
$logentries .= $thislog . "\n";
}
mysql_free_result($rsLogs);
$thisline = mb_ereg_replace('{logs}', $logentries, $thisline);
// attributes
$rsAttributes = sql_slave("SELECT `gc_id`, `gc_inc`, `gc_name`
FROM `caches_attributes`
INNER JOIN `cache_attrib` ON `cache_attrib`.`id`=`caches_attributes`.`attrib_id`
WHERE `caches_attributes`.`cache_id`=&1", $r['cacheid']);
$gc_ids = array();
while ($rAttrib = sql_fetch_array($rsAttributes))
{
// Multiple OC attributes can be mapped to one GC attribute, either with
// the same "inc"s or with different. Both may disturb applications, so we
// output each GC ID only once.
if (!isset($gc_ids[$rAttrib['gc_id']]))
{
$thisattribute = mb_ereg_replace('{attrib_id}', $rAttrib['gc_id'], $gpxAttributes);
$thisattribute = mb_ereg_replace('{attrib_inc}', $rAttrib['gc_inc'], $thisattribute);
$thisattribute = mb_ereg_replace('{attrib_name}', xmlentities($rAttrib['gc_name']), $thisattribute);
$attribentries .= $thisattribute . "\n";
$gc_ids[$rAttrib['gc_id']] = true;
}
}
mysql_free_result($rsAttributes);
$thisline = mb_ereg_replace('{attributes}', $attribentries, $thisline);
// geokrety
$rsGeokrety = sql_slave("SELECT `gk_item`.`id`, `gk_item`.`name`, `caches`.`wp_oc` FROM `gk_item` INNER JOIN `gk_item_waypoint` ON `gk_item`.`id`=`gk_item_waypoint`.`id` INNER JOIN `caches` ON `gk_item_waypoint`.`wp`=`caches`.`wp_oc` WHERE `caches`.`cache_id`=&1", $r['cacheid']);
while ($rGK = sql_fetch_array($rsGeokrety))
{
$thiskrety = $gpxGeokrety;
$thiskrety = mb_ereg_replace('{gkid}', $rGK['id'], $thiskrety);
$thiskrety = mb_ereg_replace('{gkref}', sprintf("GK%04X",$rGK['id']), $thiskrety);
$thiskrety = mb_ereg_replace('{gkname}', xmlentities($rGK['name']), $thiskrety);
$gkentries .= $thiskrety . "\n";
}
mysql_free_result($rsGeokrety);
$thisline = mb_ereg_replace('{geokrety}', $gkentries, $thisline);
// additional waypoints, including personal cache note
$childWaypoints = $childwphandler->getChildWps($r['cacheid']);
$n = 1;
$digits = "%0" . strlen(count($childWaypoints)) . "d";
foreach ($childWaypoints as $childWaypoint)
{
$thiswp = $gpxWaypoints;
$thiswp = mb_ereg_replace('{wp_lat}', sprintf('%01.5f', $childWaypoint['latitude']), $thiswp);
$thiswp = mb_ereg_replace('{wp_lon}', sprintf('%01.5f', $childWaypoint['longitude']), $thiswp);
$thiswp = mb_ereg_replace('{time}', $time, $thiswp);
$thiswp = mb_ereg_replace('{name}', $r['waypoint'].'-'.sprintf($digits,$n) , $thiswp);
$thiswp = mb_ereg_replace('{cachename}', xmlentities($r['name']), $thiswp);
$thiswp = mb_ereg_replace('{comment}',xmlentities($childWaypoint['description']), $thiswp);
$thiswp = mb_ereg_replace('{desc}', xmlentities($childWaypoint['name']), $thiswp);
switch ($childWaypoint['type'])
{
case 1: $wp_typename = "Parking Area"; break; // well-known garmin symbols
case 2: $wp_typename = "Flag, Green"; break; // stage / ref point
case 3: $wp_typename = "Flag, Blue"; break; // path
case 4: $wp_typename = "Circle with X"; break; // final
case 5: $wp_typename = "Diamond, Green"; break; // point of interest
default: $wp_typename = "Flag, Blue"; break; // for the case new types are forgotten here ..
}
$thiswp = mb_ereg_replace('{type}', $wp_typename, $thiswp);
$thiswp = mb_ereg_replace('{parent}', $r['waypoint'], $thiswp);
$thiswp = mb_ereg_replace('{cacheid}', $r['cacheid'], $thiswp);
$waypoints .= $thiswp;
++$n;
}
if ($cacheNote && !empty($cacheNote['latitude']) && !empty($cacheNote['longitude']))
{
$thiswp = $gpxWaypoints;
$thiswp = mb_ereg_replace('{wp_lat}', sprintf('%01.5f', $cacheNote['latitude']), $thiswp);
$thiswp = mb_ereg_replace('{wp_lon}', sprintf('%01.5f', $cacheNote['longitude']), $thiswp);
$thiswp = mb_ereg_replace('{time}', $time, $thiswp);
$thiswp = mb_ereg_replace('{name}', $r['waypoint'].'NOTE', $thiswp);
$thiswp = mb_ereg_replace('{cachename}', xmlentities($r['name']), $thiswp);
$thiswp = mb_ereg_replace('{comment}', xmlentities($cacheNote['note']), $thiswp);
$thiswp = mb_ereg_replace('{desc}', $cache_note_text, $thiswp);
$thiswp = mb_ereg_replace('{type}', "Reference Point", $thiswp);
$thiswp = mb_ereg_replace('{parent}', $r['waypoint'], $thiswp);
$thiswp = mb_ereg_replace('{cacheid}', $r['cacheid'], $thiswp);
$waypoints .= $thiswp;
}
$thisline = mb_ereg_replace('{cache_waypoints}', $waypoints, $thisline);
append_output($thisline);
}
mysql_free_result($rs);
append_output($gpxFoot);
}
function decodeEntities($str)
{
$str = changePlaceholder($str);
$str = html_entity_decode($str, ENT_COMPAT, "UTF-8");
$str = changePlaceholder($str, true);
return $str;
}
function changePlaceholder($str, $inverse = false)
{
static $translate = array(
'&lt;' => '{oc-placeholder-lt}',
'&gt;' => '{oc-placeholder-gt}',
'&amp;' => '{oc-placeholder-amp}'
);
foreach ($translate as $entity => $placeholder)
{
if (!$inverse)
{
$str = mb_ereg_replace($entity, $placeholder, $str);
}
else
{
$str = mb_ereg_replace($placeholder, $entity, $str);
}
}
return $str;
}
function xmlentities($str)
{
$str = htmlspecialchars($str, ENT_NOQUOTES, "UTF-8");
return filterevilchars($str);
}
function filterevilchars($str)
{
return mb_ereg_replace('[\\x00-\\x09|\\x0B-\\x0C|\\x0E-\\x1F]', '', $str);
}
function getCacheNote($userid, $cacheid)
{
$cacheNoteHandler = new CacheNote_Handler();
$cacheNote = $cacheNoteHandler->getCacheNote($userid, $cacheid);
if (isset($cacheNote['note']) || isset($cacheNote['latitude']) || isset($cacheNote['longitude']))
return $cacheNote;
return null;
}
// based on oc.pl code, but embedded thumbs instead of full pictures
// (also to hide spoilers first)
function getPictures($cacheid)
{
global $translate, $absolute_server_URI;
$retval = "";
$rs = sql_slave("SELECT uuid, title, url, spoiler FROM pictures
WHERE object_id='&1' AND object_type=2 AND display=1
ORDER BY date_created", $cacheid);
while ($r = sql_fetch_array($rs))
{
$retval .= '<div style="float:left; padding:8px"><a href="' . $r['url'] . '" target="_blank">' .
'<img src="' . $absolute_server_URI . 'thumbs.php?uuid=' . $r["uuid"]. '" >' .
'</a><br />' . $r['title'];
if ($r['spoiler'])
$retval .= ' (' . $translate->t('click on spoiler to display','',basename(__FILE__), __LINE__) . ')';
$retval .= "</div>";
}
mysql_free_result($rs);
return $retval;
}
?>

View File

@@ -0,0 +1,262 @@
<?php
/***************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
(X)HTML search output
Used by Ocprop
****************************************************************************/
require_once($stylepath . '/search1/icons.inc.php');
require_once('lib/search1/cache_icon.inc.php');
$search_output_file_download = false;
$sAddFields .= ', `caches`.`name`, `caches`.`difficulty`, `caches`.`terrain`,
`caches`.`desc_languages`, `caches`.`date_created`,
`user`.`username`,
`cache_type`.`icon_large`,
`cache_type`.`name` `cacheTypeName`,
IFNULL(`stat_caches`.`found`, 0) `founds`,
IFNULL(`stat_caches`.`toprating`, 0) `topratings`,
IF(ISNULL(`tbloconly`.`cache_id`), 0, 1) AS `oconly`';
$sAddJoin .= 'INNER JOIN `user` ON `caches`.`user_id`=`user`.`user_id`
INNER JOIN `cache_type` ON `cache_type`.`id`=`caches`.`type`
LEFT JOIN `caches_attributes` AS `tbloconly`
ON `caches`.`cache_id`=`tbloconly`.`cache_id` AND `tbloconly`.`attrib_id`=6';
function search_output()
{
global $sqldebug, $stylepath, $tplname, $logdateformat, $usr, $bgcolor1, $bgcolor2;
global $string_by, $caches_olddays, $caches_newstring, $caches_oconlystring, $showonmap;
global $options, $lat_rad, $lon_rad, $distance_unit, $startat, $caches_per_page, $sql;
$tplname = 'search1/search.result.caches';
$cache_line = read_file($stylepath . '/search1/search.result.caches.row.tpl.php');
$cache_line = mb_ereg_replace('{string_by}', $string_by, $cache_line);
$caches_output = '';
// output range
$startat = floor($startat / $caches_per_page) * $caches_per_page;
$sql .= ' LIMIT ' . $startat . ', ' . $caches_per_page;
// run SQL query
$nRowIndex = 0;
$rs_caches = sql_slave("SELECT SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS " . $sql, $sqldebug);
$resultcount = sql_value_slave('SELECT FOUND_ROWS()', 0);
tpl_set_var('results_count', $resultcount);
while ($caches_record = sql_fetch_array($rs_caches))
{
$tmpline = $cache_line;
list($iconname, $inactive) = getCacheIcon($usr['userid'], $caches_record['cache_id'], $caches_record['status'],
$caches_record['user_id'], $caches_record['icon_large']);
$tmpline = mb_ereg_replace('{icon_large}', $iconname, $tmpline);
$tmpline = mb_ereg_replace('{cachetype}', htmlspecialchars(t($caches_record['cacheTypeName']), ENT_COMPAT, 'UTF-8'), $tmpline);
// short_desc ermitteln TODO: nicht die erste sondern die richtige wählen
$rsdesc = sql_slave("SELECT `short_desc` FROM `cache_desc` WHERE `cache_id`='&1' LIMIT 1", $caches_record['cache_id']);
$desc_record = sql_fetch_array($rsdesc);
mysql_free_result($rsdesc);
$tmpline = mb_ereg_replace('{short_desc}', htmlspecialchars($desc_record['short_desc'], ENT_COMPAT, 'UTF-8'), $tmpline);
$dDiff = abs(dateDiff('d', $caches_record['date_created'], date('Y-m-d')));
if ($dDiff < $caches_olddays)
$tmpline = mb_ereg_replace('{new}', $caches_newstring, $tmpline);
else
$tmpline = mb_ereg_replace('{new}', '', $tmpline);
$tmpline = mb_ereg_replace('{diffpic}', icon_difficulty("diff", $caches_record['difficulty']), $tmpline);
$tmpline = mb_ereg_replace('{terrpic}', icon_difficulty("terr", $caches_record['terrain']), $tmpline);
$tmpline = mb_ereg_replace('{ratpic}', icon_rating($caches_record['founds'], $caches_record['topratings']), $tmpline);
if ($caches_record['oconly'] == 1)
$tmpline = mb_ereg_replace('{oconly}', $caches_oconlystring, $tmpline);
else
$tmpline = mb_ereg_replace('{oconly}', '', $tmpline);
// get last logs
if ($options['sort'] != 'bymylastlog' || $usr === false)
$ownlogs = "";
else
$ownlogs = " AND `cache_logs`.`user_id`='" . sql_escape($usr['userid']) . "'";
$sql = 'SELECT `cache_logs`.`id` `id`, `cache_logs`.`type` `type`, `cache_logs`.`date` `date`, `log_types`.`icon_small` `icon_small`
FROM `cache_logs`, `log_types`
WHERE `cache_logs`.`cache_id`=\'' . sql_escape($caches_record['cache_id']) . '\'
AND `log_types`.`id`=`cache_logs`.`type`' . $ownlogs . '
ORDER BY `cache_logs`.`date` DESC LIMIT 6';
$result = sql_slave($sql);
if ($row = sql_fetch_array($result))
{
$loglink = '<a href=\'viewlogs.php?cacheid='.htmlspecialchars($caches_record['cache_id'], ENT_COMPAT, 'UTF-8').'#log'.htmlspecialchars($row['id'], ENT_COMPAT, 'UTF-8').'\'>';
$tmpline = mb_ereg_replace('{logimage1}',
$loglink . icon_log_type($row['icon_small'], ""). '</a>{gray_s}' . $loglink. date($logdateformat, strtotime($row['date'])) . '{gray_e}</a>', $tmpline);
$tmpline = mb_ereg_replace('{logdate1}', "", $tmpline);
}
else
{
$tmpline = mb_ereg_replace('{logimage1}', "<img src='images/trans.gif' border='0' width='16' height='16' />", $tmpline);
$tmpline = mb_ereg_replace('{logdate1}', "--.--.----", $tmpline);
}
$lastlogs = "";
while ($row = sql_fetch_array($result))
{
$lastlogs .= '<a href=\'viewlogs.php?cacheid=' . urlencode($caches_record['cache_id']) . '#log' . htmlspecialchars($row['id'], ENT_COMPAT, 'UTF-8') . '\'>' . icon_log_type($row['icon_small'], '') . '</a>&nbsp;';
}
$tmpline = mb_ereg_replace('{lastlogs}', $lastlogs, $tmpline);
// und jetzt noch die Richtung ...
if ($caches_record['distance'] > 0)
{
$tmpline = mb_ereg_replace('{direction}', Bearing2Text(calcBearing($lat_rad / 3.14159 * 180, $lon_rad / 3.14159 * 180, $caches_record['latitude'], $caches_record['longitude']), 1), $tmpline);
}
else
$tmpline = mb_ereg_replace('{direction}', '', $tmpline);
$desclangs = '';
$aLangs = mb_split(',', $caches_record['desc_languages']);
foreach ($aLangs AS $thislang)
{
$desclangs .= '<a href="viewcache.php?cacheid=' . urlencode($caches_record['cache_id']) . '&desclang=' . urlencode($thislang) . '" style="text-decoration:none;"><b><font color="blue">' . htmlspecialchars($thislang, ENT_COMPAT, 'UTF-8') . '</font></b></a> ';
}
// strikeout inavtive caches
// see also res_cachestatus_span.tpl
$status_style = ""; // (colored) strike-through for inactive caches
$line_style = ""; // color of the linked cache name
$name_style = ""; // color of "by <username>"
switch ($caches_record['status'])
{
case 2: // disabled
$status_style = "text-decoration: line-through;";
break;
case 3: // archived
case 6: // locked
$status_style = "text-decoration: line-through; color: #c00000;";
// $line_style = "color:grey";
break;
case 7: // locked, invisible
$status_style = "text-decoration: line-through; color: #e00000";
$name_style = "color: #e00000";
// $line_style = "color:grey";
break;
case 5: // not published yet
$name_style = "color: #e00000";
break;
default: $status_style = $line_style = "";
}
$tmpline = mb_ereg_replace('{line_style}', $line_style, $tmpline);
$tmpline = mb_ereg_replace('{status_style}', $status_style, $tmpline);
$tmpline = mb_ereg_replace('{name_style}', $name_style, $tmpline);
$tmpline = mb_ereg_replace('{desclangs}', $desclangs, $tmpline);
$tmpline = mb_ereg_replace('{cachename}', htmlspecialchars($caches_record['name'], ENT_COMPAT, 'UTF-8'), $tmpline);
$tmpline = mb_ereg_replace('{urlencode_cacheid}', htmlspecialchars(urlencode($caches_record['cache_id']), ENT_COMPAT, 'UTF-8'), $tmpline);
$tmpline = mb_ereg_replace('{urlencode_userid}', htmlspecialchars(urlencode($caches_record['user_id']), ENT_COMPAT, 'UTF-8'), $tmpline);
$tmpline = mb_ereg_replace('{username}', htmlspecialchars($caches_record['username'], ENT_COMPAT, 'UTF-8'), $tmpline);
$tmpline = mb_ereg_replace('{position}', $nRowIndex + $startat + 1, $tmpline);
if ($caches_record['distance'] == NULL)
$tmpline = mb_ereg_replace('{distance}', '', $tmpline);
else
$tmpline = mb_ereg_replace('{distance}', htmlspecialchars(sprintf("%01.1f", $caches_record['distance']), ENT_COMPAT, 'UTF-8'), $tmpline);
// backgroundcolor of line
if (($nRowIndex % 2) == 1) $bgcolor = $bgcolor2;
else $bgcolor = $bgcolor1;
if ($inactive)
{
//$bgcolor = $bgcolor_inactive;
$tmpline = mb_ereg_replace('{gray_s}', "<span class='text_gray'>", $tmpline);
$tmpline = mb_ereg_replace('{gray_e}', "</span>", $tmpline);
}
else
{
$tmpline = mb_ereg_replace('{gray_s}', "", $tmpline);
$tmpline = mb_ereg_replace('{gray_e}', "", $tmpline);
}
$tmpline = mb_ereg_replace('{bgcolor}', $bgcolor, $tmpline);
$nRowIndex++;
$caches_output .= $tmpline;
}
mysql_free_result($rs_caches);
tpl_set_var('results', $caches_output);
// more than one page?
if ($resultcount <= $caches_per_page)
$pages = '';
else
{
if ($startat > 0) // Ocprop: queryid=([0-9]+)
$pages = '<a href="search1.php?queryid=' . $options['queryid'] . '&startat=0"><img src="resource2/ocstyle/images/navigation/16x16-browse-first.png" width="16" height="16"></a> <a href="search1.php?queryid=' . $options['queryid'] . '&startat=' . ($startat - $caches_per_page) . '"><img src="resource2/ocstyle/images/navigation/16x16-browse-prev.png" width="16" height="16"></a></a> ';
else
$pages = ' <img src="resource2/ocstyle/images/navigation/16x16-browse-first-inactive.png" width="16" height="16"></a> <img src="resource2/ocstyle/images/navigation/16x16-browse-prev-inactive.png" width="16" height="16"></a> ';
$frompage = ($startat / $caches_per_page) - 3;
if ($frompage < 1) $frompage = 1;
$maxpage = ceil($resultcount / $caches_per_page);
$topage = $frompage + 8;
if ($topage > $maxpage) $topage = $maxpage;
for ($i = $frompage; $i <= $topage; $i++)
{
if (($startat / $caches_per_page + 1) == $i)
$pages .= ' <b>' . $i . '</b>';
else
$pages .= ' <a href="search1.php?queryid=' . $options['queryid'] . '&startat=' . (($i - 1) * $caches_per_page) . '">' . $i . '</a>';
}
if ($startat / $caches_per_page < ($maxpage - 1))
$pages .= ' <a href="search1.php?queryid=' . $options['queryid'] . '&startat=' . ($startat + $caches_per_page) . '"><img src="resource2/ocstyle/images/navigation/16x16-browse-next.png" width="16" height="16"></a> <a href="search1.php?queryid=' . $options['queryid'] . '&startat=' . (($maxpage - 1) * $caches_per_page) . '"><img src="resource2/ocstyle/images/navigation/16x16-browse-last.png" width="16" height="16"></a> ';
else
$pages .= ' <img src="resource2/ocstyle/images/navigation/16x16-browse-next-inactive.png" width="16" height="16"> <img src="resource2/ocstyle/images/navigation/16x16-browse-last-inactive.png" width="16" height="16"></a>';
}
//'<a href="search1.php?queryid=' . $options['queryid'] . '&startat=20">20</a> 40 60 80 100';
//$caches_per_page
//count($caches) - 1
tpl_set_var('pages', $pages);
tpl_set_var('showonmap', $showonmap);
// downloads
tpl_set_var('queryid', $options['queryid']);
tpl_set_var('startat', $startat);
tpl_set_var('startatp1', min($resultcount,$startat + 1));
if (($resultcount - $startat) < 500)
tpl_set_var('endat', $startat + $resultcount - $startat);
else
tpl_set_var('endat', $startat + 500);
// kompatibilität!
if ($distance_unit == 'sm')
tpl_set_var('distanceunit', 'mi');
else if ($distance_unit == 'nm')
tpl_set_var('distanceunit', 'sm');
else
tpl_set_var('distanceunit', $distance_unit);
tpl_set_var('displaylastlogs', $options['sort'] == 'bymylastlog' ? 'none' : 'inline');
tpl_set_var('displayownlogs', $options['sort'] == 'bymylastlog' ? 'inline' : 'none');
if ($sqldebug == true)
sqldbg_end();
else
tpl_BuildTemplate();
}
?>

View File

@@ -0,0 +1,153 @@
<?php
/****************************************************************************
./lib/search.inc.php
--------------------
begin : Sun September 25 2005
For license information see doc/license.txt
****************************************************************************/
/****************************************************************************
Unicode Reminder メモ
functions for the search-engine
****************************************************************************/
require_once('lib2/data-license.inc.php');
/* begin conversion rules */
$search_simplerules[] = array('qu', 'k');
$search_simplerules[] = array('ts', 'z');
$search_simplerules[] = array('tz', 'z');
$search_simplerules[] = array('alp', 'alb');
$search_simplerules[] = array('y', 'i');
$search_simplerules[] = array('ai', 'ei');
$search_simplerules[] = array('ou', 'u');
$search_simplerules[] = array('th', 't');
$search_simplerules[] = array('ph', 'f');
$search_simplerules[] = array('oh', 'o');
$search_simplerules[] = array('ah', 'a');
$search_simplerules[] = array('eh', 'e');
$search_simplerules[] = array('aux', 'o');
$search_simplerules[] = array('eau', 'o');
$search_simplerules[] = array('eux', 'oe');
$search_simplerules[] = array('^ch', 'sch');
$search_simplerules[] = array('ck', 'k');
$search_simplerules[] = array('ie', 'i');
$search_simplerules[] = array('ih', 'i');
$search_simplerules[] = array('ent', 'end');
$search_simplerules[] = array('uh', 'u');
$search_simplerules[] = array('sh', 'sch');
$search_simplerules[] = array('ver', 'wer');
$search_simplerules[] = array('dt', 't');
$search_simplerules[] = array('hard', 'hart');
$search_simplerules[] = array('egg', 'ek');
$search_simplerules[] = array('eg', 'ek');
$search_simplerules[] = array('cr', 'kr');
$search_simplerules[] = array('ca', 'ka');
$search_simplerules[] = array('ce', 'ze');
$search_simplerules[] = array('x', 'ks');
$search_simplerules[] = array('ve', 'we');
$search_simplerules[] = array('va', 'wa');
/* end conversion rules */
function search_text2simple($str)
{
global $search_simplerules;
$str = search_text2sort($str);
// regeln anwenden
foreach ($search_simplerules AS $rule)
{
$str = mb_ereg_replace($rule[0], $rule[1], $str);
}
// doppelte chars ersetzen
for ($c = ord('a'); $c <= ord('z'); $c++)
$str = mb_ereg_replace(chr($c) . chr($c), chr($c), $str);
return $str;
}
function search_text2sort($str)
{
$str = mb_strtolower($str);
// alles was nicht a-z ist ersetzen
$str = mb_ereg_replace('0', '', $str);
$str = mb_ereg_replace('1', '', $str);
$str = mb_ereg_replace('2', '', $str);
$str = mb_ereg_replace('3', '', $str);
$str = mb_ereg_replace('4', '', $str);
$str = mb_ereg_replace('5', '', $str);
$str = mb_ereg_replace('6', '', $str);
$str = mb_ereg_replace('7', '', $str);
$str = mb_ereg_replace('8', '', $str);
$str = mb_ereg_replace('9', '', $str);
// deutsches
$str = mb_ereg_replace('ä', 'ae', $str);
$str = mb_ereg_replace('ö', 'oe', $str);
$str = mb_ereg_replace('ü', 'ue', $str);
$str = mb_ereg_replace('Ä', 'ae', $str);
$str = mb_ereg_replace('Ö', 'oe', $str);
$str = mb_ereg_replace('Ü', 'ue', $str);
$str = mb_ereg_replace('ß', 'ss', $str);
// akzente usw.
$str = mb_ereg_replace('à', 'a', $str);
$str = mb_ereg_replace('á', 'a', $str);
$str = mb_ereg_replace('â', 'a', $str);
$str = mb_ereg_replace('è', 'e', $str);
$str = mb_ereg_replace('é', 'e', $str);
$str = mb_ereg_replace('ë', 'e', $str);
$str = mb_ereg_replace('É', 'e', $str);
$str = mb_ereg_replace('ô', 'o', $str);
$str = mb_ereg_replace('ó', 'o', $str);
$str = mb_ereg_replace('ò', 'o', $str);
$str = mb_ereg_replace('ê', 'e', $str);
$str = mb_ereg_replace('ě', 'e', $str);
$str = mb_ereg_replace('û', 'u', $str);
$str = mb_ereg_replace('ç', 'c', $str);
$str = mb_ereg_replace('c', 'c', $str);
$str = mb_ereg_replace('ć', 'c', $str);
$str = mb_ereg_replace('î', 'i', $str);
$str = mb_ereg_replace('ï', 'i', $str);
$str = mb_ereg_replace('ì', 'i', $str);
$str = mb_ereg_replace('í', 'i', $str);
$str = mb_ereg_replace('ł', 'l', $str);
$str = mb_ereg_replace('š', 's', $str);
$str = mb_ereg_replace('Š', 's', $str);
$str = mb_ereg_replace('u', 'u', $str);
$str = mb_ereg_replace('ý', 'y', $str);
$str = mb_ereg_replace('ž', 'z', $str);
$str = mb_ereg_replace('Ž', 'Z', $str);
$str = mb_ereg_replace('Æ', 'ae', $str);
$str = mb_ereg_replace('æ', 'ae', $str);
$str = mb_ereg_replace('œ', 'oe', $str);
// interpunktion
$str = mb_ereg_replace('\\?', '', $str);
$str = mb_ereg_replace('\\)', '', $str);
$str = mb_ereg_replace('\\(', '', $str);
$str = mb_ereg_replace('\\.', ' ', $str);
$str = mb_ereg_replace('´', ' ', $str);
$str = mb_ereg_replace('`', ' ', $str);
$str = mb_ereg_replace('\'', ' ', $str);
// sonstiges
$str = str_replace('', '', $str);
// der rest
$str = mb_ereg_replace('[^a-z]', '', $str);
return $str;
}
?>

View File

@@ -0,0 +1,213 @@
<?php
/***************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
kml search output
****************************************************************************/
$search_output_file_download = true;
$content_type_plain = 'vnd.google-earth.kml';
$content_type_zipped = 'vnd.google-earth.kmz';
function search_output()
{
global $sqldebug, $stylepath;
global $state_temporarily_na, $state_archived, $state_locked;
$kmlLine =
'
<Placemark>
<description><![CDATA[<a href="http://www.opencaching.de/viewcache.php?cacheid={cacheid}">Beschreibung ansehen</a><br>Von {username}<br>&nbsp;<br><table cellspacing="0" cellpadding="0" border="0"><tr><td>{typeimgurl} </td><td>Art: {type}<br>Größe: {size}</td></tr><tr><td colspan="2">Schwierigkeit: {difficulty} von 5.0<br>Gelände: {terrain} von 5.0</td></tr></table>]]></description>
<name>{name}{archivedflag}</name>
<LookAt>
<longitude>{lon}</longitude>
<latitude>{lat}</latitude>
<range>5000</range>
<tilt>0</tilt>
<heading>3</heading>
</LookAt>
<styleUrl>#{icon}</styleUrl>
<Point>
<coordinates>{lon},{lat},0</coordinates>
</Point>
<Snippet>D: {difficulty}/T: {terrain} {size} von {username}</Snippet>
</Placemark>
';
$kmlFoot = '</Folder></Document></kml>';
$kmlTimeFormat = 'Y-m-d\TH:i:s\Z';
$kmlDetailHead = read_file($stylepath . '/search.result.caches.kml.head.tpl.php');
$rsMinMax = sql_slave('
SELECT
MIN(`longitude`) `minlon`,
MAX(`longitude`) `maxlon`,
MIN(`latitude`) `minlat`,
MAX(`latitude`) `maxlat`
FROM
`searchtmp`', $sqldebug);
$rMinMax = sql_fetch_array($rsMinMax);
mysql_free_result($rsMinMax);
$kmlDetailHead = mb_ereg_replace('{minlat}', $rMinMax['minlat'], $kmlDetailHead);
$kmlDetailHead = mb_ereg_replace('{minlon}', $rMinMax['minlon'], $kmlDetailHead);
$kmlDetailHead = mb_ereg_replace('{maxlat}', $rMinMax['maxlat'], $kmlDetailHead);
$kmlDetailHead = mb_ereg_replace('{maxlon}', $rMinMax['maxlon'], $kmlDetailHead);
$kmlDetailHead = mb_ereg_replace('{time}', date($kmlTimeFormat), $kmlDetailHead);
append_output($kmlDetailHead);
/*
wp
name
username
type
size
lon
lat
icon
*/
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
`searchtmp`.`type`,
`caches`.`date_hidden`,
`caches`.`name`,
`caches`.`status`,
`cache_type`.`de` `typedesc`,
`cache_size`.`de` `sizedesc`,
`caches`.`terrain`,
`caches`.`difficulty`,
`user`.`username`
FROM
`searchtmp`,
`caches`,
`cache_type`,
`cache_size`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`type`=`cache_type`.`id` AND
`searchtmp`.`size`=`cache_size`.`id` AND
`searchtmp`.`user_id`=`user`.`user_id`',
$sqldebug);
while ($r = sql_fetch_array($rs))
{
$thisline = $kmlLine;
// icon suchen
switch ($r['type'])
{
case 2:
$icon = 'tradi';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/traditional.gif" alt="Normaler Cache" title="Normaler Cache" />';
break;
case 3:
$icon = 'multi';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/multi.gif" alt="Multicache" title="Multicache" />';
break;
case 4:
$icon = 'virtual';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/virtual.gif" alt="virtueller Cache" title="virtueller Cache" />';
break;
case 5:
$icon = 'webcam';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/webcam.gif" alt="Webcam Cache" title="Webcam Cache" />';
break;
case 6:
$icon = 'event';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/event.gif" alt="Event Cache" title="Event Cache" />';
break;
case 7:
$icon = 'mystery';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/mystery.gif" alt="Rätselcache" title="Event Cache" />';
break;
case 8:
$icon = 'mathe';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/mathe.gif" alt="Mathe-/Physik-Cache" title="Event Cache" />';
break;
case 9:
$icon = 'moving';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/moving.gif" alt="Moving Cache" title="Event Cache" />';
break;
case 10:
$icon = 'drivein';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/drivein.gif" alt="Drive-In Cache" title="Event Cache" />';
break;
default:
$icon = 'other';
$typeimgurl = '<img src="http://www.opencaching.de/resource2/ocstyle/images/cacheicon/unknown.gif" alt="unbekannter Cachetyp" title="unbekannter Cachetyp" />';
break;
}
$thisline = mb_ereg_replace('{icon}', $icon, $thisline);
$thisline = mb_ereg_replace('{typeimgurl}', $typeimgurl, $thisline);
$lat = sprintf('%01.5f', $r['latitude']);
$thisline = mb_ereg_replace('{lat}', $lat, $thisline);
$lon = sprintf('%01.5f', $r['longitude']);
$thisline = mb_ereg_replace('{lon}', $lon, $thisline);
$time = date($kmlTimeFormat, strtotime($r['date_hidden']));
$thisline = mb_ereg_replace('{time}', $time, $thisline);
$thisline = mb_ereg_replace('{name}', xmlentities($r['name']), $thisline);
if (($r['status'] == 2) || ($r['status'] == 3) || ($r['status'] == 6))
{
if ($r['status'] == 2)
$thisline = mb_ereg_replace('{archivedflag}', ' ('.$state_temporarily_na.')', $thisline);
elseif ($r['status'] == 3)
$thisline = mb_ereg_replace('{archivedflag}', ' ('.$state_archived.')', $thisline);
else
$thisline = mb_ereg_replace('{archivedflag}', ' ('.$state_locked.')', $thisline);
}
else
$thisline = mb_ereg_replace('{archivedflag}', '', $thisline);
$thisline = mb_ereg_replace('{type}', xmlentities($r['typedesc']), $thisline);
$thisline = mb_ereg_replace('{size}', xmlentities($r['sizedesc']), $thisline);
$difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
$thisline = mb_ereg_replace('{difficulty}', $difficulty, $thisline);
$terrain = sprintf('%01.1f', $r['terrain'] / 2);
$thisline = mb_ereg_replace('{terrain}', $terrain, $thisline);
$time = date($kmlTimeFormat, strtotime($r['date_hidden']));
$thisline = mb_ereg_replace('{time}', $time, $thisline);
$thisline = mb_ereg_replace('{username}', xmlentities($r['username']), $thisline);
$thisline = mb_ereg_replace('{cacheid}', xmlentities($r['cacheid']), $thisline);
append_output($thisline);
}
mysql_free_result($rs);
append_output($kmlFoot);
}
function xmlentities($str)
{
$from[0] = '&'; $to[0] = '&amp;';
$from[1] = '<'; $to[1] = '&lt;';
$from[2] = '>'; $to[2] = '&gt;';
$from[3] = '"'; $to[3] = '&quot;';
$from[4] = '\''; $to[4] = '&apos;';
for ($i = 0; $i <= 4; $i++)
$str = mb_ereg_replace($from[$i], $to[$i], $str);
return $str;
}
?>

View File

@@ -0,0 +1,111 @@
<?php
/***************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
loc search output
****************************************************************************/
$search_output_file_download = true;
$content_type_plain = 'application/loc';
function search_output()
{
global $state_temporarily_na, $state_archived, $state_locked;
$locHead = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><loc version="1.0" src="opencaching.de">' . "\n";
$locLine =
'
<waypoint>
<name id="{waypoint}"><![CDATA[{archivedflag}{name} by {username}]]></name>
<coord lat="{lat}" lon="{lon}"/>
<type>Geocache</type>
<link text="Beschreibung">http://www.opencaching.de/viewcache.php?cacheid={cacheid}</link>
</waypoint>
';
$locFoot = '</loc>';
append_output($locHead);
/*
{waypoint}
status -> {archivedflag}
{name}
{username}
{lon}
{lat}
{cacheid}
*/
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
`caches`.`name`,
`caches`.`status`,
`caches`.`wp_oc` `waypoint`,
`user`.`username` `username`
FROM
`searchtmp`,
`caches`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`user_id`=`user`.`user_id`');
while ($r = sql_fetch_array($rs))
{
$thisline = $locLine;
$lat = sprintf('%01.5f', $r['latitude']);
$thisline = mb_ereg_replace('{lat}', $lat, $thisline);
$lon = sprintf('%01.5f', $r['longitude']);
$thisline = mb_ereg_replace('{lon}', $lon, $thisline);
$thisline = mb_ereg_replace('{waypoint}', $r['waypoint'], $thisline);
$thisline = mb_ereg_replace('{name}', xmlentities($r['name']), $thisline);
if (($r['status'] == 2) || ($r['status'] == 3) || ($r['status'] == 6))
{
if ($r['status'] == 2)
$thisline = mb_ereg_replace('{archivedflag}', $state_temporarily_na.'!, ', $thisline);
elseif ($r['status'] == 3)
$thisline = mb_ereg_replace('{archivedflag}', $state_archived.'!, ', $thisline);
else
$thisline = mb_ereg_replace('{archivedflag}', $state_locked.'!, ', $thisline);
}
else
$thisline = mb_ereg_replace('{archivedflag}', '', $thisline);
$thisline = mb_ereg_replace('{username}', xmlentities($r['username']), $thisline);
$thisline = mb_ereg_replace('{cacheid}', $r['cacheid'], $thisline);
append_output($thisline);
}
mysql_free_result($rs);
append_output($locFoot);
}
function xmlentities($str)
{
$from[0] = '&'; $to[0] = '&amp;';
$from[1] = '<'; $to[1] = '&lt;';
$from[2] = '>'; $to[2] = '&gt;';
$from[3] = '"'; $to[3] = '&quot;';
$from[4] = '\''; $to[4] = '&apos;';
for ($i = 0; $i <= 4; $i++)
$str = mb_ereg_replace($from[$i], $to[$i], $str);
return $str;
}
?>

View File

@@ -0,0 +1,72 @@
<?php
/***************************************************************************
* For license information see doc/license.txt
*
* Unicode Reminder メモ
*
* Execute search request for map.php
* (use caching of the same quries)
* TODO:cleanup
***************************************************************************/
global $dblink, $dbslaveid;
$sqlchecksum = sprintf('%u', crc32($cachesFilter."\n".$sqlFilter));
/* config */
$opt['map']['maxcacheage'] = 3600;
// check if query was already executed within the cache period
$rsMapCache = sql("SELECT `result_id` FROM `map2_result` WHERE `sqlchecksum`='&1' AND DATE_ADD(`date_created`, INTERVAL '&2' SECOND)>NOW() AND `sqlquery`='&3'", $sqlchecksum, $opt['map']['maxcacheage'], $sqlFilter);
if ($rMapCache = sql_fetch_assoc($rsMapCache))
{
$resultId = $rMapCache['result_id'];
sql("UPDATE `map2_result` SET `shared_counter`=`shared_counter`+1 WHERE `result_id`='" . ($resultId+0) . "'");
}
else
{
db_connect_anyslave();
// ensure that query is performed without errors before reserving the result_id
sql_slave("CREATE TEMPORARY TABLE `tmpmapresult` (`cache_id` INT UNSIGNED NOT NULL, PRIMARY KEY (`cache_id`)) ENGINE=MEMORY");
sql_slave("INSERT INTO `tmpmapresult` (`cache_id`) " . $sqlFilter);
sql("INSERT INTO `map2_result` (`slave_id`, `sqlchecksum`, `sqlquery`, `date_created`, `date_lastqueried`) VALUES ('&1', '&2', '&3', NOW(), NOW())", $dbslaveid, $sqlchecksum, $cachesFilter."\n".$sqlFilter);
$resultId = mysql_insert_id($dblink);
sql_slave("INSERT IGNORE INTO `map2_data` (`result_id`, `cache_id`) SELECT '&1', `cache_id` FROM `tmpmapresult`", $resultId);
sql_slave("DROP TEMPORARY TABLE `tmpmapresult`");
}
if ($map2_bounds)
{
$rs = sql_slave("SELECT MIN(`latitude`) AS `lat_min`,
MAX(`latitude`) AS `lat_max`,
MIN(`longitude`) AS `lon_min`,
MAX(`longitude`) AS `lon_max`
FROM `map2_data`, `caches`
WHERE `result_id`='&1'
AND `caches`.`cache_id`=`map2_data`.`cache_id`",
$resultId);
if (($rBounds = sql_fetch_assoc($rs)) && $rBounds['lat_min'] !== null /* >0 caches */)
{
if ($rBounds['lat_min'] == $rBounds['lat_max'] &&
$rBounds['lon_min'] == $rBounds['lon_max']) // 1 Cache
{
$halfwin = 0.02;
$rBounds['lat_min'] -= $halfwin;
$rBounds['lat_max'] += $halfwin;
$rBounds['lon_min'] -= $halfwin;
$rBounds['lon_max'] += $halfwin;
}
$bounds_param = "&lat_min=" . round($rBounds['lat_min'],5) . "&lat_max=" . round($rBounds['lat_max'],5) . '&lon_min=' . round($rBounds['lon_min'],5) . '&lon_max=' . round($rBounds['lon_max'],5);
}
sql_free_result($rs);
tpl_redirect('map2.php?queryid=' . $options['queryid'] . '&resultid=' . $resultId . $bounds_param);
}
else
echo $resultId;
exit;
?>

View File

@@ -0,0 +1,87 @@
<?php
/***************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
ov2 search output
****************************************************************************/
$search_output_file_download = true;
$content_type_plain = 'application/ov2';
function search_output()
{
global $sqldebug;
/*
cacheid
name
latitude
longitude
type
size
difficulty
terrain
username
waypoint
*/
$sql = '
SELECT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
`caches`.`name`,
`caches`.`wp_oc`,
`caches`.`terrain`,
`caches`.`difficulty`,
`cache_type`.`short` `typedesc`,
`cache_size`.`de` `sizedesc`,
`user`.`username`
FROM
`searchtmp`,
`caches`,
`cache_type`,
`cache_size`,
`user`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`searchtmp`.`type`=`cache_type`.`id` AND
`searchtmp`.`size`=`cache_size`.`id` AND
`searchtmp`.`user_id`=`user`.`user_id`';
$rs = sql_slave($sql, $sqldebug);
while ($r = sql_fetch_array($rs))
{
$lat = sprintf('%07d', $r['latitude'] * 100000);
$lon = sprintf('%07d', $r['longitude'] * 100000);
$name = convert_string($r['name']);
$username = convert_string($r['username']);
$type = convert_string($r['typedesc']);
$size = convert_string($r['sizedesc']);
$difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
$terrain = sprintf('%01.1f', $r['terrain'] / 2);
$cacheid = convert_string($r['wp_oc']);
$line = "$name by $username, $type, $size, $cacheid";
$record = pack("CLllA*x", 2, 1 + 4 + 4 + 4 + strlen($line) + 1, (int)$lon, (int)$lat, $line);
append_output($record);
}
mysql_free_result($rs);
}
function convert_string($str)
{
$newstr = iconv("UTF-8", "ISO-8859-1", $str);
if ($newstr == false)
return "--- charset error ---";
else
return $newstr;
}
?>

View File

@@ -0,0 +1,78 @@
<?php
/***************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
ovl search output for TOP25, TOP50 etc.
****************************************************************************/
$search_output_file_download = true;
$content_type_plain = 'application/ovl';
function search_output()
{
$ovlLine = "[Symbol {symbolnr1}]\r\nTyp=6\r\nGroup=1\r\nWidth=20\r\nHeight=20\r\nDir=100\r\nArt=1\r\nCol=3\r\nZoom=1\r\nSize=103\r\nArea=2\r\nXKoord={lon}\r\nYKoord={lat}\r\n[Symbol {symbolnr2}]\r\nTyp=2\r\nGroup=1\r\nCol=3\r\nArea=1\r\nZoom=1\r\nSize=130\r\nFont=1\r\nDir=100\r\nXKoord={lonname}\r\nYKoord={latname}\r\nText={cachename}\r\n";
$ovlFoot = "[Overlay]\r\nSymbols={symbolscount}\r\n";
/*
{symbolnr1}
{lon}
{lat}
{symbolnr2}
{lonname}
{latname}
{cachename}
{symbolscount}
*/
$nr = 1;
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude`,
`searchtmp`.`latitude`,
`caches`.`name`
FROM
`searchtmp`,
`caches`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id`');
while ($r = sql_fetch_array($rs))
{
$thisline = $ovlLine;
$lat = sprintf('%01.5f', $r['latitude']);
$thisline = mb_ereg_replace('{lat}', $lat, $thisline);
$thisline = mb_ereg_replace('{latname}', $lat, $thisline);
$lon = sprintf('%01.5f', $r['longitude']);
$thisline = mb_ereg_replace('{lon}', $lon, $thisline);
$thisline = mb_ereg_replace('{lonname}', $lon, $thisline);
$thisline = mb_ereg_replace('{cachename}', convert_string($r['name']), $thisline);
$thisline = mb_ereg_replace('{symbolnr1}', $nr, $thisline);
$thisline = mb_ereg_replace('{symbolnr2}', $nr + 1, $thisline);
append_output($thisline);
$nr += 2;
}
mysql_free_result($rs);
$ovlFoot = mb_ereg_replace('{symbolscount}', $nr - 1, $ovlFoot);
append_output($ovlFoot);
}
function convert_string($str)
{
$newstr = iconv("UTF-8", "ISO-8859-1", $str);
if ($newstr == false)
return $str;
else
return $newstr;
}
?>

View File

@@ -0,0 +1,210 @@
<?php
/***************************************************************************
For license information see doc/license.txt
Unicode Reminder メモ
GPX search output
****************************************************************************/
$search_output_file_download = true;
$content_type_plain = 'text/plain';
$zip_threshold = 1;
$add_to_zipfile = false;
function search_output()
{
global $absolute_server_URI, $locale;
global $converted_from_html;
global $phpzip, $bUseZip;
$txtLine = "Name: {cachename} von {owner}
Koordinaten: {lon} {lat}
Status: {status}
Versteckt am: {time}
Wegpunkt: {waypoint}
Land: {country}
Cacheart: {type}
Behälter: {container}
D/T: {difficulty}/{terrain}
Online: " . $absolute_server_URI . "viewcache.php?wp={waypoint}
Kurzbeschreibung: {shortdesc}
Beschreibung{htmlwarn}:
<===================>
{desc}
<===================>
Zusätzliche Hinweise:
<===================>
{hints}
<===================>
A|B|C|D|E|F|G|H|I|J|K|L|M
N|O|P|Q|R|S|T|U|V|W|X|Y|Z
Logeinträge:
{logs}
";
$txtLogs = "<===================>
{username} / {date} / {type}
{text}
";
$rs = sql_slave('
SELECT SQL_BUFFER_RESULT
`searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude` `longitude`,
`searchtmp`.`latitude` `latitude`,
`caches`.`wp_oc` `waypoint`,
`caches`.`date_hidden` `date_hidden`,
`caches`.`name` `name`,
`caches`.`country` `country`,
`caches`.`terrain` `terrain`,
`caches`.`difficulty` `difficulty`,
`caches`.`desc_languages` `desc_languages`,
`cache_size`.`de` `size`,
`cache_type`.`de` `type`,
`cache_status`.`de` `status`,
`user`.`username` `username`,
`cache_desc`.`desc` `desc`,
`cache_desc`.`short_desc` `short_desc`,
`cache_desc`.`hint` `hint`,
`cache_desc`.`desc_html` `html`,
`user`.`user_id`,
`user`.`username`,
`user`.`data_license`
FROM
`searchtmp`,
`caches`,
`user`,
`cache_desc`,
`cache_type`,
`cache_status`,
`cache_size`
WHERE
`searchtmp`.`cache_id`=`caches`.`cache_id` AND
`caches`.`cache_id`=`cache_desc`.`cache_id` AND
`caches`.`default_desclang`=`cache_desc`.`language` AND
`searchtmp`.`user_id`=`user`.`user_id` AND
`caches`.`type`=`cache_type`.`id` AND
`caches`.`status`=`cache_status`.`id` AND
`caches`.`size`=`cache_size`.`id`');
while ($r = sql_fetch_array($rs))
{
$thisline = $txtLine;
$lat = sprintf('%01.5f', $r['latitude']);
$thisline = mb_ereg_replace('{lat}', help_latToDegreeStr($lat), $thisline);
$lon = sprintf('%01.5f', $r['longitude']);
$thisline = mb_ereg_replace('{lon}', help_lonToDegreeStr($lon), $thisline);
$time = date('d.m.Y', strtotime($r['date_hidden']));
$thisline = mb_ereg_replace('{time}', $time, $thisline);
$thisline = mb_ereg_replace('{waypoint}', $r['waypoint'], $thisline);
$thisline = mb_ereg_replace('{cacheid}', $r['cacheid'], $thisline);
$thisline = mb_ereg_replace('{cachename}', $r['name'], $thisline);
$thisline = mb_ereg_replace('{country}', db_CountryFromShort($r['country']), $thisline);
if ($r['hint'] == '')
$thisline = mb_ereg_replace('{hints}', '', $thisline);
else
$thisline = mb_ereg_replace('{hints}', str_rot13_html(decodeEntities(strip_tags($r['hint']))), $thisline);
$thisline = mb_ereg_replace('{shortdesc}', $r['short_desc'], $thisline);
$license = getLicenseDisclaimer(
$r['user_id'], $r['username'], $r['data_license'], $r['cacheid'], $locale, true, false, true);
if ($license != "")
$license = "\r\n\r\n$license";
if ($r['html'] == 0)
{
$thisline = mb_ereg_replace('{htmlwarn}', '', $thisline);
$thisline = mb_ereg_replace('{desc}', decodeEntities(strip_tags($r['desc'])) . $license, $thisline);
}
else
{
$thisline = mb_ereg_replace('{htmlwarn}', " ($converted_from_html)", $thisline);
$thisline = mb_ereg_replace('{desc}', html2txt($r['desc']) . $license, $thisline);
}
$thisline = mb_ereg_replace('{type}', $r['type'], $thisline);
$thisline = mb_ereg_replace('{container}', $r['size'], $thisline);
$thisline = mb_ereg_replace('{status}', $r['status'], $thisline);
$difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
$thisline = mb_ereg_replace('{difficulty}', $difficulty, $thisline);
$terrain = sprintf('%01.1f', $r['terrain'] / 2);
$thisline = mb_ereg_replace('{terrain}', $terrain, $thisline);
$thisline = mb_ereg_replace('{owner}', $r['username'], $thisline);
// logs ermitteln
$logentries = '';
$rsLogs = sql_slave("SELECT `cache_logs`.`id`, `cache_logs`.`text_html`, `log_types`.`de` `type`, `cache_logs`.`date`, `cache_logs`.`text`, `user`.`username` FROM `cache_logs`, `user`, `log_types` WHERE `cache_logs`.`user_id`=`user`.`user_id` AND `cache_logs`.`type`=`log_types`.`id` AND `cache_logs`.`cache_id`=&1 ORDER BY `cache_logs`.`date` DESC LIMIT 20", $r['cacheid']);
while ($rLog = sql_fetch_array($rsLogs))
{
$thislog = $txtLogs;
$thislog = mb_ereg_replace('{id}', $rLog['id'], $thislog);
if (substr($rLog['date'],11) == "00:00:00")
$dateformat = "d.m.Y";
else
$dateformat = "d.m.Y H:i";
$thislog = mb_ereg_replace('{date}', date($dateformat, strtotime($rLog['date'])), $thislog);
$thislog = mb_ereg_replace('{username}', $rLog['username'], $thislog);
$logtype = $rLog['type'];
$thislog = mb_ereg_replace('{type}', $logtype, $thislog);
if ($rLog['text_html'] == 0)
$thislog = mb_ereg_replace('{text}', decodeEntities(strip_tags($rLog['text'])), $thislog);
else
$thislog = mb_ereg_replace('{text}', html2txt($rLog['text']), $thislog);
$logentries .= $thislog . "\n";
}
$thisline = mb_ereg_replace('{logs}', $logentries, $thisline);
$thisline = lf2crlf($thisline);
if (($rCount['count'] == 1) && !$bUseZip)
echo $thisline;
else
{
$phpzip->add_data($r['waypoint'] . '.txt', $thisline);
}
}
mysql_free_result($rs);
}
function decodeEntities($str)
{
$str = html_entity_decode($str, ENT_COMPAT, "UTF-8");
return $str;
}
function html2txt($html)
{
$str = mb_ereg_replace("\r\n", '', $html);
$str = mb_ereg_replace("\n", '', $str);
$str = mb_ereg_replace('<br />', "\n", $str);
$str = strip_tags($str);
$str = decodeEntities($str);
return $str;
}
function lf2crlf($str)
{
return mb_ereg_replace("\r\r\n" ,"\r\n" , mb_ereg_replace("\n" ,"\r\n" , $str));
}
?>

View File

@@ -0,0 +1,195 @@
<?php
/***************************************************************************
For license information see doc/license.txt
XML search output
****************************************************************************/
$search_output_file_download = false;
function search_output()
{
global $sqldebug;
global $distance_unit, $startat, $count, $sql, $sqlLimit;
$encoding = 'UTF-8';
$xmlLine = " <cache>
<name><![CDATA[{cachename}]]></name>
<owner id=\"{ownerid}\"><![CDATA[{owner}]]></owner>
<id>{cacheid}</id>
<waypoint>{waypoint}</waypoint>
<hidden>{time}</hidden>
<status id=\"{statusid}\">{status}</status>
<lon value=\"{lonvalue}\">{lon}</lon>
<lat value=\"{latvalue}\">{lat}</lat>
<distance unit=\"".$distance_unit."\">{distance}</distance>
<type id=\"{typeid}\">{type}</type>
<difficulty>{difficulty}</difficulty>
<terrain>{terrain}</terrain>
<size id=\"{sizeid}\">{container}</size>
<country id=\"{countryid}\">{country}</country>
<link><![CDATA[http://www.opencaching.de/viewcache.php?wp={waypoint}]]></link>
<desc><![CDATA[{shortdesc}]]></desc>
<hints><![CDATA[{hints}]]></hints>
</cache>
";
// create temporary table
sql_slave('CREATE TEMPORARY TABLE `searchtmp`
SELECT SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS ' . $sql . $sqlLimit);
$resultcount = sql_value_slave('SELECT FOUND_ROWS()', 0);
$rsCount = sql_slave('SELECT COUNT(*) `count` FROM `searchtmp`');
$rCount = sql_fetch_array($rsCount);
mysql_free_result($rsCount);
// start output
if ($sqldebug == false)
{
header("Content-type: application/xml; charset=".$encoding);
//header("Content-Disposition: attachment; filename=" . $sFilebasename . ".txt");
}
echo "<?xml version=\"1.0\" encoding=\"".$encoding."\"?>\n";
echo "<result>\n";
echo " <docinfo>\n";
echo " <results>" . $rCount['count'] . "</results>\n";
echo " <startat>" . $startat . "</startat>\n";
echo " <perpage>" . $count . "</perpage>\n";
echo " <total>" . $resultcount . "</total>\n";
echo " </docinfo>\n";
$rs = sql_slave('SELECT `searchtmp`.`cache_id` `cacheid`,
`searchtmp`.`longitude` `longitude`,
`searchtmp`.`latitude` `latitude`,
`caches`.`wp_oc` `waypoint`,
`caches`.`date_hidden` `date_hidden`,
`caches`.`name` `name`,
`caches`.`country` `country`,
`caches`.`terrain` `terrain`,
`caches`.`difficulty` `difficulty`,
`caches`.`desc_languages` `desc_languages`,
`cache_size`.`name` `size`,
`cache_size`.`id` `size_id`,
`cache_type`.`name` `type`,
`cache_type`.`id` `type_id`,
`cache_status`.`name` `status`,
`cache_status`.`id` `status_id`,
`user`.`username` `username`,
`user`.`user_id` `user_id`,
`cache_desc`.`desc` `desc`,
`cache_desc`.`short_desc` `short_desc`,
`cache_desc`.`hint` `hint`,
`cache_desc`.`desc_html` `html`,
`searchtmp`.`distance` `distance`
FROM `searchtmp`
INNER JOIN `caches` ON `searchtmp`.`cache_id`=`caches`.`cache_id`
INNER JOIN `user` ON `searchtmp`.`user_id`=`user`.`user_id`
INNER JOIN `cache_desc` ON `caches`.`cache_id`=`cache_desc`.`cache_id` AND `caches`.`default_desclang`=`cache_desc`.`language`
INNER JOIN `cache_type` ON `caches`.`type`=`cache_type`.`id`
INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id`
INNER JOIN `cache_size` ON `caches`.`size`=`cache_size`.`id`');
while ($r = sql_fetch_array($rs))
{
$thisline = $xmlLine;
$lat = sprintf('%01.5f', $r['latitude']);
$thisline = str_replace('{lat}', help_latToDegreeStr($lat), $thisline);
$thisline = str_replace('{latvalue}', $lat, $thisline);
$lon = sprintf('%01.5f', $r['longitude']);
$thisline = str_replace('{lon}', help_lonToDegreeStr($lon), $thisline);
$thisline = str_replace('{lonvalue}', $lon, $thisline);
$time = date('d.m.Y', strtotime($r['date_hidden']));
$thisline = str_replace('{time}', $time, $thisline);
$thisline = str_replace('{waypoint}', $r['waypoint'], $thisline);
$thisline = str_replace('{cacheid}', $r['cacheid'], $thisline);
$thisline = str_replace('{cachename}', filterevilchars($r['name']), $thisline);
$thisline = str_replace('{country}', db_CountryFromShort($r['country']), $thisline);
$thisline = str_replace('{countryid}', $r['country'], $thisline);
if ($r['hint'] == '')
$thisline = str_replace('{hints}', '', $thisline);
else
$thisline = str_replace('{hints}', str_rot13_html(filterevilchars(strip_tags($r['hint']))), $thisline);
$thisline = str_replace('{shortdesc}', filterevilchars($r['short_desc']), $thisline);
if ($r['html'] == 0)
{
$thisline = str_replace('{htmlwarn}', '', $thisline);
$thisline = str_replace('{desc}', filterevilchars(strip_tags($r['desc'])), $thisline);
}
else
{
$thisline = str_replace('{htmlwarn}', ' (Text converted from HTML)', $thisline);
$thisline = str_replace('{desc}', html2txt(filterevilchars($r['desc'])), $thisline);
}
$thisline = str_replace('{type}', $r['type'], $thisline);
$thisline = str_replace('{typeid}', $r['type_id'], $thisline);
$thisline = str_replace('{container}', $r['size'], $thisline);
$thisline = str_replace('{sizeid}', $r['size_id'], $thisline);
$thisline = str_replace('{status}', $r['status'], $thisline);
$thisline = str_replace('{statusid}', $r['status_id'], $thisline);
$difficulty = sprintf('%01.1f', $r['difficulty'] / 2);
$thisline = str_replace('{difficulty}', $difficulty, $thisline);
$terrain = sprintf('%01.1f', $r['terrain'] / 2);
$thisline = str_replace('{terrain}', $terrain, $thisline);
$thisline = str_replace('{owner}', filterevilchars($r['username']), $thisline);
$thisline = str_replace('{ownerid}', filterevilchars($r['user_id']), $thisline);
$thisline = str_replace('{distance}', htmlspecialchars(sprintf("%01.1f", $r['distance'])), $thisline);
$thisline = lf2crlf($thisline);
echo $thisline;
}
mysql_free_result($rs);
sql_slave('DROP TABLE `searchtmp`');
if ($sqldebug == true) sqldbg_end();
echo "</result>\n";
}
function html2txt($html)
{
$str = str_replace("\r\n", '', $html);
$str = str_replace("\n", '', $str);
$str = str_replace('<br />', "\n", $str);
$str = strip_tags($str);
return $str;
}
function lf2crlf($str)
{
return str_replace("\r\r\n" ,"\r\n" , str_replace("\n" ,"\r\n" , $str));
}
function filterevilchars($str)
{
$evilchars = array(31 => 31, 30 => 30,
29 => 29, 28 => 28, 27 => 27, 26 => 26, 25 => 25, 24 => 24,
23 => 23, 22 => 22, 21 => 21, 20 => 20, 19 => 19, 18 => 18,
17 => 17, 16 => 16, 15 => 15, 14 => 14, 12 => 12, 11 => 11,
9 => 9, 8 => 8, 7 => 7, 6 => 6, 5 => 5, 4 => 4, 3 => 3,
2 => 2, 1 => 1, 0 => 0);
foreach ($evilchars AS $ascii)
$str = str_replace(chr($ascii), '', $str);
$str = preg_replace('/&([a-zA-Z]{1})caron;/', '\\1', $str);
$str = preg_replace('/&([a-zA-Z]{1})acute;/', '\\1', $str);
return $str;
}
?>

2150
htdocs/search1.php Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -261,7 +261,7 @@ function switchAttributeCat2()
</script>
{/literal}
<div class="content2-pagetitle"><img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="32" height="32" alt="{t}Search for caches{/t}" />{t}Search for caches{/t}</div>
<div class="content2-pagetitle"><img src="resource2/ocstyle/images/misc/32x32-search.png" style="align: left; margin-right: 10px;" width="32" height="32" alt="{t}Search for caches{/t}" />{t}Search for caches{/t} &nbsp; <small style="font-weight:normal">(&rarr; <a href="search1.php">{t}old{/t}</a>)</small></div>
<form name="optionsform" style="display:inline;">
@@ -273,7 +273,7 @@ function switchAttributeCat2()
<td colspan="2">
<div style="padding:0 0 5px 0">
<input type="radio" name="sort" value="byname" index="0" id="l_sortbyname" class="radio" onclick="sync_options(this)" {if $byname_checked}checked="checked"{/if} > <label for="l_sortbyname">{t}Cachename{/t}</label>&nbsp;
<input type="radio" name="sort" value="bydistance" index="1" id="l_sortbydistance" class="radio" onclick="sync_options(this)" {if $bydistance_checked}checked="checked"{/if} {if !$bydistance_enabled}disabled="disabled"{/if} {if $disable_nologin}disabled="disabled"{/if}> <label for="l_sortbydistance" {if $disable_nologin}class="disabled">{/if}{t}Distance from <a href="myprofile.php">user-profile home coordinates</a>{/t}</label></div>
<input type="radio" name="sort" value="bydistance" index="1" id="l_sortbydistance" class="radio" onclick="sync_options(this)" {if $bydistance_checked}checked="checked"{/if} {if !$bydistance_enabled}disabled="disabled"{/if} {if $disable_nologin}disabled="disabled"{/if}> <label for="l_sortbydistance" {if $disable_nologin}class="disabled"{/if}>{t}Distance from <a href="myprofile.php">user-profile home coordinates</a>{/t}</label></div>
<input type="radio" name="sort" value="bycreated" index="2" id="l_sortbycreated" class="radio" onclick="sync_options(this)" {if $bycreated_checked}checked="checked"{/if}> <label for="l_sortbycreated">{t}Listed since{/t}</label>&nbsp;
<input type="radio" name="sort" value="bylastlog" index="3" id="l_sortbylastlog" class="radio" onclick="sync_options(this)" {if $bylastlog_checked}checked="checked"{/if}> <label for="l_sortbylastlog" >{t}Last log{/t}</label>&nbsp;
<input type="radio" name="sort" value="bymylastlog" index="4" id="l_sortbymylastlog" class="radio" onclick="sync_options(this)" {if $bymylastlog_checked}checked="checked"{/if} {if $disable_nologin}disabled="disabled"{/if}> <label for="l_sortbymylastlog" {if $disable_nologin}class="disabled"{/if}>{t}My last log{/t}</label>