X-Git-Url: https://dev.renevier.net/gitweb.cgi?p=syp.git;a=blobdiff_plain;f=items.php;h=e2fe1dbbe272b222d6f12d5df6e03a75ffbd6044;hp=f816cfbeb25f1f8b060779ea105bef8afed77095;hb=d9bd82ee3aafe693572f5313aec93a995b2102a2;hpb=7282fabcfef34ef95b8c6bd414f34d77037451e1 diff --git a/items.php b/items.php index f816cfb..e2fe1db 100644 --- a/items.php +++ b/items.php @@ -2,9 +2,21 @@ /* Copyright (c) 2009 Arnaud Renevier, Inc, published under the modified BSD license. */ -require ("./inc/settings.php"); -require ("./inc/errors.php"); -require ("./inc/db/mysql.php"); +function headers_callback ($output) { + $etag = md5 ($output); + if ((isset ($_SERVER ["HTTP_IF_NONE_MATCH"])) && + ($_SERVER ["HTTP_IF_NONE_MATCH"] == $etag)) { + header ("HTTP/1.1 304 Not Modified"); + exit (); + } + + header ("Content-type: application/vnd.google-earth.kml+xml"); + // no-cache is needed otherwise IE does not try to get new version. + header ("Cache-control: no-cache, must-revalidate"); + header (sprintf ("ETag: %s", $etag)); + + return $output; +} function main ($features) { @@ -14,49 +26,68 @@ function main ($features) { '; if (SITETITLE) { - printf (' %s', SITETITLE); + printf (' %s', htmlspecialchars (SITETITLE)); } foreach ($features as $feature) { + $id = $feature->id; $title = htmlspecialchars ($feature->title, ENT_QUOTES); $description = htmlspecialchars ($feature->description, ENT_QUOTES); - if (strpos ($feature->imgurl, "http://") === 0) { - $imgurl = "http://" . rawurlencode (substr($feature->imgurl, 7)); - } else if (strpos ($feature->imgurl, "https://") === 0) { - $imgurl = "https://" . rawurlencode (substr ($feature->imgurl, 8)); - } else { - $imgurl = rawurlencode ($feature->imgurl); - } - $imgurl = str_replace ('%2F', '/', $imgurl); + $imgurl = ($feature->imgpath ? + image_url_from_imgpath ($feature->imgpath) + : ""); + $thumburl = ($feature->imgpath ? + thumb_url_from_imgpath ($feature->imgpath) + : ""); $lon = $feature->lon; $lat = $feature->lat; $alt = (strlen ($title) > 60) ? (substr ($title, 0, 57) . '...') : $title; + if ($imgurl) { + $imgurlHTML = sprintf ('%s', $imgurl, $alt, $thumburl); + } else { + $imgurlHTML = ""; + } + + if ($description) { + $descriptionHTML = sprintf ('

%s

', $description) ; + } else { + $descriptionHTML = ""; + } + printf (' - + %s %s

- %s + %s + %s ]]>
%s,%s
-', $title, $description, $alt, $imgurl, $lon, $lat); +', $id, $title, $descriptionHTML, $imgurlHTML, $lon, $lat); } echo' '; } +if (!@include_once ("./inc/settings.php")) { + exit ("server error"); +} +require_once ("./inc/utils.php"); +require_once ("./inc/db/mysql.php"); + try { $connection->connect (DBHOST, DBUSER, DBPWD, DBNAME, DBPREFIX); - $features = $connection->listfeatures (); + $features = $connection->listfeatures ($_GET ['from_user']); } catch (Exception $e) { - server_error (); + exit ("server error"); } -header ("Content-type: application/vnd.google-earth.kml+xml"); + +ob_start ("headers_callback"); main ($features); +ob_end_flush () ?>