-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="GENERATOR" content="Mozilla/4.72 (X11; U; Linux 2.2.12-20smp i686) [Netscape]">
- <title>WeatherMon (архив)</title>
- <link rel="icon" href="favicon.png" />
- <style type="text/css">
- a.year {
- padding:20px;
- margin: 10px;
- border:2px solid darkgrey;
- border-radius: 10px;
- display:inline-block;
- width:200px;
- float:left;
- font-size:100%;
- text-align:center;
- }
- a.month {
- font-size:100%;
- text-align:center;
- }
- a:visited { text-decoration: none; color:darkblue; }
- a:link { text-decoration: none; color:blue; }
- a:hover { text-decoration: underline; color:navy; }
- </style>
-</head>
-<body text="black" bgcolor="silver" link="blue" vlink="#000080" alink="#FF0000">
-<?php
-
-include('config_local.php');
-include('calendar.php');
-include('units.php');
-
- $client_ip = $_SERVER["REMOTE_ADDR"];
-
- if ((strpos($client_ip, "192.168.") === 0) || (strpos($client_ip, "10.8.") === 0)
- || (strpos($client_ip, "2a02:578:5002:8174:") === 0)
- || (strpos($client_ip, "2a02:578:5002:196::2") === 0)) {
-
- $local_net = True;
-
- } else {
-
- $local_net = False;
-
- }
-
-
-$year = $_REQUEST['year'];
-$month = $_REQUEST['month'];
-$day = $_REQUEST['day'];
-
-if (! ($db = new PDO("mysql:host=$mysql_host;port=$mysql_port;dbname=$mysql_schema",$mysql_user,$mysql_pwd,array( PDO::ATTR_PERSISTENT => false)))) {
- die($err);
- }
-
-$db -> exec('SET CHARACTER SET utf8');
-
-if (! $year) {
-
- $q = $db -> prepare(
- 'select
- date_format(day,\'%Y\') as year
- from
- calendar
- group by year
- order by year');
- $q -> execute();
-?>
-<h1>Архив метеоданных</h1>
-<?php
- while ($row = $q -> fetch(PDO::FETCH_ASSOC)) {
-?>
- <a class="year" href="?year=<?php echo $row['year']; ?>">Данные за <?php echo $row['year']; ?> год</a>
-<?php
- }
-
-} else {
-
- if (! $month) {
-
- $next_year = $year+1;
- $year = sprintf('%04d',$year);
- $next_year = sprintf('%04d',$next_year);
- $q = $db -> prepare(
- 'select
- date_format(day,\'%m\') as month,
- date_format(day,\'%d\') as day
- from
- calendar
- where
- day>=str_to_date(\''.$year.'-01-01\',\'%Y-%m-%d\') and
- day<str_to_date(\''.$next_year.'-01-01\',\'%Y-%m-%d\')
- group by month,day
- order by month,day'
- );
- $q -> execute();
-?>
-<h1 align="center"><?php echo $year; ?> год</h1>
-<?php
- $data = $q -> fetchAll(PDO::FETCH_ASSOC);
- $months = [];
- foreach ($data as $row) {
- $days [$year.$row['month'].$row['day']] = '&month='.$row['month'].'&day='.$row['day'];
- $months[$row['month']]=1;
- }
- $m = 1;
- echo '<table align="center">';
- for ($i=1; $i<=3; $i++) {
- echo '<tr>';
- for ($j=1; $j<=4; $j++) {
- echo '<td valign="top">';
- $month=sprintf('%02d',$m);
- $month_name = strftime('%B',mktime(0,0,0,$month,1,$year));
- if (!empty($months[$month])) {
- echo '<h3 align="center"><a class="month" href="?year='.$year.'&month='.$month.'">'.$month_name.'</a></h3>';
- } else {
- echo '<h3 align="center">'.$month_name.'</h3>';
- }
- calendar($year,$month,$days,'?year='.$year.'%s',0);
- echo '</td>';
- $m++;
- }
- echo '</tr>';
- }
- echo '</table>';
-
- $next_year = $year+1;
-
- if (!$local_net) {
-
- $filter = ' and s.is_public=1';
-
- } else {
-
- $filter = '';
-
- }
-
-
-
- $q = $db -> prepare (
- 'select
- s.id sensor,p.id param,s.s_description sensor_name,p.st_description param_name,
- count(distinct day) cnt,
- round(min(v.min),1) min_value,
- round(max(v.max),1) max_value,
- u.name_short unit
- from
- sensors_ranges v,sensors s,st_parameters p,units u
- where
- v.sensor=s.id and
- v.parameter=p.id and
- p.st_unit=u.id and
- v.day>=str_to_date(\''.$year.'-01-01\',\'%Y-%m-%d\') and
- v.day<str_to_date(\''.$next_year.'-01-01\',\'%Y-%m-%d\''.$filter.')
- group by s.id,p.id,s.s_description,p.st_description
- order by s.id,p.id'
- );
-
- $q -> execute();
- $sensors = $q -> fetchAll(PDO::FETCH_ASSOC);
-
- foreach ($sensors as $sensor) {
-
- $units = get_unit($db,$sensor['param']);
- $from_unit = $units['from'];
- $to_unit = $units['to'];
- $param_unit = $units['name'];
-
- $min_val = convert_unit($db,$sensor['min_value'],$from_unit,$to_unit);
- $max_val = convert_unit($db,$sensor['max_value'],$from_unit,$to_unit);
-
- echo '<h3 align="center">'.$sensor['param_name'].'('.$sensor['sensor_name'].')</h3>';
- echo '<table align="center">';
- echo '<tr><td>';
- echo 'Минимальное значение за год <b>'.$min_val.' '.$param_unit.'</b><br>';
- echo 'Максимальное значение за год <b>'.$max_val.' '.$param_unit.'</b><br>';
- echo '</td></tr>';
- echo '</table>';
-
- if ($sensor['cnt']>1) {
-
- echo '<center><img src="image_minmax.php?sensor='.$sensor['sensor'].'¶m='.$sensor['param'].
- '&type=year&year='.$year.'"></center>';
-
- }
-
- }
-
-
- } else {
-
- if (!$day) {
-
- $next_year = $year;
- $next_month = $month+1;
-
- if ($next_month == 13) {
- $next_month = 1;
- $next_year = $next_year+1;
- }
-
- $next_month = sprintf('%02d',$next_month);
- $next_year = sprintf('%04d',$next_year);
- $month = sprintf('%02d',$month);
- $year = sprintf('%04d',$year);
-
- if (!$local_net) {
-
- $filter = ' and s.is_public=1';
-
- } else {
-
- $filter = '';
-
- }
-
-
- $q = $db -> prepare(
- 'select
- date_format(day,\'%d\') as day
- from
- sensors_ranges r,sensors s
- where
- s.id=r.sensor and
- day>=str_to_date(\''.$year.'-'.$month.'-01\',\'%Y-%m-%d\') and
- day<str_to_date(\''.$next_year.'-'.$next_month.'-01\',\'%Y-%m-%d\')'.$filter.'
- group by day
- order by day'
- );
- $q -> execute();
-
- $data = $q -> fetchAll(PDO::FETCH_ASSOC);
-
- $month_name = strftime('%B %Y',mktime(0,0,0,$month,1,$year));
-
-?>
-<h1 align="center"><?php echo 'Данные за '.$month_name; ?></h1>
-<?php
- foreach ($data as $row) {
- $days [$year.$month.$row['day']] = $row['day'];
- }
-
- calendar($year,$month,$days,'?year='.$year.'&month='.$month.'&day=%s',3);
-
- if (!$local_net) {
-
- $filter = ' and s.is_public=1';
-
- } else {
-
- $filter = '';
-
- }
-
-
- $q = $db -> prepare (
- 'select
- s.id sensor,p.id param,s.s_description sensor_name,p.st_description param_name,
- count(distinct day) cnt,
- round(min(v.min),1) min_value,
- round(max(v.max),1) max_value,
- u.name_short unit
- from
- sensors_ranges v,sensors s,st_parameters p,units u
- where
- v.sensor=s.id and
- v.parameter=p.id and
- p.st_unit=u.id and
- v.day>=str_to_date(\''.$year.'-'.$month.'-01\',\'%Y-%m-%d\') and
- v.day<str_to_date(\''.$next_year.'-'.$next_month.'-01\',\'%Y-%m-%d\')'.$filter.'
- group by s.id,p.id,s.s_description,p.st_description
- order by s.id,p.id'
- );
-
- $q -> execute();
- $sensors = $q -> fetchAll(PDO::FETCH_ASSOC);
-
- foreach ($sensors as $sensor) {
-
- $units = get_unit($db,$sensor['param']);
- $from_unit = $units['from'];
- $to_unit = $units['to'];
- $param_unit = $units['name'];
-
- $min_val = convert_unit($db,$sensor['min_value'],$from_unit,$to_unit);
- $max_val = convert_unit($db,$sensor['max_value'],$from_unit,$to_unit);
-
- echo '<h3 align="center">'.$sensor['param_name'].'('.$sensor['sensor_name'].')</h3>';
- echo '<table align="center">';
- echo '<tr><td>';
- echo 'Минимальное значение за месяц <b>'.$min_val.' '.$param_unit.'</b><br>';
- echo 'Максимальное значение за месяц <b>'.$max_val.' '.$param_unit.'</b><br>';
- echo '</td></tr>';
- echo '</table>';
-
- if ($sensor['cnt']>1) {
-
- echo '<center><img src="image_minmax.php?sensor='.$sensor['sensor'].'¶m='.$sensor['param'].
- '&type=month&year='.$year.'&month='.$month.'"></center>';
-
- }
-
- }
-
- } else {
-
- $month = sprintf('%02d',$month);
- $year = sprintf('%04d',$year);
- $day = sprintf('%02d',$day);
-
- if (!$local_net) {
-
- $filter = ' and s.is_public=1';
-
- } else {
-
- $filter = '';
-
- }
-
-
- $q = $db -> prepare(
- 'select
- distinct v.sensor as sensor_id,s.s_description,p.id as param_id,p.st_description
- from
- sensors_ranges v,st_parameters p,sensors s
- where
- v.day=str_to_date(\''.$year.'-'.$month.'-'.$day.'\',\'%Y-%m-%d\')
- and v.sensor=s.id
- and v.parameter=p.id'.$filter
- );
- $q -> execute();
-
- while ($row = $q -> fetch(PDO::FETCH_ASSOC)) {
-
- echo '<h3 align="center">'.$row['s_description'].'/'.$row['st_description'].'</h3>';
-?>
-<center><img src="image.php?sensor=<?php echo $row['sensor_id']; ?>¶m=<?php echo $row['param_id']?>&type=range&fromdate=<?php echo $year.$month.$day.'000000'; ?>&todate=<?php echo $year.$month.$day.'235959'?>"></center>
-<?php
-
- }
- }
- }
-}
-?>
-</body>
-
\ No newline at end of file