File: /var/www/ilya/data/www/afisha38.ru/modules/services/announces.inc
<?php
function date2mon ($mon) {
$str_mon = "";
switch ($mon) {
case "01": $str_mon = "января"; break;
case "02": $str_mon = "февраля"; break;
case "03": $str_mon = "марта"; break;
case "04": $str_mon = "апреля"; break;
case "05": $str_mon = "мая"; break;
case "06": $str_mon = "июня"; break;
case "07": $str_mon = "июля"; break;
case "08": $str_mon = "августа"; break;
case "09": $str_mon = "сентября"; break;
case "10": $str_mon = "октября"; break;
case "11": $str_mon = "ноября"; break;
case "12": $str_mon = "декабря"; break;
}
return $str_mon;
}
function date2monn ($mon) {
$str_mon = "";
switch ($mon) {
case "01": $str_mon = "январьский"; break;
case "02": $str_mon = "февральский"; break;
case "03": $str_mon = "мартовский"; break;
case "04": $str_mon = "апрельский"; break;
case "05": $str_mon = "майский"; break;
case "06": $str_mon = "июньский"; break;
case "07": $str_mon = "июльский"; break;
case "08": $str_mon = "августовский"; break;
case "09": $str_mon = "сентябрьский"; break;
case "10": $str_mon = "октябрьский"; break;
case "11": $str_mon = "ноябрьский"; break;
case "12": $str_mon = "декабрьский"; break;
}
return $str_mon;
}
$last_update = query("SELECT `datetime` FROM `announces` ORDER BY `datetime` DESC LIMIT 1;");
if(mysql_num_rows($last_update)!=1)
$last_update = date("Y-m-d H:i:s",time()-259200); //По умолчанию выбираем обновления за последние 24 часа
else {
$last_update = mysql_fetch_array($last_update);
$last_update = $last_update[0];
}
// Новые заведения
$result = query("SELECT `f`.`title`, `f`.`id`, `t`.`human_id`, `t`.`type_title` FROM `firms` `f` LEFT JOIN `firms_types` `t` ON `f`.`type`=`t`.`id` WHERE `f`.`added`>='".$last_update."';");
if(mysql_num_rows($result)>0)
while($data = mysql_fetch_array($result)) {
query("INSERT INTO `announces` (`id`,`datetime`,`text`,`url`) VALUES (NULL,NOW(),'".$data['type_title'].". Новое заведение: «".$data['title']."»', '".$url."".$data['human_id']."/".$data['id']."/');");
}
// Измененные события
$result = query("SELECT `a`.`title`, `a`.`id`, `t`.`human_id`, `t`.`human_subid`, `t`.`type_subtitle` FROM `actions` `a` LEFT JOIN `firms_types` `t` ON `a`.`type`=`t`.`id` WHERE `a`.`updated`>='".$last_update."';");
if(mysql_num_rows($result)>0)
while($data = mysql_fetch_array($result)) {
query("INSERT INTO `announces` (`id`,`datetime`,`text`,`url`) VALUES (NULL,NOW(),'".$data['type_subtitle'].". Обновлена информация: «".$data['title']."»', '".$url."".$data['human_id']."/".$data['human_subid']."/".$data['id']."/');");
}
// Измененные заведения
$result = query("SELECT `f`.`title`, `f`.`id`, `t`.`human_id`, `t`.`type_title` FROM `firms` `f` LEFT JOIN `firms_types` `t` ON `f`.`type`=`t`.`id` WHERE `f`.`updated`>='".$last_update."';");
if(mysql_num_rows($result)>0)
while($data = mysql_fetch_array($result)) {
query("INSERT INTO `announces` (`id`,`datetime`,`text`,`url`) VALUES (NULL,NOW(),'".$data['type_title'].". Обновлено заведение: «".$data['title']."»', '".$url."".$data['human_id']."/".$data['id']."/');");
}
$result = query("SELECT `actions`.`id`, `actions`.`type`, `actions`.`title`, `shedule`.`aid`, MIN(`shedule`.`datetime`) AS `mindate`, `actions`.`title` FROM `shedule` LEFT JOIN `actions` ON `actions`.`id`=`shedule`.`aid` WHERE `shedule`.`added`>='".$last_update."' AND `shedule`.`datetime`>DATE_ADD('".date("Y-m-d 5:00:00",TIME)."', INTERVAL 1 DAY) AND `datetime`<DATE_ADD('".date("Y-m-d 5:00:00",TIME)."', INTERVAL 60 DAY) GROUP BY `aid` ORDER BY `shedule`.`datetime`;");
if(mysql_num_rows($result)>0)
while($data=mysql_fetch_array($result)) {
$result2 = mysql_fetch_array(query("SELECT MIN(`datetime`) AS `mindate` FROM `shedule` WHERE `aid`=".$data['id'].";"));
if($result2['mindate']==$data['mindate']) {
$result3 = mysql_fetch_array(query("SELECT * FROM `firms_types` WHERE `id`='".$data['type']."';"));
query("INSERT INTO `announces` (`id`,`datetime`,`text`,`url`) VALUES (NULL,NOW(),'".$result3['type_subtitle'].". ".human_date($data['mindate'])." - «".$data['title']."»', '".$url."".$result3['human_id']."/".$result3['human_subid']."/".$data['id']."/');");
}
}
// Расписания киноцентров
$result = query("SELECT `s`.`fid`, `f`.`title`, `t`.`type_title`, `t`.`human_id` FROM `shedule` `s` LEFT JOIN `firms` `f` ON `f`.`id`=`s`.`fid` LEFT JOIN `firms_types` `t` ON `t`.`id`=`f`.`type` WHERE `s`.`added`>'".$last_update."' AND `t`.`id`=1 GROUP BY `s`.`fid`");
if(mysql_num_rows($result)>0)
while($data=mysql_fetch_array($result)) {
$result2 = query("SELECT count(*) as `c`, date_format(`datetime`,'%Y-%m-%d') as `date` from `shedule` WHERE `added`>='".$last_update."' AND `fid`='".$data['fid']."' GROUP BY `date` ORDER BY `date`");
$dates = array();
$i = 0;
$first_date = 0;
$cur_date = 0;
$prev_date = 0;
$last_good_date = 0;
while($data2=mysql_fetch_array($result2)) {
$cur_date = mktime(5,0,0,substr($data2['date'],5,2),substr($data2['date'],8,2),substr($data2['date'],0,4));
if($data2['c']>2) {
$last_good_date = $cur_date;
if($dates[$i][0]==NULL) {
$dates[$i][0] = $cur_date;
}
elseif ($cur_date!=($prev_date+86400)) { // Разрыв между датами
$dates[$i][1] = $prev_date;
$i++;
$dates[$i][0] = $cur_date;
}
$prev_date = $cur_date;
}
elseif($dates[$i][0]!=NULL) { // 100% разрыв между датами
$dates[$i][1] = $prev_date;
$i++;
}
}
if(($dates[$i][1]==NULL) && ($dates[$i][0]!=NULL))
$dates[$i][1] = $last_good_date;
$str_date = "";
$last_mon = "";
if(sizeof($dates)>0) {
foreach($dates as $d) {
$last_mon = date2mon(date("m",$d[1]));
if($d[0]==$d[1])
$str_date .= ", ".date("j",$d[0]);
elseif(date("m",$d[0])==date("m",$d[1]))
$str_date .= ", ".date("j",$d[0])."-".date("j",$d[1]);
else
$str_date .= " ".date2mon(date("m",$d[0])).", ".date("j",$d[0])." ".date2mon(date("m",$d[0]))." - ".date("j",$d[1]);
}
$str_date .= " ".$last_mon;
$str_date = substr($str_date,2);
query("INSERT INTO `announces` (`id`,`datetime`,`text`,`url`) VALUES (NULL,NOW(),'Добавлено расписание для к/ц «".$data['title']."» на ".$str_date."', '".$url."".$data['human_id']."/".$data['fid']."/');");
}
}
// Расписания театра кукол
$result = query("SELECT `s`.`fid`, `f`.`title`, `t`.`type_title`, `t`.`human_id` FROM `shedule` `s` LEFT JOIN `firms` `f` ON `f`.`id`=`s`.`fid` LEFT JOIN `firms_types` `t` ON `t`.`id`=`f`.`type` WHERE `s`.`added`>'".$last_update."' AND `t`.`id`=2 GROUP BY `s`.`fid`");
if(mysql_num_rows($result)>0)
while($data=mysql_fetch_array($result)) {
$result2 = query("SELECT count(*) as `c`, date_format(`datetime`,'%Y-%m') as `date` from `shedule` WHERE `added`>='".$last_update."' AND `fid`='".$data['fid']."' GROUP BY `date` ORDER BY `date`");
while($data2=mysql_fetch_array($result2)) {
if($data2['c']>5)
query("INSERT INTO `announces` (`id`,`datetime`,`text`,`url`) VALUES (NULL,NOW(),'Добавлен ".date2monn(substr($data2['date'],5,2))." репуртуар на «".$data['title']."»', '".$url."".$data['human_id']."/".$data['fid']."/');");
}
}
?>