120 lines
3.8 KiB
PHP
120 lines
3.8 KiB
PHP
<?php
|
|
/***************************************************************************
|
|
* For license information see doc/license.txt
|
|
*
|
|
* Unicode Reminder メモ
|
|
*
|
|
* Display some status information about the server and Opencaching
|
|
***************************************************************************/
|
|
|
|
require('./lib2/web.inc.php');
|
|
$tpl->name = 'searchplugin';
|
|
|
|
// initialize
|
|
$keyword_name = 'name';
|
|
$keyword_finder = 'finder';
|
|
$keyword_owner = 'besitzer';
|
|
$keyword_town = 'ort';
|
|
$keyword_zipcode = 'plz';
|
|
$keyword_cacheid = 'id';
|
|
$keyword_wp = 'wp';
|
|
|
|
$searchurl = 'search.php';
|
|
|
|
// get parameter from URL
|
|
$userinput = isset($_REQUEST['userinput']) ? mb_trim($_REQUEST['userinput']) : '';
|
|
$sourceid = isset($_REQUEST['sourceid']) ? $_REQUEST['sourceid'] : 0;
|
|
|
|
if (($sourceid == 'waypoint-search') && ($userinput != ''))
|
|
{
|
|
$sourceid = 'mozilla-search';
|
|
$userinput = 'wp:'.$userinput;
|
|
}
|
|
|
|
if (($sourceid == 'mozilla-search') && ($userinput != ''))
|
|
{
|
|
$params = mb_split(':', $userinput);
|
|
if($params !== false)
|
|
{
|
|
if (count($params) == 1)
|
|
{
|
|
$searchto = 'name';
|
|
$searchfor = urlencode($params[0]);
|
|
}
|
|
else
|
|
{
|
|
$searchto = $params[0];
|
|
array_splice($params, 0, 1);
|
|
$searchfor = urlencode(implode(':', $params));
|
|
}
|
|
unset($params);
|
|
|
|
// for zipcode/town-search: if logged in, sort by distance
|
|
if ($login->userid != 0)
|
|
$order = 'byname';
|
|
else
|
|
$order = 'bydistance';
|
|
|
|
$targeturl = 'search.php?showresult=1&expert=0&output=HTML&f_userowner=0&f_userfound=0';
|
|
switch ($searchto)
|
|
{
|
|
case $keyword_name:
|
|
$targeturl .= '&utf8=1&sort=byname&searchbyname=1&f_inactive=1&cachename=' . $searchfor;
|
|
break;
|
|
case $keyword_finder:
|
|
$targeturl .= '&utf8=1&sort=byname&searchbyfinder=1&f_inactive=0&finder=' . $searchfor;
|
|
break;
|
|
case $keyword_owner:
|
|
$targeturl .= '&utf8=1&sort=byname&searchbyowner=1&f_inactive=0&owner=' . $searchfor;
|
|
break;
|
|
case $keyword_town:
|
|
$targeturl .= '&utf8=1&searchbyort=1&f_inactive=1&ort=' . $searchfor . '&sort=' . $order;
|
|
break;
|
|
case $keyword_zipcode:
|
|
$targeturl .= '&utf8=1&sort=bydistance&searchbyplz=1&f_inactive=1&plz=' . $searchfor . '&sort=' . $order;
|
|
break;
|
|
case $keyword_cacheid:
|
|
$targeturl .= '&utf8=1&sort=byname&searchbycacheid=1&f_inactive=1&cacheid=' . $searchfor;
|
|
break;
|
|
case $keyword_wp:
|
|
$targeturl = 'index.php';
|
|
$searchfor = mb_trim($searchfor);
|
|
$target = mb_strtolower(mb_substr($searchfor, 0, 2));
|
|
if (mb_substr($target, 0, 1) == 'n')
|
|
{
|
|
$target = 'nc';
|
|
}
|
|
if (mb_strpos($opt['logic']['ocprefixes'], $target) != false)
|
|
{
|
|
$target = 'oc';
|
|
}
|
|
|
|
if ((($target == 'oc') || ($target == 'nc') || ($target == 'gc')) && mb_ereg_match('(('.$opt['logic']['ocprefixes'].'|gc)([a-z0-9]){4,5}|n([a-f0-9]){5,5})$', mb_strtolower($searchfor)))
|
|
{
|
|
// get cache_id from DB
|
|
// GC/NC waypoints can be duplicates -> return first match with least status number
|
|
$rs = sql("SELECT `cache_id` FROM `caches` INNER JOIN `cache_status` ON `caches`.`status`=`cache_status`.`id` WHERE (`cache_status`.`allow_user_view`=1 OR `caches`.`user_id`='&1') AND `wp_" . sql_escape($target) . "`='&2' ORDER BY `caches`.`status`,`caches`.`cache_id` LIMIT 0,1", $login->userid, $searchfor);
|
|
if (sql_num_rows($rs))
|
|
{
|
|
$record = sql_fetch_array($rs);
|
|
$targeturl = 'viewcache.php?cacheid=' . $record['cache_id'];
|
|
unset($record);
|
|
}
|
|
else
|
|
$tpl->error(ERROR_SEARCHPLUGIN_WAYPOINT_NOTFOUND, $searchfor);
|
|
sql_free_result($rs);
|
|
}
|
|
else
|
|
{
|
|
// wrong waypoint format
|
|
$tpl->error(ERROR_SEARCHPLUGIN_WAYPOINT_FORMAT);
|
|
exit;
|
|
}
|
|
break;
|
|
}
|
|
$tpl->redirect($targeturl);
|
|
}
|
|
}
|
|
|
|
$tpl->redirect('index.php');
|
|
?>
|