From 801413690bcb0a317c52a20d07311d91d6bdfa4c Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Tue, 17 May 2016 20:27:22 +0300 Subject: [PATCH] =?UTF-8?q?ADD=20=D1=80=D0=B0=D1=81=D1=81=D1=87=D1=91?= =?UTF-8?q?=D1=82=20=D0=B4=D0=BB=D0=B8=D0=BD=D1=8B=20=D1=82=D1=80=D0=B5?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B8=20=D0=B8=D0=BC=D0=BF=D0=BE?= =?UTF-8?q?=D1=80=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/TracksController.php | 60 +++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/controllers/TracksController.php b/controllers/TracksController.php index 39bc390..0552efd 100644 --- a/controllers/TracksController.php +++ b/controllers/TracksController.php @@ -2,6 +2,7 @@ class TracksController extends Controller { + function __construct() { if (!App::$user->id) { @@ -16,7 +17,6 @@ class TracksController extends Controller self::addScript('/js/bootstrap.min.js'); self::addStyle('/css/bootstrap.min.css'); self::addStyle('/css/bootstrap-theme.min.css'); - } function actionIndex() @@ -42,7 +42,7 @@ class TracksController extends Controller $temp = pathinfo($_FILES['file']['name']); $filename = $_FILES['file']['name']; $extension = strtolower($temp['extension']); - $uploaddir = App::getBasedir().'tracks/'; + $uploaddir = App::getBasedir() . 'tracks/'; if ($extension !== 'gpx') { App::error404('Неизвестный тип'); @@ -50,12 +50,12 @@ class TracksController extends Controller $tmp = TrackFiles::model()->add(array( 'owner' => App::$user->id, - 'name' => 'Трек '.date('d-m-Y H:i:s'), + 'name' => 'Трек ' . date('d-m-Y H:i:s'), 'filename' => $filename, 'createdAt' => date('c'), )); - $newName = 'track'.$tmp->id . '.' . $extension; + $newName = 'track' . $tmp->id . '.' . $extension; if (!move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $newName)) { App::error404(); } @@ -65,7 +65,7 @@ class TracksController extends Controller function actionImportgpx() { - $id = (int)App::getParam('id'); + $id = (int) App::getParam('id'); if (!$id) { App::error404(); @@ -77,7 +77,7 @@ class TracksController extends Controller App::error404(); } - $gpxObject = simplexml_load_file(App::getBasedir().'tracks/track'.$trackFile->id.'.gpx'); + $gpxObject = simplexml_load_file(App::getBasedir() . 'tracks/track' . $trackFile->id . '.gpx'); $trip = Trips::model()->add( array( @@ -85,11 +85,12 @@ class TracksController extends Controller 'createdAt' => isset($gpxObject->metadata->time) ? $gpxObject->metadata->time : date('c'), 'owner' => App::$user->id, 'distance' => 0, - 'description' => 'Трек сздан '.date('d-m-Y H:i').' из файла '. $trackFile->filename, + 'description' => 'Трек сздан ' . date('d-m-Y H:i') . ' из файла ' . $trackFile->filename, 'status' => Trips::STATUS_PRIVATE, ) ); + $distance = 0; $wayPoints = array(); $tracks = array(); $latlngs = array(); @@ -102,16 +103,16 @@ class TracksController extends Controller } $wayPoint = WayPoints::model()->add( - array( - 'tripId' => $trip->id, - 'lat' => floatval($block['lat']), - 'lng' => floatval($block['lon']), - 'alt' => 0, - 'speed' => 0, - 'createdAt' => $block->time, - 'name' => (string) $block->name, - 'description' => (string) $block->desc, - ) + array( + 'tripId' => $trip->id, + 'lat' => floatval($block['lat']), + 'lng' => floatval($block['lon']), + 'alt' => 0, + 'speed' => 0, + 'createdAt' => $block->time, + 'name' => (string) $block->name, + 'description' => (string) $block->desc, + ) ); } @@ -125,16 +126,17 @@ class TracksController extends Controller $track = Tracks::model()->add( array( 'tripId' => $trip->id, - 'name' => (string)$block->name ? (string)$block->name : 'Фрагмент трека №'.$tracksCounter, + 'name' => (string) $block->name ? (string) $block->name : 'Фрагмент трека №' . $tracksCounter, 'distance' => 0, 'description' => '', ) - ); + ); + $distanceTmp = 0; + $prevPoint = array(); $tracksCounter++; $trackPoints = array(); foreach ($trkpt as $tpt) { - $trackPoint = TrackPoints::model()->add( array( 'trackId' => $track->id, @@ -145,12 +147,30 @@ class TracksController extends Controller 'speed' => 0, ) ); + + if ($prevPoint) { + $distanceTmp += Geo::distance($prevPoint, array('lat' => floatval($tpt['lat']), 'lng' => floatval($tpt['lon']))); +// print $distanceTmp.'
'; + } + + $prevPoint = array( + 'lat' => floatval($tpt['lat']), + 'lng' => floatval($tpt['lon']), + ); } + + $distance += $distanceTmp; + $track->distance = $distanceTmp; + $track->save(); } } + } } + $trip->distance = $distance; + $trip->save(); + App::redirect('/tracks'); }