okapi r583: waypoint-related changes and fixes

This commit is contained in:
following 2013-03-28 18:38:16 +01:00
parent b5d24350dc
commit 85d0cbc296
4 changed files with 17 additions and 31 deletions

View File

@ -778,7 +778,7 @@ class Okapi
{
public static $data_store;
public static $server;
public static $revision = 576; # This gets replaced in automatically deployed packages
public static $revision = 583; # This gets replaced in automatically deployed packages
private static $okapi_vars = null;
/** Get a variable stored in okapi_vars. If variable not found, return $default. */

View File

@ -1,7 +1,7 @@
<?
namespace okapi\services\caches\formatters\gpx;
namespace okapi\services\caches\formatters\gpx;
use okapi\Okapi;
echo '<?xml version="1.0" encoding="utf-8"?>'."\n";
@ -12,12 +12,12 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd
http://www.opencaching.com/xmlschemas/opencaching/1/0 http://www.opencaching.com/xmlschemas/opencaching/1/0/opencaching.xsd
http://www.groundspeak.com/cache/1/0 http://www.groundspeak.com/cache/1/0/cache.xsd
http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd
http://geocaching.com.au/geocache/1 http://geocaching.com.au/geocache/1/geocache.xsd
http://www.gsak.net/xmlv1/5 http://www.gsak.net/xmlv1/5/gsak.xsd
">
<name><?= $vars['installation']['site_name'] ?> Geocache Search Results</name>
<desc><?= $vars['installation']['site_name'] ?> Geocache Search Results, downloaded via OKAPI - <?= $vars['installation']['okapi_base_url'] ?></desc>
<desc><?= $vars['installation']['site_name'] ?> Geocache Search Results, downloaded via OKAPI - <?= $vars['installation']['okapi_base_url'] . ($vars['alt_wpts'] && $vars['ns_gsak'] ? ' (HasChildren)' : '') ?></desc>
<author><?= $vars['installation']['site_name'] ?></author>
<url><?= $vars['installation']['site_url'] ?></url>
<urlname><?= $vars['installation']['site_name'] ?></urlname>
@ -162,9 +162,9 @@ http://www.gsak.net/xmlv1/5 http://www.gsak.net/xmlv1/5/gsak.xsd
<sym><?= $wpt['sym'] ?></sym>
<type>Waypoint|<?= $wpt['sym'] ?></type>
<? if ($vars['ns_gsak']) { ?>
<wptExtension xmlns="http://www.gsak.net/xmlv1/5">
<Parent><?= $c['code'] ?></Parent>
</wptExtension>
<gsak:wptExtension xmlns:gsak="http://www.gsak.net/xmlv1/5">
<gsak:Parent><?= $c['code'] ?></gsak:Parent>
</gsak:wptExtension>
<? } ?>
</wpt>
<? } ?>

View File

@ -216,7 +216,7 @@
<p><b>alt_wpts</b> - list of alternate/additional waypoints associated
with this geocache. Each item is a dictionary of the following structure:</p>
<ul>
<li><b>name</b> - plain-text "codename" for the waypoint (not unique),</li>
<li><b>name</b> - plain-text, short, unique "codename" for the waypoint,</li>
<li><b>location</b> - location of the waypoint in the "lat|lon" format
(<i>lat</i> and <i>lon</i> are in full degrees with a dot as a decimal point),</li>
<li>

View File

@ -709,7 +709,7 @@ class WebService
{
foreach ($results as &$result_ref)
$result_ref['alt_wpts'] = array();
$cachelist = implode("','", array_map('mysql_real_escape_string', array_keys($cacheid2wptcode)));
$cache_codes_escaped_and_imploded = "'".implode("','", array_map('mysql_real_escape_string', array_keys($cacheid2wptcode)))."'";
if (Settings::get('OC_BRANCH') == 'oc.pl')
{
@ -718,14 +718,7 @@ class WebService
# of a multicache). Such hidden waypoints are not exposed by OKAPI. A stage
# fields is used for ordering and naming.
$waypoints = Db::select_value("
select count(*)
from waypoints
where
cache_id in ('".$cachelist."')
and status = 1
");
$rs = Db::query("
$waypoints = Db::select_all("
select
cache_id, stage, latitude, longitude, `desc`,
case type
@ -736,7 +729,7 @@ class WebService
end as sym
from waypoints
where
cache_id in ('".$cachelist."')
cache_id in (".$cache_codes_escaped_and_imploded.")
and status = 1
order by cache_id, stage, `desc`
");
@ -746,14 +739,7 @@ class WebService
# OCDE uses 'coordinates' table (with type=1) to store additional waypoints.
# All waypoints are are public.
$waypoints = Db::select_value("
select count(*)
from coordinates
where
type = 1
and cache_id in ('".$cachelist."')
");
$rs = Db::query("
$waypoints = Db::select_all("
select
cache_id,
@stage := @stage + 1 as stage,
@ -770,15 +756,15 @@ class WebService
join (select @stage := 0) s
where
type = 1
and cache_id in ('".$cachelist."')
and cache_id in (".$cache_codes_escaped_and_imploded.")
order by cache_id, id, `desc`
");
}
$wpt_format = "%s-%0" . ($waypoints>0 ? (floor(log10(count($waypoints))) + 1) : "") . "d";
while ($row = mysql_fetch_assoc($rs))
$wpt_format = "%s-%0".strlen(count($waypoints))."d";
foreach ($waypoints as $index => $row)
{
$results[$cacheid2wptcode[$row['cache_id']]]['alt_wpts'][] = array(
'name' => sprintf($wpt_format, $cacheid2wptcode[$row['cache_id']], $row['stage']),
'name' => sprintf($wpt_format, $cacheid2wptcode[$row['cache_id']], $index + 1),
'location' => round($row['latitude'], 6)."|".round($row['longitude'], 6),
'sym' => $row['sym'],
'description' => ($row['stage'] ? _("Stage")." ".$row['stage'].": " : "").$row['desc'],