This commit is contained in:
bastianonm 2012-02-07 13:06:51 +00:00
parent bf466863af
commit 835f873705
5 changed files with 167 additions and 54 deletions

View File

@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=basti
Tags: maps, gpx, gps, graph, google maps, google chart, track, garmin Tags: maps, gpx, gps, graph, google maps, google chart, track, garmin
Requires at least: 2.0.0 Requires at least: 2.0.0
Tested up to: 3.3 Tested up to: 3.3
Stable tag: 1.1.4 Stable tag: 1.1.5
License: GPLv2 or later License: GPLv2 or later
Draws a gpx track with altitude graph Draws a gpx track with altitude graph
@ -79,6 +79,9 @@ Yes!
2. Admin area - Settings 2. Admin area - Settings
== Changelog == == Changelog ==
= 1.1.5 =
* implemented cache (the plugin is much faster, especially on slow servers or external gpx)
* minor bug fixes
= 1.1.4 = = 1.1.4 =
* improved admin area * improved admin area
* added miles/feet unit of measure * added miles/feet unit of measure
@ -121,6 +124,7 @@ Yes!
* Initial release. * Initial release.
== Upgrade Notice == == Upgrade Notice ==
= 1.1.5 =
= 1.1.4 = = 1.1.4 =
= 1.1.3 = = 1.1.3 =
= 1.1.2 = = 1.1.2 =

View File

@ -3,7 +3,7 @@
Plugin Name: WP-GPX-Maps Plugin Name: WP-GPX-Maps
Plugin URI: http://www.darwinner.it/ Plugin URI: http://www.darwinner.it/
Description: Draws a gpx track with altitude graph Description: Draws a gpx track with altitude graph
Version: 1.1.4 Version: 1.1.5
Author: Bastianon Massimo Author: Bastianon Massimo
Author URI: http://www.pedemontanadelgrappa.it/ Author URI: http://www.pedemontanadelgrappa.it/
License: GPL License: GPL
@ -85,6 +85,35 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$r = rand(1,5000000); $r = rand(1,5000000);
$cacheFileName = md5($gpx.$w.$mh.$mt.$gh.$showW.$donotreducegpx.$pointsoffset);
$gpxcache = gpxCacheFolderPath();
if(!(file_exists($gpxcache) && is_dir($gpxcache)))
{
@mkdir($gpxcache,0755,true);
}
$gpxcache.= DIRECTORY_SEPARATOR.$cacheFileName.".tmp";
// Try to load cache
if (file_exists($gpxcache))
{
try {
$cache_str = file_get_contents($gpxcache);
$cache_obj = unserialize($cache_str);
$points_maps = $cache_obj["points_maps"];
$points_graph = $cache_obj["points_graph"];
$waypoints = $cache_obj["waypoints"];
} catch (Exception $e) {
$points_maps= '';
$points_graph= '';
$waypoints= '';
}
}
if ($points_maps == '')
{
$sitePath = sitePath(); $sitePath = sitePath();
$gpx = trim($gpx); $gpx = trim($gpx);
@ -136,6 +165,15 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph = ""; $points_graph = "";
} }
@file_put_contents($gpxcache,
serialize(array("points_maps" => $points_maps,
"points_graph" => $points_graph,
"waypoints" => $waypoints)
),
LOCK_EX);
@chmod($gpxcache,0755);
}
$output = ' $output = '
<div id="wpgpxmaps_'.$r.'" style="clear:both;"> <div id="wpgpxmaps_'.$r.'" style="clear:both;">
<div id="map_'.$r.'" style="width:'.$w.'; height:'.$mh.'"></div> <div id="map_'.$r.'" style="width:'.$w.'; height:'.$mh.'"></div>

View File

