File: /var/www/ilya/data/www/afish-ka.ru/admin/modules/afisha/add.inc
<?
//- Настройки модуля -----------------------------------------------------------
permission("mcp"); // tcp-техники; acp-админы; mcp-модеры; cp-рядовые участники
$skin_pname = "Добавление расписания";
//------------------------------------------------------------------------------
if((!isset($_POST['afisha_method'])) && (!isset($_POST['firm_id'],$_POST['time'],$_POST['action'],$_POST['price']))) {
$result = query("SELECT * FROM `firms_types` ORDER BY `id`;");
$actions_types = "";
$firms_types = "";
$i = 0;
while($data = mysql_fetch_array($result)) {
if ($i==0) {
$actions_types .= "<option value=\"".$data['id']."\" selected> ".$data['type_subtitle']."\n";
$firms_types .= "<option value=\"".$data['id']."\" selected> ".$data['type_title']."\n";
}
else {
$actions_types .= "<option value=\"".$data['id']."\"> ".$data['type_subtitle']."\n";
$firms_types .= "<option value=\"".$data['id']."\"> ".$data['type_title']."\n";
}
$i++;
}
$temp_html .= preg_replace("/{%(\w+)%}/ee", "$\\1",skin_html("afisha_add.htm",0));
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
else if ($_POST['afisha_method']=='interval') {
if (isset($_POST['firm_id'])) {
$firm_id = $_POST['firm_id'];
$b_day = $_POST['b_day'];
$b_mon = $_POST['b_mon'];
$b_year = $_POST['b_year'];
$e_day = $_POST['e_day'];
$e_mon = $_POST['e_mon'];
$e_year = $_POST['e_year'];
$errors = array();
if($_POST['firm_id']=='')
$errors[] = "Не указано заведение";
if(!checkdate($b_mon,$b_day,$b_year))
$errors[] = "Начальная дата неверна";
if(!checkdate($e_mon,$e_day,$e_year))
$errors[] = "Конечная дата неверна";
if(checkdate($b_mon,$b_day,$b_year) && checkdate($e_mon,$e_day,$e_year)) {
$date_select_begin=skin_date_select($b_year,$b_mon,$b_day,"b_year","b_mon","b_day");
$date_select_end=skin_date_select($e_year,$e_mon,$e_day,"e_year","e_mon","e_day");
$begindate = mktime(0,0,0,$b_mon,$b_day,$b_year);
$enddate = mktime(0,0,0,$e_mon,$e_day,$e_year);
if ($begindate>$enddate)
$errors[] = "Конечная дата ранее начальной";
}
$price = $_POST['price'];
$time = $_POST['time'];
$action = $_POST['action'];
$good_records == 0;
for ($i=0;$i<count($time);$i++) {
if(!(($time[$i]!='' && $price[$i]!='' && $action[$i]!='') || ($time[$i]=='' && $price[$i]=='' && $action[$i]==''))) {
$errors[] = "В записи #".($i+1)." указаны не все поля";
}
else
if ($time[$i]!='') {
$time_split = explode(":",$time[$i]);
if(sizeof($time_split)!=2 || strlen($time[$i])!=5)
$errors[] = "Неверный формат времени у записи #".($i+1)." - требуется ММ:ЧЧ";
else
if($time_split[0]>23 || $time_split[0]<0 || $time_split[1]>59 || $time_split[1]<0)
$errors[] = "Время у записи #".($i+1)." неверно";
else
$good_records++;
}
}
if($good_records==0 && sizeof($errors)==0)
$errors[] = "Нет записей для добавления";
$errors_html = "";
if(sizeof($errors)>0 && $errors[0]!='') {
$errors_html = "<p>Обнаружены следующие ошибки:</p>\n<ul>\n";
foreach($errors as $error)
$errors_html .= "<li>".$error."</li>";
$errors_html .= "</ul>\n<hr>";
}
else {
$currentdate = $begindate;
$added_records = 0;
$edited_records = 0;
while ($currentdate<=$enddate) {
for ($i=0;$i<count($time);$i++) {
if ($time[$i]!='') {
if ($time[$i]<"05:00")
$date=date("Y-m-d",$currentdate+86400);
else
$date=date("Y-m-d",$currentdate);
$result = query("SELECT `id` FROM `shedule` WHERE `fid`='".$firm_id."' AND `datetime`='".$date." ".$time[$i]."' LIMIT 1;");
if(mysql_num_rows($result)==1) {
$edited_records++;
$data = mysql_fetch_array($result);
query("UPDATE `shedule` SET `aid`='".$action[$i]."', `price`='".$price[$i]."' WHERE `id`='".$data['id']."';");
}
else {
$added_records++;
query("INSERT INTO `shedule` (`fid` , `aid` , `datetime` , `price`, `added`) VALUES ('".$firm_id."', '".$action[$i]."', '".$date." ".$time[$i]."', '".$price[$i]."', NOW());");
}
cache_delete(array("afisha",date("Y",$currentdate),date("m",$currentdate)),date("d",$currentdate).".html");
}
}
$currentdate+=86400;
}
$temp_html = "<p><b>".$added_records."</b> записи(-ей) добавлено, <b>".$edited_records."</b> заменено.</p>\n";
cache_delete(array("system"),"anons.html");
cache_delete(array("afisha_firms"),$firm_id.".html");
skin_html_design($temp_html);
exit();
}
}
$firms = "";
$firms_query = query("SELECT `id`, `title` FROM `firms` WHERE `type`=".$_POST['firms_types']." ORDER BY `id`;");
while ($data = mysql_fetch_array($firms_query)) {
if (isset($_POST['firm_id'])) {
if ($_POST['firm_id']==$data['id'])
$firms .= "<option value=\"".$data['id']."\" selected>".$data['title']."\n";
else
$firms .= "<option value=\"".$data['id']."\">".$data['title']."\n";
}
else
$firms .= "<option value=\"".$data['id']."\">".$data['title']."\n";
}
if($_POST['actions_number']=="last")
$result=query("SELECT `id`,`title` FROM `actions` WHERE `type`=".$_POST['actions_types']." ORDER BY `id` DESC LIMIT 70;");
else
$result=query("SELECT `id`,`title` FROM `actions` WHERE `type`=".$_POST['actions_types']." ORDER BY `title`;");
$actions = array();
while($data = mysql_fetch_array($result)) {
$actions[] = array($data['id'],$data['title']);
}
$actions_rows = "";
for($i=0;$i<10;$i++) {
$actions_rows .= "<tr>\n<td><input name=\"time[]\" value=\"".$time[$i]."\" type=\"text\" size=\"6\" maxlength=\"5\"></td>\n";
$actions_rows .= "<td><select name=\"action[]\">\n<option value=\"\">Выберите событие..\n";
foreach($actions as $one_action) {
if($one_action[0]==$action[$i])
$actions_rows .= "<option value=\"".$one_action[0]."\" selected>".$one_action[1]."\n";
else
$actions_rows .= "<option value=\"".$one_action[0]."\">".$one_action[1]."\n";
}
$actions_rows .= "</select></td>\n";
$actions_rows .= "<td><input name=\"price[]\" type=\"text\" size=\"14\" maxlength=\"13\" value=\"".$price[$i]."\"></td>\n</tr>\n";
}
$firms_types = $_POST['firms_types'];
$actions_types = $_POST['actions_types'];
$actions_number = $_POST['actions_number'];
$afisha_method = $_POST['afisha_method'];
if(!isset($date_select_begin,$date_select_end)) {
$date_select_begin=skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"b_year","b_mon","b_day");
$date_select_end=skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"e_year","e_mon","e_day");
}
$temp_html .= preg_replace("/{%(\w+)%}/ee", "$\\1",skin_html("afisha_add_interval.htm",0));
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
else if($_POST['afisha_method']=='lenta') {
if (isset($_POST['firm_id'])) { // Data are already sent
$firm_id = $_POST['firm_id'];
$b_day = $_POST['b_day'];
$b_mon = $_POST['b_mon'];
$b_year = $_POST['b_year'];
$e_day = $_POST['e_day'];
$e_mon = $_POST['e_mon'];
$e_year = $_POST['e_year'];
$errors = array();
if($_POST['firm_id']=='')
$errors[] = "Не указано заведение";
$price = $_POST['price'];
$time = $_POST['time'];
$action = $_POST['action'];
$date_day = $_POST['date_day'];
$date_mon = $_POST['date_mon'];
$date_year = $_POST['date_year'];
$good_records = 0;
for ($i=0;$i<count($time);$i++) {
if(!(($time[$i]!='' && $price[$i]!='' && $action[$i]!='') || ($time[$i]=='' && $price[$i]=='' && $action[$i]==''))) {
$errors[] = "В записи #".($i+1)." указаны не все поля";
}
else {
if ($time[$i]!='') {
$time_split = explode(":",$time[$i]);
if(sizeof($time_split)!=2 || strlen($time[$i])!=5)
$errors[] = "Неверный формат времени у записи #".($i+1)." - требуется ММ:ЧЧ";
else
if($time_split[0]>23 || $time_split[0]<0 || $time_split[1]>59 || $time_split[1]<0)
$errors[] = "Время у записи #".($i+1)." неверно";
else
$good_records++;
}
if(!checkdate($date_mon[$i],$date_day[$i],$date_year[$i]))
$errors[] = "Дата у записи #".($i+1)." неверна";
}
}
if($good_records==0 && sizeof($errors)==0)
$errors[] = "Нет записей для добавления";
if(sizeof($errors)>0 && $errors[0]!='') {
$errors_html = "<p>Обнаружены следующие ошибки:</p>\n<ul>\n";
foreach($errors as $error)
$errors_html .= "<li>".$error."</li>";
$errors_html .= "</ul>\n<hr>";
}
else {
$added_records = 0;
$edited_records = 0;
for ($i=0;$i<count($time);$i++) {
if ($time[$i]!='') {
$currentdate = mktime(5,0,0,$date_mon[$i],$date_day[$i],$date_year[$i]);
if ($time[$i]<"05:00")
$date=date("Y-m-d",$currentdate+86400);
else
$date=date("Y-m-d",$currentdate);
$result = query("SELECT `id` FROM `shedule` WHERE `fid`='".$firm_id."' AND `datetime`='".$date." ".$time[$i]."' LIMIT 1;");
if(mysql_num_rows($result)==1) {
$edited_records++;
$data = mysql_fetch_array($result);
query("UPDATE `shedule` SET `aid`='".$action[$i]."', `price`='".$price[$i]."' WHERE `id`='".$data['id']."';");
}
else {
$added_records++;
query("INSERT INTO `shedule` ( `id` , `fid` , `aid` , `datetime` , `price`, `added`) VALUES ('', '".$firm_id."', '".$action[$i]."', '".$date." ".$time[$i]."', '".$price[$i]."', NOW());");
}
cache_delete(array("afisha",date("Y",$currentdate),date("m",$currentdate)),date("d",$currentdate).".html");
}
}
$temp_html = "<p><b>".$added_records."</b> записи(-ей) добавлено, <b>".$edited_records."</b> заменено.</p>\n";
cache_delete(array("system"),"anons.html");
cache_delete(array("afisha_firms"),$firm_id.".html");
skin_html_design($temp_html);
exit();
}
}
$firms = "";
$firms_query = query("SELECT `id`, `title` FROM `firms` WHERE `type`=".$_POST['firms_types']." ORDER BY `id`;");
while ($data = mysql_fetch_array($firms_query)) {
if (isset($_POST['firm_id'])) {
if ($_POST['firm_id']==$data['id'])
$firms .= "<option value=\"".$data['id']."\" selected>".$data['title']."\n";
else
$firms .= "<option value=\"".$data['id']."\">".$data['title']."\n";
}
else
$firms .= "<option value=\"".$data['id']."\">".$data['title']."\n";
}
if($_POST['actions_number']=="last")
$result=query("SELECT `id`,`title` FROM `actions` WHERE `type`=".$_POST['actions_types']." ORDER BY `id` DESC LIMIT 350;");
else
$result=query("SELECT `id`,`title` FROM `actions` WHERE `type`=".$_POST['actions_types']." ORDER BY `title`;");
$actions = array();
while($data = mysql_fetch_array($result)) {
$actions[] = array($data['id'],$data['title']);
}
$actions_rows = "";
for($i=0;$i<20;$i++) { // Generating afisha list
$actions_rows .= "<tr>\n<td><input name=\"time[]\" value=\"".$time[$i]."\" type=\"text\" size=\"6\" maxlength=\"5\"></td>\n";
if(isset($_POST['date_day'], $_POST['date_mon'], $_POST['date_year'])) {
if (checkdate($date_mon[$i],$date_day[$i],$date_year[$i]))
$actions_rows .= "<td>".skin_date_select($date_year[$i],$date_mon[$i],$date_day[$i],"date_year[]","date_mon[]","date_day[]")."</td>\n";
else
$actions_rows .= "<td>".skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"date_year[]","date_mon[]","date_day[]")."</td>\n";
}
else
$actions_rows .= "<td>".skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"date_year[]","date_mon[]","date_day[]")."</td>\n";
$actions_rows .= "<td><select name=\"action[]\">\n<option value=\"\">Выберите событие..\n";
foreach($actions as $one_action) {
if($one_action[0]==$action[$i])
$actions_rows .= "<option value=\"".$one_action[0]."\" selected>".$one_action[1]."\n";
else
$actions_rows .= "<option value=\"".$one_action[0]."\">".$one_action[1]."\n";
}
$actions_rows .= "</select></td>\n";
$actions_rows .= "<td><input name=\"price[]\" type=\"text\" size=\"14\" maxlength=\"13\" value=\"".$price[$i]."\"></td>\n</tr>\n";
}
$firms_types = $_POST['firms_types'];
$actions_types = $_POST['actions_types'];
$actions_number = $_POST['actions_number'];
$afisha_method = $_POST['afisha_method'];
if(!isset($date_select_begin,$date_select_end)) {
$date_select_begin=skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"b_year","b_mon","b_day");
$date_select_end=skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"e_year","e_mon","e_day");
}
$temp_html .= preg_replace("/{%(\w+)%}/ee", "$\\1",skin_html("afisha_add_lenta.htm",0));
}
////////////////////////////////////////////////////////////////////
else if($_POST['afisha_method']=='cinema') {
$errors = array();
if(isset($_POST['afisha_txt'])) { // Parse source text with shedule
$afisha_txt = htmlspecialchars($_POST['afisha_txt']);
$afisha_data = $_POST['afisha_txt'];
$afisha_data = preg_replace("/[ \t]+/"," ",$afisha_data);
//$afisha_data = preg_replace('#\R+#',"\r",$afisha_data);
$afisha_data = explode("\r",$afisha_data);
$ignored_rows = array();
$afisha_data_actions = array();
$afisha_data_checked = array();
foreach($afisha_data as $row) {
$row = trim($row);
$afisha_time = htmlspecialchars(substr($row,0,strpos($row," ")));
$afisha_action = htmlspecialchars(substr($row,strpos($row," ")+1,strrpos($row," ")-strpos($row," ")-1));
$afisha_price = htmlspecialchars(substr($row,strrpos($row," ")+1,strlen($row)-strrpos($row," ")));
$afisha_time_split = explode(":",$afisha_time);
if(sizeof($afisha_time_split)==2 && strlen($afisha_time)==5 && $afisha_action!='' && $afisha_price!='') {
$is_new_action = TRUE;
foreach($afisha_data_actions as $afisha_data_action) {
if($afisha_data_action==$afisha_action) {
$is_new_action = FALSE;
break;
}
}
if($is_new_action) {
$afisha_data_actions[] = $afisha_action;
}
$afisha_data_checked[] = array($afisha_time,$afisha_action,$afisha_price);
}
else if($row!='') {
$ignored_rows[] = $row;
}
}
if(sizeof($afisha_data_actions)==0)
$errors[] = "Нет записей для добавления";
/// End of txt afisha parsing
}
$firms = "";
$firms_query = query("SELECT `id`, `title` FROM `firms` WHERE `type`=".$_POST['firms_types']." ORDER BY `id`;");
while ($data = mysql_fetch_array($firms_query)) {
if (isset($_POST['firm_id'])) {
if ($_POST['firm_id']==$data['id'])
$firms .= "<option value=\"".$data['id']."\" selected>".$data['title']."\n";
else
$firms .= "<option value=\"".$data['id']."\">".$data['title']."\n";
}
else
$firms .= "<option value=\"".$data['id']."\">".$data['title']."\n";
}
$firms_types = $_POST['firms_types'];
$actions_types = $_POST['actions_types'];
$actions_number = $_POST['actions_number'];
$afisha_method = $_POST['afisha_method'];
if(!isset($date_select_begin,$date_select_end)) {
$date_select_begin=skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"b_year","b_mon","b_day");
$date_select_end=skin_date_select(date("Y", TIME),date("m", TIME),date("d", TIME),"e_year","e_mon","e_day");
}
if(isset($_POST['firm_id'])) {
if($_POST['firm_id']=='')
$errors[] = "Не указано заведение";
foreach($_POST['action'] as $row) {
if($row=='') {
$errors[] = 'У событий не выбрано соответствие';
break;
}
}
$firm_id = $_POST['firm_id'];
$action = $_POST['action'];
$override = $_POST['override'];
if($_POST['override']=='on')
$override_checked = "checked ";
$b_day = $_POST['b_day'];
$b_mon = $_POST['b_mon'];
$b_year = $_POST['b_year'];
$e_day = $_POST['e_day'];
$e_mon = $_POST['e_mon'];
$e_year = $_POST['e_year'];
if(!checkdate($b_mon,$b_day,$b_year))
$errors[] = "Начальная дата неверна";
if(!checkdate($e_mon,$e_day,$e_year))
$errors[] = "Конечная дата неверна";
if(checkdate($b_mon,$b_day,$b_year) && checkdate($e_mon,$e_day,$e_year)) {
$date_select_begin=skin_date_select($b_year,$b_mon,$b_day,"b_year","b_mon","b_day");
$date_select_end=skin_date_select($e_year,$e_mon,$e_day,"e_year","e_mon","e_day");
$begindate = mktime(0,0,0,$b_mon,$b_day,$b_year);
$enddate = mktime(0,0,0,$e_mon,$e_day,$e_year);
if ($begindate>$enddate)
$errors[] = "Конечная дата ранее начальной";
}
}
$errors_html = "";
if(sizeof($errors)>0 && $errors[0]!='') {
$errors_html = "<p>Обнаружены следующие ошибки:</p>\n<ul>\n";
foreach($errors as $error)
$errors_html .= "<li>".$error."</li>";
$errors_html .= "</ul>\n<hr>";
}
if(sizeof($ignored_rows)>0) {
$ignored_rows_html = "<p>Проигнорированные строки:<ul>";
foreach($ignored_rows as $row)
$ignored_rows_html .= "<li>".$row."</li>";
$ignored_rows_html .= "</ul>";
}
if(isset($_POST['afisha_txt']) && sizeof($afisha_data_actions)>0) {
if($_POST['actions_number']=="last")
$result=query("SELECT `id`,`title` FROM `actions` WHERE `type`=".$_POST['actions_types']." ORDER BY `id` DESC LIMIT 350;");
else
$result=query("SELECT `id`,`title` FROM `actions` WHERE `type`=".$_POST['actions_types']." ORDER BY `title`;");
$actions = array();
while($data = mysql_fetch_array($result)) {
$actions[] = array($data['id'],$data['title']);
}
$actions_rows = "";
for($i=0;$i<sizeof($afisha_data_actions);$i++) {
$actions_rows .= "<tr>\n<td>".$afisha_data_actions[$i]."</td>\n";
$result = query("SELECT `aid` FROM `actions_aliases` WHERE `title`='".$afisha_data_actions[$i]."';");
if(mysql_num_rows($result)==1) {
$data = mysql_fetch_array($result);
}
$actions_rows .= "<td><select name=\"action[]\">\n<option value=\"\">Выберите событие..\n";
foreach($actions as $one_action) {
if($one_action[0]==$action[$i])
$actions_rows .= "<option value=\"".$one_action[0]."\" selected>".$one_action[1]."\n";
else if(($one_action[0]==$data['aid']) && (mysql_num_rows($result)==1)) {
$actions_rows .= "<option value=\"".$one_action[0]."\" selected>".$one_action[1]."\n";
}
else {
$actions_rows .= "<option value=\"".$one_action[0]."\">".$one_action[1]."\n";
}
}
$actions_rows .= "</select></td>\n</tr>\n";
}
if(isset($_POST['firm_id']) && sizeof($errors)==0) {
$currentdate = $begindate;
$added_records = 0;
$edited_records = 0;
while ($currentdate<=$enddate) {
for ($i=0;$i<sizeof($afisha_data_checked);$i++) {
if ($afisha_data_checked[$i][0]!='') {
$currentaction = 0;
for($j=0;$j<sizeof($afisha_data_actions);$j++) {
if($afisha_data_actions[$j]==$afisha_data_checked[$i][1])
$currentaction = $action[$j];
}
$result = query("SELECT `aid` FROM `actions_aliases` WHERE `title`='".$afisha_data_checked[$i][1]."';");
if(mysql_num_rows($result)>0) {
$data = mysql_fetch_array($result);
if($data['aid']!=$currentaction)
query("UPDATE `actions_aliases` SET `aid` = '".$currentaction."' WHERE `title`='".$afisha_data_checked[$i][1]."';");
}
else
query("INSERT INTO `actions_aliases` ( `aid` , `title` ) VALUES ('".$currentaction."', '".$afisha_data_checked[$i][1]."');");
if ($afisha_data_checked[$i][0]<"05:00")
$date=date("Y-m-d",$currentdate+86400);
else
$date=date("Y-m-d",$currentdate);
if($_POST['override']=='on') {
$result = query("SELECT `id` FROM `shedule` WHERE `fid`='".$firm_id."' AND `datetime`='".$date." ".$afisha_data_checked[$i][0]."' LIMIT 1;");
if(mysql_num_rows($result)==1) {
$edited_records++;
$data = mysql_fetch_array($result);
query("UPDATE `shedule` SET `aid`='".$currentaction."', `price`='".$afisha_data_checked[$i][2]."' WHERE `id`='".$data['id']."';");
}
else {
$added_records++;
query("INSERT INTO `shedule` (`fid` , `aid` , `datetime` , `price`, `added`) VALUES ('".$firm_id."', '".$currentaction."', '".$date." ".$afisha_data_checked[$i][0]."', '".$afisha_data_checked[$i][2]."', NOW());");
}
}
else {
$added_records++;
query("INSERT INTO `shedule` (`fid` , `aid` , `datetime` , `price`, `added`) VALUES ('".$firm_id."', '".$currentaction."', '".$date." ".$afisha_data_checked[$i][0]."', '".$afisha_data_checked[$i][2]."', NOW());");
}
cache_delete(array("afisha",date("Y",$currentdate),date("m",$currentdate)),date("d",$currentdate).".html");
}
}
$currentdate+=86400;
}
$temp_html = "<p><b>".$added_records."</b> записи(-ей) добавлено, <b>".$edited_records."</b> заменено.</p>\n";
cache_delete(array("system"),"anons.html");
cache_delete(array("afisha_firms"),$firm_id.".html");
skin_html_design($temp_html);
exit();
}
else {
$temp_html .= preg_replace("/{%(\w+)%}/ee", "$\\1",skin_html("afisha_add_cinema_2.htm",0));
}
}
else if(isset($_POST['action'])) {
$temp_html .= preg_replace("/{%(\w+)%}/ee", "$\\1",skin_html("afisha_add_cinema_2.htm",0));
}
else {
$temp_html .= preg_replace("/{%(\w+)%}/ee", "$\\1",skin_html("afisha_add_cinema_1.htm",0));
}
}
skin_html_design($temp_html);
?>