$t = microtime();
$tm = time();
if (isset($_GET['forprint'])) {
header('Location: forprint.php?id=' . $_GET['id']);
die();
}
require_once('lib/config.php');
$config = new config();
require_once('lib/forecast.php');
$page = getObject($_GET['id'], 0, $config, false);
print getDocument($page, $config);
$config->disconnect();
if ($page->need_update) {
// проверка наличия временной заглушки
$time = time();
$f_build = 'objects/popular/tmp_page_' . $id . '.txt';
if (file_exists($f_build)) {
// проверяем актуальность создания
$f_time = (integer)(unserialize(@file_get_contents($f_build)));
if ((integer)($time) - $f_time > 60)
@unlink($f_build);
else
return '';
}
$f = @fopen($f_build, 'w');
$time = time();
@fputs($f, serialize($time));
@fclose($f);
$page_folder = $config->root . 'objects/pages/' . ceil($page->point_id/100);
$page_file_name = $page_folder . '/' . $page->point_id . '.txt';
if (!file_exists($page_folder)) {
mkdir($page_folder, 0777);
chmod($page_folder, 0777);
}
$f = @fopen($page_file_name, 'w');
@fputs($f, serialize($page));
@fclose($f);
chmod($page_file_name, 0666);
// удаляем временную заглушку
if (file_exists($f_build)) {
@unlink($f_build);
}
}
$f = @fopen('objects/logs/' . $page->region_id . '.txt', 'a');
@fputs($f, $page->point_id . "\r\n");
@fclose($f);
$t = microtime() - $t;
$tm = time() - $tm;
if ($t < 0) $t = $tm - $t;
//print $t;
/* ------------------------------------------------------------ */
function getDocument(&$page, &$config) {
// Закоментированно по заявке Sergch 16.03.09
// $info_message = infoWin($page, $config);
$info_message = '';
$tail = ''; # Хвост для описания района и области
if ($page->point_name[$config->lang] !== $page->raion_name[$config->lang]) {
$tail = ', ' . $page->raion_name[$config->lang];
}
$tail .= ', ' . $page->region_name[$config->lang];
$config->TITLE = $config->translate('Расписание Погоды') . ' ' . $page->point_name2[$config->lang] . $tail;
$config->KEYWORDS = $config->translate('Расписание Погоды') . ', Погода ' . $page->point_name2[$config->lang] . ', ' . $page->raion_name[$config->lang]. ', ' . $page->region_name[$config->lang];
$config->DESCRIPTION = $config->translate('Расписание Погоды') . ', Погода ' . $page->point_name2[$config->lang] . ', ' . $page->raion_name[$config->lang]. ', ' . $page->region_name[$config->lang];
$config->PAGE_TITLE = $page->point_name2[$config->lang];
$config->RSS_URL = 'http://' . $_SERVER['HTTP_HOST'] . '/rss/' . $page->point_id . '/' . $config->lang;
$config->RSS_TITLE = $config->translate('Расписание Погоды') . ' ' . $page->point_name2[$config->lang] . $tail;
$config->PAGE_INFO = '';
$config->CONTENT = '';
$config->BANNER_RIGHT = getBanner($page, 1, $config);
$config->BANNER_TOP = getBanner($page, 0, $config);
$config->BANNER_BOTTOM = getBanner($page, 2, $config);
$config->FOR_PRINT = "";
$config->LINKS = '';
$config->NAVIGATOR = $page->history[$config->lang];
$config->CONTENT = getTable($page, $config);
$config->MAP = "
";
// getLinks($page, $config)
require_once('lib/template_' . $config->lang . '.php');
}
function getBanner(&$page, $banner_pos, &$config) {
$banner = 'banner' . $banner_pos;
if (isset($page->$banner)) {
$banner_log = $banner . "_need_log";
if ($page->$banner_log) {
$banner_id = $banner . "_id";
$sql = "UPDATE banner_bnr SET `remain`=`remain`-1, `showing`=`showing`+1 WHERE `id`='" . $banner_id . "'";
$config->mysql_query ($result, $sql);
}
return $page->$banner;
}
// require_once($config->root . 'lib/functions.light.php');
$sql = "SELECT *, `priority`*1000 + rand() as r
FROM banner_bnr
WHERE MATCH(`zone`) AGAINST ('cnt{$page->country_id} rgn{$page->region_id} cit{$page->point_id}' IN BOOLEAN MODE) AND `position` = '$banner_pos' AND `remain` > 0
ORDER BY r DESC LIMIT 2";
$config->mysql_query ($result, $sql);
$row = $config->mysql_fetch_array ($result);
if ($row) $banner = 1;
else {
$sql = "SELECT *, `priority`*1000 + rand() as r
FROM banner_bnr
WHERE `random` = 1 AND `position` = '$banner_pos' AND `remain` > 0
ORDER BY r DESC LIMIT 2";
$config->mysql_query ($result, $sql);
$row = $config->mysql_fetch_array ($result);
if ($row) $banner = 1;
}
if ($banner == 1) {
$sql = "UPDATE banner_bnr SET `remain`=`remain`-1, `showing`=`showing`+1 WHERE `id`='" . $row['id'] . "'";
$config->mysql_query ($result, $sql);
$banner_log = $banner . "_need_log";
$banner_id = $banner . "_id";
$page->$banner_log = true;
$page->$banner_id = $row['id'];
switch($row['target']) {
case 1: $target = '_blank'; break;
case 2: $target = '_self'; break;
default: $target = '';
}
switch($row['type']) {
case 0: return ''; break;
case 1: return '
' ; break;
case 2: return $row['src']; break;
}
} else {
$page->need_update = true;
switch($banner_pos) {
case 0: $page->$banner = '
';
break;
case 1: $page->$banner = '
';
break;
case 2: $page->$banner = '
';
break;
default: $page->$banner = '';
}
return $page->$banner;
}
}
function getLinks(&$page, &$config) {
if (isset($page->links)) {
if (time() - $page->links_time_update < 3600) return $page->links;
}
define('_SAPE_USER', 'ba9c78c799144122a3afcbab5dc2196a');
@require_once($config->root._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
$CODE = $sape->return_links();
$CODE = '';
$page->need_update = true;
$page->links = $CODE;
$page->links_time_update = time();
return $CODE;
}
function infoWin(&$page, &$config) {
if (isset($page->info_win[$config->lang])) return $page->info_win[$config->lang];
include_once($config->root . 'lib/town_ignored.php');
if (array_search($page->point_id, $town_ignored) === false) {
$page->info_win['ua'] = "
" . $config->translate('Если вы уверены, что эти данные ошибочны') . ", " . $config->translate('нажмите сюда') . "";
$page->info_win['ru'] = "
Если вы уверены, что эти данные ошибочны, нажмите сюда";
} else {
$page->info_win['ru'] = '';
$page->info_win['ua'] = '';
}
$page->need_update = true;
return $page->info_win[$config->lang];
}
function getTable(&$page, &$config) {
$gmtime = mktime (gmdate ('H'), gmdate ('i'), 0, gmdate ('m'), gmdate ('d'), gmdate ('Y'));
$row_date = '';
$row_time = '';
$row_pressure = '';
$row_temperature = '';
$row_humidity = '';
$row_wind_direction = '';
$row_wind_velocity = '';
$row_cloud_cover_img = '';
$row_precipitation = '';
$row_sun = '';
$row_moon = '';
$row_phase = '';
$column_id = 0;
$days_count = count($page->table);
foreach ($page->table as $key=>$day) {
$col_count = 0;
$classes = array();
foreach ($day->forecast as $forecast) {
if ($forecast->gmtime > $gmtime) { //
// print gmdate("F j, Y, g:i a", $forecast->gmtime) . ' : ' . gmdate("F j, Y, g:i a", $gmtime) . '
';
$col_count ++;
if ($col_count == 1) $need_border = '';
else $need_border = '2';
$classes[] = $forecast->class;
$row_time .= '' . $forecast->time . ' | ';
$row_cloud_cover_img .= ' | ';
$row_precipitation .= ' | | ';
$row_pressure .= '' . $forecast->pressure . ' | ';
if ($forecast->temperature > 0) $row_temperature .= '+' . $forecast->temperature . ' | ';
else $row_temperature .= '' . $forecast->temperature . ' | ';
$row_humidity .= '' . $forecast->humidity . ' | ';
if ($forecast->wind_velocity*10 < 5) {
$row_wind_direction .= '' . $config->translate('штл') . ' | ';
$row_wind_velocity .= '0 | ';
} else {
$row_wind_direction .= '' . $config->translate($forecast->wind_direction) . ' | ';
if ($forecast->wind_velocity > 10) $row_wind_velocity .= '' . $forecast->wind_velocity . ' | ';
else $row_wind_velocity .= '' . $forecast->wind_velocity . ' | ';
}
}
}
switch ($col_count) {
case 1: if ($column_id == 0) {
$row_sun .= '' . $config->translate($day->sunset) . ' | ';
$row_moon .= '' . $config->translate($day->moonset) . ' | ';
} else {
$row_sun .= '' . $config->translate($day->sunrise) . ' | ';
$row_moon .= '' . $config->translate($day->moonrise) . ' | ';
}
$row_phase .= ' | ';
break;
case 2: if ($column_id == 0) {
$row_sun .= '' . $config->translate($day->sunrise) . ' | ' . $config->translate($day->sunset) . ' | ';
$row_moon .= '' . $config->translate($day->moonrise) . ' | ' . $config->translate($day->moonset) . ' | ';
$row_phase .= ' | | ';
} else {
$row_sun .= '' . $config->translate($day->sunrise) . ' | ' . $config->translate($day->sunset) . ' | ';
$row_moon .= '' . $config->translate($day->moonrise) . ' | ' . $config->translate($day->moonset) . ' | ';
$row_phase .= ' | | ';
}
break;
case 3: $row_sun .= '' . $config->translate($day->sunrise) . ' | ' . $config->translate($day->sunset) . ' | | ';
$row_moon .= '' . $config->translate($day->moonrise) . ' | ' . $config->translate($day->moonset) . ' | | ';
$row_phase .= ' | | | ';
break;
case 4: $row_sun .= ' | ' . $config->translate($day->sunrise) . ' | ' . $config->translate($day->sunset) . ' | | ';
$row_moon .= ' | ' . $config->translate($day->moonrise) . ' | ' . $config->translate($day->moonset) . ' | | ';
$row_phase .= ' | | | | ';
break;
}
if ($col_count > 0) {
$col_count *= 2;
if ($col_count == 2) $row_date .= "" . $day->dn_str2[$config->lang] . " | ";
elseif ($col_count == 4) $row_date .= "" . $day->dn_str3[$config->lang] . " | ";
else $row_date .= "" . $day->dn_str[$config->lang] . " | ";
$column_id ++;
}
}
$now = gmdate('D, d M Y H:i:s') . ' GMT';
header('Expires: ' . $now);
header('Last-Modified: ' . $now);
header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0');
header('Pragma: no-cache');
$favorites = explode('|', $_COOKIE['i']);
$titles_ua = explode('|', $_COOKIE['ua']);
$titles_ru = explode('|', $_COOKIE['ru']);
$arr_id = array_search($page->point_id, $favorites);
if ($arr_id) {
unset($favorites[$arr_id]);
unset($titles_ru[$arr_id]);
unset($titles_ua[$arr_id]);
}
$config->fav = '';
if (isset($favorites)) {
$c = count($favorites);
if ($c > 4) {
unset($favorites[0]);
unset($titles_ru[0]);
unset($titles_ua[0]);
$c --;
}
foreach ($favorites as $key=>$val){
$config->fav['ua'] = '' . $titles_ua[$key] . '
' . $config->fav['ua'];
$config->fav['ru'] = '' . $titles_ru[$key] . '
' . $config->fav['ru'];
}
}
$favorites[] = $page->point_id;
$titles_ua[] = $page->point_name['ua'];
$titles_ru[] = $page->point_name['ru'];
$time = time() + 3600 * 24 * 30;
setcookie("i", implode('|', $favorites), $time, '/');
setcookie("ru", implode('|', $titles_ru), $time, '/');
setcookie("ua", implode('|', $titles_ua), $time, '/');
setcookie('last_visited_page', 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], $time, '/');
$archive = getArchive($page, $config);
if ($archive != '') {
$archive = "";
}
return "{$page->point_name[$config->lang]} >> " . $config->translate('см. на карте') . " |
| lang}#1'\" alt='" . $config->translate('Местное время').' '.$page->point_name2[$config->lang] . "' title='" . $config->translate('Местное время').' '.$page->point_name2[$config->lang] . "'>". $config->translate('Местное время') ." |
$archive
| $row_date
lang}#1'\" alt='" . $config->translate('Время в данном населённом пункте. Учитывается летнее/зимнее время') . "' title='" . $config->translate('Время в данном населённом пункте. Учитывается летнее/зимнее время') . "'>" . $config->translate('Местное время') . " | $row_time
lang}#2'\" title='" . $config->translate('Общее количество облаков всех ярусов (%)') . "'>" . $config->translate('Облачность') . " % ? | $row_cloud_cover_img
lang}#3'\" title='" . $config->translate('Толщина слоя выпавшей воды (мм), накопленной между указанными моментами времени') . "'>" . $config->translate('Осадки') . " мм ? | $row_precipitation
lang}#5'\" title='" . $config->translate('Температура воздуха на высоте 1.5 м (градусы Цельсия)') . "'>" . $config->translate('Температура') . " oC ? | $row_temperature
lang}#4'\" title='" . $config->translate('Атмосферное давление у поверхности земли (мм рт. ст.)') . "'>" . $config->translate('Давление') . " мм ? | $row_pressure
lang}#6'\" title='" . $config->translate('Относительная влажность на высоте 1.5 м (%)') . "'>" . $config->translate('Влажность') . " % ? | $row_humidity
lang}#7'\" title='" . $config->translate('Ветер на высоте 10 м') . "'>" . $config->translate('Ветер') . " " . $config->translate('м/с') . " ? | $row_wind_direction
$row_wind_velocity
" . $config->translate('Солнце') . " " . $config->translate('восход') . "/" . $config->translate('заход') . " lang}#8'\">? $row_sun |
" . $config->translate('Луна') . "" . $config->translate('восход') . "/" . $config->translate('заход') . " lang}#9'\">?" . $config->translate('фаза') . " lang}#10'\">? | $row_moon
$row_phase
";
}
?>