@ -15,6 +15,14 @@
return str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $ret); return str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $ret);
} }
function gpxCacheFolderPath()
{
$upload_dir = wp_upload_dir();
$uploadsPath = $upload_dir['basedir'];
$ret = $uploadsPath.DIRECTORY_SEPARATOR."gpx".DIRECTORY_SEPARATOR."cache";
return str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $ret);
}
function relativeGpxFolderPath() function relativeGpxFolderPath()
{ {
$sitePath = sitePath(); $sitePath = sitePath();
@ -23,6 +31,43 @@
return str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $ret); return str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $ret);
} }
function recursive_remove_directory($directory, $empty=FALSE)
{
if(substr($directory,-1) == '/')
{
$directory = substr($directory,0,-1);
}
if(!file_exists($directory) || !is_dir($directory))
{
return FALSE;
}elseif(is_readable($directory))
{
$handle = opendir($directory);
while (FALSE !== ($item = readdir($handle)))
{
if($item != '.' && $item != '..')
{
$path = $directory.'/'.$item;
if(is_dir($path))
{
recursive_remove_directory($path);
}else{
unlink($path);
}
}
}
closedir($handle);
if($empty == FALSE)
{
if(!rmdir($directory))
{
return FALSE;
}
}
}
return TRUE;
}
function getPoints($gpxPath,$gpxOffset = 10, $donotreducegpx) function getPoints($gpxPath,$gpxOffset = 10, $donotreducegpx)
{ {

View File

@ -21,6 +21,7 @@ function ilc_admin_tabs( $current ) {
function WP_GPX_Maps_html_page() { function WP_GPX_Maps_html_page() {
$realGpxPath = gpxFolderPath(); $realGpxPath = gpxFolderPath();
$cacheGpxPath = gpxCacheFolderPath();
$relativeGpxPath = relativeGpxFolderPath(); $relativeGpxPath = relativeGpxFolderPath();
$relativeGpxPath = str_replace("\\","/", $relativeGpxPath); $relativeGpxPath = str_replace("\\","/", $relativeGpxPath);
$gpxRegEx = '/.gpx$/'; $gpxRegEx = '/.gpx$/';
@ -42,7 +43,7 @@ function WP_GPX_Maps_html_page() {
} }
else else
{ {
if (!@mkdir($realGpxPath,755,true)) { if (!@mkdir($realGpxPath,0755,true)) {
echo '<div class="error" style="padding:10px"> echo '<div class="error" style="padding:10px">
Can\'t create <b>'.$realGpxPath.'</b> folder. Please create it and make it writable!<br /> Can\'t create <b>'.$realGpxPath.'</b> folder. Please create it and make it writable!<br />
If not, you will must update the file manually! If not, you will must update the file manually!
@ -50,6 +51,20 @@ function WP_GPX_Maps_html_page() {
} }
} }
if(file_exists($cacheGpxPath) && is_dir($cacheGpxPath))
{
//dir exsist!
}
else
{
if (!@mkdir($cacheGpxPath,0755,true)) {
echo '<div class="error" style="padding:10px">
Can\'t create <b>'.$cacheGpxPath.'</b> folder. Please create it and make it writable!<br />
If not, cache will not created and your site could be slower!
</div>';
}
}
ilc_admin_tabs($tab); ilc_admin_tabs($tab);
if ($tab == "tracks") if ($tab == "tracks")

View File

@ -9,12 +9,18 @@
} }
} }
if ( isset($_POST['clearcache']) )
{
echo "pulisco la cahce";
recursive_remove_directory($cacheGpxPath,true);
}
if ( is_writable ( $realGpxPath ) ){ if ( is_writable ( $realGpxPath ) ){
?> ?>
<div class="tablenav top"> <div class="tablenav top">
<form enctype="multipart/form-data" method="POST"> <form enctype="multipart/form-data" method="POST" style="float:left; margin:5px 20px 0 0">
Choose a file to upload: <input name="uploadedfile" type="file" onchange="submitgpx(this);" /> Choose a file to upload: <input name="uploadedfile" type="file" onchange="submitgpx(this);" />
<?php <?php
if ( isset($_FILES['uploadedfile']) ) if ( isset($_FILES['uploadedfile']) )
@ -35,6 +41,11 @@
} }
?> ?>
</form> </form>
<form method="POST" style="float:left; margin:5px 20px 0 0">
<input type="submit" name="clearcache" value="Clear Cache" />
</form>
</div> </div>
<?php <?php